I Got a Rock

The title here isn’t particularly relevant, I just never miss an opportunity to quote It’s the Great Pumpkin, Charlie Brown.

A few months ago, a friend sent me some pictures of cool stone-lidded ring boxes and asked if I thought I could make one for her daughter’s wedding. I was 100% not convinced I could, so gave myself a ton of outs but agreed to give it a shot. After a lot of stops and starts, I think the final result came out ok — fortunately she likes the “rustic” look! Loads of new materials and techniques which is always super fun.

The Rock

By far the most intimidating part of this build was the rock lid. The size and shape of the rock defines the piece — I wanted something with a nice texture and an uneven, rounded shape. It needed to be short vertically, kind of like a tall pancake, so that the fall of the edge blended seamlessly into the wooden box. I trolled around on the beach for awhile and found a few good candidates of various types and brought them into the garage.

OK, how to cut this thing on the horizontal? I’ve used my Dremel to bore rock but that was a non-starter here — the cut was too wide and along the thinnest part of the rock. I found a couple of well-reviewed diamond-edged blades for my trusty angle grinder, and set to work on a jig. It basically ended up as a mini-version of my chainsaw-slabbing jig, holding the blade horizontally above a supporting surface. The hardest part of these is safely moving the material through the blade while retaining all ten fingers. Push sticks and Kevlar gloves for the win!

Next lesson — some rocks are really hard. This should not have been a surprise, but especially with the awkward angle, crystalline pieces like quartz or granite were basically impossible to cut cleanly. The one I ended up with was (I think) well-weathered scoria … related to pumice but much denser and more solid. In the picture with the jig, you can see the little rectangular piece in the center left over after cutting the rock outside-in around each edge; I was able to remove that with a bunch of elbow grease and a diamond sanding pad which cleaned up the bottom nicely.

The Box

The red alder tree that fell on the beach a couple of winters ago has been my go-to for a ton of projects requiring clear wood — went back to that here too. I traced the rock top on a blank and rough cut the shape on the bandsaw, then basically carved and sanded until I had something that meshed into the top. Ideally I would have tapered the bottom edges more, giving the whole piece more of an egg shape, but I needed to preserve height so there was enough space inside the box for a ring.

Did I mention a lot of sanding to get this right?

The space for the ring was pretty straightforward — just a 1-3/8″ hole with the drill press — but I was sweating it out convinced my box was either going to fly across the garage OR I was going to drill through the bottom by mistake. Happily neither of these things happened, and after a few applications of tung oil to bring out the alder color it was time for the really hard part.

Hinge and Closure

I now had a box and lid which fit together nicely. The plan was to attach the lid using a brass pin which was tight enough to hold things together but loose enough so that the lid could rotate open, exposing the ring nook. I also wanted to put a pair of small magnets on the opposite side so that it would “snap” closed to the right position. Seriously, I don’t know how people did this stuff before Amazon and the Internet.

The Dremel was the right tool this time; I have a bunch of diamond-tipped bits that go through rock and bored the pin hole and magnet divot nicely. Holding the piece under water reduced dust, and more importantly kept the bit cool so it lasts.

I always stress out about getting the opposite side of matching holes right. It was extra important here, since being off at all would offset the lid from the box — and the clean line between the two was the whole point of this exercise. I put black Sharpie on the bottom of a long pin, held the lid and box together, and pressed the pin through the lid onto the wood, making just enough of a mark to drill out its mate accurately. The same technique worked on the magnet pair too. Whew.

I glued the magnets into place, then cut the pin to length and glued it into the box. Lara had the great idea to coat the top of the pin with wax before sliding on the lid, which made it fit snugly and turn smoothly. I couldn’t believe my luck … it actually opened and closed and everything. WOOOOT!

Finishing Touches

I sure do love the Glowforge. Cut out a little circle of adhesive cork to fit into the ring nook, engraved with a script “A” for good measure, and things were looking pretty snappy. The last bit was a decorative elastic (loop closure sewed by Lara, thank you!) to hold it all more securely in a pocket or whatever.

