home ¦ Archives ¦ Atom ¦ RSS

New Coat of Paint

For some reason, this post was scheduled for June of 2020 (!!) but never posted. Letting it loose now to clean out the drafts folder.

For the first time ever intentionally, I rethemed one of my blogs. New Media Hack got a new theme only because I had to apply something during the transfer to WordPress. Mass Programming Resistance hadn’t had a style change from its inception. Now it does.

The theme is pretty minimal. I forked a repository from Giulio Fidente that is spartan black text on white background. Mainly I just decided to go with square instead of rounded corners on the buttons and to tighten up the gutter between the sidebar and the main content.

Along with fixing up the RSS and Atom feeds, the theme change was the last thing to finish before declaring the transition to static publishing complete.


Transplanted

Yet another left behind in the drafts bin from June 2020. Including today for posterity’s sake.

This is my first post using Markdown and Pelican. Currently https://crossjam.net/ is resolving properly and the content has transferred over. There’s a bunch of redirects, which are a little ugly, but they serve the purpose of dealing with the old WordPress path prefixes. Mass Programming Resistance and New Media Hack (still preserved, bless its heart) are separated out into two different domains.

Now need to work on a good workflow for publishing. The upside is that I can now go with Emacs to create posts, which will accelerate my ability to spit out text. But I’ll need some key bindings to smooth out some of the linking work. Also, need to figure out a comfortable flow to update the production server. Pushing to a git repo seems like a little too much work, although netlify has an interesting take on that path. Maybe for a dev site just to get some experience.


Why the Return?

Still(!!) mopping up 2021 leftovers. This one was started in Septermber 2021. Yikes!

So I’ve come back to blogging, maybe not at previous publishing rates, but definitely with some consistency in late(ish) 2021. What gives?

On the day job, I got a big promotion in April (if you can navigate LinkedIn or are decent at Google you can find the details) that’s probably going to steer me to being much less technical at work. I’m gonna need a hacking outlet, thus I’m aiming to do some side projects on my off time. Previously, this blog was more life and media commentary oriented, but I’m hoping to pivot into a better “tech” blogger, whatever that means. At least to me it means more project details and definitely more code.

Specifically I have five independent personal development goals I’m currently working on

  1. Mastery of the Python programming language
  2. Proficiency in the Go programming language
  3. Modernizing developer skills and tools
  4. Developing a strong portfolio of publicly data projects
  5. Creating an online technical presence

My blogging will help with number 5 but it can also be a driver for solving some technical challenges, such as search indexing of this blog’s content. As Simon Willison points out, working in public has a relatively low bar for online achievement that can be extremely useful in the end.

Fast forward, 5ish months…

Haven’t made as much progress as I’d like on all the above, but I have made some progress. My PyBites profile indicates motion in fits and starts. Plus I’m on the cusp of another milestone, a brown belt, just need to do a few more pesky easy bites. I’ve actually started reading The Go Programming Language. Some of the gaps in understanding from when I was just hacking away on nsq are getting closed. Discogs data hacking is happening (more to come…) and I’ve had a personal epiphany about how to go about building data projects and a portfolio of such.

Dropping the ball on modernizing developer skills and tools, although the PyBites work is forcing some routine git interaction. Still, me and Emacs are joined at the hip.

Gettin’ there.


2021 Books Completed, Part 8

Still mopping up some 2021 odds and ends.

December was decidedly better than November. Even though it wasn’t a perfect vacation, managed to take advantage of some holiday downtime. Seven more works completed pushes the year’s total to 42, which isn’t too bad all things considered. Interestingly, this batch didn’t include any self-development or business themed tomes. I need to do a full accounting of the 2021 reading, just for posterity and to have it all in one place.

Thoughts beneath the fold …

read more ...


Manticore Search

Link parkin’: Manticore Search

Lightweight SQL-first database designed for search applications that suits both big and small data collections

More details: Manticore Search: 3 years after forking from Sphinx


2021 Books Completed, Part 7

Still mopping up some 2021 odds and ends.

