\n\n\n\n
I first remember André Braugher from his performance in Glory where he played perhaps—low key—the most important role in the movie. He played the person with the most to lose and the least to gain by joining the army and fighting to end slavery (something the movie later acknowledges is pretty much a fool's errand). He plays the person we—the viewer comfortably separated from the events portrayed by circumstances, time, and knowledge of what will happen—should be but almost certainly won't be. (No more details: watch the movie if you haven't seen it.)
\n\n\n\nMost people will know him either from his role in Brooklyn Nine-Nine, an above average a great sitcom of recent years, or Homicide: Life on the Street, the best police procedural ever made, based on a fantastic non-fiction book by David Simon. (I revised this paragraph after conferring with numerous colleagues and discovering that my daughters' opinion is widely held; I am outvoted!)
In Homicide he is again playing someone who stands for justice despite his own self-interest. He is the black man with obvious intellect and education who chooses to work as a Homicide detective when there are so many better options for him, it ruins his marriage, and it is killing him. He works within a corrupt and under-resourced system and with colleagues he pretty much despises trying to make the tiniest difference when and where he can, and usually to his own disadvantage.
\n\n\n\nAnd, despite its being a comedy, as Raymond Holt in Brooklyn Nine-Nine he somehow again plays someone pretty much in this situation except that, now an older man and a captain, he has somehow navigated an earlier phase of life in which all of… this… was much worse, and today is comfortable enough that the horribleness is purely and not always darkly comic.
\n\n\n\nHomicide is one of my favorite TV shows of all time. Brooklyn Nine-Nine is my daughter's favorite TV show of all time.
\n\n\n\nAndré Braugher is already missed.
\n","$updatedAt":"2024-06-05T09:10:30.273+00:00",path:"andr-braugher-rip",_created:"2024-07-09T20:28:30.241Z",id:"8106",_modified:"2024-07-09T20:28:30.241Z","$id":"8106",_path:"post/8106"},{date:"2023-12-02T14:24:54.000+00:00",summary:"What vector graphic editing software produces clean output with minimal control points, specifically for creating symmetrical shapes and performing boolean operations, as explored by the author who has experience with multiple applications including Affinity Designer 2, Sketch, Vectornator, Graphic, Inkscape and Adobe Illustrator?",keywords:["inkscape","svg","boolean operations","vector graphics","sketch","affinity designer","vectornator","graphic","babylonjs","xinjs"],author:"Tonio Loewald","$createdAt":"2024-06-05T09:10:30.285+00:00","$databaseId":"665dfafe000014726b3d",title:"Pi 5 follow-up","$collectionId":"665dfb040030d12ada24","$permissions":[],content:"\n\n\n\n\nI don't have a working version of Illustrator any more, but I strongly suspect Illustrator produces perfect output in this case. In the end, I hand edited the bezier curves in my logo, but it looks like I possibly could have saved time by using Inkscape to do the booleans (and then going back to Sketch to produce clean output).
\n","$updatedAt":"2024-06-05T09:10:30.285+00:00",path:"pi-5-follow-up",_created:"2024-07-09T20:28:30.928Z",id:"8088",_modified:"2024-07-09T20:28:30.928Z","$id":"8088",_path:"post/8088"},{date:"2023-12-01T23:40:30.000+00:00",summary:"What is my experience with setting up and using the Raspberry Pi 5 compared to the Meta Quest 3?",keywords:["raspberry pi 5","quest 3","nodejs","nwjs","chromium","babylon3d","electron","mathml","svg","raspberry pi"],author:"Tonio Loewald","$createdAt":"2024-06-05T09:10:30.273+00:00","$databaseId":"665dfafe000014726b3d",title:"Pi 5","$collectionId":"665dfb040030d12ada24","$permissions":[],content:"\n\n\n\n\nOne of the things I did early during the COVID shutdown was buy myself a Raspberry Pi 400 (the one built into a keyboard) along with the camera module and some lenses. I did not realize that the Pi 400 did not have the required hardware interface to work with the camera (if I recall, the 8GB Pi 4 was already sold out, because a lot of people decided to play with Raspberry Pi devices during the lockdown).
\n\n\n\nAnyway, I never got to play with the camera module and in any event I think I lost track of it during my move to Finland. Maybe it will show up.
\n\n\n\nThe Pi 4 was pretty much perpetually out of stock ever since, with scalpers reselling the device for steep markups on Amazon. But, the Pi 5 seems to be easy to get, at least for the moment. As I type this, my microSD image is being verified…
\n\n\n\nWhen I got my previous Raspberry Pi, I was working at Google which means I was spending a lot of time using Linux, so messing around with the Pi was fun and easy. I got b8rjs working on it and played around. I've since tested xinjs on my old Raspberry Pi, and even found a bug (if I recall correctly, I assumed browsers supported MathML and the Pi's browser does not).
\n\n\n\nFirst thing, I received the Raspberry Pi 5 kit in a ridiculously large, nearly empty box that was mostly full of padding paper. Next, it was hard to open the white cardboard boxes without tearing them, so I just gave up.
\n\n\n\nThe case doesn't include screws (which it seems designed for) or instructions, so I googled the instructions and they were a bit poor (e.g. they told me to make sure the fan was plugged into the socket marked \"FAN\" rather than providing a diagram (it's not in the obvious place and it comes with a piece of plastic blocking it, so it doesn't look like a socket. Luckily I had a set of tools for mucking around with computers that includes a good set of tweezers.
\n\n\n\nAnyway, it assembles very easily (I think I slightly misaligned the heat sink… oh well).
\n\n\n\nFirst nice surprise is that the keyboard is actually, like old wired Mac keyboards, a USB hub. And in fact it one ups Apple by providing three extra USB sockets (although it loses points for having a mini-or-micro-USB socket vs. a type-C socket for the cable coming from the computer. Is that even allowed in the EU these days?
\n\n\n\nThe first type I had to type an \"@\" symbol I had a \"wow this is super spongy\" reaction to keyboard. It may be a nice USB HUB but it's not a great keyboard.
\n\n\n\nI plugged it in and the Pi 5 immediately powered on (and the fan started spinning, so I'm relieved not to have to spend upwards of two minutes disassembling and reseating the connector). What's a nice contrast to my Pi 400 experience was that I assumed that once I plugged in the monitor, keyboard, and mouse I'd need to reboot because I seem to recall that my old Raspberry Pi didn't send a signal to the monitor if it didn't have a monitor plugged in during boot. But, no, as soon as the monitor was plugged in (still micro-HDMI sockets) everything Just Worked.
\n\n\n\nThe Mac-like menubar at the top of the screen has three icons in the top-left corner, an app menu, a browser button, and a terminal button. Perfect.
\n\n\n\nOh yeah and when I created the image for the machine on my Mac it offered to copy my WiFi credentials onto the image (and triggered a security dialog when I said yes) and it Just Worked. This was a conspicuous pain point for the Quest, and I let it slide because I assumed that Meta must have had some issue with Apple's security stuff that stopped them smoothing it over. But, apparently, Raspberry Pi can do it (and their imager tool looks far more polished than the Meta support apps for the Quest 3 do).
\n\n\n\nI quickly got into my Google and Apple iCloud accounts thanks to the new Passkey stuff which isn't an option for the Quest (and of course Meta hasn't put any effort into helping with this because it's the kind of thing anyone seriously using their product would quickly get frustrated by, and no-one internally seems to be using their product much).
\n\n\n\nSo I was up-and-running much faster than with my Quest 3. Also the thing seems way faster than the Quest 3… it certainly dealt with iCloud Drive and Google Photos very nicely. So now I have a nice desktop picture. Super important.
\n\n\n\nMy next step was to install NodeJS and another nice surprise is that it runs nodejs 20.x (I also note that the Chromium that is preinstalled was v116.x which is pretty recent. I imagine at some point I'll have to do a massive update (apt tells me there's a lot of stuff to update, and I can't be bothered right now). I'm looking forward to seeing if I can build out electron or nwjs apps.
\n\n\n\nI do find the partially transparent Chromium window to be a bit nasty looking.
\n\n\n\nA quick dip into the Chromium inspector shows that MathML and SVG are there. ui.xinjs.net and b8rjs.com both load and run their most challenging demos pretty decently (the babylon3d demo on the b8rjs.com site is a bit sluggish, but reflections and shadows are working). Also timezones.xinjs.net runs very nicely (and that's a pretty gnarly collection of SVGs).
\n\n\n\nb8rjs.com has stress tests which I ran and it seems to be about 25% as fast as my 2021 Macbook Pro M1 Max on the create and render 10k table rows (~1300ms vs. ~350ms), and 20% as fast at the create 100k rows with the virtual data-table test (~1800ms vs. ~360ms).
\n\n\n\nSo I'm about to hit the sack, but overall a much better initial experience that with the Quest 3, despite this being very much not a product for ordinary consumers. Not having to deal with Meta is a huge bonus, of course. Given how well all the Raspberry Pi stuff works, Meta's Quest team should really should hang their heads in shame.
\n","$updatedAt":"2024-06-05T09:10:30.273+00:00",path:"pi-5",_created:"2024-07-09T20:28:31.644Z",id:"8085",_modified:"2024-07-09T20:28:31.644Z","$id":"8085",_path:"post/8085"},{date:"2023-11-18T16:23:36.000+00:00",summary:"What are my initial impressions and thoughts on the Meta Quest 3, its user interface, usability, and related software issues?",keywords:["meta quest 3","vr headset","usability issues","software bugs","pairing keyboard","virtual desktop app","remote display","video capture","mic audio","apple"],author:"Tonio Loewald","$createdAt":"2024-06-05T09:10:30.268+00:00","$databaseId":"665dfafe000014726b3d",title:"Meta Quest 3—Part Two","$collectionId":"665dfb040030d12ada24","$permissions":[],content:"\n\n\n\n\nMost user input on the web (e.g. login pages) is done using forms even though HTML forms are not fit for use and need to be prevented from doing their default thing to work properly since \"Web 2.0\". (Basically, if you hit enter or push a button inside a form its default behavior is to reload the page and lose everything. This is weirdly not what anyone wants but made sense kind of before web pages started communicating with servers directly. This is sad, but one of the reasons the web has been so insanely successful is that it is very forgiving and doesn't break old stuff gladly.) xinjs-ui
provides a simple reusable form wrapper that does all the \"usual things\" people want forms to do and stops bad things from happening while trying to leave everything as much alone as possible. So it lets you use <input type="date">
elements to display and modify date values in a robust and standard way. Guess what flat out doesn't work at all on the Quest's built-in browser?
The built-in interactive demos on the site let me actually quickly test a bare <input type="date">
alongside the \"wrapped\" version that was failing to verify that it's not my code that's the problem. You simply can't enter dates via a date input. So, good luck scheduling calendar appointments or booking airfares on any site that uses standard widgets. (Contrast this with mobile Safari which not only supports such things but goes out of its way to provide native experiences around things like auto-complete.)
I should note that the Quest browser does a great job with <select>
elements. This isn't a failure of engineering, this is a failure of emphasis. Clearly no-one cares if you can get work done using this thing. There's no-one coming into the office in the morning and trying to work using their Quest headset for as long as possible until they reach a blocker and then raging out, writing a bug report, and telling the manager of the team responsible to fix their shit.
Interestingly, the Quest 3 offers beta support for desktop sharing out of the box. I actually paid for a third-party solution for this for my Quest 2, which I was planning to try out on the Quest 3 once I sort out the Quest 3 being attached to the wrong account. Anyway, this looks promising.
\n\n\n\n(Addendum: both the free beta of Remote Display and the commercial Virtual Desktop app are discussed in more detail in the follow-up article.)
\n\n\n\nCapturing Video is pretty easy (meta-right-trigger to start and stop video capture), except that by default it won't capture your mic, and I'd rather narrate my experience than capture silent video and then overdub it. After all, don't you want to know what my user name means in the language I made up?
\n\n\n\nYou can capture mic input by using the \"camera\" app to trigger video capture and manually switching the mic on for that capture, but by default it is always off (I hoped turning it on for one video might change the some underlying setting—it does not—or at least that next time I used that dialog it would default to the previous choice—and no it doesn't do that either. AFAICT there's no way to turn it on mid-way.
\n\n\n\nIronically, streaming your experience is also possible via the camera app and here the default is to include mic audio. Just in case you thought Meta suddenly cared about your privacy.
\n\n\n\nAnyway, I haven't figured out a way to conveniently capture video with mic audio nor have I got stuff syncing to my computer yet.
\n\n\n\nIf you put yourself in the shoes of a usability tester at Meta, consider just how little of a damn they must give about you to make doing all this stuff so messed up. Personally, were I on the team building this stuff, I'd be frustrated just in my own ability to capture quick examples of bugs or other issues and share them and fix it just for my own convenience.
\n\n\n\nThe depth of indifference to usability I read into all of this is mind-blowing. But, never ascribe to malice…
\n\n\n\nAt least one of the emoji used in my previous blog post (and likely this one too) does not render on the Quest 3. Apparently Meta isn't even keeping up with Emoji (and it's not like I'm using super modern obscure ones).
\n\n\n\nAs an Apple shareholder I suppose I should be thrilled that the company in the second-best position to make inroads into the VR / XR / AR space is so clueless, but I really wanted to love the Quest 3. As I said to my girlfriend, when Apple made the iPhone they had Eric Schmidt doing industrial espionage for Google on their board. He went back to Google and told the Android team to stop working on their new Sidekick and instead steal Apple's ideas. Despite this, Apple has maintained a durable technical and usability advantage in the smart phone space for fifteen years. How dominant might they be in the VR / XR / AR space when their competition is this clueless?
\n\n\n\nBack during the mass layoffs in Silicon Valley in 2022 Zuckerberg was supposedly furious that there were a ton of people working on Oculus project that weren't using or only grudgingly using the product. Dogfooding is crucial for any consumer product and your goal needs to be a product you use all the time in preference to alternatives and probably in preference to things that aren't even seen as alternatives.
\n\n\n\nI'm sure the Apple Watch team has people who use their Watch instead of their phone as much as they can. They probably have \"leave your phone at home\" days. I'm sure there iPad team has people who use iPads for things other folks use their Macs and iPhones for. I'm sure there are Vision Pro team members who don't have any monitors, who code on their Vision Pros when they can, who attend meetings with them, and when they run into problems they fix them.
\n\n\n\nAs soon as you internalize the idea that the product you're building is for \"other people\" that you are imagining, you are fucked.
\n\n\n\nThe fact that most Facebook employees avoid Facebook outside of work and won't let their kids use it says a lot about it.
\n\n\n\nAnd yes, I worked for Facebook and no I didn't like it and it didn't like me. And yes, I bought Oculus products post FB-buyout and held my nose despite all of this.
\n\n\n\nMore to come once I pair a keyboard and install Opera and/or Chrome.
\n","$updatedAt":"2024-06-05T09:10:30.268+00:00",path:"meta-quest-3-part-two",_created:"2024-07-09T20:28:32.367Z",id:"7986",_modified:"2024-07-09T20:28:32.367Z","$id":"7986",_path:"post/7986"},{date:"2023-10-25T22:41:47.000+00:00",summary:"What are my concerns and experiences with using Panic Nova for my work, leading me to switch back to VS Code for my day job?",keywords:["nova","reconsidered","panic nova","syntax highlighting","editor instability","crashes","phantom errors","custom syntax support","documentation","web preview"],author:"Tonio Loewald","$createdAt":"2024-06-05T09:10:30.274+00:00","$databaseId":"665dfafe000014726b3d",title:"Nova… reconsidered","$collectionId":"665dfb040030d12ada24","$permissions":[],content:"\n\n\n\n\nI was willing to turn a blind eye to other issues, e.g. the fact that the documentation for its custom syntax support is horrible and implementing simple embedded syntaxes is either impossible or nightmarishly difficult (or, perhaps, perfectly easy but just not documented).
\n\n\n\nThe thing I really like about Nova is having everything in one window on a gigantic screen and the fact Nova remembers my exact window layout. So I can have my file browser, editor, terminal, web preview and debugger, excellent git integration (honestly, it's almost like having Sublime Merge—a git client I like so much I tend to run it all the time just to do things like amend commits and spelunk history—built into the editor).
\n\n\n\nBut if your app needs to do authentication in a popup window, Nova's web preview doesn't handle it, so that's partially out the window, which makes it less attractive for my \"day job\".
\n\n\n\nI really want to love Nova, but the instability and flaky syntax hiliting are a bridge too far. At least for my day job… for now.
\n","$updatedAt":"2024-06-05T09:10:30.274+00:00",path:"nova-reconsidered",_created:"2024-07-09T20:28:32.907Z",id:"7949",_modified:"2024-07-09T20:28:32.907Z","$id":"7949",_path:"post/7949"},{date:"2023-10-14T10:17:26.000+00:00",summary:"What is my perspective on the book \"A Fire Upon the Deep\" by Vernor Vinge, particularly in regards to its ideas, characters, and world-building?",keywords:["a fire upon the deep","vernor vinge","sf novel","computer science","ideas and invention","galactic zones","slow zone","beyond","transcendent gods","internet influence"],author:"Tonio Loewald","$createdAt":"2024-06-05T09:20:52.491+00:00","$databaseId":"665dfafe000014726b3d",title:"A Fire Upon the Deep, Revisited","$collectionId":"665dfb040030d12ada24","$permissions":[],content:"\n\n\n\n\n(This is an AI-generated image linked in a reddit thread talking about generating this image using AI, so I don't feel too guilty using it.)
\n\n\n\nI recently discovered I had collected a lot of credits in the audiobook service I subscribe to and for lack of a better option grabbed a bunch of SF novels I had read and loved twenty or more years ago to see what I thought of them now. (In some cases, they were books by authors I loved which I may not have read). The second of these books I've listened to is A Fire Upon the Deep, by Vernor Vinge.
\n\n\n\nVernor Vinge's day job was teaching Computer Science at San Diego State, and it definitely shows in A Fire Upon the Deep. If you haven't read it, and you like SF, it's wonderful stuff. It doesn't quite qualify as literature in my opinion—Vinge's ability to render character is often weak, a common failing of SF writers—but where it comes to ideas and invention this book is right up there. If you love Iain Banks's Culture universe, as I certainly do, this book seems to have pulled many assumptions from the same zeitgeist.
\n\n\n\nI won't dwell on the book's shortcomings. There's a romantic subplot in the book that is utterly unconvincing and the major non-abstract villain (there's an overarching villain in the story that isn't really a character) is cartoonishly and ridiculously evil and has zero character development. The ending, as endings often are, combines forced tension with forced resolution. It has an ending, which is about as much as can be said for it.
\n\n\n\nBut oh, the ideas...
\n\n\n\nThe core idea of the background is the idea of galactic zones, apparently correlated with mass density, that determine how well complex systems (like intelligence and computers) are able to operate. Being relatively close to the galactic core puts you in the \"slow\" zone where intelligence is lacking and complex computer circuits and faster-than-light communication simply don't work. The furthest reaches, of \"beyond\" are \"transcendent\" and there dwell the gods.
\n\n\n\nThis is not just a superficially examined idea. First of all it's not a fixed thing, and the boundaries experience \"weather\". Next, there is travel and communication between zones. And the zones have their benefits and hazards. Humanity emerged from the slow zone some distant time past, and this may not have been its first emergence.
\n\n\n\nWritten in 1992, like the early Culture novels, Deep is strongly influenced by the pre-Web Internet. Assume a galactic Net that is basically like the internet, but with wildly varying restrictions in speed and bandwidth of communication, Vinge-as-computer-scientist is right-at home exploring the wheels, cars, parking meters, traffic jams, and hub cab thieves of such a network. Some of his insights about trolling and misinformation are prescient. Others, like his assumption that a clearly visible truth will be self-evident and obliterate most malicious speculation now seem hopelessly naive.
\n\n\n\nI particularly like the network postings being affixed with a machine-translation route-path. As in, the series of translations needed to get from the original text to what you're reading. Except of course the language you're reading isn't that language at all.
\n\n\n\nAnd there's a race of plant-cyborgs that don't really operate in human time-frames and have terrible problems with short-term memory (which is one reason they are cyborgs, the other being locomotion). And, yes, they're fun.
\n\n\n\nMuch of the action takes place on a planet in the Deep—the slow zone—where the dominant alien species on a planet is a dog-like species which operates in small packs that have a group—hive mind—consciousness built upon rapid \"networked\" audio communication. And again, this idea is deeply considered with all the parking meters and hubcaps.
\n\n\n\nThe politics of the book are quite pathetically and parochially American. The book's female characters are weaker even than the male. The most interesting possibilities of the alien politics among the hive-mind dogs are basically ignored. It's by no means a perfect book. But the ideas are worth the visit, even if in the end it is not a tour de force like the Ancillary trilogy.
\n","$updatedAt":"2024-06-05T09:20:52.491+00:00",path:"a-fire-upon-the-deep-revisited",_created:"2024-07-09T20:28:33.542Z",id:"7943",_modified:"2024-07-09T20:28:33.542Z","$id":"7943",_path:"post/7943"}],blogDataTimestamp:"2025-01-06T01:24:06.444Z",blogVersion:4,"post/path=bambulabs-p1s-initial-review":{keywords:[],title:"Bambulabs P1S Initial Review",path:"bambulabs-p1s-initial-review",content:"\n\nThe BambuLabs P1S is, I think, the latest printer from Bambulabs, a Chinese 3D Printer\ncompany that is trying to be \"the Apple of 3D printing\". (Other previous would-be Apples of\n3D Printing would include Formlabs.)
\nPerhaps \"labs\" is a bad suffix for a company planning to be the Apple of anything.
\nThe printer itself is heavier than I expected (the box was 22kg according to Postti,\nand I believe them). There's a lot of packaging but not more than needed. Included\nin the main box were three spools of PLA (green, red, and glossy white \"support\").\nAll three are standard spools but with maybe 25% of a full load of material. (I\nbought a bunch of different materials at the same time and those are all much\nfuller).
\nWhile there is a \"quick start\" guide, visible (if not accessible) upon opening\nthe box, once you somehow tear it out multiple layers of padding and\nplastic it assumes you've gotten the printer out of the box, which is no mean feat.
\nAnyway, having pulled all the packing material out from around the printer and \nsqueezed my arms down around the package and found something I could hold without\nfeeling like I might break something off, I did get the printer out of the box\nand onto a table.
\nThe instructions for removing packing materials, which is similar to unpacking\na printer or scanner, which often comes with disposable shims and bits of foam\nhidden in its inner workings, are fine once you realize that there is, in fact,\na ridiculously long allen key in the box of stuff, and that it can remove the rather\ninconveniently placed screws you need to remove fairly easily.
\nI should note that 90% of my issues came from the fact that the quick start\nguide is, like the ones you get with Apple products these days, printed in minuscule\ntext and my eyesight isn't what it once was, so I didn't read the packing list\ncarefully. That would have saved me a few minutes.
\nEven so, assembling the printer requires access to its back and front and good light.
\nBut while it probably took me 30 minutes to have it ready to print, it might have\ntaken someone with a less messy office and better eyesight 15 minutes as advertised.
\nIf you have aspirations to be the \"Apple\" of anything, you may want to hire\nan actual UI designer and a proof reader.
\nSoftware is what lets the Bambu experience down. if you're going to be the Apple\nof anything you need to not suck at software, and the software for this thing \nis a mixture of great when it works, confusing as hell, half-assed, and perplexing.
\nTo begin with the quick start guide firsts gets you to download the iOS app and\nbind it to the printer. This did not work as advertised and requires you to go\nfind numbers deep in the printer's crappy UI. (This is a recurring theme.)
\nFirst things first, because I couldn't get the App to sync with the printer using\nBluetooth (it kept timing out), I figured out how to print one of the pre-loaded\nmodels (good old benchy) from the printer's small front-panel. (Installing that\npanel was the least well explained step in the setup process—luckily most electronic\nconnectors are designed so that if you look hard at them and aren't a complete idiot\nyou can usually guess the correct orientation—good luck actually plugging the damn\nthings into each other though.)
\nIn the end I think the big problem was that the app requires you to set up the\nWifi for the printer on your phone using bluetooth rather than allowing you \nto configure wifi on the printer itself. (Probably because entering a typical\nwifi password on the front panel would be torture, while doing it on your phone\ncould be effortless but is merely nasty.) Because the phone app's dialog is poorly\ndesigned it tried to join the network without a password and then hung.
\nMeanwhile…
\nThe benchy test print was both fast and pretty close to perfect. Given that the number\nof good or near perfect prints I've gotten from any of my two previous 3d printers \nis—generously speaking—three, that's a very good start.
\nEventually I solved my software problems. The quick start guide wants you\nto print benchy from the desktop software but the screenshots look nothing like\nthe software I downloaded and the instructions start once you've done stuff I hadn't\ndone. If the software sucked less it wouldn't need instructions, but as it is, the\ninstructions you get aren't adequate and the failure modes are horrific. (E.g.\nbecause I wasn't logged into the cloud service, I couldn't see my printer on the \nnetwork. Adding the printer involved one of two processes, neither of which worked\nand both of which were poorly documented and involved navigating the printer's\nawful front-panel interface. In the end, the solution was to figure out how to log\ninto the cloud at which point everything Just Worked.)
\nOh, the first thing the software wanted me to do was detail my printer's configuration\n(which it apparently didn't know). What is the diameter of my hot end? I don't know.
\nAgain, the software is the problem. First of all, the Mac version (which judging from\nwhat I've seen, is actually the more popular choice for their target market) is missing\na mysterious \"repair\" function for models. So the software refuses to print your model\nuntil it's repaired with the Windows version of the software or a third-party website.
\nDudes. Fix this.
\nSecond, by default supports are disabled and anything requiring supports won't print.\nOnce you find the supports panel, the default supports are horrific (not the \"tree\"\nsupports everyone uses these days) and that basically ruined my second print.
\nThat said, once I figured these things out, every print I have made (I think I'm up to\nsix, total) has turned out at least 90% perfect (and 100% is unattainable with FDM as\nfar as I can tell).
\nThe main reason I'm interested in 3d printers is tabletop games, and every printer\nI've tried has been a miserable failure until now.
\nThe first serious thing I tried to print with the Bambulabs P1S was an interlocking\nhex tile. Of course I only printed one because I'm an idiot. So I printed it again.\nThe goal was to figure out how much I needed to tweak the model to make them snap\ntogether. They snapped together perfectly first time.
\nSo I printed four more in a different color. They all fitted perfectly. I am a very\nhappy formerly frustrated game designer.
\n\n\nThe only \"failed\" print I've had so far is a space marine\nminiature that requires a crazy amount of support and where\nI had not realized the default supports are horrible. I haven't\ntried printing it again, yet, because the software is hazing me, \nbut that's anazing. Right now, 3D printing is still in WAY too primitive a state\nfor an \"Apple of 3d printing\" to even make sense. But this thing is so much better\nthan anything I've owned or used it's incredible.
\nI just sketched out a new game and I am so excited.
\nI bought the AMS bundle which includes a device for switching materials automatically.\nEven if you only print in one color at a time (printing multi-colored models is very\neasteful because each time the printer changes color it has to rewind the current\ncolor, then waste a certain amount of the new color, before continuing—even allowing\nfor the minor gain you might get from doing the next layer's portion of the current\ncolor before swapping, the difference in material consumption between one and two\ncolors is enormous).
\nThat said, the AMS is fantastic just for being able to swap from one material to\nanother between prints. Even so, it's not without issues. E.g. I believe it's supposed\nto automatically identify materials if I get them from Bambulabs, which I did, but it's\nnot working thus far. I definitely got it because I want to produce multi-colored\nmodels, but where possible I'm printing in a single color at a time and planning to\nsnap things together.
\nAnyway, best 3D printer ever.
\n",date:"2025-01-03T14:19:55.667Z",summary:"Unboxing a BambuLabs P1S 3D printer was a surprisingly involved process, and the journey didn't get much easier from there. This Chinese contender for the \"Apple of 3D printing\" boasts impressive hardware, but the software experience can be pretty frustrating. From fiddling with hidden allen keys to battling Bluetooth connectivity, the setup was a minor ordeal, and navigating the app was a test of patience. But the truly game-changing moment? Snapping together perfectly printed hex tiles on the first try.",author:"Tonio Loewald",_created:"2025-01-03T10:40:28.102Z",_modified:"2025-01-03T14:28:04.128Z",_path:"post/wl9ydyiwzvzl"},"post/path=design-for-effect":{keywords:[],title:"Design for effect",path:"design-for-effect",content:"\n\nI just stumbled across a video on YouTube commenting about the Star Citizen 1.0 announcement, and I\nwondered if I had stepped into a time warp and somehow Star Citizen was nearing an actual release.
\nI needn't have worried, it's just another vaporware announcement, but what's really concerning is\nwhat they've told us what they're now aiming to do.
\nFirst of all, I'm not one of those people who had high hopes for Star Citizen. I certainly had\nhopes for it. It is a \"science fiction\" game in some loose sense. And it is, after all, the \nbest-funded game development in history, that I know of… Who knows, GTA VI might actually be \nbetter-funded at this point since it is virtually guaranteed to make billions of dollar.
\nStill, the \"genius\" behind all this is the creator of the Wing Commander franchise, a series of\nbasically bad space-fighter simulations that had ludicrously complicated controls (each game came\nwith a keyboard overlay along the same lines as professional studio software like Avid Composer)\nand featured pretty much linear \"groundhog day\" stories with badly acted cut scenes.
\nHaving left the game industry to pursue a career making mediocre movies, he returned with\ngreat fanfare to his true love—making overly complicated space flight sims. But now, instead of\nhaving a linear plot which cliched dialog he was switching to some variation of \"simulate \neverything, it will all work out\".
\nAnd so in around 2015 we got three of these things. Elite Dangerous the heir of the OG space\nfighter simulation with a procedural-generated universe and a simple economic system that let\nyou make money from trade, bounty hunting, and piracy. Star Citizen the heir of the OG\ndo a space fighter mission, get a cut scene, repeat empire. And No Man's Sky, a game based\non the idea thar \"if we give players a spaceship, a crafting system, and a procedurally generated \nuniverse, it will be awesome.\"
\nAnd now, nearly ten years later:
\nWhat none of these is is a good game. Sure Elite was a good game in 1983, but Elite Dangerous\nis actually quite a bit more tedious than Elite and generally modern games are\na lot less tedious than 1980s games.
\nSure No Man's Sky has more to do in it now than it did in 2015, but that's a\nlow bar.
\nAmd now they have announced Star Citizen 1.0 and it seems to be \"we're only going to\nsimulate crafting and trade and somehow it will become a game\". In fact, Star Citizen 1.0 \nsounds a lot like a simulation where you get to do real, boring work for fake money, and\nwhere your reward is spending real money on a really expensive PC and having it crash constantly.
\nHow did we get here?
\nAll of these people have forgotten a brilliant concept called \"design for effect\" that\nwas used, and possibly coined, by the original designer of Squad Leader which made\nit one of the best board wargames ever. (Advanced Squad Leader, its descendant, is way,\nway too complicated. Don't get confused.)
\nThe basic idea of \"design for effect\" is that rather than try to simulate everything,\nyou figure out what you want the result to be and then design a game whose mechanics\ngive you that result.
\nElite Dangerous comes closest to doing this of the \"big three\" space sims being discussed.\nThe original Elite was about flying a tiny spaceship from planet to planet, trading\nto make money, fighting aliens and pirates (or being a pirate) to survive and make money, and\noccasionally undertaking a mission (usually to blow up a specific enemy ship).
\nSo with these being the desired effects, Elite Dangerous simply built current tech\nimplementations of the gameplay necessary to make things work. The economy doesn't need\nto be realistic, it just needs to create interesting, somewhat predictable, opportunities\nto make money. You don't need to simulate a society where piracy makes sense, you just\nspawn enough pirates to make life dangerous and interesting.
\nNow you have a game.
\nIf you were to simulate a universe there's no guarantee anything interesting will happen\nin it. In No Man's Sky the universe is so big that people have almost no chance of\nbumping into each other. Even if the game supported player dogfighting (it might, for all\nI know) relying on it to generate your gameplay would be very sad. Oh, you won that fight?\nGreat, now you can spend 200h preparing for the next one by mining and synthesizing fuel\nand ammo. Sounds like fun.
\nIt's quite hard to build a really good system for procedurally generating planets with\nresources that are interesting to prospect for and exploit, and then a crafting system\nthat simulates mining them, manufacturing bits out of them, and then making those\npieces assemble into interesting objects one might care about. Making something like\nthat which is detailed and realistic is even harder. The people who are really good\nat stuff like this have better things to do than make games. If you can simulate an\neconomy really well, there are ways of making real money out of that skill.
\nEven if you do a great job of simulating all of this in some way, there's not only\nno guarantee that this will lead to interesting gameplay situations. It's not even\nlikely.
\nAnyway, No Man's Sky is a very boring game to play, and Star Citizen has now\nannounced its new plan it to release something in 2026 or 2027 that sounds a lot like No Man's Sky was in 2015. Given the money and talent on tap, if they were starting from scratch right now\nthat might not be unrealistic. But turning the buggy pile of garbage they have\nand the expectations of an existing player-base into that seems impossible, and to my mind it's\nnot even a desirable outcome.
\n",date:"2024-12-31T10:09:36.000Z",summary:"Star Citizen's 1.0 announcement has me scratching my head. The creators seem hellbent on simulating everything, ignoring a fundamental truth about game design—simulating reality doesn't guarantee good gameplay.\n",author:"Tonio Loewald",_created:"2024-12-31T10:07:42.634Z",_modified:"2024-12-31T10:09:39.153Z",_path:"post/x4ut4tag0iil"},"post/path=taste-is-the-secret-sauce":{keywords:[],title:"Taste is the secret sauce",path:"taste-is-the-secret-sauce",content:"\n\nIn 1984 I had my first direct experience of the Mac. One of my takes was that one of the skills I thought\nset me apart from other people, my artistic talent, had suddenly become a lot less valuable. Sure, MacPaint\ndidn't give you the ability to draw, but just doing things like drawing tidy diagrams or lettering (people \nwould ask me to design protest signs and posters just because I could do large lettering) was something\nthis computer let anyone do effortlessly.\n\nI needn't have worried. It turned out that the Mac actually was part of a trend that made artistic talent\nmuch more valuable. The Mac let people with taste produce tasteful stuff much more easily. And it let\nthose without taste produce monstrosities effortlessly.\n\nTo be sure, there are some skills that the Mac made obsolete. People who typeset musical scores were unemployed within a few years. Mathematical typesetters were displaced by the Mac and TEX. Most tech support tasks became irrelevant \nfor Mac users, and people whose livings depended on the inability of ordinary people to use their \ncomputers for writing or creating simple graphics were—rightly—terrified of the Mac, and successfully\nkept it out of most large organizations for decades.\n\nAnd it seems to me that AI is a lot like the Mac.\n\nAI is very good at producing bad poetry, bad art, and bad code. Learning how to hand-hold AI into \nproducing better output, and recognizing when it is conspicuously failing takes taste.\n\n",date:"2024-12-30T18:35:28.600Z",summary:"The Mac, in its early days, seemed to diminish the value of artistic skill. But the reality was more nuanced. It amplified *taste*, making beautiful things achievable for those with taste, and terrible things easy for everyone else.\n",author:"Tonio Loewald",_created:"2024-12-30T18:33:17.167Z",_modified:"2024-12-30T18:35:41.719Z",_path:"post/3y2c5bcp8tyl"},"post/path=acorn8-is-out-and-its-fine":{keywords:[],title:"Acorn 8 is out and it's fine",path:"acorn8-is-out-and-its-fine",content:"\n\nAcorn's latest version has dropped and it's $20 (this is an introductory price; thanks to the App Store's lack\nof support for upgrades, it's a whole new app and you need to delete the old\none). Still $20 (or even $40) is dirt cheap for my preferred Photoshop \nreplacement.\n\nBut, does it blend?\n\nThe home page describes its new features.\n\n- AI Subject Detection: from my quick experiments it seems about as good as\nthe magic wand, i.e. not great (open the image in a new tab and see how bad a job it selecting the crane).\n- On Canvas Ruler: um, OK it's nice I guess.\n- Live Text Tool: this is surfacing functionality we get in preview.\n- JPEG-XL support: this plays to Acorn's strong suit. It has already replaced\nGraphicConverter as my tool of choice for converting files between image\nformats (notably for creating .webp files).\n- Data Driven Graphics: haven't tried this. Maybe useful?\n- LUT Support: this is nice but the included set of LUTs isn't great.\n- Improved export functionality: again, plays to Acorn's strengths.\n- Animated GIF and PNG export: convert layers to frames, which is fine, but\nthe main thing we all want is to handle video and there are dedicated tools\nfor this Acorn isn't going to compete with.\n\nA couple of other observations.\n\nThe text-on-path tools are very powerful (I like the dedicated circle text tool\nsince that's a very common use case) but the user interface for them\nis quite fiddly. E.g. figuring out how to actually type some text on a path\ntook some doing, and I'm not sure I remember how I did it.\n\nAcorn continues to improve its vector tools, in some ways better than dedicated vector editors such as Graphic and Amadine. I found myself\nworking on a vector project I started in Amadine—\nwhich I reviewed recently—\nbecause its text tools aren't nearly as good and its\nbooleans turn out to have issues too. Both of these things Acorn 8 did\nwith aplomb.\n\n## Conclusions\n\nAll the stuff that already made Acorn the best of breed remain as good or \nbetter than ever. E.g. the way its non-destructive CoreImage-powered filters\nwork (both in terms of speed, usability, and non-destructiveness) just leaves\neverything else in the dust and it's still the only tool other than Photoshop\nwith deep automation capabilities.\n\nI'm really not that impressed by the new features, but it doesn't matter.\nAcorn continues to be the best all-round bitmap wrangling tool on Mac (or\nWindows, for that matter) and if they want to release a new version every few\nyears and sell it for peanuts, I for one will continue to upgrade.\n\n",date:"2024-12-18T18:51:07.199Z",summary:"Acorn 8, a $20 Photoshop replacement, is out! While the new AI subject selection is not fantastic, other features like JPEG-XL and vector tools are solid, the UI for some elements feels a bit clunky. But ultimately, Acorn continues to reign supreme as my go-to bitmap editor, and I'll happily pay its price—and upgrade.\n",author:"Tonio Loewald",_created:"2024-12-18T12:53:32.624Z",_modified:"2024-12-30T17:17:13.179Z",_path:"post/ucc7x3oj34mk"},"post/path=signing-and-notarizing-tauri-apps":{keywords:[],title:"Signing and Notarizing Tauri Apps",path:"signing-and-notarizing-tauri-apps",content:"\n\nIf you're building an app (for Apple platforms) with Tauri\n(or pretty much any similar tool) then you're going to need to set up developer credentials.\n\nThe Tauri website provides instructions\nbut they're kind of ambiguous and needlessly complicated, so having gone\nthrough the process, I thought I'd try to explain a simpler option.\n\n## You'll need XCode and an Apple Developer account\n\nAll of this assumes you're a registered developer and you have XCode installed.\nIf not, then go do that. Tauri's instructions similarly require you to be a\nregistered developer, and you can't really build a Tauri app without installing \nXCode.\n\n## Signing Identity\n\n\n\nRun this command in a terminal:\n\nbilling-report-viewer % security find-identity -v -p codesigning\n
\n\nIf you get something like this, you're good to go.\n\n1) XXXXXXXXXXXXXXXXXXXXXXXXXXX \"Developer ID Application: ...\"\n
\n\n\n\nIf not, in XCode's Settings dialog, go to Accounts and click Manage Certificates and\nuse the + button to install all the stuff you don't already have (and if you\nhave stuff that's borked, just install new ones).\n\nOnce you've done all this you should be able to run the preceding command.\n\nThe \"XXXXXX\" bit goes inside tauri.config.json
as\nbundle.macOS.signingIdentity
.\n\n## Notarization\n\nIn the Apple dev portal… \n\n\n\n\nGo to Users and Access > Integrations > Team Keys\n\nClick the + button, give your key a name and pick Developer access.\n\nNow download the key and put it somewhere safe on your machine and set\nup the following environment variables:\n\nNote: you may need to request API access along the way (I did)
\n
APPLE_API_ISSUER=the value under Issuer ID (above the word Active)\nAPPLE_API_KEY=the KEY ID in the table for the file you downloaded\nAPPLE_API_KEY_PATH=the path do the file you downloaded\n
\n\nI just create a package.json
command to export these variables.\n\n",date:"2024-12-18T18:30:52.372Z",summary:"Frustrated with Tauri's convoluted developer credentials setup? This post breaks down the process into bite-sized chunks, using simple commands and visual guides to walk you through the often-confusing world of signing identities and notarization. From finding your correct signing identity to configuring environment variables within your `package.json`, here's a simplified process with illustrations which should help you distribute your installers.\n",author:"Tonio Loewald",_created:"2024-12-18T11:31:03.329Z",_modified:"2024-12-22T17:35:23.948Z",_path:"post/o4ewuf8xvxpt"},"post/path=dogfooding-the-xinjs-stack":{keywords:[],title:"Dogfooding the xinjs stack",path:"dogfooding-the-xinjs-stack",content:"\n\nI'm writing this post on my iPhone 14 Pro\n(i.e. not a big screen) on a train between \nOulu and Helsinki.\n\nFor the last decade or more my blog was hosted\non WordPress installes in a shared server. \nIt cost me about $140 per year (it supported\nmore than just my blog) and ran the standard\nLAMP stack.\n\nAnyway, the annual subscription came due just\nas the hosting provider's servers started\nmisbehaving quite badly and I decided to move\nmy main site over to Google Firebase and\nrebuild it using the stack I was planning to\nrelease as xinie. (There's a placeholder site\nup on the url.)\n\nAnyway, this blog is now my testbed for xinie\nwhich is basically a full stack based on\nxinjs, that incorporates lessons learned\nfrom my work at Airtime, Uber, Google, \nParallel Learning, No No No, and textreceipts.\n\nAnyway, I've been going through recent blog\nposts, finding mistakes, and quixkly fixing \nthem, and it's all bwen so painless that I\ndecided fo try writing a poat from start to\nfinish.\n\nNow if's not quite as slick as the Wordpress\niOS App but then this is aomething I've built\nin my spare time and supporting mobile\nuse was not my top priority.\n\nI'll call it a win \n\n",date:"2024-12-12T18:53:55.832Z",summary:"My WordPress blog, hosted on a dodgy shared server for over a decade, finally bit the dust. So I rebuilt it on Google Firebase using my own full-stack framework, xinie. This post is a test run, straight from my iPhone 14 Pro, and a chance to see how xinie performs in the field. Expect a few typos, but maybe, just maybe, some elegant code snippets too.\n",author:"Tonio Loewald",_created:"2024-12-12T18:45:16.800Z",_modified:"2024-12-12T18:57:18.883Z",_path:"post/242twlcv1jzs"},"page/path=blog":{path:"blog",css:"",imageUrl:"",prefetch:[{regexp:"^\\/(([\\w\\d]+\\/)*)([\\w-]+)\\/?$",path:"post/path=[3]"}],tags:["public"],source:"