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.

Popfly. How to lose the buzz.

I remember watching a Channel 9 interview about Popfly with my coworker and former landlord David Young just after the original Facebook F8 Platform Launch back in May, laughing hysterically at a user-interface that used grass as an interface element, but at the same time thinking it was a very cool use of Silverlight as an application platform, instead of a Microsoft reply to Flash. Since that fateful day in May when a Microsoft Vice President of Business Development unveiled Popfly (exactly who should be unveiling a developer tool), I've heard close to absolutely nothing about Popfly, but loads about Silverlight.

Waiting to build a new version of Mono from trunk, I figured I'd check it out again, hoping their ludicrous "private beta" period would have passed, and I could finally use the technology that was unveiled almost 5 whole months ago. Alas, despite having the Silverlight plugin for Safari, popfly.com doesn't support Safari (I thought people wrote cross-platform web pages these days). Admitting my defeat, I popped open my VMWare instance of Windows XP, and Internet Exploder 7, only to discover that yes, Popfly is still invite-only or they're having server difficulties? Despite their about page jokingly referring to themselves as the developers behind products like Microsoft Bob, I'm starting to wonder if they weren't joking, as Popfly's introduction at F8 was either woefully premature or Microsoft decided that a developer environment where you draw lasers in-between boxes that represent stuff is too silly.

All my criticisms aside, the product does look interesting enough for me to be excited about the Popfly session at ReMix Boston '07 in October, if for no other reason than to ask for an invite, and maybe even wtf?

Given the insane amount of buzz around the Facebook Platform, and independent developers struggling to get cool applications into users' hands fast enough, Microsoft screwed up royally on a chance to sow the seeds of the next generation of developers on the web with Microsoft technologies.

Dear 800lb Gorilla,
When you announce something at a tech event that could possibly turn out to be industry changing like the Facebook Platform Launch, actually have the product ready for people to start using, otherwise, why bother?
Read more →

Contemplating ReMIX 07 in Boston

While catching up on about 2 weeks of Mono Subversion commit emails (about 1000), building Mono, and writing a new Facebook REST client library, I came across ReMIX 07 in Boston, which certainly looks interesting. I haven't been to Boston yet, and it'd be nice to at the very least, to try to buy Miguel and some of the Boston-based Mono team a beer, maybe to make up for some of my anger that sometimes blurts out into the IRC channel:

05:48 <rtyler> god [expletive-deleted] damnit, I'm going to beat somebody up
(Which, in all fairness, usually stems from some idiot mistake on my part)



The sessions on Silverlight by Adam Kinney, who I did this interview with, are definitely looking enticing, as I'm still trying to figure out if it's worth my time and effort, or if Microsoft is going to screw developers again (ActiveX for Mac OS anybody?).

Most of the sessions seem to be targeting web developers, which is a role I find myself increasingly definable by, despite my role being clearly stated on my business card:

New Biz Card


Regardless, seeing what developers are doing off in la-la-Microsoft land should be interesting as most of my web development work is either in Python or ASP.NET(Mono).

I am a little disappointed in the lack of sessions on IronPython and where that project is heading; it probably lost out to mega-mind-boggling sessions like "Stop Building PowerPoint Backgrounds & Start Selling High-end Presentations", which means I would have to settle on "Just Glue It! Ruby and the DLR in Silverlight" for my DLR fix.

That said, will it be worth a trip across country and a couple of hundred dollars out of pocket? Any couches available in the Boston are? And of course, are Microsoft conferences that awesome?
Read more →

(Unofficial) Facebook Hackathon in Palo Alto

Rumor has it that there will be a little meetup in Palo Alto tomorrow to hack on some Facebook applications. The hackathon will be at Happy Donuts in Palo Alto, which is a hop skip and a jump away from the California Ave. Caltrain stop. I am planning on attending to hack on my Bug Tracker application (written in ASP.NET on Mono, which I will dissect and discuss later) as well as help out anybody that needs a good kick in the pants. Other than that however, it should be interesting how many folks show up and for what reasons, I'd like to discuss and share some of our sicker FBML hacks and maybe collectively play with (read: break) the Facebook Data Store API. Should be fun, come down and hang out :)
Read more →

Channel9 Silverlight Interview

