Cloud Development Environment (CDE)

This morning I had to restart Docker Desktop and the marketplace tab had a notification. There was a new extension available, “OpenVS Code for the Web.” So then I had to go find out what that even means and why I ought to want to install it. The answer is that I don’t.

It seems that all the exciting tool development these days is happening around what one company is calling “Cloud Development Environments.” The general idea is that the source repository sits on a server somewhere, and then there’s another server, the CDE server, that knows about the source repository and maybe all the other services you need in order to work on that source repository (a database, maybe an artifact repository, maybe a build server, probably some testing pipelines, whatever). Then, instead of pulling the source locally and firing up their own instance of whatever IDE they like to use, a developer will instead fire up a web browser and connect to that CDE server and they’ll be instantly configured and working on the project inside the browser window.

This is the thin client model that we’ve seen before. Things that lead to thin client are, generally:

  • really, really cheap network I/O
  • really expensive local storage
  • highly paranoid and proprietary engineering management who don’t want individual contributors to take any code out of the organization’s grasp

This is hardly an exhaustive list, but from here it gets less general. For instance, at Netflix, I had a Windows desktop and a MacOS laptop and, when I worked remotely, rather than run my dev instance locally and tunnel its connection to the dev database through the VPN and keep mentally current with all the stupid configurations necessary for both operating systems, I just used remote desktop software to use my laptop as a thin client for my desktop computer. It reduced my mental load and kept me productive.

Still, I am no longer in a situation where thin client makes a lot of sense. Well, sort of. I mean, I develop services that run in Docker containers on my laptop, so the shape of my environment looks kind of like the server side of a CDE. It’s not true, though, that I need to bring new employees onboard, and it’s not as though adding yet another piece of software to my system will reduce my mental load. Meanwhile, out here in the woods network I/O is the opposite of cheap. So, no, I don’t need to get smart or excited about whatever CDE gets thrown up in front of me.

Another Really Cool Thing I’m Not Gonna Do

I just read an article on Ars Technica, reviewing a new telescope. Super cool. Well written and, while I was reading it, nearly convinced me to buy a telescope. We live out in the woods. Often, when I take the dogs out at night, I look up and see stars and planets, and frequently even satellites zooming past. For five minutes in a row, I thought I might enjoy having a digital telescope to take pictures of Mars, or Jupiter. That would be cool.

The activity is cool and the process sounds kind of neat but, and this is the part that’s easy to forget as one reads the story, what thing are you doing right now that you are willing to stop doing in order to start doing this new thing? Sleep is not optional.

What Did You Think It Did?

This morning I read an article with the headline, “Novel attack against virtually all VPN apps neuters their entire purpose.” This seemed really alarming and, to be sure, the details are pretty bad. But as I read through the article I was thinking about what I expect from a VPN, and how the attack would affect those expectations, and, maybe I’ve been thinking about VPNs wrong all this time?

Continue reading “What Did You Think It Did?”

nix, lix, and Reproducibility

I’ve just spent the morning reading through some documentation and tutorials for nix, trying to figure out what it is, whether it’s cool, and whether I should be using it. Also, trying to figure out what this lix thing is. And of course, this is a dependency chain — I started out at the last element and, before I could answer that, I had to investigate the one before it, and so on. Why did I list it out this way? Because investigation is a stack, and I am reading out my stack by popping elements off it.

Continue reading “nix, lix, and Reproducibility”

Safety: Only YOU Can Prevent Harm to Yourself

The other day, someone in my extended network posted something about how Toronto just isn’t safe for their kids. This has got me thinking about safety and responsibility. I thought about how when I was a kid, I was instructed on how to behave in public spaces. “Look wrong way, right way, then wrong way before crossing the street, because if someone’s driving on the wrong side of the road they’re going extra fast.” “Sure, go play outside, but stay out of the road.” “When you ride your bike, keep as far over as you can; the cars can’t see you.” My safety and security was definitely something I was supposed to be actively engaged in, and if I got hurt, it was probably in no small part down to my own decision making.