This was definitely the most “mixed material” project I’ve done … it was a fun challenge to figure out how to shape and join everything. If I were to do another one, I think I’d use a slightly bigger rock for the lid … that would make it easier to create an egg shape without giving up vertical space for the nook. I’d also love to find a stronger magnet, but that is definitely a tradeoff of size vs. holding strength. The little guys do a surprisingly good job.

Once again I find myself enjoying the juxtaposition of larger-scale and smaller-scale work. I am pretty sure I’ll never get tired of this stuff. Until next time!

Lincoln Logs FTW

A few weeks back I shared some pictures of the driftwood gate at the corner of our Whidbey place. Since then, I managed to actually finish the fence that runs from that corner along the bulkhead (only took three years). The last step of that was setting the pro-manila rope; turns out there are few things more satisfying than cutting that stuff with an electric hot knife. The brass hardware looks great too (sourced by Lara of course) and I even got the swags pretty even. Woo hoo!

Because I need space to move boats and such up and down from the beach, I left about fifteen feet unfenced at the far end of the bulkhead. Very functional, but it did look a bit weird to have the fence just end like that. Hmm, a perfect spot for the log bench I’ve been thinking about….

I’ve been keeping an eye out for the perfect driftwood bench log since last winter — something the right size, with a nice weathered vibe, and (most importantly) in front of my house so I didn’t break my back moving it down the shore. Fortune (or maybe Gummarus, the patron saint of woodcutters) finally favored me a couple of weeks ago, so I wasted no time cutting two short lengths for feet and a long one for the seat and backrest.

Splitting the long piece in half was a ton of fun. I cut wedges from a 2×4 and worked them down the log lengthwise, starting from a natural check at one end. The force generated by these simple machines is outrageous. The only bummer was a secondary mid-sized crack that opened up along the length, but it didn’t impact the integrity of the piece. I reinforced it with a few long screws anyways, and after the wood dries a bit more I’ll fill it with Check Mate to keep rot from setting in over the wet season.

I needed an assist from the boat winch to haul the long pieces up over the bulkhead … lots of seawater still in those fibers! I let them sit for a couple of weeks which was enough to dry a few inches at the surface. It’ll take a lot of summer “heat dome” action to clear out the moisture completely. Hopefully by mid-September it’ll be dry enough for a couple of coats of water seal. We’ll see.

A LOT of sawdust later, the seat was planed down to an even surface that I finished with rough sanding and filleted edges. No thigh-splinters here, ladies and gents.

Next up, notching the feet to hold the seat. This was harder than I expected — people that build full-on log homes this way have my undying respect. I made some cardboard templates to help gauge my progress, roughed the notches out with the chainsaw and then just chipped away with a hatchet until I got a reasonable fit.

Rough-trimmed the feet to make them look a little nicer and be less of a tripping hazard, dug them into the bulkhead rocks a bit, laid on the seat and woah it is rock-freaking-solid! I am really impressed with how stable it is even without any additional pegging.

All that’s left to do is the backrest — which I will leave to another day, probably after the 4th. I say “all that’s left” but this is actually the biggest engineering challenge. Since I want to easily move boats over the top, the backrest should be removable. My current thinking is:

  1. Use the chainsaw to slab out a thinner piece from the leftover long log.
  2. Plane that down so the person-side is smooth and comfortable.
  3. Fabricate three large L-shaped brackets and bolt them to the backrest.
  4. Cut slots in the seat to fit in the other ends of the brackets.

Theoretically this should easily slide in and out but still provide stable support, with just a little flex in the metal brackets. I have some pieces left over from an old project that should work well for that. There will definitely be some tension between stability and ease of removal; will try a few options on scrap wood first.

I really enjoy mixing it up between large- and small-scale projects. The techniques and materials are similar in many ways, but the challenges and rewards are very different. I love that I can jump up and down on my bench without it budging an inch — and that I can see my reflection in the (ok, almost) flawless polish on the little bud vase I made earlier in the year.

