So you quit your job. What’s next?

I recently quit my job at AT&T in El Segundo working on the DirectvNow platform to do – well I’m not quite sure – something else. I knew I wanted to leave, so I did.

At first it was just going to be leave. I’d come back after some time and probably move laterally to some other organization. At the time I was reading ‘Surely you’re joking Mr. Feynman!’ and became enamored with this idea of continually learning. About being adventurous and hungry for knowledge, just for knowledge’s sake. To be perpetually inquisitive about whatever.

I went back home for a little vacation and one of the first things I did was get all my college books from my parents attic. I hadn’t ever shipped them to LA because they didn’t really apply to my job, so I never needed them.

So I get them down and start flipping through one about computer architecture that I’d always liked. I’m rusty of course, so I start with the beginning and try my hand at some of the problem solving questions in the back of the first or second chapter. You know, just for kicks.

And that was it, I was hooked again. The problems where fairly simple, but the act of trying to figure it out was exhilarating. I couldn’t remember any of it, but I’d learned this trick in college during I think a physics exam because I didn’t remember a particular formula. The realization was this; they always give you enough information, so just make the units work out to what they want. And boom! that’s it. Just use the logic of unit manipulation.

I digress, but I have to quickly say this other point about that experience. The book laid out some absolutely horrid formula for figuring out a translation between MIPS and instruction counts and average cycle times, when the actual relationship between them all is much simpler. I did, however, benefit from this poor explanation because I had to essentially reason it all out for myself to solve the problem.

So I thought, maybe I don’t need to go back to LA. Maybe, I’m being short sighted. Because the world – and not just software world – is huge. When I’d quit I told someone ‘Look, you [AT&T] are competing against everyone for me. And now with blogs and OSS and even glassdoor I can see what they’re up to.’

You’re not just competing with other companies to get customers, you’re also competing with other companies to get employees.

More often than not, this competition is across sectors. Especially in software where most skills are almost completely transferable. Unless you’ve pigeon-holed yourself in some way, there are a lot of jobs out there.

As I think now, I would say that perhaps even software development itself is a type of pigeon hole. The world of science is much larger than just computer science. And in that spirit – even though I couldn’t articulate it at the time – I decided to not go back to work in LA and maybe go get a graduate degree or two.

It just takes one step. Just don’t get on the plane.
The another, just email your boss.
It’s a simple as that to take a completely different direction.

I canceled the flight back and just stayed in Ohio. OK, it was through the holidays so it just made sense to stay. My lease is up soon, so I’ll go back; collect my things and that’s that.

And the time off has been incredible! Especially just to sit, read and I think most importantly, reflect. Bought some Rasberri Pis, started looking into game development. Heard about some ‘New Green Deal‘ and thought – smart grids, that’s neat. Got a puzzle box for Christmas and thought – right! puzzles are fun.

In fact I actually just happen to catch the Spirit Mars landing on C-Span at some late hour like 2 A.M. I also think I was back in Ohio when we shot a car into space – though that seems much less interesting in and of itself. My point is, I’ve had the luxury to stay up late and catch things on TV. To read and get distracted and have 7 tabs open.

So what’s next? I don’t like to speculate; but having and articulating goals is proven to pretty good for you. Problably. And Gnote is such a stupidly simple way to keep track of … whatever’s on your mind, I can’t help but use it.

Out on the bleeding edge with Fedora Silverblue

I recently bought a new laptop for myself, and like all computing systems I have, installed a Linux flavor outright. I don’t really dual boot and never keep Windows – which is to say nothing about the Windows platform or even the merits of dual booting; it’s just a preference and I just haven’t found the time to boot a flavor of BSD.

Fedora Silverblue had just come out of beta and I thought – yea OK I’ll bite. What’s all this flatpak and modularity and oh yea we bought CoreOS too so here’s rpm-ostree.