Well, November turned out to be a dismal completion month. Thought I was going to make a lot of progress during the Thanksgiving holiday, but that turned out to be a dud. With 35 down for the year, I can at least still get to 40 hopefully. More after the break.

read more ...


2021 Books Completed, Part 6

Now in the process of mopping up leftover 2021 posts. Don’t know why I didn’t hit publish on this back in October. At least I was smart enough to not bake the month into the post title.

Just a solid month of October. 2021 completed total bumps to 33. Could actually make a stretch goal of 50 this year. More after the break.

read more ...


Challenging

Over a year ago I mentioned some sites to help refresh the Python coding skills. Going on about a year now, I signed up for the PyBites community and the codechalleng.es platform. Working in fits and starts, I’m now actually getting back into consistently solving the bites. Here’s my PyBites profile. Climbing the ladder.

Turns out there are curated “learning path” collections of bites, progressively more difficult. Trying to complete learning paths seems to be the carrot that gets me going. Now that I’ve chewed up a lot of the easier bites, I’m definitely hitting the more challenging ones, those valued for 3 and 4 points. Even though I’m fairly experienced in Python these take a non-trivial amount of time. Sometimes it’s just understanding the actual problem statement but other times I need to put on my thinking cap and solve an intellectual puzzle, which is great!

Definitely a happy customer and can recommend codechalleng.es if you’re looking to build up your Python muscles.


2021 Books Completed, Part 5

Huge completion haul this month. Some based upon carryover from last but momentum is momentum. Still, there’s a non-negligible number of significant tomes if anyone’s counting. This bump’s the year’s count to 28.

Thoughts below the fold.

read more ...


Discogs and Data

For the longest time, I’ve just been piling up data from Discogs.com and not really doing anything with it. Finally, I have a motivating project.

The fine folks at London’s Fabric nightclub have two great series of DJ mix releases, Fabric and FabricLive. Recently I made a bulk purchase of digital versions of 20 mixes. They arrived as .wav files with no metadata attached (that I can tell). Adding all the track metadata is something a computer should do, not a human. No problem, all of that data should be in the Discogs data. I’d also like to create playlists or a playlist DB to start noodling around with MPD as a playlist shuffling jukebox. (Why does the world hate playlists so much?).

So of course this means lots of data munging, wrangling, and management. Which is totally fine. I need some data side projects to help build a data portfolio.

Link parkin’ discogs-xml2db v2 as the way to get the Discogs data into a PosgreSQL db for querying.


2021 Books Completed, Part 4

Back in the groove for August. The tally will only show four books completed for this month, but there were two more in the hopper that will close this weekend. September should reap five completions if not six.

The Consuming Fire won’t make the top of my literary style list, being a big fan of Ursula K. LeGuin and William Gibson. A lot more exposition than I usually like. But fuck if The Consuming Fire (and The Collapsing Empire as well) aren’t fun, easy reads. And damn if Kiva Lagos ain’t a motherfucking hoot!

Apex exemplifies my distate of the technothriller genre. A sprawl of plot arcs, coming and going in fits and starts. Named characters constantly being introduced, without enough room for development. Fetishizing of national security apparati. It’s been a while since I read Nexus and Crux, the other books in the trilogy, but the underlying neuroscientific principles were compelling. Glad I closed out the trilogy but probably not revisiting.

Apparently a key element of the The Expected Goal Philosophy is constantly moaning about how people who haven’t bought into the philosophy are morons. Slightly offputting. The actual details of the stastical approach turn out to be somewhat pedestrian at the end of the day, but good to know about as football evolves. Might have read better as a pure underdog story, similar to Moneyball.

Pep Confidential turned out to be less of a hagiography then I expected, which was good. As a Manchester City fan, I was intrigued by the insights from his prior stop at Bayern Munich. I’m still a newbie regarding football tactics, so Confidential was a very revealing look behind the scenes. Also, quite entertaining given that many of the names involved are still active in world football, like Thiago Alcântara, David Alaba, Mario Mandzukić, Tony Kroos, and Pierre-Emile Højbjerg, with the lens of history to see their subsequent paths. Looking forward to reading Perarnau’s follow-up Pep Guardiola, The Evolution.