Always new stuff to try and to learn! But perhaps just a little later, after I finish this beer and contemplate the world from my new bench, watching the tide roll and the sun set over the Salish Sea. What a cool world we get to live in.

I made a spoon.

A couple of months ago I bought a copy of Country Woodcraft: Then & Now by Drew Langsner. It’s a beautiful book that dives deep into everything from felling and hewing logs, to building and sharpening tools, to creating everyday items like rakes, stools, buckets and bowls. It even covers handmade farm implements like plows and harrows — super-fun to learn about, but probably not high on my personal list of essentials. The original book was published in the 70s and was updated last year. Highly recommended.

After reading the chapter on spoon carving earlier this month, I happened to be clearing out some winterfall maple branches from the back of our yard in Bellevue, so I cut a few chunks and tucked them away for a rainy day experiment. Yesterday turned out to be that day!

Here’s the thing though — turns out that spoon carving is kind of the macrame of woodworking. YouTube is downright brimming with videos on YouTube talking about finding the spoon in the wood and connecting with the spirit of our ancestors through cutlery. Look, there’s more than a little hippie in me too, but seriously people.

I guess that’s why I’ve enjoyed Country Woodcraft so much. It’s incredibly detailed and richly illustrated and isn’t shy about natural and constructed beauty — it’s just that they emerge primarily from function. Consolidating this particular endeavor down to the essentials:

  1. Get a spoon-sized piece of wood. Grain should be parallel to the length. Avoid the pith.
  2. Whittle it into a spoon shape. Don’t cut yourself.
  3. Sand and finish it.
  4. You now have a spoon.

Don’t get me wrong, there is clearly bigtime craft here that takes work and practice. You need sharp knives and hollowing out the bowl requires time, care and patience (I used a hook knife, but a lot of folks use gouge chisels). Deep ladles and such require steam or other bending techniques. My amateur attempt is painfully clumsy compared to real carvers, but it makes me happy nonetheless.

I doubt that fine carving is in my future — years of repetitive workplace stress on the fingers and wrists have taken a toll on my dexterity. Thankful for the big bottle of Advil in the medicine cabinet! But I always value the opportunity to appreciate the work that goes into creating even the simplest objects and tools. Fun stuff!

And next time there is pasta sauce to be stirred at the Nolans — we are golden.

Driftwood Chic

My personal architectural aesthetic was pretty much locked into place by the 1960 Disney movie Swiss Family Robinson. I mean sure, they had materials from the wrecked ship to work with, but running water, a piano and a skylight in the master bedroom of a jungle treehouse? That is living my friend. I will never forgive Disney for retheming their home with some stupid Tarzan noise.

Anyways. There is a little corner of our property here on Whidbey that bumps up against a shared road-end lot. We need a fence there to keep our dog in (and others out), but it’s also the only direct access to the ocean-side yard, so we need a gate that can open. Time for some driftwood construction, Swiss Family Robinson style!

Turns out that getting random driftwood constructs square enough to hang evenly, swing freely and latch securely is a little harder than it looks. But eventually we got there, with beautiful finishing decoration courtesy of my daughter Alex, who at 27 still can rock the deserted island vibe.

The rule was that (excepting hardware) the structure could use only driftwood pulled off of the beach. I cheated in two places — first, I didn’t pour concrete footings, but did bury short treated posts in the ground under each leg, secured with lengths of rebar between. I also cut a circle out of marine-grade plywood for Alex to mount the sunburst pieces on. Good to have those off my conscience.

The framing rails of the gate came from branches about 5″ diameter that I cut in half lengthwise using multiple wedges. Branches of this diameter almost always naturally split while they dry, and unfortunately the lines they choose are rarely square (knots don’t help!) so this took a few tries to get right. My super-awesome (and cheap) new electric planer evened out the flat sides pretty well and little 90-degree chucks at the corners kept things stable.

I routed channels on the top and bottom rails, and then went hunting for the vertical pieces to lock into them. My favorite part of this was using the router table to create little round tenons that fit into the slot. Final assembly was a bit of a challenge — bungee cords did a great job of holding it all together while leaving enough flexibility to pop the slats into place.

