Meet the Pill-minder

Mon, Feb 20, 2017

Many of my projects are not born of necessity, but out of amusement or curiosity. Well, here’s one that does both. Without tools, I can be pretty forgetful, especially of mundane things. Fortunately, I’m pretty good at knowing this about myself and coming up with solutions. This is the first physical solution I’ve built, though. Meet the Pill-minder. I’m pretty terrible at remembering to take pills, even worse on weekends when I don’t follow my normal morning routine.

Cards Against Deqmandity

Fri, Jun 20, 2014

My two very good friends Amanda and Declan are getting married, and to celebrate, Janice and I throwing them a pre-wedding party. (No “bachelor” party tropes here!) By the time this post is published by Blogger, the party should just be wrapping up, and my favorite surprise should already be out of the bag. Declan and Amanda love games, and Janice and I wanted to have a game-themed part to the party.

Building a Custom Chorded Keyboard, Part 1

Mon, Jun 24, 2013

As some of you might know already, I like to nerd out about input devices. I’ve had the desire to build and try out a chorded keyboard ever since I first watched The Mother of all Demos. Chorded keyboards have had some popularity with wearable computing enthusiasts due to their one-handed use, but I thought they might also be interesting for ergonomic reasons. Building a chorded keyboard would also be a great learning experience as a deep dive into the workings of USB HID devices.

On Journey and Destiny

Sun, Feb 17, 2013

There’s a strange contradiction that I’ve been wrestling with for a little while. I thought that Journey was an absolutely beautiful and wonderful game. It even won eight awards at DICE this year, including “Game of the Year” and “Outstanding Achievement in Online Gameplay”. But here’s the thing: I think I might somehow be the only person in the world that absolutely hated Journey’s multiplayer system. If you haven’t played Journey, the multiplayer system works like this: you start playing the game as if you were playing a single-player game, and the game matches you with someone else who’s playing where you are.

Windows RT and Microsoft's bad choices

Fri, Feb 15, 2013

After spending my holiday break playing with my wife’s Surface running Windows RT, I decided to pick up my own. Honestly, I’ve been pretty happy with it as a productivity and media consumption tablet. But, as I am always wont to do after owning a device for a while, I ended up wanting to try my hand at developing for it. I knew Microsoft hadn’t made the best choices regarding development for Windows RT devices, but I hadn’t realized how bad they really were until I started looking into actually developing for the device.

Java and Game Development

Fri, Jan 11, 2013

It seems like at least once every few days, someone is asking whether Java is an acceptable language for game development over on /r/gamedev. I’m going say something potentially unpopular: please don’t use Java. A lot of people will tell you that the only way to do real game development is in C or C++. I’m not one of them. Honestly, I love high level languages. And, for the most part, I’m a firm believer in saying “use what you already know”.

Now Playing: Anno 2070

Sun, Jan 6, 2013

Janice and I have been playing a lot of Anno 2070 lately. Getting into it is a bit rough, as there’s really no tutorial to speak of, and it’s a little on the complex side. But you get the hang of it soon enough. It’s worth it once you do - it’s a combination of supply chain management, SimCity-style building, and RTS-style combat with diplomacy and goods trading… all in one game.

GnuPG Dice!

Fri, Jan 4, 2013

Many months ago, I wrote a little GnuPG-verified dice CGI page for myself and my gaming group to use when resolving gaming situations over email. (Feel free to use it yourself, you can check it out here.) It’s inspired by other verified dice web applications out there. But while other scripts require you check a roll on the site itself, either by cut and pasting into a form, or by finding the roll in a list, I wanted something I could verify easily by looking at the message in my mail reader.

Symmetric NAT

Mon, Aug 20, 2012

_I almost titled this post “Symmetric NAT considered harmful”, except I promised myself I’d never title something “considered harmful.”_ It seems like the number of consumer-level routers on the market that implement symmetric NAT (endpoint-dependent mapping) has been rising in recent years. This paper puts it as high as 16% in 2010 (with another 14% blocking UDP traffic, which, while tangential to this post, is really disappointing). RFC 4787 (Network Address Translation (NAT) Behavioral Requirements for Unicast UDP) is the “Best Common Practices” document regarding developing NAT devices and how they should behave.

