• Thoughts on 3D printing

    A few months back my wife gifted me a 3D printer: an entry level Bambu Lab A1 Mini. It’s a really cool little machine - it’s easy to set up, and it integrates with Maker World - a vast repository of free 3D models.

    Bambu Lab A1 Mini 3D printer (left) with AMS Lite (right).

    Now that I’ve lived with a 3D printer for nearly half a year, I’d like to share what I’ve learned.

    It’s not a free stuff machine

    After booting up the printer, printing benchy - a little boat which tests printer calibration settings, and seeing thousands of incredible designs on Bambu Lab’s Maker World - I thought I will never have to buy anything ever again.

    I was wrong.

    While some stuff printer on a 3D printer is fantastic, it’s not always the best replacement for mass produced objects. Many of the mass produced plastic items are using injection molding - liquid plastic that gets poured into a mold - and that produces a much stronger final product.

    That might be different if you’re printing with tougher plastics like ABS, but you also wouldn’t be using beginner-friendly machines like the A1 Mini to do that.

    So yeah, you still need to buy the heavy duty plastic stuff.

    And even as you print things, I wouldn’t say it’s cheaper than buying things from a store. It’s probably about the same, given the occasional failed prints, costs of the 3D printer, the need for multiple filaments, and the fact that by having a 3D printer you’re more likely to print things you don’t exactly need.

    It makes great decor and toys

    Oh, I’ve printed so many useless things - it’s amazing. The Elden Ring warrior jar Alexander planter. Solair of Astora figurine. A beautiful glitch art sculpture.

    This is Solaire of Astora. The print lines are pretty big - I can print much finer and smoother details now.

    I even got a 0.2mm nozzle (smaller than the default 0.4mm) and managed to 3D print passable wargame and D&D miniatures. Which was pretty awesome, although you have to pay for the nicest looking models, which does take away from enjoyment of making plastic miniatures appear in your house ā€œout of nowhereā€. I’m not against artists getting paid, they certainly deserve it, but printed models were comparable to an mid-range Reaper miniature if you know what I mean, which certainly isn’t terrible, but it’s harder to justify breaking even. Maybe I could get better at getting the small details printed nicely.

    Oh, and if you’re into wargames - this thing easily prints incredible terrain. A basic 3D printer will pay for itself once you furnish a single battlefield.

    You still need to fiddle with settings

    Once you’re done with printing basic things, you do need to start fiddling with the settings. Defaults only take you so far, and if you want a smoother surface, smaller details, or improvement in any other quality indicator - you have to tinker with the settings and produce test prints.

    It’s a hobby in it’s own, and it’s fun and rewarding, but this can get in the way when you’re just trying to print something really cool.

    It shines when you need something very specific

    But the most incredible feeling of accomplishment came when I needed something specific around the house, and I’d be able to design it.

    We bought some hanging plants, and I wished I could just hang it on the picture rail of our century home. And I was able to design a hanger, and it took me 3 iterations to create an item that fits my house perfectly and that I love.

    My mom needed a plastic replacement part for a long discontinued juicer. I was able to design the thing (don’t worry, I covered PLA in food-safe epoxy), and the juicer will see another few decades of use.

    Door stops, highly specific tools, garden shenanighans - the possibilities are endless. It took me a few months to move past using others’ designs and making my own - Tinkercad has been sufficient for my use cases so far, although I’m sure I’ll outgrow it as my projects get more complicated.

    A tinkerer’s tool

    3D printers aren’t quite yet the consumer product, but my A1 Mini shoed me that this future is getting closer. Some day, we might all have a tiny 3D printer in our home (or have a cheap corner 3D printing shop?), to quickly and effortlessly create many household objects.

    Until then, 3D printers remain a tinkerer’s tool, but a really fun one at that, and modern printers are reducing the barrier to entry, making it much easier to get into the hobby.

  • The generational curse of productivity

    My daughter’s grandma is visiting, making me reflect on my upbringing more.

    I grew up in a culture that heavily values working hard. My mother was a hard worker, my father was a hard worker, their parents were hard workers, and so on up to 7 generations (or so my grandmother’s genealogical records say). This meant sitting down to relax wasn’t really something valuable - further, ā€œwhy are you sitting down? It’s daytimeā€ was a common phrase I’ve heard thrown around.

    I wasn’t abused into working non-stop, mind you (in fact, my mom loved me very much), but I did pick up a lot of the core beliefs about hard work, the value of the work, and what makes a good hard-working person ā€œgoodā€.

    This had quite a few upsides. I wouldn’t get tired when I needed to work - be it physically or mentally. Or more or less, I wouldn’t really be bothered by feelings of fatigue. You just push through, naturally. That made studying and working easier. A 16 hour shift during the sowing season? Not a problem. Study late into the night? Easy. Crunch time in the office? No worries.

    This mindset has set me up with a decent academic performance, and a string of jobs which eventually ended up in a career in the heart of Silicon Valley, and a career I’ve done well for myself in.

    The Silicon Valley mindset didn’t help. There’s this ever-present push to be more productive, to grow, and to spend every minute of your day getting better, faster, stronger (I touched on this briefly when I wrote in defense of quality). This just worked to reinforce the mindset I already have.

    I spent many evenings and weekends reading self-improvement or programming books (which is reflected in the content of my blog about a decade ago) or taking classes. I tried to get really good at my hobbies, so that I don’t waste time stagnating. No time to waste.

    Smell the flowers (credit: https://www.instagram.com/shencomix/).

    You see, there are negative aspects to believing that hard work is the only measure of ā€œgoodnessā€, because ever since I was a kid sitting down, relaxing, and not doing much was frowned upon. Oh, don’t get me wrong - I got to play plenty, but the play had to be enriching, useful, and valuable to my growth as an individual. Otherwise it’s ā€œgrumble-grumbleā€ and ā€œwe’re going to throw away this computer some dayā€.

    I find myself taking these beliefs into adulthood. Despite much self-work (a patient, loving, and caring companion helps), I still sometimes find myself worried that I’m not being productive, or doing the right thing.

    I saw this play out even during my time off. I’d spend days organizing documents and tackling long-delayed paperwork, instead of taking the time to focus on things I’d rather do instead. Work, work never ends.

    A decade ago I still played video games and watched shows I love, but I saw the activity as a waste of time. And I’d feel guilty every time I’d engage in any form of entertainment, and sometimes I’d even engage in mental gymnastics to try to prove to myself that what I’m doing is done to improve my own qualities as a human being, like playing a game to learn a new language or maybe pick up a skill I could use in a real life.

    After much rediscovery, self-love, and care I try not to do that anymore. I work hard, yes, but I don’t beat myself up for relaxing and smelling the roses. I love my video gaming hobbies, I enjoy miniature painting, reading science fiction, and picking up short-lived but fulfilling interests here and there.

    Going on paternity leave this year has been a great experience in slowing down. Yes, taking care of an infant is a lot of work, but there’s much downtime to enjoy life (I recently wrote about reflections on my paternity leave).

    I’m not working to build some sort of a portfolio of interests and I’m not trying to turn every hobby into a side-gig or be the most efficient hobbyist to grace this Earth. There’s a balance I’ve been missing, and slowing down has been doing wonders for my wellbeing. Maybe the most productive thing I’ve done was to finally stop trying to be productive.

  • Brainstorming terrible ideas in a group

    Years ago a colleague of mine taught me a brainstorming technique that I find particularly useful. Thanks, Meagan.

    Here’s the thing. Often, when brainstorming in a group, even with a good degree of psychological safety, participants are often worried about appearing like idiots, or having bad ideas. There’s a reputation to maintain after all, and we’re all taught to think before we speak. I find this group brainstorming method to be useful to get around this mental block.

    You create four buckets for solutions to a problem:

    • Ideal: If I had a long time horizon to solve this problem
    • Realistic: If I had limited time and resources
    • Wasteful: If I didn’t care about time and resources at all
    • Harmful: If I wanted to sabotage the problem

    And participants are tasked with populating each bucket. Here’s the fun part: actively harmful and wasteful solutions often lead to the best outcomes.

    Let’s walk through the example. Say you have a team wiki that’s neglected and out-of-date. You’re trying to figure out how to solve this problem. Here are the ideas:

    • Ideal: Hire technical writers to constantly audit and rewrite the documentation.
    • Realistic: Implement a mandatory wiki cleanup day, where each team member is assigned a portion of the wiki to update.
    • Wasteful: Award $500 to whoever contributed the most pages to the wiki each year.
    • Harmful: Set content to self-destruct after 3 months. If the content is important, someone will write it again.

    All of these ideas have problems. Technical writers will not have the context and could put undue communication burden on the team, company mandates are never fun, encouraging quantity of contribution can lead to decrease in quality, and deleting the data defeats the purpose of having a wiki in the first place.

    But this gets you thinking - maybe the harmful idea isn’t so harmful after all. Maybe a staleness banner on pages, with a name of the last editor and a nudge to them could help keep the wiki up-to-date.

    In my experience, ā€œWastefulā€ and ā€œHarmfulā€ buckets have a disproportionate number of responses, many of which start as jokes (ā€œfire everyoneā€, ā€œreboot every 5 minutesā€, ā€œuse carrier pigeonsā€), and improve upon iterations into the winning ideas.

  • Vimwiki: 11 years later

    Vimwiki is a personal wiki plugin for Vim. Using Vim has been a second nature for me for well over a decade (buy my book), and keeping my notes organized using Vim continues to be the best approach. It’s been 11 years of using Vimwiki, here are some reflections.

    If you’re instead looking for a tutorial on how to set up and use Vimwiki in Vim, my tutorial from 2014 is up-to-date.

    So, what do I use Vimwiki for?

    Vimwiki: A page listing various technologies.

    A little bit of everything. Occasional journaling, when I don’t want to pull out a journal and a pen. Notes about technology and any projects I might be working on. Reflections on video games I’ve played. Ideas I find interesting. Topic research notes, like when I try to understand a messy and complex personal finance or tax subjects. Writing drafts (my notes on writing cadence could be of interest here).

    Hands down the best thing about Vimwiki for me, is that it’s something I’ve kept up for 11 years now, and it’s fully open source and doesn’t rely on external services. I’ve changed storage from Dropbox to Google Drive to hosting the wiki myself, and I’m glad that I get to use the same technology.

    Having uninterrupted access to knowledge I deemed noteworthy is useful. It helps me keep my head organized, if only to know that all the thoughts swooshing in my head are neatly organized somewhere on paper. On digital paper, you know what I mean. It’s freeing.

    It’s also lovely that under the hood this is just a set of plain text files. I can always manipulate these files using thousands of text manipulation programs, or write my own utility with ease. I’ve leveraged that in rare cases when Vimwiki capabilities were insufficient.

    But there are a few notable downsides, too. With the benefits of hindsight and some wisdom over the years.

    First and foremost, portability. Vim never graduated into the mobile first world. Yeah, I used to eye roll at Google’s mobile first push of mid-2010s, but the truth of the matter is - I often find myself taking notes on my phone, and then moving those notes to Vimwiki when I have the time (or forgetting those notes exist altogether).

    Even on supported platforms - Windows, Mac, Linux, ChromeOS - there’s always some fiddling involved in the setup. It’s not a set-it-and-forget-it solution. There’s always tinkering involved, and there’s a reason my blog has a number of entries titled ā€œhow to to use Vimwiki on System Xā€ over the past decade (like how I use Vimwiki for instance). It’s a tinkerer’s choice.

    Unfortunately, I can’t think of a significantly simpler solution (outside of plain-text system of notes) that doesn’t lock me into an ecosystem or puts me at a mercy of a company which will shut down the servers once they go out of business.

    I’ve looked at simple solutions like TiddlyWiki more than once before, but I keep coming back to using Vim as a primary interface for engaging with all the information I’ve collected over the years.

    Vimwiki: HTML rendering of the finance page.

    I solved some aspects of portability through serving my instance of Vimwiki via web. Yeah, Vimwiki can render your files to glorious interlinked HTML (which works out of the box by invoking :VimwikiAll2HTML). It’s read-only, however, and requires you to figure out how to host your own web server. Which isn’t hard if you already host other things on your local network (which I do), but can be a pain in the butt if you don’t. And you’d be setting yourself up for a security mess on your hands if you’re standing up a web server in the cloud without knowing what you’re doing.

    For its entries, Vimwiki supports either its own VimWiki syntax (which is based on MediaWiki) or Markdown syntax. I use the VimWiki syntax, and while it makes it harder to migrate away from Vimwiki, I think it’s a better fit for the Vim editing. I’m glad I stuck with the VimWiki syntax, since I find [[link]] to be easier to parse than [link](link.markdown).

    Can I see myself moving to a different solution in the future? Possibly. If a fully open source, Vim-friendly, truly portable solution presents itself - sure, I’ll put together some scripts to migrate (or more likely, use AI to help me write one - AIs seem to be good at writing low-risk one-off migration scripts). Do I regret using Vimwiki? Absolutely not, it’s been an amazing companion to me over a decade, and given that the data’s stored in plain text - I’m not worried about losing my data if I ever change my mind.

  • Retro gaming, minimalism, and digital snacking

    I’ve often talked about minimalism - I even wrote about it over a decade ago on this very blog. Life ebbs and flows, and I go through phases of accumulating and getting rid of stuff, but nothing compares to the freeing feeling of knowing you only have meaningful things.

    My interest in digital minimalism started after I read Cal Newport’s book on the subject. Having a decluttered digital space and focusing on meaningful on-device experiences has been a major focus of mine. I curate my RSS feeds and follow blogs I care about. I only watch YouTube videos from creators I subscribe to.

    But something’s been missing. I still wanted a quick, on-the-go experience for when I have five or maybe fifteen minutes to spare. Yeah, the right thing would be to just put down my device and think, clear my head, or maybe even meditate. But my mind, like so many others, just gravitates toward short-form content - Reddit, YouTube Shorts, you name it.

    Anberic RG 35XX Pro: A terrible name for a wonderful little console.

    I think I’ve found a solution: the Anberic RG 35XX Pro. Yes, it has a terrible name, but it’s a retro handheld console that can play games from various arcades and consoles, up to and including the original PlayStation 1. We’re talking Game Boy Advance, SNES, Sega Dreamcast, Nintendo 64 - and dozens of others. It even supports PC ports, as long as the graphical requirements are low.

    Look, I have a Steam Deck. It’s an amazing device for gaming on the go, but it’s a relatively large device to lug around. Another console I have, the Nintendo Switch, is smaller, but still a little too bulky to fit in a pocket (unless you wear cargo pants, maybe). The Anberic RG 35XX Pro (really, what a mouthful of a name) slides right in my pocket. I can hold my sleeping infant in one hand and play through a classic from my childhood with the other.

    And the best part? All of that for a relatively low investment of around $70.

    The handheld has a 3.5-inch screen with a 640x480 resolution - which is exactly the resolution many games from that era were built for. Text is large and legible, and decades-old graphics look great on a tiny screen. The handheld also comes with modern conveniences, most notably save states. You can save the game at any point, which really helps with the pick-up-and-play nature of the device.

    Outside of PC games, I mostly grew up with PlayStation 1 titles, so I’ve been playing Tekken 3, Final Fantasy VII, and Harvest Moon: Back to Nature. This little console has been a welcome antidote to the endless scroll.

    I picked mine up from Amazon: Anberic RG 35XX Pro (affiliate link), or you can order directly from the manufacturer (the price is the same as Amazon once you factor in the shipping).