Honestly, the thing that worried me the most was the hanging hardware. This ain’t construction-grade wood here folks, and even a small gate hung on one side creates a bunch of downward torque. But as always, staring vacantly at hardware shelves (thanks Sebo!) for a half hour did the trick — A couple of big screw hooks and galvanized eyebolts were easy to adjust and make it easy to just lift the gate off if needed. Reshaped a standard latching bolt with my beloved angle grinder (and a hammer) and holy crap it actually all came together.

Alex’s contribution really makes the look. She spent a ton of time picking little pieces and getting them arranged into the sunburst — turns out little super-thin drywall screws do the best job at securing fragile wood bits without splitting them.

Next up, a log bench on the waterside with a nice backrest for enjoying summer evenings with a short pour of classy whiskey (Fireball). On it!

A Little Project

A few months ago I made a batch of table salt from Puget Sound seawater (just like my hero Ruth Goodman). It was surprisingly easy; the only finicky part was siphoning off the clear water after letting all the gunk settle to the bottom. From there it was just a slow not-quite-boil until all that was left was the final product. It tastes great and is perfect for cooking or finishing, but the grains were just a little too big for a shaker. Easily fixed with a mortar and pestle, but we didn’t have one in the house. Ah well.

Fast forward to last week. All of my inside projects were on hold drying or missing parts, and it was too rainy to work outside. The perfect time for a “little project” — something self-contained that can go from start to finish in a few hours. Maybe, say, a mortar and pestle?

I’m a big believer in these bite-sized little enterprises. Changing scope from broad to narrow (and back) has always felt like good exercise for my brain. The problems in a little project are more constrained, and the stakes are usually lower because sunk cost can only grow so big in a day or two. This was particularly true at work, where each week I’d try to take at least a half day to close my email and dive deep into some knotty but tractable nugget of code.

The Mortar

I found a chunk of alder in my stash to yield a 5” or so shallow bowl. It seemed smart to turn it with vertical grain, so that grinding pressure would be against the stronger ends. And the bowl itself needed to have a shallow slope to avoid nooks and crannies where stuff could hide from the pestle.

Simple enough, and the coloring that emerged was super-nice. I did find a couple of weird soft spots while shaping the inside, but not bad enough to make a big difference — a little homemade sawdust-and-wood-glue filler did the trick. After sanding, I cut the bottom with my awesome new ryoba saw (happy birthday to me) and….

…Well crap. It turns out that the chunk of wood I picked was leftover from a past project. Those little soft spots on the inside were the ends of two of four screw holes that I totally missed when mounting the block, now gaping out at me from the bottom of this beautiful little bowl. Ugh. I filled them with more of the sawdust putty and it’s “fine” but definitely a bummer. Pay attention, Nolan!

On the upside, the coloration got even better after finishing the piece with (food safe) mineral oil. I’ve made a few pieces out of this alder (it fell on the beach last Fall) and used epoxy, paste wax and a couple of other finishes … this one is definitely my fav.

The Pestle

Using the same theory of end-grain strength I found a smallish branch piece (more leftovers, this time from a set of building blocks for my nephew and niece) that was largely straight and about six inches long. This should be the easy part, right?

Well, the shape of a pestle is interesting. Obviously the business end needs to be rounded into a shape to fit the bowl, maximizing surface area for the grind. I’m somewhat embarrassed to admit that I rough-shaped this with my bench grinder. Kind of like using an ICBM to kill a bug, but sure was quick!

At first I thought I’d just leave the rest of the pestle with it’s natural cylindrical branch shape. This was a very bad idea. Suffice to say that the end result looked more like something sold by “Adam & Eve” than by Williams Sonoma. Researching a little online, I learned that the classic tapered-towards-the-top shape not only looks better, but is more functional as well — it doesn’t slip upwards in your grip as you press down on the mortar. I am definitely not a “the old ways are always the best” kind of guy, but it is striking how often seemingly-arbitrary everyday design elements have evolved that way for good reason. Anyways, I whittled the pestle into shape and then smoothed it down for finishing.