At the closing of SilverlightDevCampSF Microsoft Evangelist Adam Kinney did a brief video interview with me about my silly Silverlight hack. I had just started with Silverlight the night before, and didn't even have Moonlight virtual machine up yet, but I did have a Windows XP vm kicking around.

After the, roughly, three hours it took me to get Visual Studio 2008 (Orcas), Expression Blend, and a couple of other tidbits installed on my vm, I finally got to my Silverlight hack. Starting with something I presumed would be exceedingly simply, I created our "collage" transition in Silverlight (you can find a "sample" here).

The hack is relatively simple, a new randomly generated storyboard and canvas are created for each image, then added to the root element; after 15 images have been added the canvas is cleared and repeats. I used Silverlight 1.0, since that's all that is released right now, so everything is in Javascript (argh!), but I intend on revisiting the hack once Silverlight 1.1 is a bit more stable (and rewrite it in IronPython!).

Anyways, here's the interview.
Read more →

SIlverSurfer, Try out Silverlight on Mac OS X

At the SilverlightDevCampSF this past couple days, I discovered a couple things while hacking around with both Moonlight, and Silverlight.

The first of which was that I don't know nearly enough about Silverlight, XAML, and WPF in general (crap). The second of which, was that with WebKit on Mac OS X, any application that embeds WebViews inherits plugins that are installed on the system. Extending this idea further, WebKit can inherit plugins that are bundled with a Cocoa application (inside Application.app/Contents/PlugIns), woohoo! What this means, outside of a purely Silverlight-related context, is that you could theoretically bundle a WebKit-plugin with a WebKit-based application and just have that plugin purely application specific, or bundle up a WebKit application with different versions of Flash and Silverlight for testing purposes. Unfortunately, there are some issues with clicking through to the Silverlight canvas in an embedded WebKit view, you can still try it out inside an application, without having to install the Silverlight plugin and restart your instance of Safari.

That said, are you thinking what I'm thinking? Of course not, you're probably sane, but I'm not, so I'd like to introduce SilverSurfer 1.0, an embedded version of WebKit that loads in the Silverlight 1.0 plugin for Mac OS X. It doesn't install anything on your computer, so you don't have to restart Safari, or futz with plug-ins, this is especially useful if you just want to try Silverlight out and see what it's about without installing anything.

Running SilverSurfer



Visiting a Silverlight page in Safari



Visiting the same page in SilverSurfer



Complex Silverlight in SilverSurfer



I think it's a neat trick, the only downside is actually having to bundle up the entire Silverlight.plugin bundle with the application bundle to make sure you don't have to install it, but other than that I hope you can find it useful when trying out Silverlight, or just testing it in Safari!
Read more →

C'mon down to SilverlightDevCampSF

A bit late to bring up, but later today and tomorrow here in San Francisco, "we" (using that term loosely) will be holding SilverlightDevCampSF, one of the first BarCamp-styled events that I'll have ever attended where I've not played a part in it's organization.

In case you're unfamiliar with BarCamp events, they're loosely organized meetups/conferences to which geeks flock to normally for the booze included, but sometimes for the technical aspects as well.

I'm showing up particularly for Kevin Marshall's session on "Silverlight Facebook Apps" for obvious reasons, as well as to try my best to enlighten my fellow developers on the joys of Mono and Moonlight (that last part might not work out, time permitting). Overall it should be fun, and I hope if you're in the bay area you can make it down to 1 Market St! (map)

In case you're showing up, here's what I look like:


I'm with stupid ^
Read more →

Time for a Road Trip

After a few solid months of staying within the city limits of San Francisco hacking to my heart's content on a few Facebook products, my OpenMoko, some Mono libraries that I'm building, and other stuff I shouldn't talk about, I'm taking a break.

A friend of mine has taken my advice and is moving to the west coast now that she's graduated and is ready to see what the world has to offer outside of Boston. Part of my obligation it would seem as the giver of (fantastic) advice is that I will now help her drive 2,968 miles from Washington D.C., to Santa Barbera.

I'm debating buying a camera once I arrive in D.C. later today. If anybody has any suggestions for reasonably priced, good digital cameras, please let me know.

This should be fun.


View Larger Map
Read more →

Video: Facebook Developer Garage

