Laser cutting and constructive solid geometry (CSG)

My brother is an artist – he has business cards that reflect this quite nicely, using his artwork as the background behind his typography. I decided that I could also do with some “domain specific” business cards. (Micro-)miniature electronics such as tiny LEDs are a common gimmick nowadays, so I took a more mechanical route with my designs. A key criterion was that the design should incorporate sufficient complexity and domain knowledge that the average Google-graduate and script-kiddy couldn’t replicate it easily.

While 3D printing is nice, it isn’t great for producing precise planar objects, and can also be quite expensive and slow. Forms of CNC cutting (e.g. plotters, laser cutters) are more suitable, although getting a decent quote is proving to be a challenge.

There were several mechanisms that interested me and which would look “elegant” if embedded in a business card. These included:

The first would be difficult to get into an ultra-thin form-factor, and would have issues with friction. The third would be very complex, requiring a thin hairspring and repeatable manufacturing precision. So I’m left with some form of geartrain. The geartrain must work in any orientation, so some of the cool designs in that video which require gravity are not suitable. Epicyclic geartrains are generally simple to manufacture and look quite cool, so I settled for a simple planetary configuration.

I was relieved to find that I can use OpenSCAD and FreeCAD to produce designs for laser cutting, so I can use my existing software and acquired skills from designing 3D-printable objects for this laser-cut project.

The design will be cut from thin sheets of aluminium or steel, and perspex or polycarbonate. My name and contact details will be engraved into the underside of the transparent plastic, so the external face remains smooth.

A rendering is shown in the video below:

(Rendered with OpenSCAD, Imagemagick, FFMPEG, Bash)

OpenSCAD was never intended to produce high-quality renderings (Blender and POV-RAY already meet that goal very nicely), but it has done a respectable decent job nonetheless.

I designed another card, on the theme of “cloud computing”:

Selective USB power saving on Linux Laptop

When using a USB keyboard/mouse on my laptop, I found that if I started typing after a few seconds of not using the keyboard, it would drop the first few keys that I pressed. This is due to USB power saving being enabled on my laptop: USB devices are automatically suspended on inactivity.

Solutions to this problem online generally involve disabling USB power saving completely. That would be a very blunt solution and would hurt battery life. I want to keep the power-saving behavious for all devices excluding input-devices, so I can get a decent battery life, but without the dropped input events.

Initially, I used lsusb to get vendor/product codes for my Das Keyboard and mouse, then started adding udev rules for the devices. This was too precise a solution though, it would only affect my particular model of keyboard and mouse.

I wrote more general rules instead, to disable power saving for any input device:

/etc/udev/rules.d/92-usb-input-no-powersave.rules
-------------------------------------------------
ACTION=="add", SUBSYSTEM=="input", TEST=="power/control", ATTR{power/control}="on"

This rule just says “when a device is added, if it’s an input device and it has a «power/control» node in sysfs, write «on» to that node” – a value of “on” (in contrast to “auto”) for this node will result in power saving (notable autosuspend) being disabled.

Problem solved 🙂