Done!

The final product looks nice in our kitchen and does the job it was made for. A few fun problems, beautiful natural materials and time well spent. Now, back to the more complicated projects! I am probably halfway through a working SMART on FHIR implementation and look forward to writing that one up soon. Always, always fun things to make and learn.

Toolmakers

Over the last couple of years I’ve gone from being an amateur woodworker to still an amateur woodworker. Mostly I’ve learned first-hand how much I respect the craftspeople who have invested a lifetime really understanding the materials, tools and techniques involved. I’ve watched my wife develop that mastery in textiles over decades, but nothing hammers it home like trying to create something yourself (please appreciate the hammer joke).

Anyways, along this journey I’ve noticed that there is a striking similarity between woodworkers and software developers — both groups spend at least as much time making tools-to-make-stuff as they do actually making stuff.

Routers are Magic

My latest experience with this in the woodshop started with a burl from a huge first-growth fir stump a little way down the beach. After using it to create some fun pieces on the lathe, I was left with a nice slab that had qualities of both the burl and the healthy tree — perfect for a coffee table centerpiece.

I cut the slab with my chainsaw, so it was pretty uneven — task #1 was to flatten it up. Typically I’d do this with my planer, but read this gem in the manual: “DO NOT PLANE END GRAIN, AS THE WOOD COULD SPLINTER OR POSSIBLY EXPLODE.” Explode? While I’d like to see that, I would prefer not to experience it. Instead, enter the router sled. A sled holds a router at a fixed height over the work table, allowing the user to pass a flat cutting bit in “scan lines” over the piece until it’s even. Of course, I didn’t have such a device.

router sled

Time for a tool project! Figuring out how to build a sled that would work in my shop took a little research, but a day later I had a workable setup. A little fine-tuning and a lot of sawdust later — success!

Next up, trimming the edges, which were pretty damaged and brittle from years on the beach. The trick here was to follow the natural contours of the piece — I didn’t want to lose the live edge, just make sure it wasn’t going to be too sharp or break off. A straight-bit router would do the job, but it would be really hard to guide the tool smoothly around the slanted and uneven surface.

router table

Another tool project! This time to create a router table, which allows the bit to project up from underneath. In this configuration, I could slide the piece around the bit rather than the other way around. Took another day to build the table, but it worked great and I even added a little mount for my dust collector, so little less sawdust this time.

More work to do before this one is finished: adding some etching to the top of the slab, pouring the epoxy coating and cutting a cork pad for the bottom. But the centerpiece is well on its way after only two days worth of toolmaking side trips, and of course those tools are ready at hand the next time I need them. Woo hoo!

Back to Software

Back in front of the computer, I thought it’d be useful to write some code demonstrating SMART on FHIR, a pair of technologies that make it easier to add new functionality to the Electronic Medical Record systems in use at most hospitals and healthcare practices these days. I’m actually optimistic about this approach and it’s worthy of a little evangelism.

But even for learning purposes, I don’t like to write code that isn’t at least a little useful, so first I had to figure out what my SMART on FHIR app would actually do. It turns out that clinicaltrials.gov (the US government’s central database of human trials) has a nice search API, so I thought a little plugin that would match a patient’s record with potential trials would be a good place to start.

Sitting down to write the class encapsulating this search, of course I needed a way to make HTTP calls from Java. There are a million libraries for this, but dependencies suck. JDK11 has a nice HttpClient class, but with so many folks still on JDK8 I didn’t want to limit the audience. That leaves us with the old workhorse, HttpUrlConnection. It’s a fine class and I’ve used it in a few articles already, but it requires a bunch of scaffolding and has some quirks that can quickly cause issues in production use.

Tool time! Turns out I won’t be writing about EMRs until next article, because right now we’re going to take a little side trip into the seductive-but-oft-abused world of building software tools and utilities.

First, is it worth it?