I figured I'd go ahead and include some of the Facebook Developer Garage videos that were recently posted to YouTube, including ones of me giving my presentation.

Coping with Success

Part One


Part Two


And of course Dave Fetterman, the lead engineer on the Facebook Platform gave a good talk (preceeding mine)

From Facebook

Part One


Part Two


Part Three


In general it was a great event, both technically, but also in terms of networking and sharing knowledge and ideas we've all accrued through our work on the platform. Slide had a good showing in my opinion and I think we did a good job of offering up advice where we could in terms of scaling, technical "gotchas" on the platform, and whatever else we could offer up to the community.

Around 300 showed up this time around, I'm hoping closer to 400 or 500 show up for the next Facebook Developer event that's held in the bay area, but we'll see.

Videos courtesy of dalmaer

Read more →

Facebook Developer Garage Wrap-Up

Despite resisting the temptation to come on stage chanting "developers, developers, developers!" I think the entire Facebook Developer Garage - Palo Alto was great success. Application developers from (in my opinion) well over half of the popular applications on Facebook and a lot of independent application developers showed up and in general good times were had by all.

Developer Swag


As far as my presentation went, I was apparently "a great speaker, spoke in depth about building apps thats scale." But in general the feedback was very good, and I spent most of the rest of the day talking to individual developers about short-term and then longer term growth and how to attack that from a developer's perspective.

Since I've updated the presentation, it's posted here again.

Coping with Success (PDF)


Read more →

Facebook Developer Garage Palo Alto

Somewhere amongst the stress of this past week, I neglected to mention that this weekend, i.e. today, there will be a Facebook Developer Garage in Palo Alto Co-hosted by Slide.

I'll be speaking, giving the presentation I previously mentioned not being able to give, on scaling on the Facebook platform and some of the key things to consider when choosing between and FBML or an IFrame based application.

Not only will I be there, but most of the Slide/Facebook crew will be there along with (at latest count) about 300 people from around Silicon Valley who are interested in developing, monetizing, and creating on top of the Facebook platform.

Feel free to stop on by to watch me say "um" too many times in front of 300 of my peers, good times will be had by all.
Read more →

Back to the Basics

So last time we spoke I just arrived in college station during the spring semester. It has been a while! So I decided to come back after talking to my buddy tyler last night, I was reminded of the good times I had on unethical blogger (even though I only posted once). So I think I am going to start a weekly blog of things that scared the shit of of me this week. Many readers will laugh at this weeks, I did not find the situation funny.

WHAT SCARED ME?

RACCOONS?

As I was throwing out the trash, I hit a raccoon with a box and I jumped out of the dumpster and almost killed me. Luckily I have learned from Chuck Norris So that Raccoon was good as dead. Bust still they need to die.

I have also started a new thing with my buddy tyler, when I call tyler for tech support, I give him a dollar. So far he has earned 4. By the end of the year I would not be surprised if he has earned at least 50 from me.

Anywhoo my quesidillla is done so I gotsta jet.

As always I am your humble mexican friend,

The Roy
Read more →

My Boss is a Robot.

Sometimes Max tells me things that I find hard to believe, but after I verify that he's not just telling tall tales, they inevitably turn out to be 100% correct, which is scary.

Jokingly I mentioned that "Max is a robot" today, to which he promptly corrected me stating that "it's already known" that Max Levchin is a cyborg.

Some of my favorite quotes from this obviously factual article are:
  • "The man is ripped. What human engineer has biceps?"
  • "When he worked at PayPal doing security (alert: common robot job).."


The WD-40 he keeps in his left back pocket, and the obvious mechanical extension of his hand (which assumes the shape of a Blackberry) should have been dead give-aways, but I somehow glazed over this.
Read more →

Scaling with MySQL, a brief guide.

I've been thinking and experimenting a lot with MySQL 5, and PostgreSQL 8.3, trying to figure out which database server would be most optimal for scaling larger web applications.

I've brought some of my MySQL optimization tips into a small e-book styled guide, something I hope will help my fellow developers understand what they are getting into before choosing a production environment with MySQL 4, or MySQL 5 in contrast to PostgreSQL.

If you have any other tips for scaling with MySQL, I'll make sure I add them to my little e-book and release and updated PDF file :)


