The problem with a geek mindset is that you are looking to solve problems which might have already been solved. It isn't about fame or bragging rights (usually), but a deep desire to understand a system in thorough detail.
Past readers might be noticing a trend by now.
A few months ago, I was staying with a friend and wanted to host a game on my computer over their Wifi and cable modem connection. To do so, I needed ports opened through their router. As I did not want to bug my friend for admin level access, I checked to see if their Wifi router supported UPnP. It did!
If you are not familiar: UPnP is a SOAP protocol that most net-accessible devices implement which allows you the ability to query or control the state of said device. For routers, if UPnP is enabled you can set up temporary port forwards.
So I looked for a utility on the internet and found one that let do this. But I was curious about the UPnP protocol worked.
So, what is a geek to do? Write his own UPnP library, of course!
A lazy week later and I had Tuatara. It is a C# library for speaking the UPnP protocol. It comes with a basic WinForms UI program which lets you configure a UPnP-enabled router for IPv4 port forwarding.
The code is nothing too complicated. I isolated most of it as a separate library with the intention of creating an Android UI, but I never finished that part.
It lacks any form of useful testing, so use this code at your own risk. I also found that some models of Wifi routers do not respond to the UPnP requests in a way that are described in the protocol, and therefore break the program.
To check it out, go here: Tuatara on GitHub.
We all know Minecraft. It's a great tool for relaxing and creative building. I've spent many hours, alone or with friends, building and exploring.
There's a lot of mods for Minecraft which have greatly extended its replay value. One of my favorites is ComputerCraft. It adds Lua-driven computers which can act upon redstone signals (Minecraft's form of wiring) or drive signals on its own. Even better, you can control a robot called a Turtle.
Like it's Logo namesake, the Turtle is driven with simple commands. Go Forward, Turn Left, Back up, etc. It's a useful tool which can excavate large areas, or fill them up -- But you must write code to make it go. There are plenty of pre-made programs which will dig out any size hole, but I just had to make my own!
I was fresh off a project which had used Lua extensively, and so I've come to like that language. It's nice, simple, but fairly powerful. It reminds me a lot of early Python in that it doesn't have outright built-in support for things like classes and object-oriented design, but it's easy to implement everything with the tools you are given in the language itself. Plus, the compiler/runner is a nice little piece of standard C90 code which is very easy to integrate into a C/C++ project.
My Turtle control program is a bit different from most. It only does two things: Dig out rectangular sections, or fill them in. But it does so with lots of options, and a nifty color text-graphics user interface. The Turtle itself isn't all that fancy but it contains a lot of useful utility code that will be handy if I ever take up another ComputerCraft project.
You can check out the Wiki describing how to use the code here: R.E.B. System Wiki.
The actual code can be found here: R.E.B. GitHub repo.
A few of my friends have Twitter horse_ebook style accounts. If you're not familiar with this, well, it has a Wikipedia entry these days! In short, it's a semi-famous (in a meme-ish way) bot which posted snippets from Ebooks in an attempt to avoid spam detection on Twitter. It mixed up the sentences of the books in a way that generated a lot of unintentionally funny non sequiturs.
Back to Twitter -- My friends have their own versions of this account, and most use something like Mispy's twitter_ebooks Ruby program. It's a fun and silly thing to do, and I wanted join in.
The process is simple: Acquire Twitter timeline, and then process it into a Markov chain. Then walk this Markov chain to generate a new Tweet, and post that. Do so on a schedule, so the program can be triggered and run unattended.
Nothing too exciting, but I did learn a bit about writing unit tests using Mocha. My previous projects used my own simple testing suite.
I am currently in the progress of migrating all of the content from my old games website, ditdahgames, to here.
The old website will remain online until the domain expires and then it will be retired, so make sure you update your bookmarks.
Page 1 of 2