Building tools is just fun. There is something incredibly satisfying about creating a tidy and effective interface that does something useful and self-contained. They are usually easy to test well with automation. And you can’t beat that little dopamine hit every time they prove useful.

But bad tools are the worst. The wooorst. They look reusable, but are really tied to whatever unique use case the creator was worried about. Or they work great in a prototype but ignore important production stuff like logging or timeouts. Maybe they have hidden restrictions that aren’t enforced or documented. If you’ve written production code for any length of time, you’ve been there.

So the first questions to ask are — (1) is this tool really something that will be reused; (2) do you really understand those use cases; and (3) are you really committed to make it something usable? Until all of these are obvious yesses, Just Say No. Do some basic modularization within your own feature space and file it away until the next time something similar comes up. In my experience, the third time you see a problem is usually about the right time to go full tool on it.

HTTP Requests

It is a pretty rare system these days that doesn’t make remote calls to some other service using HTTP. The vast majority of the time, consumers of these services basically just want network calls to act like local ones:

  • They return synchronously.
  • They time out reasonably.
  • They are secure, or at least not gratuitously insecure.
  • They accept and return Java objects, not wire types.

Truth be told, most consumers write their features as if these things are true regardless of what their HTTP library actually does. And because usually remote calls return quickly without errors, those assumptions easily make it through development and basic testing. It’s only in production (where everything happens) that things go south.

This reality is why you need an easy-to-use library built for production. It will dramatically reduce the number of times you have to re-visit features to add timeouts or error handling or other crap that should have been there to begin with. In short — it’s worth it.

Side note — “it’s worth it” even if you’re using a robust third-party HTTP library as your underlying implementation. These libraries are generic by design. You’ll reap all the same benefits by pre-wiring them to your specific configuration and logging services, and by reducing optionality using your own façade.

WebRequests.java

The first version of my tool for web requests is in WebRequests.java. Basic use of the library is simple by design:

WebRequests requests = new WebRequests(new WebRequests.Config());
WebRequests.Response response = requests.get("https://www.yahoo.com");
System.out.println(response.successful() ? response.Body 
                   : String.format("Call failed: %d", response.Status));
requests.close();

Good tool design starts with the first line in this snippet. Default constructors hide settings that a user really ought to think about, but forcing a bunch of explicit/arbitrary choices up front makes the tool hard to adopt. As with so many other things, we try to find balance. Users must be aware that the Config class exists, and the options are crystal clear (see lines 29-36), but they can inherit a set of defaults that were thought through with production environments in mind.

The Async Morass

Network IO really needs to be done asynchronously — the amount of time spent waiting on network activity is huge and can cause havoc in your main threads. But async coding is absolutely crap to get right, and the callback constructs built into modern environments

Create {
	The worst {
		Nesting {
			Disasters {
				Ever {
					No Seriously {
						I’m going to lose it. {
}}}}}}}

Blocks are for variable and condition scoping. I’ve learned to live with them for Exception handling. Using them to keep track of threading, especially beyond a single callback, is nuts. And don’t start yammering about “comprehensions” because you can’t debug those either.

Look, ok — complex things are complex (lines 116-181) and being really careful you can manage it. But in most real world situations, quality code should read for and be organized around logical behavior, not threading implementations.

We deal with this in WebRequests by hiding an ExecutorService inside the class. “get” methods appear synchronous to consumers, but coordinate behind the scenes, and are guaranteed to return control to the calling thread within their timeouts. This isn’t particularly easy to do with HttpUrlConnection (note the syncFutures stuff starting at line 205), and there are some edge cases that will leave worker threads in a temporarily zombie-ish state, but they won’t gum up the primary threads of the application.  

For complex use cases, the class offers up the CompletableFuture directly through getAsync … but I doubt that ever sees much use.

The biggest downside to this approach is that the consumer needs to close() the tool at shutdown time, or whenever they want to reclaim resources. This is an annoyance for sure, but on balance I like the tradeoff. If the user doesn’t eventually call close, process shutdown will hang. We could “fix” this by setting our worker threads as daemons. But I like it as-is … the shutdown behavior is obvious and a good reminder to clean things up, making it easy to do the right thing.