Scaling MySQL (PDF)
Read more →

I just saved $150!

Thanks City of San Francisco for not being able to tell the differences between at least two of the three characters in my license plate.

I'd feel guilty, but if my street is marked for "Street Cleaning" three days a week, I'd like to see it cleaned at least twice a week.

What a racket.
Read more →

Coping with Success: Scaling on the Facebook Platform.

I figured I'd go ahead and post this now since the format is of the "App Dev Conference" (InsideFacebook coverage) is more paneled than the original "small presentations" I assumed it to be. Oops.

We talked about a few topics from a developer perspective, such as a minor gripe session on Facebook breaking FBML, but the highlights of our developer's panel are monetizing and growing the user engagement inside the applications. I was on the panel with Blake Commagere (Vampires), Dave Genztel, (SocialMedia), Jia Shen, (RockYou), Joe Winterhalter (Quizzes), James Hong (HotOrNot). Fortunately for me, I get to do cool stuff like this, almost as the "voice" of Top Friends despite the fact that Top Friends is a definite Slide property with more smart people behind it than just me alone.

Regardless, in between fixing some bugs last night, I hacked up a presentation citing some of the various means of scaling and designing your application to scale appropriately, I also made sure to discuss some of the lower-level scalability with one of our brilliant server guys, to cover the bases from application-level scaling to database and Facebook API scaling.

I hope you enjoy my presentation with notes included:
Coping with Success: Scaling on the Facebook Platform (PDF)
Coping with Success: Scaling on the Facebook Platform (Flickr)



Read more →

Another Facebook Developer Meetup

Seth Goldstein of SocialMedia (who I think are a competitors of ours) has organized a Facebook Developers Meetup/Miniconference of sorts this Wednesday from 12-5 p.m. at Fenwick & West here in San Francisco, which I will be attending.F8 Badge I'm not completely sure on what I'll be talking about, I'm thinking about discussing some of the issues with scaling on the Facebook platform, or the pitfalls of choosing FBML vs. HTML for developing your Facebook application. There's going to be lots of market-speak I'm assuming ("OMFG VIRALITY!") so I'd like to bring a bit more of the technical side of developing applications that can explode on the Facebook platform.

What I end up talking about is completely open to discussion, so if there's anything you'd like me to talk about, feel free to leave me a comment or drop me a mail at tyler [at] slide [diggitydot] com.



While I am not one to discuss a lot about our "strategy" or "pixie dust" or however we've done what we've done, I do know how a lot of what we done works, and his Maxness permitting, i'll be able to impart some of the <fb:wisdom/> I've accumulated upon my fellow application developers. If interest warrants it, I might start to share some of my sicker (read: awesome) FBML hacks on this blog, but since I'm a big nobody in the world of blogs, it might be a waste of time, so we'll see.

Regardless, if you can make it this wednesday come on by and say "howdy"

I promise I probably don't bite.



+1, Ego-boost


Just in case you aren't familiar with Facebook's Platform, or what's exactly going on, I figured I'd cite why Slide, and in turn why I am (sort of) credible to talk on the subject.
Slide has done a good job (in my absurdly biased opinion) on the Facebook Platform with some of the top applications such as:

Read more →

Video: Hello Moko

I thought I'd dork around a little bit with recording videos featuring the Neo1973, running OpenMoko. This video is running an older version of OpenMoko (2007.1) so it isn't current. It's also worth noting, to use the phone, you don't have to do a full shutdown and bootup, you should really only ever need to do either if you're a developer, or when you first receive the phone.
Hello Moko.




Read more →

OpenMoko 2007.2 Preview

I bit the bullet last thursday and started playing with some of the 2007.2 OpenMoko snapshot images, 2007.2 denoting the next iteration of the software. Whereas my previous photos were from 2007.1, the interface was a bit weak, and wasn't much to be proud of. The direction that the interface is now heading in is not only sleek, but much more usable. One of the most important changes, in my opinion, is the addition of acceleration-incluenced scrolling throughout the interface. The new scrolling allows you to do a quick swipe with your finger and have the interface scroll quickly and then slow to a stop, as if your scroll had momentum behind it.

OpenMoko Boot screen











2007.1

2007.2


Welcome to OpenMoko

2007.2 Boot screen