Now playing: Neptune's Pride

Sat, Feb 11, 2012

It’s been a while since I’ve done a “Now Playing” post. I haven’t had much time to actually play games lately, but one game I do have time to fit in is Neptune’s Pride. It’s a 4X strategy game of galactic conquest written in flash, and played in “real time”. Turns are generally a day long, but ships move and combat happens between turns as well. I’ve been quite enjoying it, and it only takes a couple minutes of my time here and there.

Multi-processor compilation in older Visual Studios

Thu, Jan 19, 2012

I’m working from home today due to Seattle’s OMGSNOWPOCALYPSE2012. Lamenting the lack of IncrediBuild here at home, I decided to parallelize my builds - if only across four cores instead of across the entire office. Visual Studio 2010 has an option for parallelizing C++ builds within a single project (as opposed to parallelizing the building of multiple projects, which has long been supported) in the project configuration properties under C/C++ → General → Multi-processor Compilation.

NetMon!

Mon, Jan 16, 2012

I’ve been a Wireshark devotee for probably a decade. I’m sure I’ll continue to be a huge fan for everyday use. I had heard stories about Microsoft’s Network Monitor being awesome a few years ago at GDC, but hadn’t actually tried it out until now. I have to say, for developing custom protocol parsers (for debugging the mutliplayer game you’re working on, for example), it wins hands down. I might never write another Wireshark dissector again.

I Know Where You are and What You are Sharing

Tue, Nov 8, 2011

I Know Where You are and What You are Sharing: Exploiting P2P Communications to Invade Users’ Privacy Abstract: In this paper, we show how to exploit real-time communication applications to determine the IP address of a targeted user. We focus our study on Skype, although other real-time communication applications may have similar privacy issues. We first design a scheme that calls an identified- targeted user inconspicuously to find his IP address, which can be done even if he is behind a NAT.

Bandwidth Data

Mon, Sep 12, 2011

http://nilretain.org/~justin/bandwidth_tests.html Here’s a link to the test data I mentioned in my previous post. It took me a little longer than expected to set up the Qwest/CenturyLink side of things. (Through no fault of theirs, though.. I just was lazy and didn’t want to move the bookshelf to get to the phone jack.) Data is just starting to come in now, but so far neither side looks that great. Only time will tell.

Bandwidth Woes

Wed, Sep 7, 2011

Today at 17:00, I will be the proud owner of not one, but **two **internet connections. I’ve been a Broadstripe customer for the last few years, and the service has been absolutely terrible. Sadly, because cable companies refuse to compete with each other, Broadstripe was my only option for DOCSIS broadband. When we moved in to our house, we had Qwest DSL (now CenturyLink), but it was also terrible: at the time, we were paying for 7mbps, their highest speed, and getting maybe 3mbps on a good day despite several service calls.

An addendum to my last post

Fri, Jun 24, 2011

EVE players have started rioting in-game in Jita, the biggest trade hub in EVE. This screenshot was taken by one of my corpmates, he reports that the population in Jita spiked to 2100 for the riot, and that spill-over riots were happening in the next system, and in other trade hubs like Rens.

Breaking up is hard to do

Fri, Jun 24, 2011

EVE Online has long been my favorite game. I buy new games, play them for a while, and then go back to EVE. The gameplay speaks to me on a very deep level. I’m not in a large alliance fighting to control large areas of space, with billions and billions of ISK to my name (though, I’m sure the people that are feel the same way about how they play). I’ve just got my own little corner of space carved out, working it and maintaining it with my small corporation.

MSVC and Templates

Tue, May 31, 2011

