portfolio

some fun things I've worked on

Priority Queue

Why make your own priority queue when it's a solved problem? Why indeed! But also, have you considered, why not?

OK, so I actually just made this as part of a takehome exercise for a job (which resulted in an offer, so clearly it can't be that bad hehe). The actual implementation isn't really interesting. Most of the juice is in the highly detailed commits, as well as this imaginary PR review to the original (broken) source code provided for the takehome exercise.

JavaScript/NodeJS + jest + eslint
priority-queue

Log Creep 👺

So called because this program "creeps" a buffer backwards up a potentially huge file, from bottom to top, returning matching lines as it finds them in a streaming fashion.

This was actually another takehome from when I applied to Cribl. They were cool, and confirmed my intuitions, so that felt good. I did not however get an offer for that job, so I guess it could have been better.

For instance, a friend has since pointed out that mmap (memory mapping) would be a good fit for this problem. Maybe I'll explore that one day to see what it gains us.

Working on this actually made me appreciate just how blazingly fast GNU grep is, since that was the benchmark I compared this program against. For matches that aren't near the end of the file, grep outperforms this program by a lot.

NodeJS + jest
log-creep

README Improver 🦆

This webapp adds a "quack" to the README of a git repo once you provide it with the credentials to do so. That's right, it literally just adds the word "quack" to the README, and yes the name is somewhat tongue-in-cheek.

I made this after I became so impressed with how approachable NextJS made working with ReactJS, that I wanted to try it out for myself. The result is kind of a hodgepodge of a couple different conceits available when using NextJS.

Used the handy-dandy official create-next-app CLI to get quickly off the ground, then added my own business logic.

TypeScript + NextJS + ReactJS
duck.jmjanzen.com
readme-improver

Hackerman

I think there's some law that every programmer needs a "look busy" script that fills their terminal with all kinds of cool text. Well, this one is mine: I finally grew unsatisfied with piping tree / through increasingly tortuous encodings to make it look hackeresque.

In a nutshell, this is a CLI which pulls down publicly available open source code and streams it to your terminal in a way that looks like you're typing it. That's it. There are a bunch of arguments you can pass to tweak what you get and how it shows up, but its fundamental purpose is to amuse fellow programmers.

PS. "nullportal" is an org where I put a bunch of my ideas from college. My friends and I had the idea that it would be our hacker group or something, but then of course life and work happens, and we're all suddenly too busy... So it goes.

Python + argparse + GitHub API
nullportal/hackerman

Notes CLI

There comes a time in every programmer's career where they just get this stirring to roll their own note taking CLI, and this one is mine.

Continuing my explorations into Python, this one leverages a dispatch pattern to provide implementations of the various verb-noun commands in their own discrete little files. It's a simple CLI pattern that I often repeat.

Actually I've used this quite a lot, since I'm a big note taker. So whenever I'm digging into a truly new domain, I like busting this out because it lets me stay in the terminal. And there's just a certain cool factor involved in dogfooding your own software.

PS. For my next CLI I'd like to experiment with the Go library BubbleTea and related tools, and maybe even... (UNIX purists, cover your ears) A little interactivity? 🙊️

Python + argparse
notes-cli

This Personal Website

Let this take place of a colophon, at least until I get around to adding a legit one.

Originally started because I wanted to play with Go and couldn't at work--has since become an outlet and locus for many of my fascinations (usually software or infra related). Because I'm cheap, I'm pretty proud that all my hosting comes to under $2 CAD/mo

Maybe I'll break out all the different permutations of *.jmjanzen.* into their own sections once I have enough to write about.

Probably not lol.

Go + Gin + MongoDB + Docker
You're here right now! Yay!
See nav sidebar to your left
api.jmjanzen.com/docs
github.com/jm-janzen/jm