Software developer images with DALL-E 3

OpenAI’s (Microsoft’s) DALL-E 3 has improved bigly on DALL-E 2 – however it also has changed styles a bit. If you compare with the age-old images from a year ago, the images are much higher quality, but what meant “expressive” back then isn’t the same anymore.

For the prompt “an expressive oil painting of two software developers working on their notebooks, depicted as an explosion of a nebula” you now get something that certainly doesn’t look like an oil painting (several other attempts look very similar).

Trying to improve upon this with the prompt “a van-gogh style oil painting of two software developers working on their notebooks, depicted as an explosion of a nebula”, that’s the result (somehow, van Gogh style is equivalent to “starry night”).

Posted in Uncategorized | Leave a comment

java.lang.IllegalArgumentException: The Unicode character [デ] at code point [12,487] cannot be encoded as it is outside the permitted range of 0 to 255

The cause is that you’re trying to set a HTTP header in Tomcat that contains non-ASCII characters (e.g. the Location header as part of a redirect or the Content-Disposition header for a file download). This has started appearing since switching to a new Tomcat version (9.0.73 at least has this issue).

The solution is to properly encode the HTTP headers. We’re doing this with

name = URLEncoder.encode(name, 'UTF-8')

For more in-depth information see these two bug reports

  • https://bz.apache.org/bugzilla/show_bug.cgi?id=66512
  • https://bz.apache.org/bugzilla/show_bug.cgi?id=66196

The stack location at which this occurred for us is

at org.apache.tomcat.util.buf.MessageBytes.toBytesSimple(MessageBytes.java:292)
at org.apache.tomcat.util.buf.MessageBytes.toBytes(MessageBytes.java:261)
at org.apache.coyote.ajp.AjpMessage.appendBytes(AjpMessage.java:172)
at org.apache.coyote.ajp.AjpProcessor.prepareResponse(AjpProcessor.java:1011)
Posted in Software | Leave a comment

Framework Laptop Review

My specimen of Frameworkus Laptopii on a hardwood floor (not its natural environment)

For 3 months I’ve now been the proud owner of a Framework Laptop, and I’m quite satisfied. Here’s a quick writeup of my experience so far.

Overall Verdict

Shiny

(Captain Malcom Raynolds)

Specs

12th gen i5, 32GB RAM, 1TB SSD DIY edition, running Ubuntu 22.04

Cost

Total €1536

  • €1398 Laptop (laptop, expansion cards, power adapter)
  • €75 Docking station (NOVOO, from Amazon)
  • €38 90W additional power adapter
  • €25 Laptop case (for MacBook Pro 14”)

Start with Why

Initially, I was hooked for the upgradability, and the big community which would allow me to solve any issues encountering when switching back to Linux as the main OS. But we’re (still) all humans, and I’ve also come to value the haptics and the not-thinking-about-the-battery-ness of a modern laptop.

Cons

  • loud fan. When gearing up the CPU, it gets pretty noisy. I mean, really.
  • no proper invoice in the EU. I hope the taxman won’t give me headaches about this.

Pros

(roughly in the order in which I now value them)

  • light, but still robust
  • really like the keyboard
  • battery – 8hs for my usual workload – typing (with the occasional hot reload), reading, surfing
  • runs Ubuntu 22.04 very nicely
  • upgradability. Lets see how well this actually ages, but I expect to at least add memory and change the SSD and battery over its lifetime (I’ve kept my Lenovo Ideapad alive and usable for development for nearly 10 years and still counting)
  • bright display makes up for the glossy screen (and wide adjustable range – I can work in a very dark room or in bright daylight),
  • first USB-C dock from Amazon worked out of the box. Having read some horror stories, I really dreaded this item on the list, but it just works (LAN/RS232, monitor, branching out to another no-name USB-A hub with mouse, keyboard, headphones, printer, 90W USB-C power supply (extra one)
  • love the expansion cards – just the ability to choose the side USB-C dock is already great. No idea why not all manufacturers do this
  • display can be turned to 180 degrees (i.e. lying flat horizontally), great for showing stuff on a tabletop to multiple people
  • physical privacy camera/microphone lock (was a bit suprised at first that when first doing a video conference that the camera could not be found – until I aha’d that the privacy switch obviously disconnects the camera)
  • slow charge with USB-C phone charger – was really suprised/delighted that this works – a very thoughful feature you’ll use very seldom, but these would otherwise be times of great distress
  • “DIY” is really on overstatement – the only extra manual task was putting in the SSD – that’s it
  • +1 for eco-friendly mostly-cardboard packaging
  • Surprise – the edges are magnetic in some place

Neutral

  • speakers are ok
  • I don’t use deep sleep/hibernate (which other users have had issues with Ubuntu)

Overall Summary

Overall – it’s a great piece of hardware, also for development. I really do not regret buying it. Things are just so … thoughtful, you really see a human being having put thought into it. Linux as a daily driver is also great (Docker Desktop has improved, but …)

However, for anyone with frequent/continuous high system load, the noisy fan is probably a showstopper.

Posted in Computer | Leave a comment

Software developer images with DALL-E 2

OpenAI’s DALL-E 2 produces marvelous imagery when entering simple prompts.

Here’s my take at software development – the prompt is

“an expressive oil painting of two software developers working on their notebooks, depicted as an explosion of a nebula”

Posted in Software | Leave a comment

Svg-based 3D model in OpenSCAD via Inkscape/DXF

OpenSCAD ist a really cool tool for simple solid modeling. However, the built-in shapes naturally have their limitations, and one option for getting more details is to import SVG files.

Here’s how you can do it:

  • Create or import your SVG in Inkscape
  • Ungroup all groups (select all, Object -> Ungroup, possible repeat this several times depending on your SVG)
  • Use Extensions -> Modify Path -> Flatten Bezier (a flatness of 1 yields reasonable results, try out what works best)
  • Save as DXF file
  • Use it in OpenSCAD with the “import” statement, and give it some height with the “linear_extrude” statement (see sample code below)
  • Depending on what you’re modeling, you may want to invert your structure using the “difference” operation (like in the example below)

Here’s an example of an SVG (converted to dxf) file (from http://www.patterndesigns.com/en/design/819/Aramis-Braun, curtesy of Pattern Design) being used to build a simple but nice tea candle lamp …

openscad-lamp

… and here’s the OpenSCAD code

size = 360;
module baroquePattern() {
    
    difference()
    {   
        translate([0,0,0.5]) cube(size=[size,size,1]);
        linear_extrude(height = 2) import (file = "D:\\baroque.dxf");
    }
}

plateSize = size * 2;

module baroquePatternPlate() {
    //create a 2x2 plate from the original repeatable element
    baroquePattern();
    translate([size, 0, 0]) baroquePattern();
    translate([0, size, 0]) baroquePattern();
    translate([size, size, 0]) baroquePattern();
}

rotate([90, 0, 0]) baroquePatternPlate();
translate([0,plateSize,0])rotate([90, 0, 0]) baroquePatternPlate();
rotate([90, 0, 90]) baroquePatternPlate();
translate([plateSize,0,0]) rotate([90, 0, 90]) baroquePatternPlate();
Posted in Computer | Leave a comment