OpenMoko Desktop











2007.1

2007.2


OpenMoko Menu

2007.2 "Today" (Desktop)



OpenMoko Applications











2007.1

2007.2


OpenMoko Menu

2007.2 Applications Browser



OpenMoko Dialer











2007.1

2007.2


OpenMoko Dialing.

2007.2 Dialer



Overall things are progressing quite nicely, but as a developer I feel that I'm teetering between bricking my OpenMoko phone, and making beautiful music with it, either way, I'm along for the ride. The last picture I'll leave you with is one from when my friend whurley and I met up this past week since he was in town representing BMC at Linux World. whurley was one of the organizers of the first iPhoneDevCamp and is a proud owner of an iPhone, regardless, he thought the OpenMoko phone was pretty cool :)


whurley and OpenMoko



You can find all my OpenMoko photos on Flickr
Read more →

Scaling, with your "smart platform choice"

At times I feel as if I am plugged directly into the internet, almost like an NSA wiretap on AT&T's backbone, silently sniffing along reading packets until something throws up a red flag. This specifically applies to both Python, and .NET/Mono related bloggings, in which a fellow I know, Chris Messina, posted something titled "WordPressMU: Making a smart platform choice" which, not surprisingly, threw up a red flag. Chris and I tend not to see eye-to-eye on a lot of things, most notably, microformats, along with Ruby on Rails, and some of the other "Web 2.0" style technologies/idealogies that Chris has embraced, while I stand back and look on, casually remarking "OMGWTFBBQ" every now and then.

Chris opens the post with the following, in reference to a client of his:
Their current website is built in .NET and they’re getting to the point where things are about to start getting set in stone in terms of scaling and overall architecture and it kinda freaked me out that they’d continue down this path using a platform that I think offers little when it comes to organic community-building or much in the way of “doing web things right”.


Disclaimer: I'm not an expert on scaling, I just get yelled at when my code doesn't scale

Chris goes on to mention Ruby on Rails, Django, and WordPressMU, deciding on the third as the best option for building a people-powered Web 2.0 community on. Some of the reasons for this are employment, open source, web standards, community, scalability, politics, and a few others that don't matter. While Ruby on Rails, Django on mod_python, and WordPressMU on PHP are all good platforms to build upon, his complete dismissal of .NET (and in turn Mono) is completely unfounded, and in most cases, blatantly incorrect.

Examples


Looking at some popular sites around the internet, you can get a feel for exactly what it takes to scale:
  • MySpace
    • OS: Windows Server
    • Platform: ColdFusion/.NET
    • Database: MS SQL
    Originally, they were able to scale with ColdFusion, and have since switched over to .NET, making MySpace one of the largest sites running .NET with the largest MS-SQL installations on the planet.
  • Facebook
    • OS: Linux
    • Platform: PHP
    • Database: MySQL
    Facebook has scaled with a combination of MySQL and PHP, with a good amount of customization of their internal build of PHP, and memcached running to ensure database calls are kept to a minimum.
  • Slide
    • OS: Linux
    • Platform: Python
    • Database: MySQL

    Okay, I'm throwing us in there for fun, but we've scaled with MySQL and mod_python with a hefty dose of secret sauce :)
  • Yahoo!
    • OS: FreeBSD
    • Platform: PHP
    • Database: MySQL
    Yahoo! obviously has to scale to serve a gigantic portion of the internet, and they're running PHP, MySQL with C++ extensions written where they need to be in order to acheive extra speed.
  • Wikipedia
    • OS: Linux
    • Platform: PHP
    • Database: MySQL
    Wikpedia.org has scaled with MySQL, PHP along with some Lucene indexing servers and memcached servers running around to improve read times from their database servers

  • Microsoft
    • OS: Windows Server
    • Platform: .NET
    • Database: MS SQL
    Microsoft tends to eat their own dog food with most of their web sites and portals, running on .NET with MS-SQL, and according to Quantcast have 3 of the top 5 sites on the internet.
  • Apple
    • OS: Linux/Solaris/Mac OS X
    • Platform: WebObjects/PHP
    • Database: MySQL
    Apple runs a mix of WebObjects (Java), PHP, and god knows what else on varying platforms (Solaris, Linux, Mac OS X). I'm not 100% on exactly what's going on inside the web team at 1 Infinite Loop anymore, but they seem to be able to scale already with what they've got.