This gets me thinking about those “Baby on Board” stickers you see in so many car windows. Like, who needs to see that? Emergency responders are trained to look for a car seat. Believe it, if there’s a baby in the wrecked car that they’re opening with the Jaws of Life, they’re gonna notice it. That sticker isn’t for them, it’s for the rest of us. It’s saying, “The safety of the occupants of this vehicle is the responsibility of everyone around the vehicle.” Implicit, there, is the idea that the person with the most direct control over the safety of the vehicle’s occupants — the driver — is less responsible.

Baby on board sticker, featuring Brett Kavanaugh as the baby

I had some kind of point in mind the I started writing this, but honestly, I let time pass and I’ve edited out a lot of the snark and digressions, and it’s really just come down to the simple observation that I stated in the post’s title. Your safety is your own responsibility, first and foremost. Other people may be able to act in ways that affect your safety independent of your own decisions and actions, but you are always the person in most immediate control of your security. Act like it.

Experimenting With Federation

Generally, I reserve this blog for, you know, blog stuff. Long form, where I ramble about things and post code snippets and multiple links to things I’m thinking about. For quite a while, now, I’ve had the ActivityPub plugin enabled on this site, as I tried to figure out how to engage with the Fediverse after I deleted my other social media accounts. Today, I saw an explainer video that contained an interesting comment about how a WordPress blog could, in effect, be a single-user Fediverse instance. So I started poking around.

Read more: Experimenting With Federation

The ActivityPub plugin takes care of publishing blog posts in the ActivityPub format. This means that people on other Fediverse instances can follow my blog by following @pirateguillermo and that works just fine. However, that’s only half the equation, right, because that’s essentially shouting into the void and not ever listening. When I first started doing Fediverse/Mastodon stuff, that was all I had so I wound up setting up an account on a “local” Mastodon instance, sfba.social. That isn’t bad, really, but it means that I wind up having two places where I type stuff and where people can engage with me.

Today I learned about the Friends plugin for WordPress, and it takes care of the listening half of the federation process. It adds a tab to the WordPress bar on my blog where I can see a feed of posts from accounts I follow. So, that’s cool. I already mostly use MarsEdit to compose posts, as I really hate having to use a web browser to do that. If I could get the reading and actions to work within an app as well, then I’d be a happy camper. As it is, this blog is not a Mastodon instance, and the swell native apps that are Mastodon clients will not pretend that it is. That means that, if I were to migrate all my Fediverse presence to this blog, I would be able to post from a variety of tools that I like, but I’d be stuck reading via a web browser, which is not the way I want to do it.

It might be acceptable for some folks, just not for me.

Just Say No to AR

I’m seeing a lot of people being excited, today, about putting in their orders for the first visionOS devices. Although it would be easy to dismiss this as simple Apple fan dribbling, their excitement is sort of hyperbolic. “This is a once in a lifetime opportunity,” says one person, talking about how now is the time to develop programs for this platform before all the existing tech giants come along and repeat their horrible “attention slot-machine” applications for this “new way of computing.”

Continue reading “Just Say No to AR”

Neat™ Document Database

Problem

Every day, I receive physical documents, such as receipts, invoices, account statements, insurance policy updates, and so forth. Each of these documents should be retained for some period of time. Some of these documents should be forwarded to other people (such as, insurance provider or CPA). Physical documents take up space, and unless one is really, really dedicated to filing and indexing, they’re time-consuming to search, copy, and purge.

Continue reading “Neat™ Document Database”

Note Application Obsidian

There’s one person I know of who is an enthusiastic user of Obsidian. After seeing them fanboy about it for, like, a year, I finally thought I’d take a look at what it is.

It’s a note app. There are some cool affordances it offers, like built-in synchronization between devices, but fundamentally it’s all about recording, reading, and publishing your process mediated via a glowing rectangle that talks to a server somewhere. So, like, Evernote or something. I get the feeling that it could have some overlap or perhaps synergy with DevonThink (which is also a thing that I don’t use, but I know people who do).

It doesn’t solve a problem I have right now, although I can conceive of situations where I might want to use it. It can, for example, turn a big pile of notes into a wiki, which can be published to a server (or local drive?) so, kind of yay? It uses Markdown, which means that linking one note to another note is pretty easy, and because it parses its notes, it can draw a graph of the note blob as a network.

For now, though, my life is better off with a paper book and a pen.