At first I wanted to be very judicous of what I installed on the actual OS through rpm-ostree. I started with just Ansible – which I’ll talk about why later – and jq – you know, just to make things all pretty.

Then, make my development environment completely in a container, because that’s the thing to do with a OS that’s it seems containers are pretty legit technology.

But, by the end of it, I had whole build chains and all sorts of -devel packages which is the complete opposite of what I’d wanted. So here’s my story. Personal log, star date – whenever, my journey out the the bleeding edge of Fedora.

img of rpm ostree

What had happened really, was that the container tool-chain – namely buildah and podman – had failed. Containers – that I’d built through ansible – seemed to have no file systems. The symptom of which was that nothing was in the PATH. I could not ls or /usr/bin/ls or cat or whatever in teh fuck.

Alright – so there’s some bug introduced by some update or maybe something I’d over-layed on the OS or really any number of things that you just have to go looking for. I’m a software developer after all. People have paid me to do this.

So I went looking; I could build perfectly good containers with the same steps manually. Same step even. A container built from just the single command ‘buildah from …’ would not work when built in ansible (specifically the ansible shell module).

Now at this point I could have just written a Dockerfile or a buildah script instead of trying to build it with Ansible. It was maybe 5 or so days after the initial image and I mean why bother with the trouble right? But boy, I just love templating files.

What’s more though is, a lot of containers are just dependent on environment variables but I’m building a dev environment. Not a highly configurable web-app with some mess of ‘-e VAR -e VAR -e VAR’ but, what looks like, a complete OS with all sorts of etc files. And I know I want ansible on my base OS to template it’s etc files. So I gotta dig in my heels and get to work.

Alright – debug mode. Let’s play 5 questions.
Query: How’s this fake ass filesystem work anyhow? Grrrr.
Answer: It’s got to be real at some point.

Query: Yes! That’s right. OK where do I find that? That place that’s real.
Answer: Hm.. Well.. Configs may point to something probably. It is real, but it’s also temporary so… Also docs likely have something. Go RTFM dude.

Statement: Been a few days. It’s getting deep. All debug output I can generate says they’re the same exact image, just with different ids. I know they’re different somehow, and I’m almost sure it’s something to do with user environments and the fact that ansible is actually running all sorts of different independent shells – different environments – and that abstraction has probably leaked.

Why don’t I just backup a few commits in the rpm-ostree?

Wait.
Stop the madness.
There’s got to be a better way.


I have this mindset – and here, I hope, is the main point of this blog – that everything digital is so ephemeral, and more importantly, repeatable (re-createable?) that I don’t give a fork to just reformat this entire drive and start all over. Just wipe it clean and do it all over again.

After a ‘come to Jesus’ moment I’m back to square one.

But that’s not really true is it? Square one. I learned a bit on the way, and you know, bugs exist, #DealWithIt. Only this time, let’s pivot – as the kewl kids say – and just and install anything I need to get this mother going.

Oh buildah broken? Build from source.
What’s that – ansible no good? Git clone && make.
I need libassuan-devel. Cool! Gimme that rpm pl0x!

And you know what? It works now. I can make solid images all day through buildah and ansible. I had to make both of them and override one, but as this guy ranted, customization is the power of Linux, not it’s detriment. That’s just the configuration of the OS I run at the moment. And if I want to repeat it, I can write an ansible playbook backwards, in my sleep, upside down at this point.

I shouldn’t be afraid to re-image and build it all again just to see if that may work. Because it’s all ephemeral; it’s all transitory; it’s all just about to fail in some new and novel way. One day, those bugs will be fixed and I can re-image all over again and get back to a nice clean ostree. Until then, I’ve got make, cmake, gcc and golang which by a wild guess I would say can build 60% of projects on github.

Having to debug and read documentation is just a part of this software game. And it’s not easy or always fun. And there’s always some learning curve. But I got through it.

Along the way I got distracted and read some interesting topics at https://discussion.fedoraproject.org/ and even became a member. Signed up and even voted on an discussion.