Apropos Elle Driver, “You know, I’ve always liked that word … hagiography … so rarely have an opportunity to use it in a sentence.”


Amphetamine Endorsement

Just wanted to give a quick plug for Amphetamine, a Mac OS X menu bar app that helps control screen saving and more. On any Mac where I create a new account, Amphetamine is in that small collection of “must install” apps. Really well polished with a lot of functionality and free to boot! Thanks William Gustafson.


Moving to Pyenv

Motivated by Justin Mayer’s observations about Homebrew Python I’ve been working on using pyenv and pyenv-virtualenv. Still taking a bit of getting used to, but if my virtualenvs don’t get broken I’ll be a happy camper.


Blogaversary, Macaversary 2021

Holy Smokes! It’s been 4 years since I’ve done one of these.

13 years since the first post and the first MacBook mention. Now I’ve moved up to a 2020 Apple Silicon MacBook Air. That old White MacBook? It’s still providing service as an Ubuntu 20.04 (Yes, Ubuntu) server, building the html for this here blog.


Pandoc Stuff

Link parkin’: panflute

All of this blog’s content is written in Markdown. As a side project, I’m interested in working on a homegrown solution for search. Enter Pandoc for doing some of the heavy lifting on document parsing and generating an Abstract Syntax Tree. Thence to panflute for spitting out into a format that could be indexed using sqlite FTS to get started and then Manticore just for giggles.


2021 Books Completed, Part 3

Slowed down a bit in July, but with four books completed this month plus the honorably included, that’s six more added to the tally. Nineteen down for 2021.

I respect the writing quality of The Turing Test and indeed, quite a few of the stories were thought provoking: The Turing Test (eponymous short story), La Maccina, The Gates of Troy, Piccadilly Circus, Karel’s Prayer. However, Beckett’s style didn’t really resonate with me.

The Game of Our Lives places English football in a larger and wider social context, especially in times before the Premier League.

The Effective Manager is exceedingly prescriptive, which may or may not be what one needs. Definitely useful at this point in my career.

Done Deal was a pretty mundane explainer for me. A few bits of transfer policy detail were enlightening.


Honorable Inclusion

Previously I had noted completing The Grendel Omnibus, Volume1 and The Infinity Gauntlet via Comixology. Normally I don’t include graphic novels in my book reading tallys due to some weird notion that they’re “lightweight”. Grendel was the equivalent of 500 printed pages and Infinity Gauntlet 250. The judges have subsequently determined that they do qualify in this category.


2021 Books Completed, Part 2

Still making quite good progress on the book reading front. Herewith is the list of completed texts from this June. Just for posterity’s sake.

The Lathe of Heaven pleasantly reminded me of how beautiful Le Guin’s writing can be. Some excellent passages in that book.

Fear and Loathing … is not only a football book but a history book. Learned a lot about Spain.

My only appointment sports viewing is the English Premier League, whose birth and rise is documented in The Club. As a relative newcomer to football, Clegg and Robinson filled in a lot of gaps in my knowledge. It’s actually sort of amazing (to me) in what bad shape English football was in just 30 years ago. In my mind, the Premier League had just been this historically monstrous behemoth. Not so fast …

Good Strategy, Bad Strategy is an excellent business book. 10 years old now, it’s also interesting from a tech perspective because it uses NVIDIA as a case study before the company’s recent AI/ML fueled surge.

Atomic Habits does what it says on the tin and actually provides concrete actionable techniques for constructing enduring positive habits.

Two football books, two science fiction books, and two personal development(ish) books turned out to be a nice mix. I’m trying to replicate that during July.

Thirteen confirmed completions for the year. Thirty total is within reach.


The New Favicon

