I spent a bunch of time setting up my personal website early last Fall. Not owning a domain, I checked the availability of a bunch of URLs, and eventually settled on benjamincongdon.me. A bit verbose, but it serves the job. I would have preferred ‘bencongdon’ or ‘bcongdon’, etc. but, being late to the party, all of those domains were taken.
During this time, I developed a habit of checking the Hackathon Hackers site list and randomly clicking on people’s sites to get inspiration for my own. Some of these sites are amazing works of front-end art, others are clearly templates - or worse, offline. Not being great at visual design, I strove for the middle-of-the-road: something simple, lightweight, and presentable.
Recently, I thought it would be a fun ‘data science’ project to look at this cohort of websites. I’m always looking for an interesting dataset to throw at Excel or, as of late, matplotlib. It’s worth disclaiming that my methods are by no means scientific, but nevertheless, they show some interesting results. Here’s what I found:
Recently, I finished the first version of a NodeJS module that’s been in the back of my mind for some time: Wunderschedule. The module itself is (in my use case) very useful, and has also given a new purpose for my rapidly expanding collection of Raspberry Pis.
Why I switched to Wunderlist
The idea for Wunderschedule started over a year ago when I switch from Google Tasks to Wunderlist for it’s more robust feature set.
For one, Wunderlist lets you actually repeat tasks. Previously, I used to manually copy and paste repeated tasks with Google Tasks. (Think of all the seconds wasted!) Really though, this was a tax on the usefulness of Google Tasks. If I had to remember to create all the tasks so I could remember to do them, the load taken off my brain was relatively load.
And this was great. I have a certain number of atomized tasks (‘Clean out my desk’, ‘Make sure the laptop gets backed up’, later ‘Commit to Github’) that should be scheduled at a certain date every week. And Wunderlist supports this well. Immediately, I ran into the obstacle that, unlike Google Calendar, I could not schedule things for multiple, specific days of the week. (You get “Weekly” rather than “Weekly on Mondays and Fridays”) This was a tad frustrating, but work-arounds were quick and easy.
And so I stuck with Wunderlist.
Until this point, I don’t think I’ve really stated the intent / purpose of this blog. I’ll try not to philosophize too much on this point, but I think it would be interesting to record my intentions going into this writing project.
If you haven’t yet played Factorio, I think you should. Especially if you have any interest in logistics problems, circuit design, or coding. Sure, you don’t do any coding or circuit design in Factorio, but the main gameplay loop will have you tackling similar problems.
I’ve been more-or-less enamored with VR tech since I first tried the Oculus DK2 at PAX Prime in 2013. The experience, while not “life-changing” felt like a big step forward in Human-Computer interfaces (playing EVE Valkyrie in VR was really freaking cool).
Since that first demo, I’ve been somewhat closely following the development of the Oculus and - more recently - the HTC Vive. For what it’s worth, Tested’s weekly podcast “This is Only a Test” has been a great resource for keeping up-to-date with VR news and developments.
Recently, I was creating a command line application for a Project-based coding ‘interview’. I wanted the application to have a degree of interactivity, but for various reasons, I couldn’t easily keep a file-based save state of the application, which would allow me to use some of the CLI modules that Python has.
I felt a bit stuck, because I wanted something like the Python interpreter, but with behavior that I defined. All of the CLI modules seemed to only allow ‘one-off’ commands, and I wanted something that was persistent and would allow the user to issue multiple commands at will.
My ‘on-the-fly’ solution was kludgey. String manipulation to get command sequences, then cascading conditionals to check and execute the functionality. It worked (mostly), and had the user experience I wanted, but the solution felt like I had unnecessarily reinvented the wheel - and in a rather inelegant way.
After a bit of Google-foo, I’ve found what I believe may be a better solution. The code class in Python allows you to emulate features of the Python interpreter, which means you can embed an interpreter session within your project.
Over the weekend, on the plane from Chicago to Seattle, I watched Ex Machina, a film that I’d been meaning to see since it got a bunch of press in the Oscar season.
Ex Machina describes the ‘Turing Test’ trial of a newly invented AI wherein a lowly code monkey visits his Sergey-Brin-esque boss to interview the feminine robot. It first feels like the whole thing might play out a bit like Her, but the filmmakers do a good job of keeping the plot just a step or two ahead of your intuitions.
On the blogging platform I’ve decided to use for the time being, Jekyll, I found it a tad annoying to create new posts in a timely way.
It’s not difficult to create a .markdown file and copy in a template, but the naming convention of the files, YYYY-MM-DD-Title combined with the front matter metadata you have to put in the headers made the process take just a few seconds longer than I was comfortable with. You have to enter the date twice in a specified format, and it just ‘felt’ like something a computer should be doing, instead of me.
This seamed like an excellent place for a Python script to step in!
So, I wrote the following tiny snippet of code, and now I can create a new markdown file in a few seconds flat!