Howdy!

Welcome to my blog where I write about software development, cycling, and other random nonsense. This is not the only place I write, you can find more words I typed on the Buoyant Data blog, Scribd tech blog, and GitHub.

Bug Number Seven

One of my favorite Facebookers, Ari Steinberg, just resolved bug #7 in Facebook's bugzilla.

LIMIT, OFFSET, and ORDER BY are all implemented.
docs at http://developers.facebook.com/documentation.php?v=1.0&doc=fql are updated. enjoy guys, and let me know if there are any problems with it. tyler, don't go too crazy with it...keep in mind that order by in particular can be an expensive operation (but do try it out - when used in the appropriate ways it could lead to a savings)


When used correctly, LIMIT, OFFSET and ORDER BY can really make writing application-level code much easier, because you're offloading a lot more onto Facebook. For example, instead of fetching an entire list of people (presumably friends) and then sorting by their name, you can perform a query like:
SELECT uid,name FROM user WHERE uid IN (SELECT uid1 FROM friend WHERE uid2 = $UID) ORDER BY name

This query will fetch an alphabetically sorted list of $UID's friends along with their uid, preventing any sorting you might need to do.

Make sure you check the FQL documentation for which "columns" are keyed such that you perform the most optimal queries possible. Of course, you should already make sure you're selecting as often as possible on keyed "columns" in FQL, but when you're offloading large amounts of sorting onto Facebook's API servers, it becomes more important to form optimal queries to make sure that you can fetch data from Facebook as fast as possible and render your application's pages.

Another fun query that becomes more fun with ORDER BY is fetching events for a particular user:
SELECT eid, name FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid = $UID) ORDER BY name

This of course is using ORDER BY on the event.name "column" which is not keyed so it will theoretically perform slower than the example above, but it's far less likely that a user will have thousands of events versus thousands of friends, so the real-world performance hit will be negligible.



As as side note, Ari was on stage with me at Graphing Social, helping me give the Facebook App Development 101 workshop a few weeks ago. You can regularly find him cruising through bugzilla and every so often on the #facebook channel on Freenode.
Read more →

Building Mono on Leopard

I figured I'd write up a guide to building Mono from Subversion in preparation of the upcoming 1.2.6 release, on a site I've neglected since I set it up, mononews.org (I hope to get back to writing tutorials and "newsy" stuff with the 1.2.6 release).

Anyways, if you've got Leopard installed, Geoff Norton did a great job in helping me track down the remaining Leopard/i386 bugs earlier today, so now you can build and run Mono relatively easily from Subversion on your fancy smancy new OS.

Building Mono on Leopard
Read more →

A note to my Graphing Social "students"

I figured I'd inform anybody that attended my Facebook App Development 101 workshop at Graphing Social, that I have finally deleted the workshop test accounts that were located at workshop.monkeypox.org.

I have made a backup of the database that we used to play around with the "Why are you awesome?" source code, and I have also backed up the files, so in case you forgot to get your modified files drop me a line and I'll fish your data out.


Read more →

Your order has been completed

Yesterday while shopping around for a new cell plan I figured it'd be a good time to get a new phone as well. The cell phone I currently have is the only cell phone I've ever owned, I believe the model is an LG Piezza-shit.

After browsing around Cingular's site, I found a good deal on a Blackberry Pearl and decided I really want to be tethered to my email more than I am now. Not that I ever had any free time to begin with, but I'm a sucker, I liked the placebo effect; that's all over now, I'm getting a Blackberry.



I'm fucked




Read more →

Silicon Valley Gangstas

Last night I attended the "Hip Hop Live" show at the Mezzanine here in San Francisco, and it was nothing short of absolutely amazing. As some of my coworkers know, I'm a huge hip-hop fan, but primarily dirty-south rap, so going to a show by three East Coast rappers was different. The show started with Brother Ali, who I've maintained for the month leading up to the show is "one of the most insightful rappers you'll see." Following Brother Ali, the venerable Ghostface Killah and his crew took the stage, dedicating a song to ODB (Old Dirty Bastard) as well as paying homage to some of the other Wu-Tang Clan members. The final act of the show was Rakim, another powerhouse act, who did some songs off his new record but also some "oldies" from the early nineties like "Don't Sweat The Technique."

In general, you missed a hell of a show. I wish I could describe it a bit better but between raising my fist in the air or making the Wu-Tang symbol with both hands, I lost track of it all and let myself become overpowered by the music.

At the very least, I recommend checking out Brother Ali, I think you'll be hearing a lot more from him over the next couple years. This is one of his more controversial songs, "Uncle Sam Goddamn." Enjoy.
Read more →

On Investing

Every month since coming to work at Slide I've been putting away some money into a low-yield savings account, the modern financial equivalent of hiding money in the mattress. The more I've been thinking about this, the more I've been wanting to change this, start investing and the likes, putting my money to work (I don't get a break, why should it!). The biggest obstacle however is that, as a young man in the 21st century, I haven't the slightest clue what to do here. It takes grown men their entire lives to really get a handle on such large volatile systems such as the stock market, what hope do I have to do anything but piss my money away?

The dollar is unfortunately weak right now but I feel that it will turn around soon, so it seems like an ideal time to start investing in a few select stocks. I figured that I would pitch my plan, and see what reactions it got before I started to actually put money down.