Tweaked the favicon for this site from the glider as hacker emblem, via Conway’s Game of Life, to the lambda from the MIT/GNU Scheme logo. Better represents my ties to M.I.T. and an incredible lecture Gerald Jay Sussman gave my freshman year to close out 6.001 ( alas, a course fallen by the wayside). The finishing topic? Conway’s Game of Life and how to build a Turing complete computer from cellular automata. All in one 90 minute lecture. Virtuoso!


Return of the Black Science Orchestra

Ashley Beedle dropped off one hell of a birthday present for me:

5 Mag welcomes legendary producer and DJ Ashley Beedle for the second installment of SANCTIFY, showcasing the greatest deep house DJs on Planet Earth.

With SANCTIFY we wanted to get “back to basics — back to the fundamentals of deep house with the DJs who believe in the mysterious and awesome spiritual power of deep house music.”

We’re also thrilled to announce in our latest issue that Black Science Orchestra is reforming for their “sixth incarnation”

Embed after the break …

read more ...


Comixology

A long time ago, I was an amateur comic book collector. In a tale soon to be told, I recently purchased an 11” iPad Pro. I don’t really want to get back into buying physical comic books, but I’m interested in revisiting some of the classics and reading some recent critically acclaimed works.

Enter Comixology Unlimited. Comixology itself is a venerable digital comics service that got hoovered up by Amazon a few years back. The basic idea is that there’s a Comixology reader available across multiple devices (Web, iOS, Kindles, etc.). You buy digital versions, to own, of graphic novels and single issues through the Comixology platform. The Unlimited part is straight from the Amazon playbook, a monthly subscription service for a lending library that provides access to a large(?) catalog of titles. The library is a subset of titles available on the entire platform and there’s a relatively generous limit on the number of works you can have “borrowed” at any given time.

read more ...


2021 Books Completed, Part 1

I managed to spark the reading passion once again. First, in January I just picked up the copy of William Gibson’s Agency that had been sitting unread on my bookshelf for months, and started reading. Second, I gave in and began reading books in the Amazon Kindle app on my iPhone. Don’t know what it is, but for some reason that used to feel tawdry. But the best book to read now is the one immediately at hand.

In any event, for recording purposes, here’s the year’s tally so far, in no particular order

I don’t have a particular urge to start doing reviews, but all were enjoyable. Essentialism was a little fluffy, but I align with its sentiments.

In the meantime, there’s a nice stack of physical books in the backlog, not to mention a healthy lineup of ebooks ready for the Kindle app. We’ll see how long this holds and how many I knock out in 2021.


54

Last Wednesday marked the completion for me of a 54th circumnavigation of the sun aboard this big blue marble. Have to say, as an eve, May 25th 2021 was a heck of a lot better than May 25th 2020.


Python Coding Refresh

While I’ve been writing Python code for a while, and even some for my current job, I feel like I’ve sort of lost the pure coder mentality. Work projects don’t involve building fully maintained apps. There’s just lots of little piecemeal components with a lot of quick and dirty hackery. Plus, I’m not up to date on a lot of the newer Python 3 changes and best practices. Don’t get me wrong, I’m totally proficient n Python, but not really a modern coder.

So I’m link parkin’ a few resources to start working with, as a marker for future motivation:

Quoting Reuven Lerner:

So what are these resources missing? What is it that’s going to take you from a “good enough” Python programmer to a fluent one that has full command of the language?

Practice. The very sort of practice I offer in Weekly Python Exercise.

I think I’m really out of practice.


The Architecht Resurfaces

I’ve been subscribing to RSS feeds, text and podcasts, forever. As expected various of them go dark on occasion. I still stay subscribed though, just in case.

A few years ago, a favorite podcast of mine was The Architecht Show, by Derrick Harris. At the time he was covering the emerging “cloud native” space and had a lot of great interviews. I suspect he could never find sustainable sponsorship and so had to go on hiatus to make ends meet with a serious day job.

But now he’s back!. Just popping up in my podcatcher (Overcast) as if he’d never been away.