template <typename A> class Foo { public: Foo() { Bar<A> b; b.method(); } }; template <typename A> class Bar { public: void method() {} }; int main( int argc, char** argv ) { Foo<char> f; return 0; } Take a look at this snippet of code. Does it look valid to you? On first glance, it might. But if you run it through your compiler… hmm, wait.. MSVC thinks this is valid code too.

Building the biggest ships

Wed, May 18, 2011

In seven days and nine hours, my EVE character will have completed building my first capital ship, the Minmatar Nidhoggur carrier. (With a full compliment of 10 Einherji fighters.) Myself. From minerals either bought or mined by myself and my corporation members. While carriers are the smallest class of capital ship, these are probably the biggest ships I’ll ever build, and they’re a huge milestone for a character that started off building small ammunition to sell to new players running the easiest of missions.

Again, the cloud: Dropbox

Fri, Apr 15, 2011

Since I mentioned how much l like Dropbox in my last post, I thought I’d add a follow-up. There’s been a bit of a buzz* lately about how insecure Dropbox is. I don’t see this as a reason not to use it, but extra precautions should be taken if you want to store sensitive information. I personally love TrueCrypt for this, as creating a fixed-size encrypted drive doesn’t leak information about the number or size of files you’ve encrypted.

First thoughts on Amazon Cloud Drive

Mon, Apr 11, 2011

So, I’ve been playing with Amazon’s new Cloud Drive/Player for a few days now. Tl;dr version? I’m not impressed - Amazon certainly has the resources to have done amuch better job. Cloud Drive: I’m a fan of cloud storage. I love Dropbox, which is commonly named as the app to beat if you’re building a cloud storage solution. Amazon has to have some sort of local filesystem mounting application in the works to access your Cloud Drive.

Marlowe's favorite part of the week

Sat, Mar 12, 2011

…is when I put on my clubbin’ boots.

What I've been working on

Wed, Feb 16, 2011

… is a secret gift for Janice, so a lot of what I’ve been working on lately, I haven’t posted. I can say (since she saw the packing slip) that it involves this box of 64 ShiftBrites from MaceTech. Man, I wanted to go all Scrooge McDuck, and just dive into this box. These little things are pretty sweet, they’ve saved me the work of wiring up a ton of RGB LEDs and shift registers.

Fixing Git "out of memory" errors on Windows

Wed, Feb 9, 2011

Googling around, I found a lot of people had the same problem with Git on Windows that I did: large files (where “large” means above 350MB or so) cause “out of memory” errors. A quick look into the file causing the error, Git.pm (ugh, perl), shows the reason right away: they’re doing nice, small 1KB reads of the file blob in a loop… but collecting the whole thing in memory before writing it all out.

SSL: Google vs. F5

Mon, Feb 7, 2011

Adam Langley, an engineer on Google’s Chrome team, wrote a blog post last summer titled Overclocking SSL. Adam argues that on today’s hardware, SSL connections are not computationally expensive, and showed us some statistics from GMail’s switch to HTTPS by default. He doesn’t go so far as to outright encourage other sites to do the same for their users, but the message is strongly implied. Last week, Lori MacVittie of F5 wrote a blog post (which was at least partially a response to Adam’s post) entitled Dispelling the New SSL Myth, in which she argues that SSL is only inexpensive if you use 1024-bit certificates and easier-to-crack ciphers like RC4.

GameCube power!

Sun, Feb 6, 2011

Pro tip: If you’re looking for more power for your electronics project than a typical wall wart gives you, your old GameCube power supply will give you 12V at a whopping 3.25A from a fairly small package. The voltage seems pretty steady at 12.19V, so you might even get away without building a regulator circuit. And all this without mangling the power supply’s wires!

Now Playing: Interstellar Marines "preview slices"

Sat, Feb 5, 2011

The group at Zero Point Software have a pretty cool idea for funding Interstellar Marines. Take the pay-for-beta idea usually applied to smaller indie games, and use it to fund a high-quality “AAA” game. Release a few “preview slices” of different parts of gameplay along the way as Unity browser-playable games to keep interest up, and offer several levels of donation. I hope it works for them. Their current demos don’t stand out as unique among FPS games, but they look good and play pretty smoothly.