The Plan

Please point out as many flaws in my logic as possible, I want to be as prepared as possible before money leaves my bank account(s).

Overview

The "inspiration" for how I want to invest comes from some development methodologies that have started to crop out in various places out of the desire to increase productivity and squeeze the most bang for their buck of developer time (such as SCRUM). "The Plan" will follow a similar "flow" as it will be oriented around a planning period, an investment period (the sprint) and the analysis period (basically me crying because I lost all my money). I think that allowing for a cycle of around 7 months for "the plan" should be adequate enough to maximize returns while maintaining a good diverse portfolio. Some of the very few stocks I follow seem to perform well for a 6-10 month period before somebody either does something stupid or a product line fails, etc. Catching this wave is important, as is getting off at the right time, this concept is nothing new, but will probably be the hardest rule to follow from "the plan."

Step One: Research

The entire first month of "the plan" I intend to spend on research, not full-time, but on my weekends and free time. This part of "the plan" should allow me to scour the internet reading up as much as possible on candidate stocks, charting their progress over the first month and getting familiar with those leading the business and their ability to do so. Investing in lines on a bar graph is not what I want to do, I don't think, given my experience with investing, I will be able to analyze a company's potential just by looking at numbers. This phase is definitely going to be the most interesting and educational about the market and will help me figure out whether this is really a good idea or not.

Step Two: Invest and Track

With my set of stocks for this cycle chosen in Step One, now it's time to actually invest. I'm not certain whether going through a broker, e*trade or another online firm will be the right way to do it, but I'm open to suggestions. Pending the research I would do beforehand, that would gauge how much money and where I would invest. Once money is invested however, it's hands-off until the end of the sprint of 6 months. Every week I intend on watching the stocks, following the companies and what they're doing to, and doing basic incremental metrics on how well everything is performing. This should be the fun part of the entire cycle, partially since it's the least work, but it will also allow me to learn the most about how the market works in contrast to world events.

Step Three: Extraction and Analysis

Regardless of how well they're performing, what goes up must go down, after the 6 month sprint from Step Two, sell! Once all the money is out of the selected stocks, it'll be time to really analyze how well everything performed. Ideally finding which sectors are doing well, what influenced the stock prices, what the company did during the sprint and how well the market as a whole did during the sprint. Pending the success of the first cycle of investment in this fashion, this step will lead nicely into another cycle's "step one" and allow for rapid iteration on fine tuning my investment savvy and give me a chance to try out investment in a variety of different businesses and markets.

In general I haven't decided how much money I want to start putting into the stock market nor have I decided on when I want to start, but I've been pondering this plan for almost a month now and would love to get feedback from anybody that's tried their hand at investing, etc. Because the first cycle will be an experiment I will most likely be noting my progress here. If anybody wants to join, let me know! It could be fun to "pick your teams" like fantasy football (I can't believe this exists) except with actual money and (hopefully) actual returns.
Read more →

My new favorite chuckle

Whenever discussing possible Facebook applications or some of the concepts involved in bringing a product into Facebook, I invariably hear a lot of:
"we want to do X because we've found college students respond well to Y"
or
"college students [on Facebook] will love Z"



Now, I don't mean to be too picky but there's a couple of problems with this:
  • Over 50% of Facebook is not in college
  • Just how old do I look to you?*

Seriously now.





* I dropped out of college earlier this year, after winter semester

Read more →

Any Unemployed .NET Developers in NYC?

Last week at the Widget Summit speakers dinner I met an executive from DoubleClick, you know, that gigantic ad company that recently got acquired by Google, Inc. While talking about some of the difficulties in developing scalable web products I brought up some of my history in terms of developing .NET web applications and of course, Mono (at least I think that's how we got on the topic).

As it turns out, DoubleClick is really pushing to modernize their internal infrastructure on the .NET platform and really needs some smart folks either willing to move to New York City, or that already live there. If you're looking, feel free to contact me at tyler@monkeypox.org and I'll put you in touch, or hit up their careers page.

If you go to work at DoubleClick, I think you can technically get away with saying you work for Google. You'll also be able to say you are working on truly scalable .NET, which is something I really only think Windows Live and Myspace* developers can say currently.

Of course, if you're on the west-coast or lean more towards Python, Slide is always hiring.



* As it turns out, Myspace runs one of the largest .NET sites on the internet, and lays claim to the largest SQL Server installation on the entire planet.
Read more →

Widget Summit Slides

I recently got off stage at Widget Summit and figured I'd better post my slides before I get back to the grind at Slide.

Unfortunately given some of the restraints on my personal and professional time, I couldn't come up with an entirely new presentation for this event but some of the concepts I've talked about at previous presentations and talks could be brought into this presentation. The audience here at Widget Summit was slightly different than previous talks so I needed to modify and remove some of the more developer-targeted content as it simply wasn't pertinent to this audience.

In general I think the talk went reasonably well, with the sole exception of running about 10 minutes short of the allotted time because I talked too fast. It did however give me the opportunity to answer plenty of questions. I hope my slides are more informative than I think they will be by themselves, since I didn't have any presenter notes and was speaking impromptu almost the entire time. Enjoy?

Facebook for Widgeteers (PDF)
Read more →