The Architecht Show returns (!) with Replicated co-founder and CEO Grant Miller talking about how his company is enabling KOTS, or Kubernetes-Off-the-Shelf software. We dive into a number of topics around this, including the pitfalls of relying too heavily on SaaS, the popularity of Kubernetes itself, and how laws like Europe’s GDPR are forcing companies to rethink how and where they manage user data.

Welcome back Derrick!


Mastering JQ

Link parkin’: Mastering JQ: Part1

This is the first part of an ongoing series on mastering jq. This series does not assume prior experience with jq, but it does assume basic fluency in shell programming.

jq is a valuable tool that every fast coder has in their tool chest. It contains depths of immense power. In part 1, we’ll start off with the basics.

For each application of jq, we’ll lead off with an example that you can copy and paste into your shell to see how it works. The rest of the section discusses the application in more detail.

jq is an amazingly useful command line utility for processing JSON content. I’ve probably mentioned it on this blog, but don’t have search wired up to find the previous posts. In any event, it’s definitely a tool that’s worth getting better at using.

Via Code Faster 😄


Linux LVM Isn’t Hard

For a long time, I didn’t really understand Linux’s Logical Volume Manager (LVM), same as Shawn Powers. Luckily he sat down, plowed through, and wrote up a nice tutorial on LVM.

LVM is an incredibly flexible, ridiculously useful and not terribly complicated to use system. It makes life easier. It makes future storage upgrades and migrations simple. Quite simply, I love it. So in this article, I cover the concepts and usage of LVM. By the time I’m done, hopefully you’ll love it as much as I do!

Now I get it! And really appreciate it.


LTTW 02: Gene Farris

Listened to this week (LTTW) had one outstanding entrant. Gene Farris, a Chicago House legend, put in an entry for 5Magazine’s #StayHomeDisco series.

Gene Farris needs no intro here - from the loft scene of the ‘90s Chicago House scene to today he’s remained one of the most enduring and in-demand Chicago DJs and producers of his generation. His latest release “So Dope” - the rare track whose title is also a critique - appears alongside tracks from Alan Nieves, TAYA, Serge Santiago & Nolan on Selector Vol 8 from Yousef’s Circus Recordings. Go check that out right now

Just a banging stone cold open that holds momentum while journeying into numerous House classics. Definitely R-rated material. Soundcloud embed below…

read more ...


The Art of Command Line

Link parkin’ The Art of Command Line

Fluency on the command line is a skill often neglected or considered arcane, but it improves your flexibility and productivity as an engineer in both obvious and subtle ways. This is a selection of notes and tips on using the command-line that we’ve found useful when working on Linux. Some tips are elementary, and some are fairly specific, sophisticated, or obscure. This page is not long, but if you can use and recall all the items here, you know a lot.


GitHub Profile README.md

Simon Willison noted that GitHub sneakily released a new feature that seems to have some interesting potential:

GitHub quietly released a new feature at some point in the past few days: profile READMEs. Create a repository with the same name as your GitHub account (in my case that’s github.com/simonw/simonw), add a README.md to it and GitHub will render the contents at the top of your personal profile page—for me that’s github.com/simonw

Don’t know that I’ll push the self-updating limits that Simon is, but I might use it to add some additonal static text to my profile page.

Additional insights via Hacker News discussion


Click App

Sometimes if you just wait long enough, the universe will provide what you’ve been looking for.

I’m a heavy user of Click, the Python library for creating command line interfaces (CLIs). There are a lot of idiomatic ways that I build my CLIs. For example, I’m a bit persnickety about logging configuration. Timestamps should either be UTC ISO 8601 or UNIX epoch if needed. And every CLI should have options for setting the logging level. But I’ve never sat down and put all of my preferences together in one easy to reuse place.

Simon Willison released click-app, a “Cookiecutter template for creating new Click command-line tools.” Using Cookiecutter to roll up all of my Click customizations has been on my to do list. I’ll probably fork Simon’s repo but it’s already got 80% of the soluiton I would have implemented myself.


Making Progress