Counter-points


Employment
One of the points made is that it's easier to find PHP developers, as opposed to Python, or Ruby developers, which probably is true. However, .NET developers are definitely going to be more prominent, but most developers worth your employment, especially at a startup, are going to need to be able to pick up new frameworks and technologies quickly.

Open Source
I will agree that having an open source platform to build on is a good idea, but certainly not a deal breaker for .NET, or whichever platform you choose to use. Starting a community, or a web business in general doesn't matter if you can't get your product out the door as soon as possible. Nobody cares how "open" you are in your development process, if you can't ship.

Web standards
Citing Channel 9 as an example of how (somehow) the .NET platform doesn't adhere to web standards and "open data formats" is one of the most ludicrous arguments I've ever seen. You can generate valid JSON, XML, SOAP, and XHTML from any platform, even mod_perl!

Community
Chris makes the argument that somehow his experience in dealing with the WordPress community extrapolates to developing an actual product, and that if you're going to build a community-oriented site, you better use a platform that your community will approve of! Hint, it doesn't matter. 95% of your users probably won't care what you run, as long as they have the product to use.

Economics
The points about economics are certainly valid, in that it's far easier to find hosts and sysadmins familiar with PHP than with Rails or Django (Python), That doesn't mean that it scales however, once you get past a couple of million users, you need people who know what they're doing, with dedicated hardware to help your web application scale.

Scalibility
Talking about how you feel scaling is absolutely absurd. You will feel pain, that's what happens we you have to scale. Standing back, and looking at the code you've worked insanely hard on, and trying to figure out how to make that faster is painful, regardless of platform. If I've consulted with somebody about how to scale my architecture and they say "well, that doesn't feel right" without citing sources, strategies, or reasons, I'm going to find somebody else, or I'm going to fall on my face when the time comes to scale.

Politics
Just a quote:
However, I think people familiar with modern web design would agree with me that WordPress/PHP, Django or Rails are all superior choices over .NET when it come to the politics of technology development. In terms of openness, being forward-thinking and in terms of community outlook, any of these choices are going to net you a very different kind of response. Being keen to what each choice says about you is key to making a wise decision.
First error, is asking people involved in web design how you want to scale, you should probably ask people involved in systems architecture. Politics don't exist when you need to scale, or ship product, it's that simple. What gets the job done, the fastest, with the greatest net result.

End game


Chris' general ignorance of some of the features of ASP.NET 2.0, and his zealotry when it comes to buzzwords like "community, forward-thinking, people-powered, Web 2.0" and their ilk doesn't surprise me, since he's not a developer. For example, in ASP.NET 2.0 you can have asynchronous pages, just like you can have interlaced GIF images, that progressively load, you can have pages that progressively load, instead of needing the server to fully generate the entire page before it's piped back to the client. Of course, none of this matters since architecture is the biggest hurdle when it comes to scaling, not platform. The more important question to answer before you toss out your existing code base in favor of a more buzzword compliant platform are:
  • How can you more efficiently handle database queries?
  • Can you cut out unnecessary database queries?
  • Can you switch over to a newer version (MySQL 4 and 5 I'm looking at you) of your database to improve performance?
  • Will it be effective to add a caching solution like memcached between your web farm and your database servers?
  • What can be relegated into progessive page loads either via asynchronous pages in ASP.NET 2.0, or through the use of AJAX back to your web servers to retrieve more data instead of forcing a new page load?
  • Is this problem simply caused by not having enough servers?


Citing zero empirical evidence, not counting some useless benchmarks (scaling is far more case-by-case than doing benchmarkable operations), and going with whatever "the cool kids" are using is the quick road to failure. All of the sites I mentioned above have people whose job is to sit around all day and figure out how to squeeze more performance out of their architecture and help the sites grow with their userbase. The trick to optimization is rarely a complete rewrite, or any one trick, it's about finding where the bottlenecks are, and doing whatever possible to minimize those.

As a final note, all the platforms referenced above just spit out pages. That's it. It's how you form the output that determines how "community friendly" or aesthetically pleasing the final product is. It's all fair game between the <html> tags :)
Read more →