A look at modern DVCSs

Sat, Feb 5, 2011

I’ve been a user of the Bazaar distributed VCS from Canonical (the company behind Ubuntu Linux) for a while now, at least for my personal projects. When I first chose it, I had already spent some time playing with Darcs for a few small projects. Darcs got its start in 2001 with roots in the GNU Arch project. (Bazaar’s predecessor - also named Bazaar - also has its roots in Arch.

The point where everyone notices IPv6

Thu, Feb 3, 2011

On Monday, IANA fulfilled its last request for /8 blocks of IPv4 addresses. This triggers the IANA “Global Policy for the Allocation of the Remaining IPv4 Address Space” exhaustion phase. This doesn’t mean there are no more available IPv4 addresses - APNIC just got two /8s on top of whatever they already have, and expect to be rationing them out for at least another 5 years. ARIN reported that they have almost five /8s worth of IPv4 addresses left to allocate.

Manifest gotchas

Fri, Dec 25, 2009

For those of you using Visual Studio 2008, and using it’s C++ TR1 support in SP1, here’s something I wish I hadn’t spent so much time tracking down.. TR1 features only exist in 2008 SP1, but the linker will happily build a manifest to link against the pre-SP1 CRT even if you’re using TR1. Some systems (including your development machines) will have proper side-by-side library redirection from the old CRT to the new one.

Multi-button Input Devices

Fri, Feb 27, 2009

Keyboards are important to me. I used to love pretty, low-profile scissor-key style keyboards. After trying a ergonomic keyboard a few years ago and having it relieve my occasional wrist pain, I never went back. Typing on a non-split keyboard even feels strange now. For about two years I’ve been using the Microsoft Natural Ergonomic 4000 Keyboard both at home and at work. There are a bunch of reasons that this is my favorite keyboard lately: the keys have a very solid action (not as much as the wonderful old IBM Model M, sadly), the enter key is on a single line (as opposed to keyboards with backwards-L shaped enter keys, which push the \ key to be moved elsewhere, often making for a smaller backspace key) and the angle and split of the keyboard has really helped my wrists.

"Scripting Languages" vs "High Level Languages"

Sat, Apr 28, 2007

Recently, Joe wrote in his blog: As I see it there are three kinds of languages in this world: Hard to write, but blazingly fast: C and C++, or even assembly if you’re really hard-core Easy to write, but so slow that you have to use them sparingly: PHP, Lua, Python, Perl Flash Java fits into an awkward niche between 1 and 2. It’s easier to develop in than C++, but not enough to keep up with the scripting languages, and yet it’s far too slow to write the whole game in.

Random Map Creation

Sat, May 13, 2006

This weekend’s project was a better random map generator. Last time, I just generated random points, and then for each system, went through a list of it’s “neighboring” star systems, giving it a random chance to be connected to each system. That random chance declined, the more systems the first system became connected to. In the new version, I’m using an algorithm much closer to one used to generate random mazes.

Senate-like bodies in Emperor

Sat, May 6, 2006

I’ve been thinking about the Senate from the original Emperor, and about some of my initial questions on how to model it in Emperor 2. Originally, everyone was a member of the Galactic Senate (though [Matt]() left the senate towards the end to join the NPC alliance called The Conclave), and I was unsure of how to handle new additions or departures. Instead, voting bodies will be player-created. There will be no initial voting body, but two or more players may opt to form a Concord, which will allow them to hold votes amongst members, invite other players, etc.

EVE!

Tue, May 2, 2006

So I’ve been sans-MMO for a while now, ever since I stopped playing WoW several months ago. Until, that is, I got back into playing EVE Online. I have to say, I tried the 2-week trial once before, and never really got into it. But EVE is different than most MMO’s.. it’s got a bit of a steeper learning curve, which means it doesn’t grab you right off the bat like some other MMOs do.