Slowly but surely making progress on getting the blog authoring home lab set up. Lots of under the hood fiddling with personal machinery across a bunch of machines. Learned a lot of Ansible, NFS, and Samba. The goal was to get an environment where one machine can be mostly headless and build the pages automatically. At the same time, the base blog content could be remotely accessible via a home wifi LAN. A LAN that conveniently reaches my back porch so I can author while sitting outside, a glass of bourbon nearby.

The old scheme with WordPress and a desktop tool definitely had a lighter path to posting. With some work, though, I’ll be able to smooth out the process and get a bunch of upsides from the Pelican ecosystem.


LTTW 01: Cozmik Beatz, et. al.

Listened to this week (LTTW) includes Cozmik Beatz, a Drum ’N Bass DJ out of England. Very similar style to Calibre.

Started off with Cozmik Beatz v17 and enjoyed a bunch more from the playlist

read more ...


Testing Pelican Plugins

Let’s see if the summary and oEmbed plugins actually work …

read more ...


Incoming Breakage

Okay, I’m making the move to static site generation. With any luck, this will be my last post using WordPress. There will be some domain name shifting so probably some upset to feed readers. Such is life.


Email Newsletters: Part 1

Herewith, some enjoyable email newsletters that I’m subscribed to.

After leaving O’Reilly Media, Ben Lorica decided to keep up the podcasting bug with The Data Exchange. Gradient Flow is his parallel site and newsletter on the topics of data, business, machine learning, and AI.

PyCoder’s Weekly provides a nice assortment of Python links. The overall volume and topic distribution works for me.

I’ve been subscribed to Python Weekly for ages. The number of links is a little higher than is useful to me and the number of unsummarized links has increased recently. That said, there’s usually one or two worth following in every edition.


Materialize

Link parkin’: Materialize

The simplicity of SQL queries, but with millisecond-level latency for real-time data. That is Materialize, the only true SQL streaming database for building internal tools, interactive dashboards, and customer-facing experiences.

Wire format compatible with PostgreSQL, so you can use the psql command line tool, even though there’s not a Postgres database underneath. Possibly a worthy challenger to ksqlDB

Principally brought to you by that guy who wrote “Scalability! But at what COST?”


Personal VPN with Algo

Also in the bin of interesting potential side projects, would be deploying an Algo server for a personal VPN.

From the original Algo announcement post:

Today we’re introducing Algo, a self-hosted personal VPN server designed for ease of deployment and security. Algo automatically deploys an on-demand VPN service in the cloud that is not shared with other users, relies on only modern protocols and ciphers, and includes only the minimal software you need.

There’s richer and more recent detail in The Changelog podcast Episode 377.

Note to self, future blog post(s) on recommended podcasts.


Focal Fossa Pi

The 20.04 Ubuntu Long Term Support release (Focal Fossa) officially supports the Raspberry Pi!

Running Ubuntu Server on your Raspberry Pi is easy. Just pick the OS image you want, flash it onto a microSD card, load it onto your Pi and away you go.

With handy installation instructions to boot.

Long term readers may remember that I put together a stack of Raspberry Pis just for fun one Christmas season. They haven’t been doing much since, but because I’m a heavy user of Ubuntu at work, maybe I can get more mileage out of them.


Pelican Search with Tipue

Inching my way towards using the Pelican static site generator for this blog, I realized that search is actually a must have. The path of least resistance seems to be to use the Tipue Search plugin. Tipue Search basically takes a statically generated search index as a big wad of JavaScript and does search client side. Not sure about the overall merits of this approach but it looks like a lot less hassle than deploying a parallel self-hosted search engine, especially after going to the trouble of static site generation to begin with. Then again, figuring the search part could be a fun side project.

Alternatively, looks like incorporating Algolia wouldn’t be too challenging.

Hat tip to this tutorial by Maxime Laboissonniere.

© 2008-2025 C. Ross Jam. Licensed under CC BY-NC-SA 4.0 Built using Pelican. Theme based upon Giulio Fidente’s original svbhack, and slightly modified by crossjam.