20 Mar, 2008
Recently at work I spent a few weeks tuning a network service across three platforms (Solaris, Linux, and AIX) to get within 10% of the theoretical maximum throughput. In this short article, I’ll walk through the various tools I used to improve the performance of the application.
This application is very specialized in that the two machines are connected directly through an ethernet switch. This means that the MTU could easily be determined from each end of the link and the extra work to determine the maximum segment size for the transit network (see RFC 1191) was unnecessary. This also made it very easy to watch the traffic between the two hosts as well as the system calls they were using to transfer and receive the data.
Read the rest of this entry »
15 Jan, 2008
Tonight I was able to attend NSCoderNight DC in Tysons Corner, VA and finally met Jose Vazquez in person. Unfortunately, turn out is pretty spotty, with Jose being the only continuous attendee. Despite it being just the two of us, I came away energized and started playing around with the new APIs we spoke about: Core Audio/AudioQueues and Quartz Composer.
Read the rest of this entry »
15 Dec, 2007
If you want to distribute your Ruby applications while still protecting your intellectual property you could use an obfuscation tools such as ZenObfuscate or try to write your own. But in this article, I’m going to show a different approach that’s been used by several different companies producing commercial products written in Ruby. The method is not specific to Ruby and should work for any interpreted language in which you need to distribute your source code with the application.
The secret is to encrypt your Ruby source, store it in a database and then modify the Ruby interpreter to look for your code in the database and decrypt it on the fly. I should note that there is no way to completely protect a product which is distributed to your customers–with enough diligence any security measures can be broken.
These instructions are for Unix operating systems (include MacOS X). Unfortunately (or fortunately, for me), I don’t own a Windows machine.
Read the rest of this entry »
20 Dec, 2006
Last night I participated in a “code fest” sponsored by my employer. It was great fun and the code fest was powered by TopCoder. This was my first time participating in any sort of coding competition and while I didn’t make the top three, I did place in the top ten. I’m definitely looking forward to the next company sponsored event in February.
For those of you not familiar with TopCoder, they basically provide a Java application/applet called the Competition Arena. Once you login to the arena, you can then register for a Single Round Match (SRM, in TopCoder parlance), but only during the registration window (which appears to be two hours prior to the event). Once the event begins you have 75 minutes to solve problems of increasing difficulty. Each problem set is assigned a certain number of points (usually 250, 500 and 1000). You are judged both on the correctness of your program as well as the time it took you to develop and test it.
Read the rest of this entry »
10 Dec, 2006
Ever since I started playing video games at an early age, I always wanted to develop them. I had my first taste of this in grade school when I figured out how to modify some of my favorite games by editing the data files in a hex editor. In high school, I bought myself a copy of Borland Turbo Pascal (and then later Turbo C++) and taught myself how to program–building rudimentary games. For college, my mother really wanted me to become a lawyer so I decided that the best way to get there was to major in political science. While I did well, I just wasn’t really interested in it. So in my junior year I changed my major to computer science. Of course, I had already chosen my university based on their reputation for political science and law and as such the computer science curriculum wasn’t the best.
Since freshman year I had been running a MUD (I had to finagle an account on the engineering Ultrix machines as I wasn’t in the School of Engineering–we also weren’t supposed to be running servers either but I had some crafty ways to hide my work from the TAs). In my junior year I built a raycasting engine and a simple FPS (similar to Wolfenstein 3D). While I continued to follow the game industry and read-up on the newest techniques from folks like Michael Abrash, John Carmack, Andre LaMothe, etc. my foray into game development was still-born. In my senior year I took an internship at the Naval Research Lab and was pigeon-holed into telecommunications from that point on (I believe I’ve finally escaped, though I’m currently working on some very interesting and vital Internet infrastructure).
Anyway, you didn’t come here to read about me and my failed attempts at game development, you want to know about interviewing at EA’s Mythic Studio in Fairfax, VA. Home to Dark Age of Camelot (DAoC) and the upcoming Warhammer Online: Age of Reckoning (WAR).
Read the rest of this entry »
28 Jun, 2006
Tonight at NovaRUG we had two presenters: Tom Copeland and Xandy Johnson. Tom spoke about extending Ruby with C extensions and Xandy spoke about Rake.
Read the rest of this entry »