Bounded Functionality, not Partial Implementation

WebRequests v1 is a solid and pretty much complete solution for common GET requests. It helps manage query string parameters, deals with IO and error cases, and returns data as a convenient String that can be parsed into JSON or whatever if necessary. What it does, it does well.

On the other hand, there are a few things it doesn’t pretend to support: POST, authentication, cookies, other custom headers (in or out), all kinds of things. “Not pretending” is the key to a good tool, which needs to be both great at and clear about what it does.

As a simple example, because we accept a Map of query string parameters, we escape them correctly and merge them into the base URL if it already includes parameters. Our public interface implies that we’ll do that, so we’d better deliver on the promise. But there is no place to specify a method … so clearly POST isn’t implemented.

The v1 functionality was a nice bite. It supports uses cases beyond our own as-is, but also provides a “home” for new functionality as we need it — inheriting all the goodness we worked hard to get right in the first revision.

ClinicalTrialsSearch and What’s Next

With WebRequests in hand, ClinicalTrialsSearch.java just wraps up the interface to clinicaltrials.gov with a simple object. There are some smarts there to try to make it easy to normalize data into the proper formats, but nothing earth-shattering, just handy. (I do like the way LegacyGender.java and StateProvince.java do this normalization themselves.)

Finally ready to pop up the stack and get back into SMART on FHIR — stay tuned for that. But first a little more time in the woodshop to finish up my centerpiece and a couple of other projects. Until next time!

Inlays on the Glowforge

I just finished this coaster using cherry-clad MDF with red acrylic inlays; both materials from an assortment I got from my valentine (she knows me well!). A few new techniques here that I had a lot of fun with.

The design was inspired by tiles we saw a few years ago at the Alhambra, created in Inkscape by composing a bunch of variations on a sixteen-point star. I am still a rank amateur with this app but am blown away by its power. The second and third rings were each created by overlapping two 16-point stars with different “spoke ratios” (the radius of the outer points divided by the radius of the inner point) and then taking the difference between the two areas. For the third ring I also trimmed out a circle so you got the five-sided end result.

the round-bottom points in the outer ring were created by distributing triangles and circles around the same circular path, breaking all the paths apart, and unioning each touching triangle and circle. That union bit at the end was critical to get a single cut around the edge.

I cut the design from the cherry sheet along the red lines in the screenshot, and engraved the circle in blue. I also cut out a solid circle the same size to act as a base. The trick from there was to cut the acrylic pieces so that they’d inlay perfectly into the wood.

This is way more complicated that you might imagine! First of all, the laser cuts with a tiny but meaningful “kerf” (the width of the cut itself). The kerf is different from material to material, which is why I added that little stub of red cut line outside the circle in the Inkscape screenshot. The width of that test cut measured .014″ using my calipers, which meant that the cutouts were really .007″ bigger than my design. Inkscape came to my rescue again with an “outset” feature that expanded all the shapes for the acrylic cuts.

But wait, there’s more. It turns out that the laser doesn’t make a perfectly vertical cut. It’s actually a cone shape with the point focused on the top edge of the material. This means the bottom of the cut is just a little bit wider that the top, screwing up the inlay fit. BUT (and this is cool), if you flip and reverse your design, you cancel that out and get a perfect match. This was super-simple given my symmetric design; I just flipped over each piece of acrylic before pressing it into place. I have to say it was deeply satisfying having each inlay just click into place so beautifully.

Since this was going to be a coaster, I poured two coats of clear epoxy resin over the whole thing, sanded down the drips and then cut out (thanks again Glowforge) a circle of self-adhesive 2mm cork for the bottom.

I’m quite proud of the end result! A lot of work for a simple coaster, but now that I’ve figured out the quirks, new designs should come together pretty quickly. So many neat concepts packed into that Glowforge.

Love the translucence in the material; maybe next project should be a candle lantern?
Before the epoxy pour, which shows off the fit a little better.