From cf34472bbd6b6b98a922707a44e7284ca840a440 Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Sun, 15 May 2011 17:06:31 -0700 Subject: [PATCH] Add exported files from the Drupal dump --- _posts/2007-01-03-another-blog.html | 10 + _posts/2007-01-03-new-blogthing.html | 12 ++ _posts/2007-01-03-scp1-resume.html | 16 ++ ...01-04-dear-hp-fall-on-something-sharp.html | 30 +++ _posts/2007-01-04-going-on-tour.html | 16 ++ _posts/2007-01-05-academic-masochism.html | 10 + _posts/2007-01-06-roadshow-departing.html | 14 ++ _posts/2007-01-06-texas-is-bloody-big.html | 14 ++ _posts/2007-01-09-meeting-a-comic-genius.html | 8 + _posts/2007-01-10-its-just-diddy.html | 21 ++ _posts/2007-01-11-emission-coming-soon.html | 12 ++ _posts/2007-01-15-being-white-rocks.html | 20 ++ ...-01-16-cocoa-radio-im-almost-relevant.html | 12 ++ _posts/2007-01-18-howdy.html | 12 ++ _posts/2007-01-19-educating-engineers.html | 18 ++ ...20-baby-ill-panic-your-kernel-anytime.html | 33 +++ ...how-to-ruin-a-publicly-traded-company.html | 13 ++ _posts/2007-01-21-ichat-hates-me.html | 12 ++ _posts/2007-01-21-mono-incorporated.html | 12 ++ _posts/2007-01-22-get-your-dance-on.html | 8 + ...07-01-22-no-really-what-are-you-doing.html | 14 ++ ...2-webservicescore-on-the-radar-screen.html | 14 ++ ...ervicescore-why-hath-thou-forsaken-me.html | 22 ++ _posts/2007-01-23-ftgl.html | 14 ++ .../2007-01-23-thread-cancellation-in-c.html | 29 +++ ...terbot-no-really-i-need-to-be-stopped.html | 26 +++ ...7-01-24-twitterbot-is-now-open-source.html | 11 + ...7-01-26-publishing-war-on-the-horizon.html | 14 ++ ...p-authentication-with-webservicescore.html | 10 + _posts/2007-01-31-were-all-retarded.html | 12 ++ _posts/2007-02-01-im-on-another-podcast.html | 10 + ...2007-02-01-webservices-with-dumbarton.html | 29 +++ _posts/2007-02-02-absolute-frustration.html | 12 ++ .../2007-02-02-mono-winforms-tao-and-me.html | 32 +++ ...7-02-03-kernel-panics-do-weird-things.html | 10 + _posts/2007-02-05-mono-winforms-update.html | 10 + _posts/2007-02-07-tiring.html | 10 + ...007-02-09-i-aint-shipley-but-pmpmyapp.html | 17 ++ _posts/2007-02-09-internal-server-error.html | 12 ++ _posts/2007-02-14-terminally-ill.html | 12 ++ .../2007-02-16-in-the-news-last-week-drm.html | 10 + ...rbot-basic-http-authentication-errors.html | 19 ++ _posts/2007-02-21-completely-off-topic.html | 10 + _posts/2007-02-23-im-shocked.html | 10 + .../2007-03-02-the-visual-basic-stigma.html | 14 ++ _posts/2007-03-06-barcamp-austin-again.html | 8 + _posts/2007-03-11-teeny-tiny-updates.html | 10 + _posts/2007-03-12-soldiers-of-fortune.html | 10 + ...2007-03-14-a-review-the-metamorphosis.html | 18 ++ ...7-03-18-perforce-on-the-road-p4tunnel.html | 20 ++ _posts/2007-03-22-im-seriously-famous.html | 8 + _posts/2007-03-31-in-the-fifth-dimension.html | 13 ++ .../2007-04-11-cocoaheads-silicon-valley.html | 12 ++ _posts/2007-04-21-city-of-lost-boys.html | 14 ++ ...choosing-a-platform-windows-and-linux.html | 30 +++ _posts/2007-04-29-site-upgrade.html | 8 + _posts/2007-04-30-im-in-ur-phonez.html | 31 +++ ...7-04-30-windows-eye-for-the-cocoa-guy.html | 14 ++ _posts/2007-05-01-twitterbot-recap.html | 10 + ...dows-eye-for-the-cocoa-guy-the-series.html | 16 ++ _posts/2007-05-06-my-guilty-pleasure.html | 14 ++ ...employees-are-our-most-valuable-asset.html | 18 ++ _posts/2007-05-19-sp4mz0r.html | 10 + _posts/2007-05-26-conference-season-osbc.html | 31 +++ _posts/2007-06-03-almost-there.html | 13 ++ ...-06-08-long-live-the-license-flamewar.html | 28 +++ _posts/2007-06-24-insanity.html | 25 +++ ...6-26-thriving-in-a-development-vacuum.html | 20 ++ _posts/2007-07-04-mono-meet-facebook.html | 31 +++ ...07-10-conference-season-iphonedevcamp.html | 23 +++ _posts/2007-07-21-new-email-etc.html | 10 + _posts/2007-07-21-starting-with-openmoko.html | 39 ++++ _posts/2007-07-23-ironru-ooh-shiney.html | 13 ++ ...ow-were-trying-to-take-over-the-world.html | 30 +++ .../2007-07-28-songbird-a-visual-review.html | 70 +++++++ .../2007-07-30-hacking-with-ironpython.html | 38 ++++ ...3-subversion-branching-with-less-pain.html | 51 +++++ _posts/2007-08-05-ordered-filled.html | 12 ++ .../2007-08-06-ironpython-for-macports.html | 19 ++ _posts/2007-08-08-meet-openmoko.html | 40 ++++ ...aling-with-your-smart-platform-choice.html | 48 +++++ .../2007-08-11-openmoko-2007-2-preview.html | 85 ++++++++ _posts/2007-08-12-video-hello-moko.html | 14 ++ ...-14-another-facebook-developer-meetup.html | 25 +++ ...cess-scaling-on-the-facebook-platform.html | 20 ++ _posts/2007-08-19-i-just-saved-150.html | 12 ++ ...8-21-scaling-with-mysql-a-brief-guide.html | 17 ++ _posts/2007-08-22-my-boss-is-a-robot.html | 15 ++ _posts/2007-08-23-back-to-the-basics.html | 22 ++ ...5-facebook-developer-garage-palo-alto.html | 17 ++ ...-26-facebook-developer-garage-wrap-up.html | 21 ++ ...08-29-video-facebook-developer-garage.html | 32 +++ _posts/2007-09-07-time-for-a-road-trip.html | 16 ++ _posts/2007-09-13-for-what-its-worth.html | 11 + ...-14-cmon-down-to-silverlightdevcampsf.html | 16 ++ ...urfer-try-out-silverlight-on-mac-os-x.html | 23 +++ ...-09-19-channel9-silverlight-interview.html | 16 ++ ...icial-facebook-hackathon-in-palo-alto.html | 9 + ...9-23-contemplating-remix-07-in-boston.html | 24 +++ ...007-09-27-popfly-how-to-lose-the-buzz.html | 19 ++ .../2007-09-29-operation-iraqi-freedom.html | 14 ++ ...cial-building-your-first-app-workshop.html | 19 ++ _posts/2007-10-03-remix-07-boston-woohoo.html | 18 ++ ...ference-season-communitynext-platform.html | 11 + ...10-06-introducing-why-are-you-awesome.html | 20 ++ ...-facebook-app-development-101-wrap-up.html | 17 ++ ...10-07-why-are-you-awesome-source-code.html | 14 ++ .../2007-10-08-in-boston-at-remix-phew.html | 17 ++ ...d-of-400-microsoft-developers-awesome.html | 20 ++ ...lal-facebook-developers-meetup-boston.html | 14 ++ ...cazas-remix-07-boston-keynote-address.html | 12 ++ .../2007-10-12-remix-07-boston-wrap-up.html | 23 +++ ...0-13-google-search-inside-of-facebook.html | 22 ++ .../2007-10-15-speaking-at-widget-summit.html | 17 ++ _posts/2007-10-16-widget-summit-slides.html | 15 ++ ...-any-unemployed-net-developers-in-nyc.html | 19 ++ .../2007-10-24-my-new-favorite-chuckle.html | 16 ++ ...007-10-25-the-superpoke-facebook-song.html | 15 ++ _posts/2007-10-28-on-investing.html | 19 ++ .../2007-11-03-silicon-valley-gangstas.html | 14 ++ ...7-11-04-your-order-has-been-completed.html | 14 ++ ...a-note-to-my-graphing-social-students.html | 12 ++ .../2007-11-06-building-mono-on-leopard.html | 12 ++ _posts/2007-11-08-bug-number-seven.html | 25 +++ ...7-11-15-why-are-you-awesome-meet-mono.html | 19 ++ ...17-facebook-flyers-make-my-eyes-bleed.html | 24 +++ ...07-11-22-turning-famousosity-up-to-11.html | 17 ++ ...007-11-24-ichatagent-leaks-in-leopard.html | 18 ++ _posts/2007-12-01-missed-spain.html | 12 ++ ...lenco-de-mono-lighttpd-and-postgresql.html | 15 ++ ...07-12-16-fun-way-to-crash-leopard-159.html | 16 ++ ...o-and-fastcgi-an-awkward-relationship.html | 72 +++++++ _posts/2007-12-17-my-new-startup.html | 12 ++ ...2-18-comparing-ironpython-and-cpython.html | 115 +++++++++++ ...007-12-18-what-a-heaping-pile-of-fail.html | 17 ++ _posts/2007-12-31-sxswi-and-me.html | 18 ++ ...2008-01-05-perforce-backups-revisited.html | 20 ++ _posts/2008-01-06-just-curious.html | 8 + ...08-01-23-five-and-seven-zeroes-is-big.html | 15 ++ ...our-voice-interface-is-fucking-stupid.html | 48 +++++ _posts/2008-01-26-fbrubbar-chikken.html | 18 ++ _posts/2008-01-28-sigsegv-in-my-brane.html | 15 ++ ...2008-02-01-are-free-gifts-still-gifts.html | 18 ++ _posts/2008-02-02-on-funding-my-startup.html | 13 ++ ...ips-for-beginning-facebook-developers.html | 23 +++ _posts/2008-02-03-trying-out-adsense.html | 10 + ...ips-for-beginning-facebook-developers.html | 19 ++ ...-speaking-at-graphing-social-patterns.html | 16 ++ .../2008-02-17-facebooks-bleeding-edge.html | 26 +++ _posts/2008-02-17-upgraded-to-drupal-6-0.html | 12 ++ _posts/2008-02-23-i-hate-mac-os-x.html | 20 ++ .../2008-02-24-graphing-social-appnite.html | 17 ++ _posts/2008-03-17-gsp-west-and-sxsw-2008.html | 24 +++ ...cript-wonks-missing-after-property-id.html | 78 +++++++ _posts/2008-03-24-srsly-ur-doin-it-wrong.html | 21 ++ .../2008-03-26-dashboard-for-linux-users.html | 22 ++ .../2008-04-02-data-binding-with-jquery.html | 37 ++++ _posts/2008-04-07-a-few-changes.html | 12 ++ _posts/2008-04-08-hi5-goes-100.html | 15 ++ _posts/2008-04-13-an-informal-poll.html | 10 + .../2008-05-03-parsing-html-with-python.html | 75 +++++++ .../2008-05-04-nant-and-asp-net-on-mono.html | 142 +++++++++++++ ...erimenting-with-git-at-slide-part-1-3.html | 49 +++++ _posts/2008-07-30-lets-swap-ipods.html | 15 ++ ...2008-08-20-one-line-automated-testing.html | 30 +++ ...-06-don-quixotes-new-side-kick-hudson.html | 22 ++ .../2008-09-11-resurgange-of-the-shell.html | 121 +++++++++++ .../2008-09-15-lazily-loading-attributes.html | 57 ++++++ .../2008-09-16-chase-auto-finance-fail.html | 19 ++ ...8-hudson-notifications-with-libnotify.html | 69 +++++++ ...acebook-be-riddled-with-swashbucklers.html | 12 ++ ...29-team-development-with-git-part-2-3.html | 31 +++ ...version-mostly-automagically-part-3-3.html | 150 ++++++++++++++ .../2008-10-04-hudson-build-bookmarklet.html | 22 ++ ...9-i-hate-it-when-the-onion-is-factual.html | 13 ++ .../2008-11-05-reliable-locks-in-hudson.html | 18 ++ ...08-11-22-delightfully-wrong-about-git.html | 20 ++ ...-git-integration-with-hudson-and-trac.html | 190 ++++++++++++++++++ ...t-protip-stash-the-goods-yo-git-stash.html | 71 +++++++ ...008-11-24-why-we-chose-git-a-rebuttal.html | 27 +++ ...ip-learning-from-your-history-git-log.html | 35 ++++ ...hat-revision-you-fucked-us-git-revert.html | 88 ++++++++ ...ing-git-because-it-makes-me-feel-cool.html | 29 +++ ...remely-brief-review-of-the-nokia-n810.html | 30 +++ .../2009-01-05-find-me-on-github-rtyler.html | 13 ++ ...09-01-12-but-who-will-write-the-tests.html | 30 +++ ...imuse-an-imap-capable-fuse-filesystem.html | 24 +++ ...ure-is-worth-a-thousand-words-git-tag.html | 29 +++ _posts/2009-01-26-amazon-sucks-too.html | 18 ++ _posts/2009-01-26-old-navy-sucks.html | 15 ++ _posts/2009-03-05-head-in-the-clouds.html | 29 +++ ...nding-the-anatomy-of-a-bug-git-bisect.html | 68 +++++++ ...3-09-v8-and-fastcgi-exploring-an-idea.html | 81 ++++++++ ...-13-do-not-fear-continuous-deployment.html | 32 +++ ...e-into-a-dead-open-source-project.markdown | 40 ++++ _posts/2009-04-07-slide-open-source.markdown | 16 ++ _posts/2009-05-16-template-theory.markdown | 81 ++++++++ ...g-glibs-gtester-results-in-hudson.markdown | 22 ++ ...7-21-jython-jgit-and-co-in-hudson.markdown | 62 ++++++ _posts/2009-07-25-awesomely-bad.markdown | 54 +++++ ...stability-or-i-hate-writing-tests.markdown | 79 ++++++++ _posts/2009-08-10-im-a-cat-person-now.html | 9 + ...nvestment-strategy-for-developers.markdown | 89 ++++++++ ...ying-around-with-asp-net-mvc-and-nant.html | 15 ++ ...-less-very-continuous-integration.markdown | 89 ++++++++ ...on-and-java-just-monkeying-around.markdown | 37 ++++ ...2009-10-13-ironwatin-mind-the-gap.markdown | 46 +++++ ...-10-19-my-journey-at-slide-part-1.markdown | 105 ++++++++++ ...-10-20-my-journey-at-slide-part-2.markdown | 131 ++++++++++++ ...-10-22-my-journey-at-slide-part-3.markdown | 147 ++++++++++++++ _posts/2009-10-23-daniel-felt-left-out.html | 11 + _posts/2009-10-23-end-of-a-journey.markdown | 53 +++++ .../2009-11-03-do-you-love-git-too.markdown | 10 + ...astest-python-json-module-in-town.markdown | 35 ++++ ...r-side-image-transforms-in-python.markdown | 18 ++ ...with-gerrit-a-mostly-visual-guide.markdown | 159 +++++++++++++++ ...son-eat-drink-up-in-san-francisco.markdown | 12 ++ ...14-get-out-there-and-buy-me-stuff.markdown | 15 ++ ...9-12-17-pyrage-generic-exceptions.markdown | 42 ++++ .../2009-12-19-one-year-of-cheetah.markdown | 61 ++++++ ...pyrage-from-toolbox-import-hammer.markdown | 71 +++++++ ...ing-cheetah-templates-with-django.markdown | 45 +++++ ...-27-5-tips-for-traveling-with-tux.markdown | 80 ++++++++ ...now-a-video-of-my-cat-being-obnoxious.html | 11 + ...12-27-on-being-a-good-house-guest.markdown | 72 +++++++ _posts/2009-12-28-angry-tweeter.markdown | 52 +++++ ...ested-commits-with-hudson-and-git.markdown | 60 ++++++ .../2010-01-04-new-years-python-meme.markdown | 29 +++ ...e-one-where-i-gush-about-contegix.markdown | 22 ++ _posts/2010-01-15-book-of-elies.markdown | 15 ++ ...ual-hosting-with-haproxy-and-wsgi.markdown | 87 ++++++++ ...read-safety-assumptions-in-django.markdown | 17 ++ ...2010-01-20-better-faster-stronger.markdown | 10 + ...-rumors-about-apture-and-facebook.markdown | 24 +++ ...-users-or-spamming-redditdowntime.markdown | 65 ++++++ _posts/2010-01-30-mourning-sun.markdown | 24 +++ ...0-02-09-i-hope-you-bump-your-head.markdown | 25 +++ ...-02-10-writing-for-multiple-blogs.markdown | 22 ++ ...g-a-game-for-et-day-1-with-pygame.markdown | 68 +++++++ ...10-02-16-presidents-day-in-photos.markdown | 19 ++ ...010-02-16-yes-that-is-hair-on-my-chin.html | 10 + ...1-supporting-python-3-is-a-ghetto.markdown | 45 +++++ ...2010-02-23-arent-we-just-adorable.markdown | 12 ++ ...-want-a-viral-license-use-the-gpl.markdown | 55 +++++ ...-isnt-just-something-on-the-radio.markdown | 51 +++++ ...1-programming-as-an-objective-art.markdown | 65 ++++++ .../2010-03-05-hypocrites-on-bikes.markdown | 27 +++ ...times-software-as-a-service-sucks.markdown | 24 +++ ...010-04-02-a-rebase-based-workflow.markdown | 52 +++++ ...oes-not-make-yours-a-good-product.markdown | 25 +++ _posts/2010-04-24-regarding-blippy.markdown | 13 ++ ...04-28-san-francisco-transit-sucks.markdown | 21 ++ _posts/2010-04-30-be-a-libor.markdown | 37 ++++ ...7-how-to-using-avro-with-eventlet.markdown | 168 ++++++++++++++++ ...sted-really-as-awful-as-it-sounds.markdown | 21 ++ ...e-slow-death-of-the-indie-mac-dev.markdown | 27 +++ ...10-05-17-i-get-lippy-when-i-drink.markdown | 25 +++ ...2010-05-18-being-a-libor-addendum.markdown | 24 +++ .../2010-06-06-another-video-of-the-cat.html | 28 +++ _posts/2010-06-14-keyboard-synergy.markdown | 21 ++ _posts/2010-06-22-silly-problems.markdown | 25 +++ ...ventures-i-wonder-whats-down-here.markdown | 32 +++ _posts/2010-07-04-pride.markdown | 47 +++++ ...10-07-07-i-love-sonic-net-already.markdown | 29 +++ _posts/2010-07-11-lebron-james.markdown | 42 ++++ _posts/2010-07-14-paw-paw.markdown | 18 ++ ...es-blocking-detection-in-eventlet.markdown | 60 ++++++ _posts/2010-08-30-whats-in-a-name.markdown | 30 +++ _posts/2010-09-03-being-a-croy.markdown | 19 ++ _posts/2010-11-04-so-im-married.markdown | 22 ++ ...nting-with-reddits-self-serve-ads.markdown | 37 ++++ ...1-11-gnu-parallel-changed-my-life.markdown | 34 ++++ ...-ada-surely-you-jest-mr-pythonman.markdown | 72 +++++++ _posts/2011-01-01-twenty-eleven.markdown | 19 ++ _posts/2011-01-24-catch-me-at-scale.markdown | 23 +++ ...01-24-s-a-d-seasonal-ada-disorder.markdown | 55 +++++ .../2011-04-05-sent-from-my-iphone.markdown | 61 ++++++ ...11-04-25-new-light-on-dark-energy.markdown | 43 ++++ ...2011-05-15-learnings-week-19-2011.markdown | 14 ++ node/10/index.md | 4 + node/101/index.md | 4 + node/102/index.md | 4 + node/103/index.md | 4 + node/105/index.md | 4 + node/106/index.md | 4 + node/107/index.md | 4 + node/108/index.md | 4 + node/109/index.md | 4 + node/11/index.md | 4 + node/110/index.md | 4 + node/111/index.md | 4 + node/112/index.md | 4 + node/113/index.md | 4 + node/114/index.md | 4 + node/115/index.md | 4 + node/116/index.md | 4 + node/117/index.md | 4 + node/118/index.md | 4 + node/119/index.md | 4 + node/12/index.md | 4 + node/120/index.md | 4 + node/121/index.md | 4 + node/122/index.md | 4 + node/123/index.md | 4 + node/124/index.md | 4 + node/125/index.md | 4 + node/127/index.md | 4 + node/128/index.md | 4 + node/129/index.md | 4 + node/13/index.md | 4 + node/130/index.md | 4 + node/131/index.md | 4 + node/132/index.md | 4 + node/133/index.md | 4 + node/134/index.md | 4 + node/135/index.md | 4 + node/136/index.md | 4 + node/137/index.md | 4 + node/138/index.md | 4 + node/139/index.md | 4 + node/14/index.md | 4 + node/140/index.md | 4 + node/141/index.md | 4 + node/142/index.md | 4 + node/143/index.md | 4 + node/144/index.md | 4 + node/145/index.md | 4 + node/146/index.md | 4 + node/148/index.md | 4 + node/149/index.md | 4 + node/15/index.md | 4 + node/150/index.md | 4 + node/153/index.md | 4 + node/154/index.md | 4 + node/156/index.md | 4 + node/157/index.md | 4 + node/158/index.md | 4 + node/159/index.md | 4 + node/16/index.md | 4 + node/160/index.md | 4 + node/161/index.md | 4 + node/162/index.md | 4 + node/163/index.md | 4 + node/164/index.md | 4 + node/166/index.md | 4 + node/167/index.md | 4 + node/168/index.md | 4 + node/169/index.md | 4 + node/17/index.md | 4 + node/170/index.md | 4 + node/173/index.md | 4 + node/174/index.md | 4 + node/175/index.md | 4 + node/176/index.md | 4 + node/177/index.md | 4 + node/178/index.md | 4 + node/18/index.md | 4 + node/180/index.md | 4 + node/181/index.md | 4 + node/182/index.md | 4 + node/183/index.md | 4 + node/184/index.md | 4 + node/185/index.md | 4 + node/186/index.md | 4 + node/187/index.md | 4 + node/188/index.md | 4 + node/189/index.md | 4 + node/19/index.md | 4 + node/190/index.md | 4 + node/191/index.md | 4 + node/192/index.md | 4 + node/193/index.md | 4 + node/194/index.md | 4 + node/195/index.md | 4 + node/196/index.md | 4 + node/197/index.md | 4 + node/198/index.md | 4 + node/199/index.md | 4 + node/20/index.md | 4 + node/200/index.md | 4 + node/201/index.md | 4 + node/202/index.md | 4 + node/203/index.md | 4 + node/204/index.md | 4 + node/205/index.md | 4 + node/206/index.md | 4 + node/207/index.md | 4 + node/208/index.md | 4 + node/209/index.md | 4 + node/21/index.md | 4 + node/211/index.md | 4 + node/212/index.md | 4 + node/213/index.md | 4 + node/214/index.md | 4 + node/215/index.md | 4 + node/216/index.md | 4 + node/217/index.md | 4 + node/218/index.md | 4 + node/219/index.md | 4 + node/22/index.md | 4 + node/220/index.md | 4 + node/221/index.md | 4 + node/222/index.md | 4 + node/223/index.md | 4 + node/224/index.md | 4 + node/226/index.md | 4 + node/23/index.md | 4 + node/230/index.md | 4 + node/231/index.md | 4 + node/232/index.md | 4 + node/233/index.md | 4 + node/234/index.md | 4 + node/235/index.md | 4 + node/236/index.md | 4 + node/237/index.md | 4 + node/239/index.md | 4 + node/24/index.md | 4 + node/240/index.md | 4 + node/241/index.md | 4 + node/242/index.md | 4 + node/243/index.md | 4 + node/244/index.md | 4 + node/245/index.md | 4 + node/246/index.md | 4 + node/247/index.md | 4 + node/248/index.md | 4 + node/249/index.md | 4 + node/25/index.md | 4 + node/250/index.md | 4 + node/252/index.md | 4 + node/254/index.md | 4 + node/255/index.md | 4 + node/256/index.md | 4 + node/257/index.md | 4 + node/258/index.md | 4 + node/259/index.md | 4 + node/26/index.md | 4 + node/260/index.md | 4 + node/261/index.md | 4 + node/262/index.md | 4 + node/263/index.md | 4 + node/264/index.md | 4 + node/265/index.md | 4 + node/266/index.md | 4 + node/267/index.md | 4 + node/268/index.md | 4 + node/269/index.md | 4 + node/27/index.md | 4 + node/270/index.md | 4 + node/271/index.md | 4 + node/272/index.md | 4 + node/273/index.md | 4 + node/274/index.md | 4 + node/275/index.md | 4 + node/276/index.md | 4 + node/277/index.md | 4 + node/279/index.md | 4 + node/28/index.md | 4 + node/280/index.md | 4 + node/281/index.md | 4 + node/282/index.md | 4 + node/283/index.md | 4 + node/284/index.md | 4 + node/285/index.md | 4 + node/286/index.md | 4 + node/287/index.md | 4 + node/288/index.md | 4 + node/289/index.md | 4 + node/29/index.md | 4 + node/290/index.md | 4 + node/291/index.md | 4 + node/295/index.md | 4 + node/296/index.md | 4 + node/297/index.md | 4 + node/298/index.md | 4 + node/299/index.md | 4 + node/30/index.md | 4 + node/300/index.md | 4 + node/301/index.md | 4 + node/302/index.md | 4 + node/303/index.md | 4 + node/304/index.md | 4 + node/305/index.md | 4 + node/306/index.md | 4 + node/307/index.md | 4 + node/308/index.md | 4 + node/309/index.md | 4 + node/31/index.md | 4 + node/310/index.md | 4 + node/32/index.md | 4 + node/33/index.md | 4 + node/34/index.md | 4 + node/35/index.md | 4 + node/36/index.md | 4 + node/37/index.md | 4 + node/38/index.md | 4 + node/39/index.md | 4 + node/4/index.md | 4 + node/40/index.md | 4 + node/41/index.md | 4 + node/42/index.md | 4 + node/43/index.md | 4 + node/44/index.md | 4 + node/45/index.md | 4 + node/46/index.md | 4 + node/47/index.md | 4 + node/48/index.md | 4 + node/49/index.md | 4 + node/50/index.md | 4 + node/51/index.md | 4 + node/52/index.md | 4 + node/53/index.md | 4 + node/54/index.md | 4 + node/55/index.md | 4 + node/56/index.md | 4 + node/57/index.md | 4 + node/58/index.md | 4 + node/59/index.md | 4 + node/6/index.md | 4 + node/60/index.md | 4 + node/61/index.md | 4 + node/63/index.md | 4 + node/64/index.md | 4 + node/65/index.md | 4 + node/66/index.md | 4 + node/67/index.md | 4 + node/68/index.md | 4 + node/69/index.md | 4 + node/7/index.md | 4 + node/70/index.md | 4 + node/71/index.md | 4 + node/72/index.md | 4 + node/73/index.md | 4 + node/74/index.md | 4 + node/75/index.md | 4 + node/76/index.md | 4 + node/77/index.md | 4 + node/78/index.md | 4 + node/79/index.md | 4 + node/8/index.md | 4 + node/80/index.md | 4 + node/81/index.md | 4 + node/82/index.md | 4 + node/83/index.md | 4 + node/84/index.md | 4 + node/85/index.md | 4 + node/87/index.md | 4 + node/88/index.md | 4 + node/89/index.md | 4 + node/90/index.md | 4 + node/91/index.md | 4 + node/92/index.md | 4 + node/94/index.md | 4 + node/95/index.md | 4 + node/96/index.md | 4 + node/97/index.md | 4 + node/98/index.md | 4 + node/99/index.md | 4 + .../09/contemplating_remix_07_boston/index.md | 4 + .../2008/02/facebooks_bleeding_edge/index.md | 4 + .../2008/02/graphing_social_appnite/index.md | 4 + posts/2008/02/i_hate_mac_os_x/index.md | 4 + posts/2008/02/upgraded_drupal_60/index.md | 4 + posts/2008/03/dashboard_linux_users/index.md | 4 + posts/2008/03/gsp_west_and_sxsw_2008/index.md | 4 + .../index.md | 4 + posts/2008/03/srsly_ur_doin_it_wrong/index.md | 4 + posts/2008/04/a_few_changes/index.md | 4 + posts/2008/04/an_informal_poll/index.md | 4 + .../2008/04/data_binding_with_jquery/index.md | 4 + posts/2008/04/hi5_goes_100/index.md | 4 + posts/2008/05/nant_and_aspnet_mono/index.md | 4 + posts/2008/05/parsing_html_python/index.md | 4 + .../index.md | 4 + posts/2008/07/lets_swap_ipods/index.md | 4 + .../08/oneline_automated_testing/index.md | 4 + posts/2008/09/chase_autofinance_fail/index.md | 4 + .../don_quixotes_new_sidekick_hudson/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../09/lazily_loading_attributes/index.md | 4 + posts/2008/09/resurgange_shell/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../2008/10/hudson_build_bookmarklet/index.md | 4 + .../i_hate_it_when_the_onion_factual/index.md | 4 + .../11/delightfully_wrong_about_git/index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/2008/11/reliable_locks_hudson/index.md | 4 + .../11/why_we_chose_git_a_rebuttal/index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/2009/01/amazon_sucks_too/index.md | 4 + .../01/but_who_will_write_the_tests/index.md | 4 + .../index.md | 4 + posts/2009/01/find_me_github_rtyler/index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/2009/01/old_navy_sucks/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/2009/03/head_clouds/index.md | 4 + .../03/v8_and_fastcgi_exploring_idea/index.md | 4 + .../index.md | 4 + posts/2009/04/slide_open_source/index.md | 4 + posts/2009/05/template_theory/index.md | 4 + .../index.md | 4 + posts/2009/07/awesomely_bad/index.md | 4 + .../07/jython_jgit_and_co_hudson/index.md | 4 + .../index.md | 4 + posts/2009/08/im_cat_person_now/index.md | 4 + .../investment_strategy_developers/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/2009/10/daniel_felt_left_out/index.md | 4 + posts/2009/10/end_journey/index.md | 4 + posts/2009/10/ironwatin_mind_gap/index.md | 4 + .../2009/10/my_journey_slide_part_1/index.md | 4 + .../2009/10/my_journey_slide_part_2/index.md | 4 + .../2009/10/my_journey_slide_part_3/index.md | 4 + posts/2009/11/do_you_love_git_too/index.md | 4 + posts/2009/12/5_tips_traveling_tux/index.md | 4 + .../index.md | 4 + posts/2009/12/angry_tweeter/index.md | 4 + posts/2009/12/being_good_house_guest/index.md | 4 + .../index.md | 4 + .../get_out_there_and_buy_me_stuff/index.md | 4 + .../index.md | 4 + posts/2009/12/one_year_cheetah/index.md | 4 + .../pretested_commits_hudson_and_git/index.md | 4 + .../12/pyrage_generic_exceptions/index.md | 4 + .../12/pyrage_toolbox_import_hammer/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../using_cheetah_templates_django/index.md | 4 + posts/2010/01/better_faster_stronger/index.md | 4 + posts/2010/01/book_elies/index.md | 4 + posts/2010/01/mourning_sun/index.md | 4 + posts/2010/01/new_years_python_meme/index.md | 4 + .../one_where_i_gush_about_contegix/index.md | 4 + .../threadsafety_assumptions_django/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../virtual_hosting_haproxy_and_wsgi/index.md | 4 + posts/2010/02/arent_we_just_adorable/index.md | 4 + .../02/building_game_et_day_1_pygame/index.md | 4 + .../02/i_hope_you_bump_your_head/index.md | 4 + .../index.md | 4 + posts/2010/02/presidents_day_photos/index.md | 4 + .../index.md | 4 + .../02/supporting_python_3_ghetto/index.md | 4 + posts/2010/02/writing_multiple_blogs/index.md | 4 + posts/2010/02/yes_hair_my_chin/index.md | 4 + posts/2010/03/hypocrites_bikes/index.md | 4 + .../03/programming_objective_art/index.md | 4 + .../sometimes_software_service_sucks/index.md | 4 + posts/2010/04/be_libor/index.md | 4 + .../index.md | 4 + posts/2010/04/rebasebased_workflow/index.md | 4 + posts/2010/04/regarding_blippy/index.md | 4 + .../04/san_francisco_transit_sucks/index.md | 4 + posts/2010/05/being_libor_addendum/index.md | 4 + .../05/howto_using_avro_eventlet/index.md | 4 + .../2010/05/i_get_lippy_when_i_drink/index.md | 4 + .../index.md | 4 + .../2010/05/slow_death_indie_mac_dev/index.md | 4 + posts/2010/06/another_video_cat/index.md | 4 + .../index.md | 4 + posts/2010/06/keyboard_synergy/index.md | 4 + posts/2010/06/silly_problems/index.md | 4 + .../2010/07/i_love_sonicnet_already/index.md | 4 + posts/2010/07/lebron_james/index.md | 4 + posts/2010/07/paw_paw/index.md | 4 + posts/2010/07/pride/index.md | 4 + .../index.md | 4 + posts/2010/08/whats_name/index.md | 4 + posts/2010/09/being_croy/index.md | 4 + .../index.md | 4 + .../11/gnuparallel_changed_my_life/index.md | 4 + posts/2010/11/so_im_married/index.md | 4 + .../ada_surely_you_jest_mr_pythonman/index.md | 4 + posts/2011/01/catch_me_scale/index.md | 4 + .../01/sad_seasonal_ada_disorder/index.md | 4 + posts/2011/01/twenty_eleven/index.md | 4 + posts/2011/04/new_light_dark_energy/index.md | 4 + posts/2011/04/sent_my_iphone/index.md | 4 + posts/2011/05/learnings_week_19_2011/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../bug_number_seven/index.md | 4 + .../building_mono_on_leopard/index.md | 4 + .../channel9_silverlight_interview/index.md | 4 + .../index.md | 4 + .../comparing_ironpython_and_cpython/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../fb_rubbar_chikken/index.md | 4 + .../five_and_seven_zeroes_is_big/index.md | 4 + .../for_what_its_worth/index.md | 4 + .../fun_way_to_crash_leopard_159/index.md | 4 + .../google_search_inside_of_facebook/index.md | 4 + .../index.md | 4 + .../hacking_with_ironpython/index.md | 4 + .../i_just_saved_150/index.md | 4 + .../ichatagent_leaks_in_leopard/index.md | 4 + .../in_boston_at_remix_phew/index.md | 4 + .../introducing_why_are_you_awesome/index.md | 4 + .../ironpython_for_macports/index.md | 4 + .../ironru_ooh_shiney/index.md | 4 + posts/r_tyler_ballance/just_curious/index.md | 4 + posts/r_tyler_ballance/meet_openmoko/index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/r_tyler_ballance/missed_spain/index.md | 4 + .../index.md | 4 + .../my_boss_is_a_robot/index.md | 4 + .../my_new_favorite_chuckle/index.md | 4 + .../r_tyler_ballance/my_new_startup/index.md | 4 + .../on_funding_my_startup/index.md | 4 + posts/r_tyler_ballance/on_investing/index.md | 4 + .../openmoko_2007_2_preview/index.md | 4 + .../operation_iraqi_freedom/index.md | 4 + .../r_tyler_ballance/ordered_filled/index.md | 4 + .../perforce_backups_revisited/index.md | 4 + .../popfly_how_to_lose_the_buzz/index.md | 4 + .../remix_07_boston_woohoo/index.md | 4 + .../remix_07_boston_wrap_up/index.md | 4 + .../scaling_with_mysql_a_brief_guide/index.md | 4 + .../index.md | 4 + .../sigsegv_in_my_brane/index.md | 4 + .../silicon_valley_gangstas/index.md | 4 + .../index.md | 4 + .../songbird_a_visual_review/index.md | 4 + .../index.md | 4 + .../speaking_at_widget_summit/index.md | 4 + .../index.md | 4 + posts/r_tyler_ballance/sxswi_and_me/index.md | 4 + .../the_superpoke_facebook_song/index.md | 4 + .../time_for_a_road_trip/index.md | 4 + .../index.md | 4 + .../trying_out_adsense/index.md | 4 + .../turning_famousosity_up_to_11/index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../index.md | 4 + .../video_facebook_developer_garage/index.md | 4 + .../video_hello_moko/index.md | 4 + .../what_a_heaping_pile_of_fail/index.md | 4 + .../why_are_you_awesome_meet_mono/index.md | 4 + .../why_are_you_awesome_source_code/index.md | 4 + .../widget_summit_slides/index.md | 4 + .../your_order_has_been_completed/index.md | 4 + .../index.md | 4 + posts/roy/back_to_the_basics/index.md | 4 + posts/roy/howdy/index.md | 4 + posts/roy/ichat_hates_me/index.md | 4 + posts/stephen/academic_masochism/index.md | 4 + posts/stephen/another_blog/index.md | 4 + .../index.md | 4 + posts/stephen/educating_engineers/index.md | 4 + posts/stephen/ftgl/index.md | 4 + posts/stephen/im_shocked/index.md | 4 + .../in_the_news_last_week_drm/index.md | 4 + .../long_live_the_license_flamewar/index.md | 4 + posts/stephen/meeting_a_comic_genius/index.md | 4 + .../stephen/mono_winforms_tao_and_me/index.md | 4 + posts/stephen/mono_winforms_update/index.md | 4 + .../publishing_war_on_the_horizon/index.md | 4 + .../stephen/the_visual_basic_stigma/index.md | 4 + .../thriving_in_a_development_vacuum/index.md | 4 + .../tyler/a_review_the_metamorphosis/index.md | 4 + posts/tyler/absolute_frustration/index.md | 4 + posts/tyler/almost_there/index.md | 4 + .../index.md | 4 + posts/tyler/barcamp_austin_again/index.md | 4 + .../index.md | 4 + posts/tyler/being_white_rocks/index.md | 4 + posts/tyler/city_of_lost_boys/index.md | 4 + .../cocoa_radio_im_almost_relevant/index.md | 4 + .../tyler/cocoaheads_silicon_valley/index.md | 4 + posts/tyler/completely_off_topic/index.md | 4 + .../conference_season_iphonedevcamp/index.md | 4 + posts/tyler/conference_season_osbc/index.md | 4 + .../dear_hp_fall_on_something_sharp/index.md | 4 + posts/tyler/emission_coming_soon/index.md | 4 + posts/tyler/get_your_dance_on/index.md | 4 + posts/tyler/going_on_tour/index.md | 4 + .../index.md | 4 + .../i_aint_shipley_but_pmpmyapp/index.md | 4 + posts/tyler/im_in_ur_phonez/index.md | 4 + posts/tyler/im_on_another_podcast/index.md | 4 + posts/tyler/im_seriously_famous/index.md | 4 + posts/tyler/in_the_fifth_dimension/index.md | 4 + posts/tyler/insanity/index.md | 4 + posts/tyler/internal_server_error/index.md | 4 + posts/tyler/its_just_diddy/index.md | 4 + .../kernel_panics_do_weird_things/index.md | 4 + posts/tyler/mono_incorporated/index.md | 4 + posts/tyler/mono_meet_facebook/index.md | 4 + posts/tyler/my_guilty_pleasure/index.md | 4 + posts/tyler/new_blogthing/index.md | 4 + posts/tyler/new_email_etc/index.md | 4 + .../no_really_what_are_you_doing/index.md | 4 + .../index.md | 4 + .../perforce_on_the_road_p4tunnel/index.md | 4 + posts/tyler/roadshow_departing/index.md | 4 + posts/tyler/scp_1_resume/index.md | 4 + posts/tyler/site_upgrade/index.md | 4 + posts/tyler/soldiers_of_fortune/index.md | 4 + posts/tyler/sp4mz0r/index.md | 4 + posts/tyler/starting_with_openmoko/index.md | 4 + posts/tyler/teeny_tiny_updates/index.md | 4 + posts/tyler/terminally_ill/index.md | 4 + posts/tyler/texas_is_bloody_big/index.md | 4 + posts/tyler/thread_cancellation_in_c/index.md | 4 + posts/tyler/tiring/index.md | 4 + .../index.md | 4 + .../twitterbot_is_now_open_source/index.md | 4 + .../index.md | 4 + posts/tyler/twitterbot_recap/index.md | 4 + .../tyler/webservices_with_dumbarton/index.md | 4 + .../index.md | 4 + .../index.md | 4 + posts/tyler/were_all_retarded/index.md | 4 + .../windows_eye_for_the_cocoa_guy/index.md | 4 + .../index.md | 4 + .../are_free_gifts_still_gifts/index.md | 4 + .../index.md | 4 + 837 files changed, 10771 insertions(+) create mode 100644 _posts/2007-01-03-another-blog.html create mode 100644 _posts/2007-01-03-new-blogthing.html create mode 100644 _posts/2007-01-03-scp1-resume.html create mode 100644 _posts/2007-01-04-dear-hp-fall-on-something-sharp.html create mode 100644 _posts/2007-01-04-going-on-tour.html create mode 100644 _posts/2007-01-05-academic-masochism.html create mode 100644 _posts/2007-01-06-roadshow-departing.html create mode 100644 _posts/2007-01-06-texas-is-bloody-big.html create mode 100644 _posts/2007-01-09-meeting-a-comic-genius.html create mode 100644 _posts/2007-01-10-its-just-diddy.html create mode 100644 _posts/2007-01-11-emission-coming-soon.html create mode 100644 _posts/2007-01-15-being-white-rocks.html create mode 100644 _posts/2007-01-16-cocoa-radio-im-almost-relevant.html create mode 100644 _posts/2007-01-18-howdy.html create mode 100644 _posts/2007-01-19-educating-engineers.html create mode 100644 _posts/2007-01-20-baby-ill-panic-your-kernel-anytime.html create mode 100644 _posts/2007-01-20-how-to-ruin-a-publicly-traded-company.html create mode 100644 _posts/2007-01-21-ichat-hates-me.html create mode 100644 _posts/2007-01-21-mono-incorporated.html create mode 100644 _posts/2007-01-22-get-your-dance-on.html create mode 100644 _posts/2007-01-22-no-really-what-are-you-doing.html create mode 100644 _posts/2007-01-22-webservicescore-on-the-radar-screen.html create mode 100644 _posts/2007-01-22-webservicescore-why-hath-thou-forsaken-me.html create mode 100644 _posts/2007-01-23-ftgl.html create mode 100644 _posts/2007-01-23-thread-cancellation-in-c.html create mode 100644 _posts/2007-01-23-twitterbot-no-really-i-need-to-be-stopped.html create mode 100644 _posts/2007-01-24-twitterbot-is-now-open-source.html create mode 100644 _posts/2007-01-26-publishing-war-on-the-horizon.html create mode 100644 _posts/2007-01-31-basic-http-authentication-with-webservicescore.html create mode 100644 _posts/2007-01-31-were-all-retarded.html create mode 100644 _posts/2007-02-01-im-on-another-podcast.html create mode 100644 _posts/2007-02-01-webservices-with-dumbarton.html create mode 100644 _posts/2007-02-02-absolute-frustration.html create mode 100644 _posts/2007-02-02-mono-winforms-tao-and-me.html create mode 100644 _posts/2007-02-03-kernel-panics-do-weird-things.html create mode 100644 _posts/2007-02-05-mono-winforms-update.html create mode 100644 _posts/2007-02-07-tiring.html create mode 100644 _posts/2007-02-09-i-aint-shipley-but-pmpmyapp.html create mode 100644 _posts/2007-02-09-internal-server-error.html create mode 100644 _posts/2007-02-14-terminally-ill.html create mode 100644 _posts/2007-02-16-in-the-news-last-week-drm.html create mode 100644 _posts/2007-02-19-twitterbot-basic-http-authentication-errors.html create mode 100644 _posts/2007-02-21-completely-off-topic.html create mode 100644 _posts/2007-02-23-im-shocked.html create mode 100644 _posts/2007-03-02-the-visual-basic-stigma.html create mode 100644 _posts/2007-03-06-barcamp-austin-again.html create mode 100644 _posts/2007-03-11-teeny-tiny-updates.html create mode 100644 _posts/2007-03-12-soldiers-of-fortune.html create mode 100644 _posts/2007-03-14-a-review-the-metamorphosis.html create mode 100644 _posts/2007-03-18-perforce-on-the-road-p4tunnel.html create mode 100644 _posts/2007-03-22-im-seriously-famous.html create mode 100644 _posts/2007-03-31-in-the-fifth-dimension.html create mode 100644 _posts/2007-04-11-cocoaheads-silicon-valley.html create mode 100644 _posts/2007-04-21-city-of-lost-boys.html create mode 100644 _posts/2007-04-25-choosing-a-platform-windows-and-linux.html create mode 100644 _posts/2007-04-29-site-upgrade.html create mode 100644 _posts/2007-04-30-im-in-ur-phonez.html create mode 100644 _posts/2007-04-30-windows-eye-for-the-cocoa-guy.html create mode 100644 _posts/2007-05-01-twitterbot-recap.html create mode 100644 _posts/2007-05-03-windows-eye-for-the-cocoa-guy-the-series.html create mode 100644 _posts/2007-05-06-my-guilty-pleasure.html create mode 100644 _posts/2007-05-10-our-employees-are-our-most-valuable-asset.html create mode 100644 _posts/2007-05-19-sp4mz0r.html create mode 100644 _posts/2007-05-26-conference-season-osbc.html create mode 100644 _posts/2007-06-03-almost-there.html create mode 100644 _posts/2007-06-08-long-live-the-license-flamewar.html create mode 100644 _posts/2007-06-24-insanity.html create mode 100644 _posts/2007-06-26-thriving-in-a-development-vacuum.html create mode 100644 _posts/2007-07-04-mono-meet-facebook.html create mode 100644 _posts/2007-07-10-conference-season-iphonedevcamp.html create mode 100644 _posts/2007-07-21-new-email-etc.html create mode 100644 _posts/2007-07-21-starting-with-openmoko.html create mode 100644 _posts/2007-07-23-ironru-ooh-shiney.html create mode 100644 _posts/2007-07-28-facebook-grokathon-and-how-were-trying-to-take-over-the-world.html create mode 100644 _posts/2007-07-28-songbird-a-visual-review.html create mode 100644 _posts/2007-07-30-hacking-with-ironpython.html create mode 100644 _posts/2007-08-03-subversion-branching-with-less-pain.html create mode 100644 _posts/2007-08-05-ordered-filled.html create mode 100644 _posts/2007-08-06-ironpython-for-macports.html create mode 100644 _posts/2007-08-08-meet-openmoko.html create mode 100644 _posts/2007-08-09-scaling-with-your-smart-platform-choice.html create mode 100644 _posts/2007-08-11-openmoko-2007-2-preview.html create mode 100644 _posts/2007-08-12-video-hello-moko.html create mode 100644 _posts/2007-08-14-another-facebook-developer-meetup.html create mode 100644 _posts/2007-08-15-coping-with-success-scaling-on-the-facebook-platform.html create mode 100644 _posts/2007-08-19-i-just-saved-150.html create mode 100644 _posts/2007-08-21-scaling-with-mysql-a-brief-guide.html create mode 100644 _posts/2007-08-22-my-boss-is-a-robot.html create mode 100644 _posts/2007-08-23-back-to-the-basics.html create mode 100644 _posts/2007-08-25-facebook-developer-garage-palo-alto.html create mode 100644 _posts/2007-08-26-facebook-developer-garage-wrap-up.html create mode 100644 _posts/2007-08-29-video-facebook-developer-garage.html create mode 100644 _posts/2007-09-07-time-for-a-road-trip.html create mode 100644 _posts/2007-09-13-for-what-its-worth.html create mode 100644 _posts/2007-09-14-cmon-down-to-silverlightdevcampsf.html create mode 100644 _posts/2007-09-15-silversurfer-try-out-silverlight-on-mac-os-x.html create mode 100644 _posts/2007-09-19-channel9-silverlight-interview.html create mode 100644 _posts/2007-09-21-unofficial-facebook-hackathon-in-palo-alto.html create mode 100644 _posts/2007-09-23-contemplating-remix-07-in-boston.html create mode 100644 _posts/2007-09-27-popfly-how-to-lose-the-buzz.html create mode 100644 _posts/2007-09-29-operation-iraqi-freedom.html create mode 100644 _posts/2007-10-03-graphing-social-building-your-first-app-workshop.html create mode 100644 _posts/2007-10-03-remix-07-boston-woohoo.html create mode 100644 _posts/2007-10-06-conference-season-communitynext-platform.html create mode 100644 _posts/2007-10-06-introducing-why-are-you-awesome.html create mode 100644 _posts/2007-10-07-facebook-app-development-101-wrap-up.html create mode 100644 _posts/2007-10-07-why-are-you-awesome-source-code.html create mode 100644 _posts/2007-10-08-in-boston-at-remix-phew.html create mode 100644 _posts/2007-10-08-miguel-questions-the-manhood-of-400-microsoft-developers-awesome.html create mode 100644 _posts/2007-10-08-unofficlal-facebook-developers-meetup-boston.html create mode 100644 _posts/2007-10-09-miguel-de-icazas-remix-07-boston-keynote-address.html create mode 100644 _posts/2007-10-12-remix-07-boston-wrap-up.html create mode 100644 _posts/2007-10-13-google-search-inside-of-facebook.html create mode 100644 _posts/2007-10-15-speaking-at-widget-summit.html create mode 100644 _posts/2007-10-16-widget-summit-slides.html create mode 100644 _posts/2007-10-20-any-unemployed-net-developers-in-nyc.html create mode 100644 _posts/2007-10-24-my-new-favorite-chuckle.html create mode 100644 _posts/2007-10-25-the-superpoke-facebook-song.html create mode 100644 _posts/2007-10-28-on-investing.html create mode 100644 _posts/2007-11-03-silicon-valley-gangstas.html create mode 100644 _posts/2007-11-04-your-order-has-been-completed.html create mode 100644 _posts/2007-11-06-a-note-to-my-graphing-social-students.html create mode 100644 _posts/2007-11-06-building-mono-on-leopard.html create mode 100644 _posts/2007-11-08-bug-number-seven.html create mode 100644 _posts/2007-11-15-why-are-you-awesome-meet-mono.html create mode 100644 _posts/2007-11-17-facebook-flyers-make-my-eyes-bleed.html create mode 100644 _posts/2007-11-22-turning-famousosity-up-to-11.html create mode 100644 _posts/2007-11-24-ichatagent-leaks-in-leopard.html create mode 100644 _posts/2007-12-01-missed-spain.html create mode 100644 _posts/2007-12-12-urlenco-de-mono-lighttpd-and-postgresql.html create mode 100644 _posts/2007-12-16-fun-way-to-crash-leopard-159.html create mode 100644 _posts/2007-12-16-mono-and-fastcgi-an-awkward-relationship.html create mode 100644 _posts/2007-12-17-my-new-startup.html create mode 100644 _posts/2007-12-18-comparing-ironpython-and-cpython.html create mode 100644 _posts/2007-12-18-what-a-heaping-pile-of-fail.html create mode 100644 _posts/2007-12-31-sxswi-and-me.html create mode 100644 _posts/2008-01-05-perforce-backups-revisited.html create mode 100644 _posts/2008-01-06-just-curious.html create mode 100644 _posts/2008-01-23-five-and-seven-zeroes-is-big.html create mode 100644 _posts/2008-01-23-your-voice-interface-is-fucking-stupid.html create mode 100644 _posts/2008-01-26-fbrubbar-chikken.html create mode 100644 _posts/2008-01-28-sigsegv-in-my-brane.html create mode 100644 _posts/2008-02-01-are-free-gifts-still-gifts.html create mode 100644 _posts/2008-02-02-on-funding-my-startup.html create mode 100644 _posts/2008-02-03-tips-for-beginning-facebook-developers.html create mode 100644 _posts/2008-02-03-trying-out-adsense.html create mode 100644 _posts/2008-02-04-more-tips-for-beginning-facebook-developers.html create mode 100644 _posts/2008-02-16-speaking-at-graphing-social-patterns.html create mode 100644 _posts/2008-02-17-facebooks-bleeding-edge.html create mode 100644 _posts/2008-02-17-upgraded-to-drupal-6-0.html create mode 100644 _posts/2008-02-23-i-hate-mac-os-x.html create mode 100644 _posts/2008-02-24-graphing-social-appnite.html create mode 100644 _posts/2008-03-17-gsp-west-and-sxsw-2008.html create mode 100644 _posts/2008-03-21-javascript-wonks-missing-after-property-id.html create mode 100644 _posts/2008-03-24-srsly-ur-doin-it-wrong.html create mode 100644 _posts/2008-03-26-dashboard-for-linux-users.html create mode 100644 _posts/2008-04-02-data-binding-with-jquery.html create mode 100644 _posts/2008-04-07-a-few-changes.html create mode 100644 _posts/2008-04-08-hi5-goes-100.html create mode 100644 _posts/2008-04-13-an-informal-poll.html create mode 100644 _posts/2008-05-03-parsing-html-with-python.html create mode 100644 _posts/2008-05-04-nant-and-asp-net-on-mono.html create mode 100644 _posts/2008-07-27-experimenting-with-git-at-slide-part-1-3.html create mode 100644 _posts/2008-07-30-lets-swap-ipods.html create mode 100644 _posts/2008-08-20-one-line-automated-testing.html create mode 100644 _posts/2008-09-06-don-quixotes-new-side-kick-hudson.html create mode 100644 _posts/2008-09-11-resurgange-of-the-shell.html create mode 100644 _posts/2008-09-15-lazily-loading-attributes.html create mode 100644 _posts/2008-09-16-chase-auto-finance-fail.html create mode 100644 _posts/2008-09-18-hudson-notifications-with-libnotify.html create mode 100644 _posts/2008-09-19-facebook-be-riddled-with-swashbucklers.html create mode 100644 _posts/2008-09-29-team-development-with-git-part-2-3.html create mode 100644 _posts/2008-10-01-git-back-into-subversion-mostly-automagically-part-3-3.html create mode 100644 _posts/2008-10-04-hudson-build-bookmarklet.html create mode 100644 _posts/2008-10-09-i-hate-it-when-the-onion-is-factual.html create mode 100644 _posts/2008-11-05-reliable-locks-in-hudson.html create mode 100644 _posts/2008-11-22-delightfully-wrong-about-git.html create mode 100644 _posts/2008-11-23-git-integration-with-hudson-and-trac.html create mode 100644 _posts/2008-11-24-git-protip-stash-the-goods-yo-git-stash.html create mode 100644 _posts/2008-11-24-why-we-chose-git-a-rebuttal.html create mode 100644 _posts/2008-12-02-git-protip-learning-from-your-history-git-log.html create mode 100644 _posts/2008-12-10-git-protip-by-commiting-that-revision-you-fucked-us-git-revert.html create mode 100644 _posts/2009-01-04-im-using-git-because-it-makes-me-feel-cool.html create mode 100644 _posts/2009-01-05-extremely-brief-review-of-the-nokia-n810.html create mode 100644 _posts/2009-01-05-find-me-on-github-rtyler.html create mode 100644 _posts/2009-01-12-but-who-will-write-the-tests.html create mode 100644 _posts/2009-01-12-proposal-imuse-an-imap-capable-fuse-filesystem.html create mode 100644 _posts/2009-01-15-git-protip-a-picture-is-worth-a-thousand-words-git-tag.html create mode 100644 _posts/2009-01-26-amazon-sucks-too.html create mode 100644 _posts/2009-01-26-old-navy-sucks.html create mode 100644 _posts/2009-03-05-head-in-the-clouds.html create mode 100644 _posts/2009-03-06-git-protip-split-it-in-half-understanding-the-anatomy-of-a-bug-git-bisect.html create mode 100644 _posts/2009-03-09-v8-and-fastcgi-exploring-an-idea.html create mode 100644 _posts/2009-03-13-do-not-fear-continuous-deployment.html create mode 100644 _posts/2009-04-06-breathing-life-into-a-dead-open-source-project.markdown create mode 100644 _posts/2009-04-07-slide-open-source.markdown create mode 100644 _posts/2009-05-16-template-theory.markdown create mode 100644 _posts/2009-06-18-using-glibs-gtester-results-in-hudson.markdown create mode 100644 _posts/2009-07-21-jython-jgit-and-co-in-hudson.markdown create mode 100644 _posts/2009-07-25-awesomely-bad.markdown create mode 100644 _posts/2009-07-29-writing-for-stability-or-i-hate-writing-tests.markdown create mode 100644 _posts/2009-08-10-im-a-cat-person-now.html create mode 100644 _posts/2009-08-10-investment-strategy-for-developers.markdown create mode 100644 _posts/2009-08-24-toying-around-with-asp-net-mvc-and-nant.html create mode 100644 _posts/2009-09-02-doing-more-with-less-very-continuous-integration.markdown create mode 100644 _posts/2009-10-04-crazysnake-ironpython-and-java-just-monkeying-around.markdown create mode 100644 _posts/2009-10-13-ironwatin-mind-the-gap.markdown create mode 100644 _posts/2009-10-19-my-journey-at-slide-part-1.markdown create mode 100644 _posts/2009-10-20-my-journey-at-slide-part-2.markdown create mode 100644 _posts/2009-10-22-my-journey-at-slide-part-3.markdown create mode 100644 _posts/2009-10-23-daniel-felt-left-out.html create mode 100644 _posts/2009-10-23-end-of-a-journey.markdown create mode 100644 _posts/2009-11-03-do-you-love-git-too.markdown create mode 100644 _posts/2009-12-04-on-github-and-how-i-came-to-write-the-fastest-python-json-module-in-town.markdown create mode 100644 _posts/2009-12-04-server-side-image-transforms-in-python.markdown create mode 100644 _posts/2009-12-07-code-review-with-gerrit-a-mostly-visual-guide.markdown create mode 100644 _posts/2009-12-09-python-json-eat-drink-up-in-san-francisco.markdown create mode 100644 _posts/2009-12-14-get-out-there-and-buy-me-stuff.markdown create mode 100644 _posts/2009-12-17-pyrage-generic-exceptions.markdown create mode 100644 _posts/2009-12-19-one-year-of-cheetah.markdown create mode 100644 _posts/2009-12-24-pyrage-from-toolbox-import-hammer.markdown create mode 100644 _posts/2009-12-26-using-cheetah-templates-with-django.markdown create mode 100644 _posts/2009-12-27-5-tips-for-traveling-with-tux.markdown create mode 100644 _posts/2009-12-27-and-now-a-video-of-my-cat-being-obnoxious.html create mode 100644 _posts/2009-12-27-on-being-a-good-house-guest.markdown create mode 100644 _posts/2009-12-28-angry-tweeter.markdown create mode 100644 _posts/2009-12-31-pre-tested-commits-with-hudson-and-git.markdown create mode 100644 _posts/2010-01-04-new-years-python-meme.markdown create mode 100644 _posts/2010-01-04-the-one-where-i-gush-about-contegix.markdown create mode 100644 _posts/2010-01-15-book-of-elies.markdown create mode 100644 _posts/2010-01-16-virtual-hosting-with-haproxy-and-wsgi.markdown create mode 100644 _posts/2010-01-18-thread-safety-assumptions-in-django.markdown create mode 100644 _posts/2010-01-20-better-faster-stronger.markdown create mode 100644 _posts/2010-01-20-unsubstantiated-rumors-about-apture-and-facebook.markdown create mode 100644 _posts/2010-01-27-using-a-browser-to-piss-off-irc-users-or-spamming-redditdowntime.markdown create mode 100644 _posts/2010-01-30-mourning-sun.markdown create mode 100644 _posts/2010-02-09-i-hope-you-bump-your-head.markdown create mode 100644 _posts/2010-02-10-writing-for-multiple-blogs.markdown create mode 100644 _posts/2010-02-14-building-a-game-for-et-day-1-with-pygame.markdown create mode 100644 _posts/2010-02-16-presidents-day-in-photos.markdown create mode 100644 _posts/2010-02-16-yes-that-is-hair-on-my-chin.html create mode 100644 _posts/2010-02-21-supporting-python-3-is-a-ghetto.markdown create mode 100644 _posts/2010-02-23-arent-we-just-adorable.markdown create mode 100644 _posts/2010-02-23-if-you-want-a-viral-license-use-the-gpl.markdown create mode 100644 _posts/2010-02-26-pyrage-static-isnt-just-something-on-the-radio.markdown create mode 100644 _posts/2010-03-01-programming-as-an-objective-art.markdown create mode 100644 _posts/2010-03-05-hypocrites-on-bikes.markdown create mode 100644 _posts/2010-03-23-sometimes-software-as-a-service-sucks.markdown create mode 100644 _posts/2010-04-02-a-rebase-based-workflow.markdown create mode 100644 _posts/2010-04-03-a-great-platform-does-not-make-yours-a-good-product.markdown create mode 100644 _posts/2010-04-24-regarding-blippy.markdown create mode 100644 _posts/2010-04-28-san-francisco-transit-sucks.markdown create mode 100644 _posts/2010-04-30-be-a-libor.markdown create mode 100644 _posts/2010-05-07-how-to-using-avro-with-eventlet.markdown create mode 100644 _posts/2010-05-12-is-programming-with-twisted-really-as-awful-as-it-sounds.markdown create mode 100644 _posts/2010-05-13-the-slow-death-of-the-indie-mac-dev.markdown create mode 100644 _posts/2010-05-17-i-get-lippy-when-i-drink.markdown create mode 100644 _posts/2010-05-18-being-a-libor-addendum.markdown create mode 100644 _posts/2010-06-06-another-video-of-the-cat.html create mode 100644 _posts/2010-06-14-keyboard-synergy.markdown create mode 100644 _posts/2010-06-22-silly-problems.markdown create mode 100644 _posts/2010-06-29-fatso-adventures-i-wonder-whats-down-here.markdown create mode 100644 _posts/2010-07-04-pride.markdown create mode 100644 _posts/2010-07-07-i-love-sonic-net-already.markdown create mode 100644 _posts/2010-07-11-lebron-james.markdown create mode 100644 _posts/2010-07-14-paw-paw.markdown create mode 100644 _posts/2010-08-28-unclog-the-tubes-blocking-detection-in-eventlet.markdown create mode 100644 _posts/2010-08-30-whats-in-a-name.markdown create mode 100644 _posts/2010-09-03-being-a-croy.markdown create mode 100644 _posts/2010-11-04-so-im-married.markdown create mode 100644 _posts/2010-11-08-experimenting-with-reddits-self-serve-ads.markdown create mode 100644 _posts/2010-11-11-gnu-parallel-changed-my-life.markdown create mode 100644 _posts/2010-12-06-ada-surely-you-jest-mr-pythonman.markdown create mode 100644 _posts/2011-01-01-twenty-eleven.markdown create mode 100644 _posts/2011-01-24-catch-me-at-scale.markdown create mode 100644 _posts/2011-01-24-s-a-d-seasonal-ada-disorder.markdown create mode 100644 _posts/2011-04-05-sent-from-my-iphone.markdown create mode 100644 _posts/2011-04-25-new-light-on-dark-energy.markdown create mode 100644 _posts/2011-05-15-learnings-week-19-2011.markdown create mode 100644 node/10/index.md create mode 100644 node/101/index.md create mode 100644 node/102/index.md create mode 100644 node/103/index.md create mode 100644 node/105/index.md create mode 100644 node/106/index.md create mode 100644 node/107/index.md create mode 100644 node/108/index.md create mode 100644 node/109/index.md create mode 100644 node/11/index.md create mode 100644 node/110/index.md create mode 100644 node/111/index.md create mode 100644 node/112/index.md create mode 100644 node/113/index.md create mode 100644 node/114/index.md create mode 100644 node/115/index.md create mode 100644 node/116/index.md create mode 100644 node/117/index.md create mode 100644 node/118/index.md create mode 100644 node/119/index.md create mode 100644 node/12/index.md create mode 100644 node/120/index.md create mode 100644 node/121/index.md create mode 100644 node/122/index.md create mode 100644 node/123/index.md create mode 100644 node/124/index.md create mode 100644 node/125/index.md create mode 100644 node/127/index.md create mode 100644 node/128/index.md create mode 100644 node/129/index.md create mode 100644 node/13/index.md create mode 100644 node/130/index.md create mode 100644 node/131/index.md create mode 100644 node/132/index.md create mode 100644 node/133/index.md create mode 100644 node/134/index.md create mode 100644 node/135/index.md create mode 100644 node/136/index.md create mode 100644 node/137/index.md create mode 100644 node/138/index.md create mode 100644 node/139/index.md create mode 100644 node/14/index.md create mode 100644 node/140/index.md create mode 100644 node/141/index.md create mode 100644 node/142/index.md create mode 100644 node/143/index.md create mode 100644 node/144/index.md create mode 100644 node/145/index.md create mode 100644 node/146/index.md create mode 100644 node/148/index.md create mode 100644 node/149/index.md create mode 100644 node/15/index.md create mode 100644 node/150/index.md create mode 100644 node/153/index.md create mode 100644 node/154/index.md create mode 100644 node/156/index.md create mode 100644 node/157/index.md create mode 100644 node/158/index.md create mode 100644 node/159/index.md create mode 100644 node/16/index.md create mode 100644 node/160/index.md create mode 100644 node/161/index.md create mode 100644 node/162/index.md create mode 100644 node/163/index.md create mode 100644 node/164/index.md create mode 100644 node/166/index.md create mode 100644 node/167/index.md create mode 100644 node/168/index.md create mode 100644 node/169/index.md create mode 100644 node/17/index.md create mode 100644 node/170/index.md create mode 100644 node/173/index.md create mode 100644 node/174/index.md create mode 100644 node/175/index.md create mode 100644 node/176/index.md create mode 100644 node/177/index.md create mode 100644 node/178/index.md create mode 100644 node/18/index.md create mode 100644 node/180/index.md create mode 100644 node/181/index.md create mode 100644 node/182/index.md create mode 100644 node/183/index.md create mode 100644 node/184/index.md create mode 100644 node/185/index.md create mode 100644 node/186/index.md create mode 100644 node/187/index.md create mode 100644 node/188/index.md create mode 100644 node/189/index.md create mode 100644 node/19/index.md create mode 100644 node/190/index.md create mode 100644 node/191/index.md create mode 100644 node/192/index.md create mode 100644 node/193/index.md create mode 100644 node/194/index.md create mode 100644 node/195/index.md create mode 100644 node/196/index.md create mode 100644 node/197/index.md create mode 100644 node/198/index.md create mode 100644 node/199/index.md create mode 100644 node/20/index.md create mode 100644 node/200/index.md create mode 100644 node/201/index.md create mode 100644 node/202/index.md create mode 100644 node/203/index.md create mode 100644 node/204/index.md create mode 100644 node/205/index.md create mode 100644 node/206/index.md create mode 100644 node/207/index.md create mode 100644 node/208/index.md create mode 100644 node/209/index.md create mode 100644 node/21/index.md create mode 100644 node/211/index.md create mode 100644 node/212/index.md create mode 100644 node/213/index.md create mode 100644 node/214/index.md create mode 100644 node/215/index.md create mode 100644 node/216/index.md create mode 100644 node/217/index.md create mode 100644 node/218/index.md create mode 100644 node/219/index.md create mode 100644 node/22/index.md create mode 100644 node/220/index.md create mode 100644 node/221/index.md create mode 100644 node/222/index.md create mode 100644 node/223/index.md create mode 100644 node/224/index.md create mode 100644 node/226/index.md create mode 100644 node/23/index.md create mode 100644 node/230/index.md create mode 100644 node/231/index.md create mode 100644 node/232/index.md create mode 100644 node/233/index.md create mode 100644 node/234/index.md create mode 100644 node/235/index.md create mode 100644 node/236/index.md create mode 100644 node/237/index.md create mode 100644 node/239/index.md create mode 100644 node/24/index.md create mode 100644 node/240/index.md create mode 100644 node/241/index.md create mode 100644 node/242/index.md create mode 100644 node/243/index.md create mode 100644 node/244/index.md create mode 100644 node/245/index.md create mode 100644 node/246/index.md create mode 100644 node/247/index.md create mode 100644 node/248/index.md create mode 100644 node/249/index.md create mode 100644 node/25/index.md create mode 100644 node/250/index.md create mode 100644 node/252/index.md create mode 100644 node/254/index.md create mode 100644 node/255/index.md create mode 100644 node/256/index.md create mode 100644 node/257/index.md create mode 100644 node/258/index.md create mode 100644 node/259/index.md create mode 100644 node/26/index.md create mode 100644 node/260/index.md create mode 100644 node/261/index.md create mode 100644 node/262/index.md create mode 100644 node/263/index.md create mode 100644 node/264/index.md create mode 100644 node/265/index.md create mode 100644 node/266/index.md create mode 100644 node/267/index.md create mode 100644 node/268/index.md create mode 100644 node/269/index.md create mode 100644 node/27/index.md create mode 100644 node/270/index.md create mode 100644 node/271/index.md create mode 100644 node/272/index.md create mode 100644 node/273/index.md create mode 100644 node/274/index.md create mode 100644 node/275/index.md create mode 100644 node/276/index.md create mode 100644 node/277/index.md create mode 100644 node/279/index.md create mode 100644 node/28/index.md create mode 100644 node/280/index.md create mode 100644 node/281/index.md create mode 100644 node/282/index.md create mode 100644 node/283/index.md create mode 100644 node/284/index.md create mode 100644 node/285/index.md create mode 100644 node/286/index.md create mode 100644 node/287/index.md create mode 100644 node/288/index.md create mode 100644 node/289/index.md create mode 100644 node/29/index.md create mode 100644 node/290/index.md create mode 100644 node/291/index.md create mode 100644 node/295/index.md create mode 100644 node/296/index.md create mode 100644 node/297/index.md create mode 100644 node/298/index.md create mode 100644 node/299/index.md create mode 100644 node/30/index.md create mode 100644 node/300/index.md create mode 100644 node/301/index.md create mode 100644 node/302/index.md create mode 100644 node/303/index.md create mode 100644 node/304/index.md create mode 100644 node/305/index.md create mode 100644 node/306/index.md create mode 100644 node/307/index.md create mode 100644 node/308/index.md create mode 100644 node/309/index.md create mode 100644 node/31/index.md create mode 100644 node/310/index.md create mode 100644 node/32/index.md create mode 100644 node/33/index.md create mode 100644 node/34/index.md create mode 100644 node/35/index.md create mode 100644 node/36/index.md create mode 100644 node/37/index.md create mode 100644 node/38/index.md create mode 100644 node/39/index.md create mode 100644 node/4/index.md create mode 100644 node/40/index.md create mode 100644 node/41/index.md create mode 100644 node/42/index.md create mode 100644 node/43/index.md create mode 100644 node/44/index.md create mode 100644 node/45/index.md create mode 100644 node/46/index.md create mode 100644 node/47/index.md create mode 100644 node/48/index.md create mode 100644 node/49/index.md create mode 100644 node/50/index.md create mode 100644 node/51/index.md create mode 100644 node/52/index.md create mode 100644 node/53/index.md create mode 100644 node/54/index.md create mode 100644 node/55/index.md create mode 100644 node/56/index.md create mode 100644 node/57/index.md create mode 100644 node/58/index.md create mode 100644 node/59/index.md create mode 100644 node/6/index.md create mode 100644 node/60/index.md create mode 100644 node/61/index.md create mode 100644 node/63/index.md create mode 100644 node/64/index.md create mode 100644 node/65/index.md create mode 100644 node/66/index.md create mode 100644 node/67/index.md create mode 100644 node/68/index.md create mode 100644 node/69/index.md create mode 100644 node/7/index.md create mode 100644 node/70/index.md create mode 100644 node/71/index.md create mode 100644 node/72/index.md create mode 100644 node/73/index.md create mode 100644 node/74/index.md create mode 100644 node/75/index.md create mode 100644 node/76/index.md create mode 100644 node/77/index.md create mode 100644 node/78/index.md create mode 100644 node/79/index.md create mode 100644 node/8/index.md create mode 100644 node/80/index.md create mode 100644 node/81/index.md create mode 100644 node/82/index.md create mode 100644 node/83/index.md create mode 100644 node/84/index.md create mode 100644 node/85/index.md create mode 100644 node/87/index.md create mode 100644 node/88/index.md create mode 100644 node/89/index.md create mode 100644 node/90/index.md create mode 100644 node/91/index.md create mode 100644 node/92/index.md create mode 100644 node/94/index.md create mode 100644 node/95/index.md create mode 100644 node/96/index.md create mode 100644 node/97/index.md create mode 100644 node/98/index.md create mode 100644 node/99/index.md create mode 100644 posts/2007/09/contemplating_remix_07_boston/index.md create mode 100644 posts/2008/02/facebooks_bleeding_edge/index.md create mode 100644 posts/2008/02/graphing_social_appnite/index.md create mode 100644 posts/2008/02/i_hate_mac_os_x/index.md create mode 100644 posts/2008/02/upgraded_drupal_60/index.md create mode 100644 posts/2008/03/dashboard_linux_users/index.md create mode 100644 posts/2008/03/gsp_west_and_sxsw_2008/index.md create mode 100644 posts/2008/03/javascript_wonks_missing_after_property_id/index.md create mode 100644 posts/2008/03/srsly_ur_doin_it_wrong/index.md create mode 100644 posts/2008/04/a_few_changes/index.md create mode 100644 posts/2008/04/an_informal_poll/index.md create mode 100644 posts/2008/04/data_binding_with_jquery/index.md create mode 100644 posts/2008/04/hi5_goes_100/index.md create mode 100644 posts/2008/05/nant_and_aspnet_mono/index.md create mode 100644 posts/2008/05/parsing_html_python/index.md create mode 100644 posts/2008/07/experimenting_with_git_slide_part_13/index.md create mode 100644 posts/2008/07/lets_swap_ipods/index.md create mode 100644 posts/2008/08/oneline_automated_testing/index.md create mode 100644 posts/2008/09/chase_autofinance_fail/index.md create mode 100644 posts/2008/09/don_quixotes_new_sidekick_hudson/index.md create mode 100644 posts/2008/09/facebook_be_riddled_with_swashbucklers/index.md create mode 100644 posts/2008/09/hudson_notifications_with_libnotify/index.md create mode 100644 posts/2008/09/lazily_loading_attributes/index.md create mode 100644 posts/2008/09/resurgange_shell/index.md create mode 100644 posts/2008/09/team_development_with_git_part_23/index.md create mode 100644 posts/2008/10/git_back_subversion_mostly_automagically_part_33/index.md create mode 100644 posts/2008/10/hudson_build_bookmarklet/index.md create mode 100644 posts/2008/10/i_hate_it_when_the_onion_factual/index.md create mode 100644 posts/2008/11/delightfully_wrong_about_git/index.md create mode 100644 posts/2008/11/git_integration_with_hudson_and_trac/index.md create mode 100644 posts/2008/11/git_protip_stash_goods_yo_git_stash/index.md create mode 100644 posts/2008/11/reliable_locks_hudson/index.md create mode 100644 posts/2008/11/why_we_chose_git_a_rebuttal/index.md create mode 100644 posts/2008/12/git_protip_by_commiting_revision_you_fucked_us_git_revert/index.md create mode 100644 posts/2008/12/git_protip_learning_your_history_git_log/index.md create mode 100644 posts/2009/01/amazon_sucks_too/index.md create mode 100644 posts/2009/01/but_who_will_write_the_tests/index.md create mode 100644 posts/2009/01/extremely_brief_review_nokia_n810/index.md create mode 100644 posts/2009/01/find_me_github_rtyler/index.md create mode 100644 posts/2009/01/git_protip_a_picture_worth_a_thousand_words_git_tag/index.md create mode 100644 posts/2009/01/im_using_git_because_it_makes_me_feel_cool/index.md create mode 100644 posts/2009/01/old_navy_sucks/index.md create mode 100644 posts/2009/01/proposal_imuse_imapcapable_fuse_filesystem/index.md create mode 100644 posts/2009/03/do_not_fear_continuous_deployment/index.md create mode 100644 posts/2009/03/git_protip_split_it_half_understanding_anatomy_bug_git_bisect/index.md create mode 100644 posts/2009/03/head_clouds/index.md create mode 100644 posts/2009/03/v8_and_fastcgi_exploring_idea/index.md create mode 100644 posts/2009/04/breathing_life_dead_open_source_project/index.md create mode 100644 posts/2009/04/slide_open_source/index.md create mode 100644 posts/2009/05/template_theory/index.md create mode 100644 posts/2009/06/using_glibs_gtester_results_hudson/index.md create mode 100644 posts/2009/07/awesomely_bad/index.md create mode 100644 posts/2009/07/jython_jgit_and_co_hudson/index.md create mode 100644 posts/2009/07/writing_stability_or_i_hate_writing_tests/index.md create mode 100644 posts/2009/08/im_cat_person_now/index.md create mode 100644 posts/2009/08/investment_strategy_developers/index.md create mode 100644 posts/2009/08/toying_around_aspnet_mvc_and_nant/index.md create mode 100644 posts/2009/09/doing_more_less_very_continuous_integration/index.md create mode 100644 posts/2009/10/crazysnake_ironpython_and_java_just_monkeying_around/index.md create mode 100644 posts/2009/10/daniel_felt_left_out/index.md create mode 100644 posts/2009/10/end_journey/index.md create mode 100644 posts/2009/10/ironwatin_mind_gap/index.md create mode 100644 posts/2009/10/my_journey_slide_part_1/index.md create mode 100644 posts/2009/10/my_journey_slide_part_2/index.md create mode 100644 posts/2009/10/my_journey_slide_part_3/index.md create mode 100644 posts/2009/11/do_you_love_git_too/index.md create mode 100644 posts/2009/12/5_tips_traveling_tux/index.md create mode 100644 posts/2009/12/and_now_video_my_cat_being_obnoxious/index.md create mode 100644 posts/2009/12/angry_tweeter/index.md create mode 100644 posts/2009/12/being_good_house_guest/index.md create mode 100644 posts/2009/12/code_review_gerrit_mostly_visual_guide/index.md create mode 100644 posts/2009/12/get_out_there_and_buy_me_stuff/index.md create mode 100644 posts/2009/12/github_and_how_i_came_write_fastest_python_json_module_town/index.md create mode 100644 posts/2009/12/one_year_cheetah/index.md create mode 100644 posts/2009/12/pretested_commits_hudson_and_git/index.md create mode 100644 posts/2009/12/pyrage_generic_exceptions/index.md create mode 100644 posts/2009/12/pyrage_toolbox_import_hammer/index.md create mode 100644 posts/2009/12/pythonjson_eatdrinkup_san_francisco/index.md create mode 100644 posts/2009/12/serverside_image_transforms_python/index.md create mode 100644 posts/2009/12/using_cheetah_templates_django/index.md create mode 100644 posts/2010/01/better_faster_stronger/index.md create mode 100644 posts/2010/01/book_elies/index.md create mode 100644 posts/2010/01/mourning_sun/index.md create mode 100644 posts/2010/01/new_years_python_meme/index.md create mode 100644 posts/2010/01/one_where_i_gush_about_contegix/index.md create mode 100644 posts/2010/01/threadsafety_assumptions_django/index.md create mode 100644 posts/2010/01/unsubstantiated_rumors_about_apture_and_facebook/index.md create mode 100644 posts/2010/01/using_browser_piss_irc_users_or_spamming_redditdowntime/index.md create mode 100644 posts/2010/01/virtual_hosting_haproxy_and_wsgi/index.md create mode 100644 posts/2010/02/arent_we_just_adorable/index.md create mode 100644 posts/2010/02/building_game_et_day_1_pygame/index.md create mode 100644 posts/2010/02/i_hope_you_bump_your_head/index.md create mode 100644 posts/2010/02/if_you_want_viral_license_use_gpl/index.md create mode 100644 posts/2010/02/presidents_day_photos/index.md create mode 100644 posts/2010/02/pyrage_static_isnt_just_something_radio/index.md create mode 100644 posts/2010/02/supporting_python_3_ghetto/index.md create mode 100644 posts/2010/02/writing_multiple_blogs/index.md create mode 100644 posts/2010/02/yes_hair_my_chin/index.md create mode 100644 posts/2010/03/hypocrites_bikes/index.md create mode 100644 posts/2010/03/programming_objective_art/index.md create mode 100644 posts/2010/03/sometimes_software_service_sucks/index.md create mode 100644 posts/2010/04/be_libor/index.md create mode 100644 posts/2010/04/great_platform_does_not_make_yours_good_product/index.md create mode 100644 posts/2010/04/rebasebased_workflow/index.md create mode 100644 posts/2010/04/regarding_blippy/index.md create mode 100644 posts/2010/04/san_francisco_transit_sucks/index.md create mode 100644 posts/2010/05/being_libor_addendum/index.md create mode 100644 posts/2010/05/howto_using_avro_eventlet/index.md create mode 100644 posts/2010/05/i_get_lippy_when_i_drink/index.md create mode 100644 posts/2010/05/programming_twisted_really_awful_it_sounds/index.md create mode 100644 posts/2010/05/slow_death_indie_mac_dev/index.md create mode 100644 posts/2010/06/another_video_cat/index.md create mode 100644 posts/2010/06/fatso_adventures_i_wonder_whats_down_here/index.md create mode 100644 posts/2010/06/keyboard_synergy/index.md create mode 100644 posts/2010/06/silly_problems/index.md create mode 100644 posts/2010/07/i_love_sonicnet_already/index.md create mode 100644 posts/2010/07/lebron_james/index.md create mode 100644 posts/2010/07/paw_paw/index.md create mode 100644 posts/2010/07/pride/index.md create mode 100644 posts/2010/08/unclog_tubes_blocking_detection_eventlet/index.md create mode 100644 posts/2010/08/whats_name/index.md create mode 100644 posts/2010/09/being_croy/index.md create mode 100644 posts/2010/11/experimenting_reddits_selfserve_ads/index.md create mode 100644 posts/2010/11/gnuparallel_changed_my_life/index.md create mode 100644 posts/2010/11/so_im_married/index.md create mode 100644 posts/2010/12/ada_surely_you_jest_mr_pythonman/index.md create mode 100644 posts/2011/01/catch_me_scale/index.md create mode 100644 posts/2011/01/sad_seasonal_ada_disorder/index.md create mode 100644 posts/2011/01/twenty_eleven/index.md create mode 100644 posts/2011/04/new_light_dark_energy/index.md create mode 100644 posts/2011/04/sent_my_iphone/index.md create mode 100644 posts/2011/05/learnings_week_19_2011/index.md create mode 100644 posts/r_tyler_ballance/a_note_to_my_graphing_social_students/index.md create mode 100644 posts/r_tyler_ballance/another_facebook_developer_meetup/index.md create mode 100644 posts/r_tyler_ballance/any_unemployed_net_developers_in_nyc/index.md create mode 100644 posts/r_tyler_ballance/bug_number_seven/index.md create mode 100644 posts/r_tyler_ballance/building_mono_on_leopard/index.md create mode 100644 posts/r_tyler_ballance/channel9_silverlight_interview/index.md create mode 100644 posts/r_tyler_ballance/cmon_down_to_silverlightdevcampsf/index.md create mode 100644 posts/r_tyler_ballance/comparing_ironpython_and_cpython/index.md create mode 100644 posts/r_tyler_ballance/conference_season_communitynext_platform/index.md create mode 100644 posts/r_tyler_ballance/coping_with_success_scaling_on_the_facebook_platform/index.md create mode 100644 posts/r_tyler_ballance/facebook_app_development_101_wrap_up/index.md create mode 100644 posts/r_tyler_ballance/facebook_developer_garage_palo_alto/index.md create mode 100644 posts/r_tyler_ballance/facebook_developer_garage_wrap_up/index.md create mode 100644 posts/r_tyler_ballance/facebook_flyers_make_my_eyes_bleed/index.md create mode 100644 posts/r_tyler_ballance/facebook_grokathon_and_how_were_trying_to_take_over_the_world/index.md create mode 100644 posts/r_tyler_ballance/fb_rubbar_chikken/index.md create mode 100644 posts/r_tyler_ballance/five_and_seven_zeroes_is_big/index.md create mode 100644 posts/r_tyler_ballance/for_what_its_worth/index.md create mode 100644 posts/r_tyler_ballance/fun_way_to_crash_leopard_159/index.md create mode 100644 posts/r_tyler_ballance/google_search_inside_of_facebook/index.md create mode 100644 posts/r_tyler_ballance/graphing_social_building_your_first_app_workshop/index.md create mode 100644 posts/r_tyler_ballance/hacking_with_ironpython/index.md create mode 100644 posts/r_tyler_ballance/i_just_saved_150/index.md create mode 100644 posts/r_tyler_ballance/ichatagent_leaks_in_leopard/index.md create mode 100644 posts/r_tyler_ballance/in_boston_at_remix_phew/index.md create mode 100644 posts/r_tyler_ballance/introducing_why_are_you_awesome/index.md create mode 100644 posts/r_tyler_ballance/ironpython_for_macports/index.md create mode 100644 posts/r_tyler_ballance/ironru_ooh_shiney/index.md create mode 100644 posts/r_tyler_ballance/just_curious/index.md create mode 100644 posts/r_tyler_ballance/meet_openmoko/index.md create mode 100644 posts/r_tyler_ballance/miguel_de_icazas_remix_07_boston_keynote_address/index.md create mode 100644 posts/r_tyler_ballance/miguel_questions_the_manhood_of_400_microsoft_developers_awesome/index.md create mode 100644 posts/r_tyler_ballance/missed_spain/index.md create mode 100644 posts/r_tyler_ballance/mono_and_fastcgi_an_awkward_relationship/index.md create mode 100644 posts/r_tyler_ballance/my_boss_is_a_robot/index.md create mode 100644 posts/r_tyler_ballance/my_new_favorite_chuckle/index.md create mode 100644 posts/r_tyler_ballance/my_new_startup/index.md create mode 100644 posts/r_tyler_ballance/on_funding_my_startup/index.md create mode 100644 posts/r_tyler_ballance/on_investing/index.md create mode 100644 posts/r_tyler_ballance/openmoko_2007_2_preview/index.md create mode 100644 posts/r_tyler_ballance/operation_iraqi_freedom/index.md create mode 100644 posts/r_tyler_ballance/ordered_filled/index.md create mode 100644 posts/r_tyler_ballance/perforce_backups_revisited/index.md create mode 100644 posts/r_tyler_ballance/popfly_how_to_lose_the_buzz/index.md create mode 100644 posts/r_tyler_ballance/remix_07_boston_woohoo/index.md create mode 100644 posts/r_tyler_ballance/remix_07_boston_wrap_up/index.md create mode 100644 posts/r_tyler_ballance/scaling_with_mysql_a_brief_guide/index.md create mode 100644 posts/r_tyler_ballance/scaling_with_your_smart_platform_choice/index.md create mode 100644 posts/r_tyler_ballance/sigsegv_in_my_brane/index.md create mode 100644 posts/r_tyler_ballance/silicon_valley_gangstas/index.md create mode 100644 posts/r_tyler_ballance/silversurfer_try_out_silverlight_on_mac_os_x/index.md create mode 100644 posts/r_tyler_ballance/songbird_a_visual_review/index.md create mode 100644 posts/r_tyler_ballance/speaking_at_graphing_social_patterns/index.md create mode 100644 posts/r_tyler_ballance/speaking_at_widget_summit/index.md create mode 100644 posts/r_tyler_ballance/subversion_branching_with_less_pain/index.md create mode 100644 posts/r_tyler_ballance/sxswi_and_me/index.md create mode 100644 posts/r_tyler_ballance/the_superpoke_facebook_song/index.md create mode 100644 posts/r_tyler_ballance/time_for_a_road_trip/index.md create mode 100644 posts/r_tyler_ballance/tips_for_beginning_facebook_developers/index.md create mode 100644 posts/r_tyler_ballance/trying_out_adsense/index.md create mode 100644 posts/r_tyler_ballance/turning_famousosity_up_to_11/index.md create mode 100644 posts/r_tyler_ballance/unofficial_facebook_hackathon_in_palo_alto/index.md create mode 100644 posts/r_tyler_ballance/unofficlal_facebook_developers_meetup_boston/index.md create mode 100644 posts/r_tyler_ballance/urlenco_de_mono_lighttpd_and_postgresql/index.md create mode 100644 posts/r_tyler_ballance/video_facebook_developer_garage/index.md create mode 100644 posts/r_tyler_ballance/video_hello_moko/index.md create mode 100644 posts/r_tyler_ballance/what_a_heaping_pile_of_fail/index.md create mode 100644 posts/r_tyler_ballance/why_are_you_awesome_meet_mono/index.md create mode 100644 posts/r_tyler_ballance/why_are_you_awesome_source_code/index.md create mode 100644 posts/r_tyler_ballance/widget_summit_slides/index.md create mode 100644 posts/r_tyler_ballance/your_order_has_been_completed/index.md create mode 100644 posts/r_tyler_ballance/your_voice_interface_is_fucking_stupid/index.md create mode 100644 posts/roy/back_to_the_basics/index.md create mode 100644 posts/roy/howdy/index.md create mode 100644 posts/roy/ichat_hates_me/index.md create mode 100644 posts/stephen/academic_masochism/index.md create mode 100644 posts/stephen/another_blog/index.md create mode 100644 posts/stephen/choosing_a_platform_windows_and_linux/index.md create mode 100644 posts/stephen/educating_engineers/index.md create mode 100644 posts/stephen/ftgl/index.md create mode 100644 posts/stephen/im_shocked/index.md create mode 100644 posts/stephen/in_the_news_last_week_drm/index.md create mode 100644 posts/stephen/long_live_the_license_flamewar/index.md create mode 100644 posts/stephen/meeting_a_comic_genius/index.md create mode 100644 posts/stephen/mono_winforms_tao_and_me/index.md create mode 100644 posts/stephen/mono_winforms_update/index.md create mode 100644 posts/stephen/publishing_war_on_the_horizon/index.md create mode 100644 posts/stephen/the_visual_basic_stigma/index.md create mode 100644 posts/stephen/thriving_in_a_development_vacuum/index.md create mode 100644 posts/tyler/a_review_the_metamorphosis/index.md create mode 100644 posts/tyler/absolute_frustration/index.md create mode 100644 posts/tyler/almost_there/index.md create mode 100644 posts/tyler/baby_ill_panic_your_kernel_anytime/index.md create mode 100644 posts/tyler/barcamp_austin_again/index.md create mode 100644 posts/tyler/basic_http_authentication_with_webservicescore/index.md create mode 100644 posts/tyler/being_white_rocks/index.md create mode 100644 posts/tyler/city_of_lost_boys/index.md create mode 100644 posts/tyler/cocoa_radio_im_almost_relevant/index.md create mode 100644 posts/tyler/cocoaheads_silicon_valley/index.md create mode 100644 posts/tyler/completely_off_topic/index.md create mode 100644 posts/tyler/conference_season_iphonedevcamp/index.md create mode 100644 posts/tyler/conference_season_osbc/index.md create mode 100644 posts/tyler/dear_hp_fall_on_something_sharp/index.md create mode 100644 posts/tyler/emission_coming_soon/index.md create mode 100644 posts/tyler/get_your_dance_on/index.md create mode 100644 posts/tyler/going_on_tour/index.md create mode 100644 posts/tyler/how_to_ruin_a_publicly_traded_company/index.md create mode 100644 posts/tyler/i_aint_shipley_but_pmpmyapp/index.md create mode 100644 posts/tyler/im_in_ur_phonez/index.md create mode 100644 posts/tyler/im_on_another_podcast/index.md create mode 100644 posts/tyler/im_seriously_famous/index.md create mode 100644 posts/tyler/in_the_fifth_dimension/index.md create mode 100644 posts/tyler/insanity/index.md create mode 100644 posts/tyler/internal_server_error/index.md create mode 100644 posts/tyler/its_just_diddy/index.md create mode 100644 posts/tyler/kernel_panics_do_weird_things/index.md create mode 100644 posts/tyler/mono_incorporated/index.md create mode 100644 posts/tyler/mono_meet_facebook/index.md create mode 100644 posts/tyler/my_guilty_pleasure/index.md create mode 100644 posts/tyler/new_blogthing/index.md create mode 100644 posts/tyler/new_email_etc/index.md create mode 100644 posts/tyler/no_really_what_are_you_doing/index.md create mode 100644 posts/tyler/our_employees_are_our_most_valuable_asset/index.md create mode 100644 posts/tyler/perforce_on_the_road_p4tunnel/index.md create mode 100644 posts/tyler/roadshow_departing/index.md create mode 100644 posts/tyler/scp_1_resume/index.md create mode 100644 posts/tyler/site_upgrade/index.md create mode 100644 posts/tyler/soldiers_of_fortune/index.md create mode 100644 posts/tyler/sp4mz0r/index.md create mode 100644 posts/tyler/starting_with_openmoko/index.md create mode 100644 posts/tyler/teeny_tiny_updates/index.md create mode 100644 posts/tyler/terminally_ill/index.md create mode 100644 posts/tyler/texas_is_bloody_big/index.md create mode 100644 posts/tyler/thread_cancellation_in_c/index.md create mode 100644 posts/tyler/tiring/index.md create mode 100644 posts/tyler/twitterbot_basic_http_authentication_errors/index.md create mode 100644 posts/tyler/twitterbot_is_now_open_source/index.md create mode 100644 posts/tyler/twitterbot_no_really_i_need_to_be_stopped/index.md create mode 100644 posts/tyler/twitterbot_recap/index.md create mode 100644 posts/tyler/webservices_with_dumbarton/index.md create mode 100644 posts/tyler/webservicescore_on_the_radar_screen/index.md create mode 100644 posts/tyler/webservicescore_why_hath_thou_forsaken_me/index.md create mode 100644 posts/tyler/were_all_retarded/index.md create mode 100644 posts/tyler/windows_eye_for_the_cocoa_guy/index.md create mode 100644 posts/tyler/windows_eye_for_the_cocoa_guy_the_series/index.md create mode 100644 posts/zachallia/are_free_gifts_still_gifts/index.md create mode 100644 posts/zachallia/more_tips_for_beginning_facebook_developers/index.md diff --git a/_posts/2007-01-03-another-blog.html b/_posts/2007-01-03-another-blog.html new file mode 100644 index 0000000..166a6af --- /dev/null +++ b/_posts/2007-01-03-another-blog.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Another Blog? +tags: +- Miscellaneous +created: 1167839271 +--- +Why would I sign up for another blog when I barely even create content for the first one? Maybe now I can keep that one clear of random bitching and cell phone reviews.
+
+Besides, tyler is one cool frood. diff --git a/_posts/2007-01-03-new-blogthing.html b/_posts/2007-01-03-new-blogthing.html new file mode 100644 index 0000000..c3ac77e --- /dev/null +++ b/_posts/2007-01-03-new-blogthing.html @@ -0,0 +1,12 @@ +--- +layout: post +title: New Blogthing +tags: +- Miscellaneous +created: 1167835958 +--- +After talking with Phil Aaronson about a recent rant of mine (Bribing Bloggers, Better) I found out that this domain was available and couldn't resist the temptation. I've been meaning to move to a Drupal-based blogthing for quite some time, and the perfect storm of the domain being available and having a brief moment of free time combined with $9 led to the creation of unethical blogger.
+
+My own personal blog URL on the site is http://www.unethicalblogger.com/blog/tyler and I've left open user registration, so you too can have an unethical blog! For example, if I were a Vista shill, I could magically register the username "vistashill" and have an unethical blog at http://www.unethicalblogger.com/blog/vistashill and well, you get the point. I'm going to leave this open and see where it takes me, I am not putting ads on this site, but I must mention the hosting is provided ever-so-graciously by my (good?) friend Dave Steinberg over at GeekISP (GeekISP also happens to host the bleep subversion repository, amongst other things).
+
+I've had better, but I've also had much worse ideas, we'll see where unethical blogging takes me. diff --git a/_posts/2007-01-03-scp1-resume.html b/_posts/2007-01-03-scp1-resume.html new file mode 100644 index 0000000..a9a56da --- /dev/null +++ b/_posts/2007-01-03-scp1-resume.html @@ -0,0 +1,16 @@ +--- +layout: post +title: scp(1) resume +tags: +- Miscellaneous +created: 1167841754 +--- +I came across this blog posting yesterday and figured I'd relay it because all of a sudden it's changed how I transfer large files. While scp(1) doesn't support resuming, but rsync(1) does and in a very Captain Planet-esque fashion, their combined powers allow for secure, resumable file transfers.
+
+By adding the following alias to .profile you can easily switch from the stock-scp to a resumable one:
+alias scpresume="rsync --partial --progress --rsh=ssh"
+
+It's then just a matter of using "scpresume" where I would use scp(1):
+intellian% scpresume medahugefile.tar.gz remotehost:
+
+This shouldn't incur too much overhead, but it sure makes large transfers much less painfull on a bad home-user uplink. diff --git a/_posts/2007-01-04-dear-hp-fall-on-something-sharp.html b/_posts/2007-01-04-dear-hp-fall-on-something-sharp.html new file mode 100644 index 0000000..9e6b8a1 --- /dev/null +++ b/_posts/2007-01-04-dear-hp-fall-on-something-sharp.html @@ -0,0 +1,30 @@ +--- +layout: post +title: Dear HP, Fall On Something Sharp +tags: +- Opinion +created: 1167940808 +--- +I may be too young to remember a Hewlett-Packard that actually innovated and hired engineers to do more than design crap personal computers, and crappier printers. Like an absolute dolt, I assumed this HP LaserJet 1020 would somehow be different. This time, things would some how work. This time, I wouldn't let myself be suckered in by the promise of quick, efficient printing.
+
+This time, I would be duped again.
+
+This printing saga started with an HP Photosmart C3100, a printer that somebdoy thought the all-in-one-ness of the printer would be a great choice, and by golly, the box says it supports Mac OS X! What a gullible chud I turned out to be. As I sat looking at the HP Printer Setup Utility on the right side of my screen complaining that it could not find the printer on the USB bus, and the Mac OS X Printer Setup Utility on the left side of my screen properly finding and identifying the printer on the USB bus, I honestly felt a little part of my soul curling into a ball and just dying. To make things worse, this was on a PowerPC Mac, who knows what sort of explosive chemical reactions might of occurred if I had trying this with my Intel Mac.
+
+Fast forward at least a year, to a poorly lit apartment in north-western San Antonio. A tall man stares blankly at a printer recently removed from the styrofoam entombing it, wondering first why there is a power cable included in the box but no USB cable, then progressing along to the toner cartridge which has no directions, nor indication on how it is to be inserted into the beast of a printer that lay before him. As with most peripherals purchased from anywhere but an Apple Store, this device may or may not work with Mac OS X (after looking online, the HP LaserJet 1020 apparently can be used from Mac OS X with a 1022 driver). After installing the 1022 driver from the HP.com website, precocious hope is quickly replaced by a subdued rage as the gorgeous 20" screen dims and a message that means nothing other than "restart" is displayed in the center. Shortly after reaching behind the screen and pressing the power button, the message is displayed again as the machine boots up. The device is angrily moved from one end of the office to the other and plugged into a hideous looking Dell machine lying tucked away, following a brief install process, the device succeeds in printing a "Windows Test Page" to verify its functionality, and nothing more.
+
+Fast forward another couple of days, my attempts to print a PDF from within Mail.app are greeted with a similar subdued anger staring at a crash report from Mail.app and a stack trace that contains the following:
+
+Thread 0 Crashed:
+0 com.apple.CoreFoundation 0x90859b76 CFBundleCopyLocalizedString + 106
+1 com.hp.framework.imaging 0x0eec21f2 AResAccess::CopyExplanationString(ExpType, __CFString const*, short, unsigned char) + 152
+2 com.hp.framework.imaging 0x0eec3b72 AControl::CopyDescriptionString(__CFString const*, __CFString const*) + 132
+3 com.hp.framework.imaging 0x0eec382f AControl::InitDescriptions(OpaqueControlRef*) + 61
+4 com.hp.framework.imaging 0x0eec2b38 ABooleanControl::ABooleanControl[in-charge](__CFString const*, AAccess*, OpaqueControlRef*) + 46
+5 com.hp.framework.imaging 0x0eec4a17 AControl::ControlFactory(AAccess*, __CFString const*, OpaqueControlRef*, int) + 313
+6 com.hp.framework.imaging 0x0eec4fbf AControlGroup::AddNewControl(ADataProvider*, __CFString const*, int) + 83
+

+
+I now have an HP LaserJet 1020, sitting on the counter that won't print from Windows, Mac OS X, or any Linux I've tried. Excluding Mac OS X/intel, all the OSes properly identify and configure the device, but that's about as far as any of them can go before meeting the iron curtain HP has wrapped around their miserable hardware and software. I have a feeling that the HP iPod was the last device that Hewlett-Packard sold that actually worked, everything I've either purchased, or come across of theirs certainly doesn't.
+
+R.I.P. Hewlett-Packard; at one point it did grand things in the industry, only to die a slow, suffocating death from its own desire to compete in a flooded commodity PC and printer market. diff --git a/_posts/2007-01-04-going-on-tour.html b/_posts/2007-01-04-going-on-tour.html new file mode 100644 index 0000000..81a3df3 --- /dev/null +++ b/_posts/2007-01-04-going-on-tour.html @@ -0,0 +1,16 @@ +--- +layout: post +title: Going on Tour +tags: +- Miscellaneous +created: 1167912576 +--- +I have mentioned this to a few people already, but I will be attending te MacWorld Expo this year. Unfortunately the project I have been hustling to attempt to finish in time for MacWorld will not be done until late january/february, so I'll be schmoozing and talking it up at MacWorld, and walking around with a big dunce hat on my head.
+
+
The Tour Map

+
+True to my inherent nature (see: dunce), I will be packing the bleep roadshow into my super-mega-awesome VW Jetta and driving from San Antonio to San Francisco. What does this mean for you I bet you're contemplating, well, a one time opportunity not only to meet me (a rare honor only bestowed various hiring managers and women of the night) but you too can buy me a beer, lunch, or dinner! If you're a Mac/Mono developer and just happen to either be in San Francisco next week, or along the way, drop me an email (tyler@bleepsoft.com) and I'd be more than happy to stop in $CITY long enough to grab a bite to eat.
+
+I'm not completely sure what to expect, nor how to schedule my time while there. I'm thinking about forgoing buying a "Users Conference" ticket or a "MacIT Conference" since it seems to be as large a waste of money as lighting my January rent payment on fire. Right now I'm planning on buying an exhibit hall ticket, bringing a stack of business cards, and resumés and seeing how many people I can meet.
+
+Again, if you're going to be there, let me know. The bleep roadshow departs early on the 7th, so my email will be hit and miss en route. diff --git a/_posts/2007-01-05-academic-masochism.html b/_posts/2007-01-05-academic-masochism.html new file mode 100644 index 0000000..6094ceb --- /dev/null +++ b/_posts/2007-01-05-academic-masochism.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Academic Masochism +tags: +- Academia +created: 1168016950 +--- +Interesting post on Groklaw about freely available "courseware". The OpenCourseWare Consortium seems like a fantastic idea to me. Academia is really all about sharing knowledge.
+
+I've already bookmarked the MIT Mechanical Engineering page, though I can usually find comparable material in my own department. diff --git a/_posts/2007-01-06-roadshow-departing.html b/_posts/2007-01-06-roadshow-departing.html new file mode 100644 index 0000000..49fa110 --- /dev/null +++ b/_posts/2007-01-06-roadshow-departing.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Roadshow Departing +tags: +- Miscellaneous +created: 1168127995 +--- +Over 3,500 miles.
+
+Over 27 hours of driving.
+
+One big Mac conference to attend.
+
+This is absolutely insane. diff --git a/_posts/2007-01-06-texas-is-bloody-big.html b/_posts/2007-01-06-texas-is-bloody-big.html new file mode 100644 index 0000000..290bd97 --- /dev/null +++ b/_posts/2007-01-06-texas-is-bloody-big.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Texas is bloody big +tags: +- Miscellaneous +created: 1168148632 +--- +Almost exactly 333 miles into this trip, and I find myself sitting at a texas rest area (free wireless!). I stopped here about 50% because of the free wireless, and about 50% because I really wanted to see what it felt like to go to the bathroom in 30 degree temperatures.
+
+Unfortunately, thus far the coolest things I've seen are, something on fire on the side of the road, and the moon. West texas isn't really all that exciting. I better get back to cruising though, El Paso is something like 260 miles from here.
+
+I don't plan on making regular blogging stops, this one just happens to coincide with a more biological deadline.
+
+Hoping to be through New Mexico by sun up. Eep.
diff --git a/_posts/2007-01-09-meeting-a-comic-genius.html b/_posts/2007-01-09-meeting-a-comic-genius.html new file mode 100644 index 0000000..37de6d8 --- /dev/null +++ b/_posts/2007-01-09-meeting-a-comic-genius.html @@ -0,0 +1,8 @@ +--- +layout: post +title: Meeting a Comic Genius +tags: +- Media +created: 1168360432 +--- +Yesterday afternoon at the Flash Fire Facility we got a visit from Rick Mercer. Since it won't be airing for a week or so (and thankfully I won't be in it) I won't yet comment on the stuff we did, but it was pretty cool. It was a lot more fun than some of the other TV spots we've done (local news, Daily Planet). Rick was pretty cool, and needless to say very funny. I'd invite him over for a BBQ anyday. diff --git a/_posts/2007-01-10-its-just-diddy.html b/_posts/2007-01-10-its-just-diddy.html new file mode 100644 index 0000000..1e821fc --- /dev/null +++ b/_posts/2007-01-10-its-just-diddy.html @@ -0,0 +1,21 @@ +--- +layout: post +title: It's Just Diddy +tags: +- Opinion +created: 1168471055 +--- +I suppose I will really never be able to fulfill my childhood dream of working for Apple Computer, Inc. Bummer. The changing of the name from Apple Computer, Inc. to Apple, Inc. is certainly symbolic, but I think carries far more weight in the industry than anybody is really giving credence.
+
+Over five years ago, Apple told us that the Mac was becoming/is the digital media hub. They told us that the Mac was going to be the center of our digital life, and like a dropping a penny into an empty well, nothing happened. A glance of the industry as a whole is almost sickening in terms of the void that just didn't get filled. Apple should not have needed to create the iPod. Apple should not have needed to create the iPhone. To paraphrase what Steve Jobs said to a reporter from CNBC "we create products we want to [need/]use." Apple is slowly learning what John D. Rockefeller learned over a hundred years ago, vertical mergers will make you obscenely rich, or to put it more succinctly in terms of Apple's situation, you cannot trust the rest of the industry "figure it out." The Nomad Jukebox is a decent device, but it doesn't integrate into the rest of my "digital life" like the iPod did when it came out. The Motorola Razr, or the Blackberry are all nice devices, they sleek, they have appeal, but they just suck. The software is miserable, and they don't integrate like the iPhone does/will, so they're doomed to play the second-fiddle that Microsoft is finding itself playing with regards to the Zune.
+
+Moving from Apple Computer to just Apple is a weighty change at least in terms of the company mindset that should have the rest of the industry scared sh#$less. Apple is moving away from just computers to something most Mac OS X users have become familiar with, the experience which they have excelled and building with iPhoto, iMovie, iTunes, and the peripherals to go with them. While Microsoft did beat Apple into the living room with the original XBox (I know a number of people that use their first gen XBoxes as both DVD players and media hubs), appleTV has some catching up to do, but has something Microsoft doesn't (besides the religious fanbase), the "experience" necessary to get every joe and smoe type to not only desire an appleTV, but actually use it.
+
+The iPhone is a good example of Apple's power to look at an existing market and completely change the "level of play" required to compete in that market, and do it in such a way that everybody from Main Street to Wall Street is now paying attention.
+
+
+That's officially my one, requisite, Macworld 2007 blog posting. I'll finish with this image, courtesy of David Young's blog.
+
+
AAPL vs. RIMM
+
+pwned

diff --git a/_posts/2007-01-11-emission-coming-soon.html b/_posts/2007-01-11-emission-coming-soon.html new file mode 100644 index 0000000..5a3c582 --- /dev/null +++ b/_posts/2007-01-11-emission-coming-soon.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Emission, Coming Soon +tags: +- Cocoa +created: 1168542122 +--- +As some of you (both rather) may have noticed, the bleepsoft.com homepage is a bit different these days.
+
+In the very near future bleep will be releasing an application called "Emission" that, besides the cool icon, will certainly change how I work with the wide array of people across the globe that I deal with on a daily basis.
+
+As a lot of the network core is still unwritten (yes, it's very network-ey), so I'm not going to disclose too many details, but check out the site, Fernando Lins has done a fantastic job on the icon. diff --git a/_posts/2007-01-15-being-white-rocks.html b/_posts/2007-01-15-being-white-rocks.html new file mode 100644 index 0000000..fb51f50 --- /dev/null +++ b/_posts/2007-01-15-being-white-rocks.html @@ -0,0 +1,20 @@ +--- +layout: post +title: Being White Rocks +tags: +- Opinion +created: 1168930180 +--- +On my recent trip back from road trip, I couldn't help but appreciate Chris Rock's commentary on "being white" when he said "I always viewed being white like always having five bucks in your pocket."
+
+Sitting in line at a border patrol station just east of El Paso, I watched a hispanic family in a van get inspected relatively thoroughly, and couldn't help but giggle at the "inspection" that awaited me:
+Are you a U.S. citizen?
+arrrrrrr
+...Is that a yes or a no?
+yes. (-_-)
+Have a nice day.
+
+
+I feel secure.
+
+ diff --git a/_posts/2007-01-16-cocoa-radio-im-almost-relevant.html b/_posts/2007-01-16-cocoa-radio-im-almost-relevant.html new file mode 100644 index 0000000..ca0984b --- /dev/null +++ b/_posts/2007-01-16-cocoa-radio-im-almost-relevant.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Cocoa Radio, I'm Almost Relevant +tags: +- Cocoa +created: 1168934782 +--- +Through some twist of fate, I was interviewed on Cocoa Radio. I think I managed to maintain some semblance of competence throughout the interview until some random fellow sat really close to Blake and I and threw my concentration.
+
+It was pretty fun, Blake and I hung out most of the week (I even rescued him from the airport in blue lightning on thursday) so doing the interview was a bit weird, as we talk regularly.
+
+And thus begins my long hard trek into the public consciousness; I'll be super-famous, just like Sting, you'll see. diff --git a/_posts/2007-01-18-howdy.html b/_posts/2007-01-18-howdy.html new file mode 100644 index 0000000..6a01a6d --- /dev/null +++ b/_posts/2007-01-18-howdy.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Howdy? +tags: +- Opinion +created: 1169143399 +--- +So today I began what I hope is a great experience at Texas A&M University, but as I walk through the freezing cold weather and enter my first class I realize I have entered a different world. This has nothing to do with the amout of work or toughieness of the classes ( liked my bushism there... heh heh), its getting used to saying Howdy. Howdy, who the dues says howdy...., people dont say hi here, they say howdy.... what is with this, plus depending on how you say it howdy can sound very (insert brokeback mountain joke here). Well lets just hope things work out, i may just revolt and just say, hi.
+
+whatever
+
+As always I am the roy diff --git a/_posts/2007-01-19-educating-engineers.html b/_posts/2007-01-19-educating-engineers.html new file mode 100644 index 0000000..8d7b46e --- /dev/null +++ b/_posts/2007-01-19-educating-engineers.html @@ -0,0 +1,18 @@ +--- +layout: post +title: Educating Engineers +tags: +- Academia +created: 1169228449 +--- +Found an interesting article (through slashdot) on how we should be educating engineering students. The bird's eye view is that students should come out of school with the ability to continue learning rather than some specific skillset. The slashdot discussion and the article really cover mostly different ground on the subject, with the comments on /. debating the pros and cons of teaching engineers as thinkers or trades-people and the original article focusing more on how the education of thinkers can be done. Of course this isn't limited to engineering, any really good Comp. Sci. program runs the same give-and-take between teaching students to program and teaching them how to solve problems.
+
+I don't really think there's necessarily a right answer in any of this. At this point in time it seems to me like the market for Engineers as workers with a certain skill set is notably present (and I'm going to entirely avoid the debate about whether that is right or wrong), while there is undeniable value in being able to apply knowledge outside of a specific skill set (I'm also going to avoid debate about whether this can be taught).
+
+My own career, thus far, has been a case study in why problem solving is more important than specific skills. I am a graduate of the Computer Engineering Co-op program at the University of Alberta. Of my five terms of "Work Experience" I spent the first three doing PLC programming, circuit diagrams (in AutoCAD), and specification and ordering of parts for industrial control systems. My last two were spent doing data acquisition programming in Visual Basic in a direct precursor to my current position, which is a mix of Windows programming, putting together custom experiments, and heat transfer research. I'm also preparing to begin a M.Sc. degree in Mechanical Engineering.
+
+The common theme in all of this is that none of my day-to-day work heavily involves anything I learned as a skill in my undergraduate degree, though I admit I haven't followed an entirely traditional career progression. I heard a Faculty member whom I have a tremendous amount of respect for answer the question "What qualities do you look for when you're looking for graduate students?" with something like "I like to see how they react to problems outside of their comfort zone." Of course he elaborated more on that, and the point was that it much more important for the student to be able to figure out something than to recite something. He also noted that you can get very different solutions to a problem from someone who solves it using a well-trained skill and someone who solves it with ingenuity, reasoning, and research.
+
+Getting back to the article, I really think the term "meta-skills" is fantastic. While you learn skill in a program (and that's inevitable, most concepts in applied science and engineering are taught through some usable skill) the important thing isn't necessarily the skill or even the concept (which set the "trajectory" talked about in the article), but the ability to turn learning skills and concepts into a skill in itself. I think the article essentially skips the most important part of making that happen for students, telling them directly what they should be gaining. All the hand-on activity in small groups in the world isn't going to help them make that leap if they just see it as another lab assignment in a course that's only marginally (if that) related to the job they hope to have when they graduate.
+
+As for the slashdot discussion, while interesting, I think it misses the point by focusing on theory vs. application. As many comments correctly point out, both theoretical understanding and practical ability are important, but in the context of the articles theories and concepts are simply another skill learned. A high level mathematics theory is every bit as narrow as a single programming language if the person who knows that skill doesn't have the ability to work outside their "comfort zone". Versatility is key. But like I said, the discussion is pretty interesting. I've noticed quite a few interesting comments. As a note on that last comment, it is fairly similar to (albeit longer) the engineering program here. All engineers here take a common first year, specialize in years 2-4 (while still taking cross-discipline courses), then have to practice as an E.I.T. for years (a residency of sorts) before being able apply to become a Professional Engineer (which is a term whose use is legally restricted). diff --git a/_posts/2007-01-20-baby-ill-panic-your-kernel-anytime.html b/_posts/2007-01-20-baby-ill-panic-your-kernel-anytime.html new file mode 100644 index 0000000..def226a --- /dev/null +++ b/_posts/2007-01-20-baby-ill-panic-your-kernel-anytime.html @@ -0,0 +1,33 @@ +--- +layout: post +title: Baby, I'll Panic Your Kernel Anytime +tags: +- Software Development +created: 1169339883 +--- +I've been experiencing a kernel panic for the past couple weeks, sporadically, but I've finally come up with a reliable set of reproduction steps (for my set up anyways). I have a nagging feeling it has something to do with the Parallels Kernel Extensions (specifically the pseudo-networking devices).
+
+The basics of my kernel panic are as follows, for purposes of demonstration, let's pretend Mac[0] is the machine you feel like kernel panicing, and Mac[1] is some other machine sitting around causing trouble:
+
  1. On Mac[0] enable "Personal File Sharing" (i.e. turn on Apple File Sharing)

  2. +
  3. Using Mac[1], mount an AFP share from Mac[0].

  4. +
  5. Transfer a large file (ISO, DMG, pr0n.mp4) from Mac[0] to Mac[1].

  6. +
  7. Unmount the shared volume on Mac[1]

  8. +
  9. Watch Mac[0] go grey like this.

+
+I've been able to reproduce this at the login screen for Mac[0], all the way up to full interactivity (running iTunes, Xcode, etc). In my office, Mac[0] is a 20" intel iMac, whereas Mac[1] is a 12" PowerBook G4. If I had more machines to test with, I'm sure I'd be able to reproduce it there as well. I find it very unlikely that the Apple drivers are kernel panicing my box (see crash logs at end of post), as Apple's IOKit drivers seem to be very solid, so I'm guessing that it is related to the Parallels kernel extensions (.kext). A brief look at kextstat(8) returns this:
+intellian:~ tyler$ kextstat | grep parallels
+ 79 0 0x8d4000 0x5000 0x4000 com.parallels.kext.ConnectUSB (2.5.0) <33 11 6 5 4 3>
+ 91 0 0x8d9000 0x6000 0x5000 com.parallels.kext.Pvsnet (2.2) <5 4 3 2>
+ 101 0 0x6bd000 0x14000 0x13000 com.parallels.kext.hypervisor (2.2) <11 6 5 4 3 2>
+ 102 0 0x9ed000 0xa000 0x9000 com.parallels.kext.vmmain (2.2) <11 6 5 4 3 2>
+ 103 0 0x4a10d000 0x3000 0x2000 com.parallels.kext.Pvsvnic (2.2) <36 4 3>
+

+Regardless of whether or not Parallels is running, to ensure I don't come off as a Parallels-basher (even if I really am), VMWare leaves kernel extensions loaded when VMWare Fusion isn't running as well:
+intellian:~ tyler$ kextstat | grep vmware
+ 95 0 0x48fe5000 0x1b000 0x1a000 com.vmware.kext.vmmon (1.0.0d1) <11 5 4 3 2>
+ 99 0 0x48d7f000 0x5000 0x4000 com.vmware.kext.vmioplug (1.0.0d1) <33 19 5 4 3>
+ 100 0 0x48b74000 0x5000 0x4000 com.vmware.kext.vmnet (1.0.0d1) <5 4 3 2>

+Anyways, back on topic. Given the inherently cryptic crash logs that a kernel panic will leave behind (if any), it's hard to truly tell what is causing the panic. As much as I like to fantasize about becoming an über 1337 kernel haxx0r, I simply haven't the time to whip out a firewire cable, and use Mac[1] as a debugging console to reproduce and crash my main workstation (Mac[0]).
+
+As a software developer however, I'm a bit annoyed that these virtualization applications (Parallels, VMWare) are leaving KEXTs loaded into kernel space even when they're not running, leaving the door wide open to crashes like this one. Unfortunately, a kernel is only as strong as it's weakest link/kext, if one of the KEXTs crash in the spectacular fashion in which they normally do, they can bring down an entire system, possibly leaving a lone developer in central Texas with no other options than to crack open a beer shortly after lunch.
+
diff --git a/_posts/2007-01-20-how-to-ruin-a-publicly-traded-company.html b/_posts/2007-01-20-how-to-ruin-a-publicly-traded-company.html new file mode 100644 index 0000000..70d1e35 --- /dev/null +++ b/_posts/2007-01-20-how-to-ruin-a-publicly-traded-company.html @@ -0,0 +1,13 @@ +--- +layout: post +title: How To Ruin A Publicly Traded Company +tags: +- Software Development +created: 1169343041 +--- +Step 1: Stop developing a product
+Step 2: Put a complete imbecile in charge.
+Step 3: Bring a lawsuit against one of the largest technology companies on the planet.
+Step 4: Watch as hilarity ensues. (taken from here)
+
+$1.08 a share, the stock market is a fickle bitch. diff --git a/_posts/2007-01-21-ichat-hates-me.html b/_posts/2007-01-21-ichat-hates-me.html new file mode 100644 index 0000000..5781185 --- /dev/null +++ b/_posts/2007-01-21-ichat-hates-me.html @@ -0,0 +1,12 @@ +--- +layout: post +title: iChat hates me +tags: +- Media +created: 1169442498 +--- +Many Mac users around the world are having problems using video chat on iChat AV. The problem is routers or so I hear, every time I try to video chat with some ( sometimes video chat works) i get an error message concerning a communication error -8. When typed into google, there are several people with my same problem, why can't iChat love everyone equally, does it just hate mexicans. Why can't I hit Video Chat and it just works, I can just hope the new OS can fix this or someone can help me.
+
+Sorry Apple I just had to say it,
+
+Roy diff --git a/_posts/2007-01-21-mono-incorporated.html b/_posts/2007-01-21-mono-incorporated.html new file mode 100644 index 0000000..1f5d09a --- /dev/null +++ b/_posts/2007-01-21-mono-incorporated.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Mono Incorporated +tags: +- Mono +created: 1169370753 +--- +I recently posted this: Customer Brief: Autonomic Software, Inc to the bleep consulting site. While I cannot disclose too much about how "we have done what we have done" I can say that I used the Mono runtime to allow for them to deploy their software onto both Mac OS X and Linux.
+
+When deploying at a client site recently, I used Package Maker to build a meta-package to install Mono.framework and their software simultaneously. Using the power of launchd(8) the installer installed a LaunchDaemon job file (.plist) and started the job with launchctl all from within the installer. On the Linux side of things rsync(1) to sync things into the appropriate places and then fire off the init.d script.
+
+Overall it's been quite an interesting experience bringing Mono into the corporate world; it's almost like you're telling somebody something that's too good to be true: "wait, I can run this under .NET on Windows, and Mono on everything else? Really?" Unfortunately because of my NDA, I can't disclose too much about the actual project, but it's certainly proved that not only is Mono "enterprise ready," it is probably a better choice to write and deploy software than most other cross-platform frameworks out there. diff --git a/_posts/2007-01-22-get-your-dance-on.html b/_posts/2007-01-22-get-your-dance-on.html new file mode 100644 index 0000000..a3cd0a3 --- /dev/null +++ b/_posts/2007-01-22-get-your-dance-on.html @@ -0,0 +1,8 @@ +--- +layout: post +title: Get Your Dance On +tags: +- Media +created: 1169521713 +--- +Now that I've finally figured out where I know Zach Hale from (via Colin it seems) I wanted to link to his mixtape-blog. It''s an idea I've thought about before, but never taken the initiative to do, so golf claps are in order for Zach. Anyways, they're some great mixes with lots of artists you probably haven't been introduced to just yet, check it out over on poorleno.com diff --git a/_posts/2007-01-22-no-really-what-are-you-doing.html b/_posts/2007-01-22-no-really-what-are-you-doing.html new file mode 100644 index 0000000..bd4519b --- /dev/null +++ b/_posts/2007-01-22-no-really-what-are-you-doing.html @@ -0,0 +1,14 @@ +--- +layout: post +title: No Really, What Are You Doing? +tags: +- Miscellaneous +created: 1169523025 +--- +Like an idiot-moth to a bright lamp, I've somehow been sucked into the latest social web 2.0 zomgzomg craze, I think it's just a subconscious geek's desire to be cool, but regardless, you can find my twitter stream at twitter.com/agentdero.
+
+Most of what's attracted me to the site has been their very simple API, which has allowed me to get an application called "Twitterer" up and running in less than a few hours (1, 2, 3). I've not yet released it (no icon!) but i've been using it for the past two days and am quite pleased with it (if I may say so myself). In fact, if you have read this before, you might notice a recent trend in posts about webservices...ahem.
+
+Twitter allows the masses to finally answer the question "what are you doing?"
+
+To which the masses can reply in a most resounding fashion "nothin really." diff --git a/_posts/2007-01-22-webservicescore-on-the-radar-screen.html b/_posts/2007-01-22-webservicescore-on-the-radar-screen.html new file mode 100644 index 0000000..74a6e95 --- /dev/null +++ b/_posts/2007-01-22-webservicescore-on-the-radar-screen.html @@ -0,0 +1,14 @@ +--- +layout: post +title: WebServicesCore, On The Radar Screen +tags: +- Cocoa +created: 1169471640 +--- +A little birdie chirped into my email wondering what the radar number for my previous gripings about WebServicesCore, and I figured that for all one of the Apple employees that actually read my inane bullshit, behold:
+
+Radar #4945073 ("WebServicesCore lacks support for basic HTTP authentication")
+
+Let's all cross our fingers and hope for a much needed update to WebServicesCore. If all else fails, we can tap our shoes together and wish for a new web services API right?
+
+(What's that weird rdar url?) diff --git a/_posts/2007-01-22-webservicescore-why-hath-thou-forsaken-me.html b/_posts/2007-01-22-webservicescore-why-hath-thou-forsaken-me.html new file mode 100644 index 0000000..65fd8a2 --- /dev/null +++ b/_posts/2007-01-22-webservicescore-why-hath-thou-forsaken-me.html @@ -0,0 +1,22 @@ +--- +layout: post +title: WebServicesCore, Why Hath Thou Forsaken Me +tags: +- Cocoa +created: 1169465965 +--- +I've been hacking around with more webservices-based applications recently (Twitterer for example) and I've also reminded myself what an utter pain in the ass they can be in Cocoa. With twitter, they make available both JSON and XML-based webservices, which is good since they use basic HTTP authentication for their user-specific webservices (i.e. everything but retrieving the public timeline). The XML-based webservices are more or less straight-forward to hack up with Cocoa, all one really needs to do is write a parser (NSXMLDocument) and then make use of the URL loading classes (NSURLConnection, NSMutableURLRequest) to retrieve and process, or POST data. This method of interacting with "webservices" (more wgetting than anything else) is rudimentary at best, and in my personal opinion, isn't as robust as SOAP webservices are. It does however, work. Regardless of the framework, programming language, or geo-orbital location of the moon, they will work because all you're doing is making an HTTP GET and then parsing the results.
+
+The benefit of SOAP webservices however, is the almost "literal" translation of objects encapsulated into SOAP messages, into runtime objects. In effect, if I have a Person object defined in my WSDL and similarly defined in my application (with a good SOAP framework) the objects should be encoded and decoded appropriately when passed via SOAP. The real power of SOAP can be realized when used with ASP.NET (ick) webservices and .NET clients (see ASP.NET - Mono) where you can relatively quickly and easily build and deploy a services-oriented application. That's .NET/Mono however, my work is dealing with NuSOAP and Cocoa, a less than ideal mix.
+
+To start hashing out a Cocoa-webservices-oriented application, your first stop should be at a local pub, brewery, or mayor's office for a good round of intoxication, only after every tissue in your body is soaked with fine casket-aged whiskey will you be prepared to embark on your journey. It's usually best to start with a complete WSDL, you can then use /Developer/Tools/WSMakeStubs to generate what resembles some Objective-C that you can flesh out to some extent to provide an intermediary layer between your sane Cocoa code and the actual SOAP method calls. Cocoa makes SOAP painful. The stub code revolves around one magical "object" WSMethodInvocationRef. Think of WSMethodInvocationRef like you would a sadistic elf that only pops out of his little elf home to kick you in the groin before shouting "TRY AGAIN IDIOT" and scurrying away, there's a bit of magic involved, but mostly pain. Since the invocations will just return a generic "id" type, the only way to really be sure what your webservice invocation returns is to either call [NSObject respondsToSelector:(SEL)] or just trust that the webservice you called will return what you expect, whether it be an NSString, NSDictionary, NSArray, or NSNumber (NSNumber is what's returned in place of numbers and booleans, it's WebServiceCore's cheap way of boxing those primitives). TRY AGAIN IDIOT.
+
+Something else to note is that things you might expect to be able to use, such as basic HTTP authentication are absolutely non-existent in the magic WebServicesCore black-box. With a URL loading-based webservice (JSON, XML) you can just use the delegate method:
+- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
+And authenticate from there, popping around through the various NSURLConnection delegate methods. I have also experimented with updating the SOAP endpoint to include a URL something like the following:
+http://user:password@bleepsoft.com/some/stupid/url
+While one might assume the HTTP subsystem hidden behind that magical WSMethodInvocationRef would handle this appropriately, and translate it to the basic HTTP authentication tokens, it just doesn't work. TRY AGAIN IDIOT.
+
+The alternatives are few and far between if you absolutely need to use SOAP webservices for a certain Cocoa project, I am working on converting a framework that Jonathan Wight wrote to use the URL loading classes in Cocoa, but other than that learn to love WSMethodInvocationRef or plead with your web developers to rewrite their existing webservices with REST, JSON, etc. WebServicesCore is an antiquated pain in the ass, and probably hasn't been updated since Steve Jobs was at NeXT.
+
+TRY AGAIN IDIOT.
diff --git a/_posts/2007-01-23-ftgl.html b/_posts/2007-01-23-ftgl.html new file mode 100644 index 0000000..2b2d504 --- /dev/null +++ b/_posts/2007-01-23-ftgl.html @@ -0,0 +1,14 @@ +--- +layout: post +title: FTGL# +tags: +- Mono +created: 1169571188 +--- +I neglected to mention it here, but I released some quick code to allow me to write text in OpenGL and C#. It's called FTGL# and hopefully someone besides me will have a use for it.
+
+The wiki page has svn info
+
+Disclaimer: I posted this in the mono category, but haven't actually tested it on mono yet.
+
+Update: I have finally gotten around to actually running this on Mono (version 1.2.2.1) on Windows. diff --git a/_posts/2007-01-23-thread-cancellation-in-c.html b/_posts/2007-01-23-thread-cancellation-in-c.html new file mode 100644 index 0000000..45d0a27 --- /dev/null +++ b/_posts/2007-01-23-thread-cancellation-in-c.html @@ -0,0 +1,29 @@ +--- +layout: post +title: Thread Cancellation in C# +tags: +- Mono +created: 1169617431 +--- +After some recent frustrations using Thread.Abort() and Thread.Join() in C# I adopted another means of cancelling a thread. In the previous iteration of this code, it was hanging on the following code:
+myThread.Abort();
+if (!myThread.Join(5000)) {
+ Console.WriteLine("Failed to join secondary thread");
+}

+Under certain conditions (such as invoking unmanaged code from C#), the function being executed by the thread "myThread" can cause the Thread.Join(uint) to block indefinitely regardless of what timeout value (in microseconds) is passed as an argument to Join().
+
+Instead of using the Thread class' functions for cancelling a thread, it is much more reliable to use a stay-alive boolean instead in your thread. In my code, the thread serves as a basic runloop that iterates a couple of times a second, so I added the following code:
+private static readonly object threadLock = new object();
+private static volatile bool threadStayAlive = false;
+
+public static void ThreadFunc() {
+//...
+lock (threadLock) {
+if (!threadStayAlive)
+ return;
+}
+//...
+}

+Elsewhere in the code, instead of calling both Thread.Abort() and Thread.Join(uint), I set threadStayAlive to false, and call Thread.Join(uint) to ensure that the thread is properly cancelled before continuing execution. I've tested this for about an hour or so trying to replicate the infinite-blocking that would occur with Thread.Abort() and Thread.Thread.Join(uint) and I've not been able to lock up my application yet with the stay-alive boolean. Checking the boolean periodically inside the thread function will allow the the code to appropriately clean up after itself instead of relying on Thread.Abort() which may interrupt whatever the thread is executing at any given time leaving your application in an inconsistent state. Catching a ThreadAbortException inside the thread function can help prevent inconsistent thread states, but I've found it's not preventing any amount of thread lock-ups like the stay-alive will.
+
+Regardless of the framework, threading is never something to be undertaken lightly; it is absolutely essential to know what your thread should be doing so you don't end up with race conditions or corrupted objects. Thread handling in C# is relatively straightforward, and certainly not as frustrating as pthreads, but still can have the same general threading related bugs. diff --git a/_posts/2007-01-23-twitterbot-no-really-i-need-to-be-stopped.html b/_posts/2007-01-23-twitterbot-no-really-i-need-to-be-stopped.html new file mode 100644 index 0000000..974590a --- /dev/null +++ b/_posts/2007-01-23-twitterbot-no-really-i-need-to-be-stopped.html @@ -0,0 +1,26 @@ +--- +layout: post +title: Twitterbot. No Really, I Need To Be Stopped +tags: +- Mono +created: 1169560301 +--- +Ok, Twitterer almost had a valid excuse, but this is just bloody unnecessary. I wrote a C# (Mono) news bot for twitter last night out of boreom while waiting for a client to finish writing the webservices needed for my project. The Twitterbot is based very loosely on Mario Menti's perl source code, in that I took the tinyurl idea (and that's about it). I wrote the bot with the concept in mind of using one bot to manage all the feeds at once, which does have a slightly undesirable affect of posting the updates for all the feeds at once, but with a bit of tweaking that can be lessened.
+
+The bot is used to run the following twitter-things: googlenews, googlenewsworld, googlenewssports, googlenewsus, googlenewsent
+
+
+
+

the technical details


+The Twitterbot makes use of RSS.NET for all its incoming feed parsing, but uses the standard System.Net.WebRequest class for posting to both twitter and retrieving the proper tinyurl link. The basic structure of the bot is simple, whenever it grabs new items it'll check that feed's last (stored internally) items to prevent duplication of twitter-posts, and then will shorten the title, generate the tinyurl link and finally post the tiny message to twitter. One of the issues I discovered with Google News is that they randomize the story providers for any given story, i.e. a they might push out a story to their feeds about China's shooting down of a satellite but each time the bot updates that feed may return a different title for the story from a different news organization. In order to prevent flooding, the bot currently has a twitter-posting maximum of two per iteration, which combined with the update interval (30 minutes) helps cut down on both duplicate stories, but also spamming the living hell out of twitter.
+
+The file format that the bot reads feeds and twitter information from is also simple:
+<feeds>
+ <!-- & -> &amp; -->
+ <feed name="Google News" url="http://news.google.com/news?ned=us&amp;topic=h&amp;output=rss" twitter="user" password="pass"/>
+</feeds>
+

+
+I think I am going to release this as open source in the very near future but I want to check with the twitter guys first to take any steps necessary to prevent spamming their goofy little service. I really think my bot would help organizations use twitter as a minimalistic content delivery platform (market-speak!) if they already spit out content in standard RSS formats elsewhere, but I don't want to step on any toes.
+
+A nice and neat little Twitterbot, all in less than 300 lines of code :) diff --git a/_posts/2007-01-24-twitterbot-is-now-open-source.html b/_posts/2007-01-24-twitterbot-is-now-open-source.html new file mode 100644 index 0000000..d0e31f0 --- /dev/null +++ b/_posts/2007-01-24-twitterbot-is-now-open-source.html @@ -0,0 +1,11 @@ +--- +layout: post +title: Twitterbot Is Now Open Source +tags: +- Mono +created: 1169643850 +--- +As I previously mentioned, I've written a small C# application called "Twitterbot" that grabs items from an RSS feed and retrofits them for twitter. After discussing it with some of the folks over at twitter, they have no problem with me open sourcing the litte bot, so I give you, the Twitterbot.
+
+I also added a few fixes this morning after adding the hybridized twitter-thing:
+The Twitterbot can be downloaded from the subversion repository, details are located on the Twitterbot's page. The Twitterbot is BSD licensed and will run with both .NET and Mono. Enjoy! diff --git a/_posts/2007-01-26-publishing-war-on-the-horizon.html b/_posts/2007-01-26-publishing-war-on-the-horizon.html new file mode 100644 index 0000000..0ea0026 --- /dev/null +++ b/_posts/2007-01-26-publishing-war-on-the-horizon.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Publishing War on the Horizon +tags: +- Academia +created: 1169829128 +--- +Apparently, predictably, and late to the party, research publishers are getting nervous about the push for Open Access. Hopefully this is just an idea for a push from the publishers that will quickly be dropped, but from an article on nature.com (found via slashdot of course):
+
+Public access equals government censorship
+
+I hesitate to even quote that because it's so far off-base. There was more too, but since this is just an article on a potential future publicity campaign I don't really think a thorough response is warranted. If the publishers ever try pushing this BS on the research community I have no doubt the response will not be what the publishers hope.
+
+These publishers have to realize that the entire reason they exist at all is because they have been the best way to make information available to as many people as possible. Publishing researchers want their work to be available and if traditional publishers can't continue to be a relevant way to make that happen then they simply don't have a viable business model. Personally I still think there's value in subscriptions to printed journals, and I'm sure people I work with feel the same. diff --git a/_posts/2007-01-31-basic-http-authentication-with-webservicescore.html b/_posts/2007-01-31-basic-http-authentication-with-webservicescore.html new file mode 100644 index 0000000..4e96dd4 --- /dev/null +++ b/_posts/2007-01-31-basic-http-authentication-with-webservicescore.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Basic HTTP Authentication with WebServicesCore +tags: +- Cocoa +created: 1170281202 +--- +Todd Ditchendorf is the man I have to thank now, not only for his fantastic SOAP Client, but now for "showing me the way" in terms of using CFNetwork to handle basic HTTP authentication with SOAP webservices in Cocoa. Performing the basic HTTP authentication is still an absolute pain in the ass, but it is possible nonetheless.
+
+Without further ado, take it away Todd. diff --git a/_posts/2007-01-31-were-all-retarded.html b/_posts/2007-01-31-were-all-retarded.html new file mode 100644 index 0000000..afec2be --- /dev/null +++ b/_posts/2007-01-31-were-all-retarded.html @@ -0,0 +1,12 @@ +--- +layout: post +title: We're all retarded. +tags: +- Opinion +created: 1170283296 +--- +I came across this after reading a bit about the "bomb scare" in Boston today, and cannot come to any other conclusion than "we're retarded." In the picture in the article linked above, even I can clearly see that it's really not a bomb, it's hardly even a "device" but nonetheless, these "hoax packages caused alarm in Boston."
+
+I fear that in this age of increased terror-McCarthyism and ridiculous (shallow) security measues, if I were to forget my backback under the table in an outdoor café, I would return later to retrieve it and be greeted by a bomb squad apprehensively approaching my backpack filled with nothing more explosive than a half-eaten roast beef sandwich.
+
+To the staff of "Aqua Teen Hunger Force" it was nice knowing you, and I'm sorry but you're all about to be implicated in an eeeevil terrorist plot to bombard Boston with poor animation; regardless, I hear Cuba has wonderful weather this time of year. diff --git a/_posts/2007-02-01-im-on-another-podcast.html b/_posts/2007-02-01-im-on-another-podcast.html new file mode 100644 index 0000000..035fec4 --- /dev/null +++ b/_posts/2007-02-01-im-on-another-podcast.html @@ -0,0 +1,10 @@ +--- +layout: post +title: I'm on another podcast +tags: +- Cocoa +created: 1170371707 +--- +Steve Scott of Late Night Cocoa asked me a couple weeks ago if I wanted to come on and talk about BuildFactory and continuous integration, and then that slowly morphed into talking about webservices and Dumbarton as he noticed I posted some WebServicesCore gripes. We got to chatting a bit about why Mac developers don't seem to "appreciate" webservices as much as those in the .NET world, etc and eventually got together to record Web Services with R. Tyler Ballance.
+
+If you've not checked out Late Night Cocoa, I highly recommend it, it's already shaping up to be a good (technical) podcast about Mac development (the Core Data with Marcus Zarra interview was fantastic, a hard one to follow). If nothing else I hope most developers can use my interview to get a better feel for what's available in the growing webservices (2.0!) landscape. A more active discussion about the strengths and weaknesses in the Cocoa frameworks can do nothing but make the Mac development community stronger, check it out! diff --git a/_posts/2007-02-01-webservices-with-dumbarton.html b/_posts/2007-02-01-webservices-with-dumbarton.html new file mode 100644 index 0000000..f2403fc --- /dev/null +++ b/_posts/2007-02-01-webservices-with-dumbarton.html @@ -0,0 +1,29 @@ +--- +layout: post +title: Webservices with Dumbarton +tags: +- Mono +created: 1170319882 +--- +While I have been know to gripe about WebServicesCore, there are however options now when developing service-oriented applications. Introducing, Dumbarton; Dumbarton is basically a ObjC-C# bridge that makes use of the Mono embedded API to allow you to utilize C# code from within your Cocoa application. Personally, I think writing SOAP consumption code in C# using Mono or .NET is far nicer than trying to write something using C/Objective-C via WebServicesCore, so this is my "favorite" option. The word favorite being in quotes as unfortunately Dumbarton is a bit complex to use and bundle for a smaller Cocoa application.
+
+Dumbarton is however an option, so I wrote up a quick example that makes use of a currency exchange rate webservice via xmethods.com and essentially rehashes the proverbial "Currency Converter" sample project with an up to date exchange rate. I've pushed the project to GitHub in case you want to check out the whole project.
+
+

the nitty gritty


+Mostly because I'm a lazy developer (who isn't?) I used the standard "wsdl" executable that you can find in .NET or Mono to generate the necessary stub class for providing the last intermediary layer between our desktop application. The method that's generated (synchronous) that we'll write our wrapper for is:
+public System.Single getRate(string country1, string country2);
+which will handle the actual webservice invocations which we'll write a small Dumbarton wrapper for. Interacting with SOAP webservices in .NET/Mono is quite simple however, so it'd be trivial to take an existing set of generated stubs and modify them, or simply write all the code from scratch.
+
+The Dumbarton wrapper provides the neccessary "boot strapping" for a bridged object between Cocoa and Mono and also "acts" as the bridged object for the C# class. For example, our Dumbarton wrapper class is called CurrencyConverter which is a subclass of DBMonoObjectRepresentation, and in the wrapper method we call:
+[self invokeMethod:"getRate" withNumArgs:2,str1,str2];
+which will invoke the C# method getRate(string,string) and return a MonoObject pointer. The bridged methods will return a MonoObject pointer which you can either unbox with the DB_UNBOX_* macros provided in the DBBoxing.h file, or you can invoke methods on that object like CurrencyConverter does with:
+(MonoString *)(DBMonoObjectInvoke(rateObj,"ToString",0,NULL))
+in order to return a string, or another MonoObject pointer to use. Overall it's really simple to use once you have all the ducks in a row, such as llinking against the Mono.framework and the Dumbarton.framework properly, and you load them into the DBMonoEnvironment appropriately.
+
+

notes on CurrencyConverter


+I bundled a Dumbarton.framework build that I had handy inside the Subversion repository, but I have linked this against the Mono 1.2.3-preview that I have installed on my machine, so I recommend you checkuot the latest Dumbarton from Subversion (svn co svn://svn.myrealbox.com/source/trunk/Dumbarton) and install the latest stable version of Mono (1.2.2). If you feel like trying out the preview, you can grab the Mono 1.2.3 preview installer to link your custom Dumbarton build against. Something to note however, is the Installation Path in the Dumbarton Xcode project is set to /Library/Frameworks currently, so if you want to link against it and bundle it inside your application bundle you'll need to update that to @executable_path/../Frameworks and then bundle it in the same fashion you would with Growl or Sparkle. You will also need to setup a copy files or a build script phase to handle your bundling of the DLLs inside the application bundle as well. Distributing an application that uses Mono and Dumbarton is a bit stickier, as you have to pick and choose which libraries to bundle, etc, check out this thread from the mono-osx list.
+
+

the springer final thought


+Depending on your familiarity with developing with C# in either Mono or .NET, Dumbarton may be a great option for utilize existing .NET code for webservices, write cross-platform webservices code, or just avoid the pains of WebServicesCore; it can also be another frustrating stop on the avenue of SOAPy pains if you misunderstand how Dumbarton or C# works. It's currently on my ever lengthening todo list to start documenting far more of what you can do with Dumbarton, but hopefully the examples distributed with the source, along with CurrencyConverter provide a good starting point for those who feel crazy enough to try it out.
+
+As a side note, I have 8.6444 pound in my wallet right now. diff --git a/_posts/2007-02-02-absolute-frustration.html b/_posts/2007-02-02-absolute-frustration.html new file mode 100644 index 0000000..d31747f --- /dev/null +++ b/_posts/2007-02-02-absolute-frustration.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Absolute Frustration +tags: +- Opinion +created: 1170446333 +--- +Time-Warner (again) had an outage this morning, and it has somehow left my Linksys WRT54G absolutely incapable of routing properly.
+
+From the router administration page, I can ping public servers. From inside the network, I can ping ping local machines. I can properly resolve hostnames, I just can't ping anything on the public internet, from inside the network. My router has become absolutely dysfunctional as anything but a simple switch.
+
+I'm only lamenting that I don't know of a taller building from which to hurl this miserable piece of shit from. diff --git a/_posts/2007-02-02-mono-winforms-tao-and-me.html b/_posts/2007-02-02-mono-winforms-tao-and-me.html new file mode 100644 index 0000000..f29b5a7 --- /dev/null +++ b/_posts/2007-02-02-mono-winforms-tao-and-me.html @@ -0,0 +1,32 @@ +--- +layout: post +title: Mono, Winforms, Tao, and Me +tags: +- Mono +created: 1170457820 +--- +I finally got around to testing FTGL# with Mono on Windows. Didn't require any modification, but there's one oddity ...
+
+
+C:\Documents and Settings\stephen\My Documents\work\FTGLSharp\sample\bin\Debug>"FTGLSharp Demo.exe"
+Opening Font File C:\Windows\Fonts\arial.ttf
+Setting 24pt, 72dpi
+Done font initialization
+sap.ftgl.MainForm, Text: FTGL.OnActivated() called
+sap.ftgl.demo.demoControl.forceRefresh()
+sap.ftgl.demo.demoControl.OnPaint() called
+sap.ftgl.MainForm, Text: FTGL.OnActivated() called
+sap.ftgl.demo.demoControl.forceRefresh()
+sap.ftgl.demo.demoControl.OnPaint() called
+

+C:\Documents and Settings\stephen\My Documents\work\FTGLSharp\sample\bin\Debug>mono "FTGLSharp Demo.exe"
+Opening Font File C:\Windows\Fonts\arial.ttf
+Setting 24pt, 72dpi
+Done font initialization
+sap.ftgl.MainForm, Text: FTGL.OnActivated() called
+sap.ftgl.demo.demoControl.forceRefresh()
+sap.ftgl.MainForm, Text: FTGL.OnActivated() called
+sap.ftgl.demo.demoControl.forceRefresh()
+

+
+I don't know yet if it's Mono or Me (I'm usually missing some detail ...) but OnPaint() isn't happening when it should if I fill my control with another control
diff --git a/_posts/2007-02-03-kernel-panics-do-weird-things.html b/_posts/2007-02-03-kernel-panics-do-weird-things.html new file mode 100644 index 0000000..0c09d68 --- /dev/null +++ b/_posts/2007-02-03-kernel-panics-do-weird-things.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Kernel Panics Do Weird Things +tags: +- Software Development +created: 1170535223 +--- +With the arrival of my new Airport Extreme base station came two new ways I can kernel panic my machine. So I now have 1, 2, 3 ways, three ways to panic my machine, ah-ah-ah-ahhhhh.Besides the usual enjoyment of seeing this wonderful image, you can experience some weird things when your OS X machine reboots.
+
+In the attached video, I found that my mouse was in a perpetual state of scrolling down. Not a quick scroll either, a nice leisurely one, the kind you take on the beach, a nice leisurely scroll down in every window with a scrollbar in the entire operating system. Gak. diff --git a/_posts/2007-02-05-mono-winforms-update.html b/_posts/2007-02-05-mono-winforms-update.html new file mode 100644 index 0000000..539750f --- /dev/null +++ b/_posts/2007-02-05-mono-winforms-update.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Mono Winforms Update +tags: +- Mono +created: 1170697979 +--- +The pre-release version of Mono 1.2.3 handles the painting events properly, so it appears that FTGL# actually works on Mono, at least on Windows.
+
+Thanks to the kind folks in #mono-winforms for taking a look at this for me. diff --git a/_posts/2007-02-07-tiring.html b/_posts/2007-02-07-tiring.html new file mode 100644 index 0000000..b637ab2 --- /dev/null +++ b/_posts/2007-02-07-tiring.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Tiring +tags: +- Miscellaneous +created: 1170910986 +--- +I am not certain if forgetfulness is a side effect of working too much, or general stress, but I spent about a minute looking around for my keys before finding them still sitting in the lock on my front door.
+
+Whoops. diff --git a/_posts/2007-02-09-i-aint-shipley-but-pmpmyapp.html b/_posts/2007-02-09-i-aint-shipley-but-pmpmyapp.html new file mode 100644 index 0000000..46017c9 --- /dev/null +++ b/_posts/2007-02-09-i-aint-shipley-but-pmpmyapp.html @@ -0,0 +1,17 @@ +--- +layout: post +title: I ain't Shipley, but PmpMyApp +tags: +- Cocoa +created: 1171013080 +--- +Ever since coming across the (draft) specification for NAT-PMP I've been almost in love with the absurdly simple NAT port mapping protocol. The unfortunate downside is that NAT-PMP isn't well supported except on Airport base stations, one of which I recently acquired, so as is customary when I welcome a new device into my apartment, I had to write some code for it. I hate to sound like a fan-boy, but like Bonjour, Stuart Cheshire's other baby, NAT-PMP is sickeningly simple. A series of straight-forward UDP packets is all that is needed for a local (inside the NAT) device to create a mapping on the NAT device itself.
+
+To exhibit this functionality, I've created a sample application that uses a tiny little library I built to create and destroy mappings on the NAT-PMP enabled device. The application is called "PmpMyApp" and can be found on GitHub
+
+The code contained in pmpmapper.c has three basic functions that perform the functionalities that NAT-PMP provides, and are aptly named as well:
+struct sockaddr_in *pmp_get_public();
+pmp_map_response_t *pmp_create_map(uint8_t type, uint16_t privateport, uint16_t publicport, uint32_t lifetime);
+pmp_map_response_t *pmp_destroy_map(uint8_t type, uint16_t privateport);

+
+The pmp_get_public() function returns a pointer to a sockaddr_in that contains the external IP address of the NAT device. The pmp_create_map() function does the heavy-lifting, in that it will create the actual mapping (and the deletion too, with a zero lifetime) and will tell the NAT device to persist the mapping for the number of seconds specified with the lifetime argument. The code is commented so it should be very easy to get a feel for how to use the pmpmapper functions, a good place to start is by examining how it's used in the PmpMyApp source. (Note: All of the PmpMyApp code is BSD licensed) diff --git a/_posts/2007-02-09-internal-server-error.html b/_posts/2007-02-09-internal-server-error.html new file mode 100644 index 0000000..c2af2d2 --- /dev/null +++ b/_posts/2007-02-09-internal-server-error.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Internal Server Error +tags: +- Miscellaneous +created: 1171064999 +--- +You may have noticed recently (hopefully not) this site kicking back a simple, plain-text error: An internal server error occurred. Please try again later
+
+The root of this issue was some scripts inside Drupal simply taking too long and timing out, which I believe, has been resolved by enabling e-accelerator in the site's .htaccess file. I'm hoping that has killed the errors, if it hasn't feel free to drop me a line at tyler@bleepsoft.com and let me know the site is broke again :)
+
+Special thanks to Dave at GeekISP of course for being accommodating with my silly complaints. diff --git a/_posts/2007-02-14-terminally-ill.html b/_posts/2007-02-14-terminally-ill.html new file mode 100644 index 0000000..1379ddd --- /dev/null +++ b/_posts/2007-02-14-terminally-ill.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Terminally ill +tags: +- Miscellaneous +created: 1171450821 +--- +There's really not a decent explanation for this, other than Terminal.app went bonkers. I've seen this happen before to some extent if you have an NSWindow that has transparent background, but a partial background drawing like here is something completely new.
+
+This sort of weird nonsense only happens to me.
+
+If the video link isn't showing up in the RSS feed, here it is for you. diff --git a/_posts/2007-02-16-in-the-news-last-week-drm.html b/_posts/2007-02-16-in-the-news-last-week-drm.html new file mode 100644 index 0000000..6302247 --- /dev/null +++ b/_posts/2007-02-16-in-the-news-last-week-drm.html @@ -0,0 +1,10 @@ +--- +layout: post +title: "In the news last week: DRM" +tags: +- Opinion +created: 1171656501 +--- +DRM made news thanks to Steve Jobs' open letter. I don't really have anything to say that hasn't been said already, but I found an article today that sums it up pretty nicely.
+
+Of course I don't use iTunes much anyway, I'd much rather buy-and-rip CDs. I guess I'm doing just what Bill Gates says. diff --git a/_posts/2007-02-19-twitterbot-basic-http-authentication-errors.html b/_posts/2007-02-19-twitterbot-basic-http-authentication-errors.html new file mode 100644 index 0000000..7642c62 --- /dev/null +++ b/_posts/2007-02-19-twitterbot-basic-http-authentication-errors.html @@ -0,0 +1,19 @@ +--- +layout: post +title: Twitterbot Basic HTTP Authentication Errors +tags: +- Mono +created: 1171880681 +--- +As some of you may have noticed, the Twitterbot seems to always fail to authenticate properly against twitter's basic HTTP authentication prompt when run from Mono 1.2.3 on Mac OS X. This was neither an error in twitter's webservice (I have been running my bots from a FreeBSD machine with Mono 1.1.13 for some time now) nor in the Twitterbot code itself, but rather a regression in the System.Net.Configuration namespace, I'll let "kangaroo" (the developer who found and fixed the bug) explain:
+
+13:03 <@kangaroo> ok its falling in to DoPreAuth
+13:04 <@kangaroo> Authorization auth = AuthenticationManager.PreAuthenticate (this, creds);
+13:04 <@kangaroo> thats returning null
+14:04 <@kangaroo> got a patch for you
+14:04 < rtyler> to compile into mono or my app?
+14:05 <@kangaroo> http://monoport.com/1821
+14:05 <@kangaroo> mono
+14:05 <@kangaroo> you need a new System.dll

+
+The patch should make it into the next bug-fix release of Mono (1.2.3.2) and should allow you to once again run Twitterbot on Mac OS X, otherwise you might want to try another machine, or step back a few point releases if it's that critical to have you Twitterbot running. diff --git a/_posts/2007-02-21-completely-off-topic.html b/_posts/2007-02-21-completely-off-topic.html new file mode 100644 index 0000000..8ff9420 --- /dev/null +++ b/_posts/2007-02-21-completely-off-topic.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Completely Off-topic +tags: +- Opinion +created: 1172071359 +--- +I try to separate my political leanings from my work, especially when it comes to blogging, etc, but this is too much. The House passed non-binding resolution on Iraq which is the latest in the long list of completely neutered actions by our legislative branch.
+
+It's not a question of "supporting the troops" or "protecting the children" or "stopping terrorism" if you don't have the spine to keep the executive branch in check (what a quaint idea) resign so we can find somebody who isn't an absolute coward. Regardless of which side you lean towards politically, any executive branch that's given carte blanche is dangerous. diff --git a/_posts/2007-02-23-im-shocked.html b/_posts/2007-02-23-im-shocked.html new file mode 100644 index 0000000..72f4e66 --- /dev/null +++ b/_posts/2007-02-23-im-shocked.html @@ -0,0 +1,10 @@ +--- +layout: post +title: I'm Shocked +tags: +- Opinion +created: 1172247233 +--- +I'm shocked that anything as simple as a music download site offering popular music (not major label stuff, but still some high profile artists) in unprotected mp3 files could be done so poorly. Seriously, how crappy must that system be if they have to force a .wma extension onto the mp3s? If they have a non-ActiveX download setup what's the deal with Mac downloads? How hard is it to have a properly descriptive error message for Mac users?
+
+I can't even come up with words to describe how poorly they've done this. Has nobody involved with this mess ever actually thought of testing the site? diff --git a/_posts/2007-03-02-the-visual-basic-stigma.html b/_posts/2007-03-02-the-visual-basic-stigma.html new file mode 100644 index 0000000..cd39def --- /dev/null +++ b/_posts/2007-03-02-the-visual-basic-stigma.html @@ -0,0 +1,14 @@ +--- +layout: post +title: The Visual Basic Stigma +tags: +- Software Development +created: 1172870489 +--- +I recently recommended to a client that a project they were looking to have done in Visual Basic should be done in C#, but I found that it wasn't as easy as I thought it would be to articulate *why* I was recommending that. The easy answer was because I'm a C programmer at heart and C# is what I'm into these days, but given that the bulk of my professional experience in the last 4-years has been in Visual Basic, and that both C# and current versions of VB are fairly interchangeable for someone familiar with both, that reasoning seemed a bit weak.
+
+I came across this article on programming in Visual Basic and it really rings true to me. I don't enjoy programming in VB quite as much, but at the end of the day I'll look back and realize that it made almost no difference to me at all. I have the same embarrassment about programming in VB that the author talks about on occasion, and I have the same thing with Windows programming in general in comparison to C on Unix-like systems.
+
+I also thought the wikipedia article comparing VB and C# had a pretty interesting section on the VB and C# programming cultures. I know that my first project in VB6 was terrible. I had a fairly strong C on Unix programming mindset and even though the concepts should have been the same it took me a long time to figure out how to adapt what I knew about programming "The Right Way" to that environment. I can't honestly say for certain that was the fault of VB, it may have been my unfamiliarity with doing graphical user interfaces, but to this day it still feels more natural to follow good programming practice in C#.
+
+Speaking of that first VB program, I'm inclined to agree that, given enough time I will think my old code was crap when I look back ... diff --git a/_posts/2007-03-06-barcamp-austin-again.html b/_posts/2007-03-06-barcamp-austin-again.html new file mode 100644 index 0000000..3bf678b --- /dev/null +++ b/_posts/2007-03-06-barcamp-austin-again.html @@ -0,0 +1,8 @@ +--- +layout: post +title: BarCamp Austin, Again +tags: +- Software Development +created: 1173208449 +--- +It seems that I might be going to BarCamp Austin2 this next weekend. I'll be presenting on "the importance of webservices" or something about as exciting. I'm still working on my presentation (ick) and I'm going to try to incorporate as many useless buzzwords, pot-shots at George W. Bush, and cult movie references as possible. I'm not sure how it's going to be, at least 41% more exciting than my last BarCamp presentation on Cocoa hacking and why everybody should, but still 12% less turtle-neck than a Steve Jobs keynote. I'll be sure to post my slides and hopefully a video or audio of the presentation later, but we'll see if I can make a presentation worth posting first. diff --git a/_posts/2007-03-11-teeny-tiny-updates.html b/_posts/2007-03-11-teeny-tiny-updates.html new file mode 100644 index 0000000..a5b1d17 --- /dev/null +++ b/_posts/2007-03-11-teeny-tiny-updates.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Teeny-tiny Updates +tags: +- Miscellaneous +created: 1173665916 +--- +If you look at the sidebar, you might notice a new "Twitter" column has been added, which I intend on using to keep a good aggregated feed of the unethical blogger users' twitters. I have also added a new category "Literature" which I hope I'll be able to populate soon enough with book reviews, and other miscellaneous bits of criticism and commentary.
+
+I've noticed a few registered users that haven't commented or blogged about anything yet, which I hope they will remedy soon enough as I'd really like to sucker more folks into using the site or "blogging unethically" (har, har). diff --git a/_posts/2007-03-12-soldiers-of-fortune.html b/_posts/2007-03-12-soldiers-of-fortune.html new file mode 100644 index 0000000..5a5c6b7 --- /dev/null +++ b/_posts/2007-03-12-soldiers-of-fortune.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Soldiers of Fortune +tags: +- Opinion +created: 1173688552 +--- +I am watching this show on "the long war [on terror]" ("Our childrens' childrens' war") which is covering private contracting firms that are working with the military, specifically Blackwater USA which is seriously one of the scariest companies I've read about in a while. I'm not a fan of our ever growing federal government, but turns out they're dutifully employing mercenaries in a war on an already questionable moral foundation? Fun.
+
+There is no question that we're involved in a global war of ideologies, but we're walking a fine line between that and a crusade, and mercenaries only sweeten the pot. diff --git a/_posts/2007-03-14-a-review-the-metamorphosis.html b/_posts/2007-03-14-a-review-the-metamorphosis.html new file mode 100644 index 0000000..5821a68 --- /dev/null +++ b/_posts/2007-03-14-a-review-the-metamorphosis.html @@ -0,0 +1,18 @@ +--- +layout: post +title: "A Review: The Metamorphosis" +tags: +- Literature +created: 1173912206 +--- +Imagine yourself awaking to find that you simply aren’t; aren’t yourself that is. Such is the situation that Gregor Samsa, Kafka’s unfortunate “victim” in The Metamorphosis, finds himself in. Gregor awakens one morning from “unsettling dreams” to find that “he” has transformed from a (presumably) twenty-something traveling salesman into a beetle-like vermin. The story of Gregor’s unfortunate predicament begins with the climax, the transformation, and slowly descends from there to Gregor’s ultimate demise. Unlike some of the past philosophers I have read who tend to write essays or prose, Kafka’s insight takes the form of a parable of the conflicts of Gregor Samsa’s internal “self” with his external self and surroundings. This mask of fiction concealing the philosophical musings of the story makes them quite difficult to spot upon initial inspection (in my opinion), making a second read through or browsing of academic articles on the piece if not a necessity, highly recommended.
+
+ Kafka’s splitting insight is not for the faint of heart, at the same time that Gregor is lamenting his condition (specifically when he, as the vermin, attempts to get out of bed) he is also pleased with his escape from some of his “human” responsibilities that have shackled him to a miserable existence as a traveling salesman working in a soul-grinding firm paying off a debt owed his employer by his parents. As the story progresses, unbeknownst to Gregor, the reader is shown more to convince them that the family was more akin to vermin than Gregor may have transformed into. In Gregor’s early reflection he cites the importance of his work to help support his family and the necessity of his sacrifice (of freedom) to work in the firm that his parents are indebted to. As time wears on however, and Gregor is incapable of working (contrary to popular belief, vermin don’t sell too many Encyclopedia’s door to door) his father attains a job as a bank-messenger and his family lets out one of the rooms, in the spacious apartment Gregor provided, to three “roomers” indicating that Gregor’s degrading sacrifice at the firm may not have been necessary at all, ergo the Samsas may have been the vermin feeding off of Gregor instead of the inverse.
+
+ The issue of food, or rather nourishment, is another interesting theme Kafka adds into the already complex literary-gumbo of The Metamorphosis. The first day of Gregor’s transformation he is offered some of his favorite food by his sister Grete (we can assume she is trying to help cure what is perceived as an illness by Gregor’s family as opposed to the transformation it truly is) to which he refuses and scurries back under the couch to which he oft finds refuge. As the story wears on Grete slowly discovers that Gregor, the new Gregor, prefers what essentially boils down to table-scraps and garbage, but this is still not enough to “nourish” Gregor. He consistently complains (in thought) about a longing for nourishment, a lack of fulfillment of some sort that is finally placated one day when he hears the beautiful violin music Grete has taken to playing for the three “roomers.” This still doesn’t seem to be enough to “nourish” Gregor in the sense that he still longs for something, a certain something that he finds the fateful morning when he exhales his last breath with the rising morning sun (finding contentment, or fulfillment, with death is an interesting point Kafka raises for me after reading a few essays on both Absurdism and Existentialism).
+
+ Slowly Gregor becomes more of a curse in the eyes of the rest of the Samsas instead of a son with an inordinate amount of legs. When Gregor dies, it is a release in more than one sense. While Kafka cites most immediately the lifting of the burden from the Samsas’ backs, it is apparent that Gregor has also been relinquished of his conflicts with the firm, his parents, and most importantly, himself; with his death Gregor is finally set free, just as he had hoped to become after repaying his parents’ debt to his employer. While there is some academic discussion on whether the metamorphosis itself relinquished Gregor from some of his bourgeois-responsibilities, it is without a doubt that in his death he finds the freedom for which he had longed. An interesting point was raised in one of the analysis of the piece that pointed out that maybe the parents were truly the “blood-sucking vermin” with regards to the last few pages of The Metamorphosis, when the parents turn to Grete, the daughter, and prepare her to be married off to a good husband, pointing out that with Gregor (the initial host) gone they must switch to a new one, Grete.
+
+ Unlike most stories, there are no likable characters in The Metamorphosis, as Gregor continues to act more and more like the “vermin” he has transformed into and his parents react negatively to their son’s predicament, the reader is left without solace. Although Gregor eventually attains the freedom he had so desired, he is still a poor choice for the “hero” of Kafka’s work. That is not to say however, that there are no identifiable characters; Gregor typifies a lot of the internal struggle most found themselves in, in the whirlwind of capitalist growth in the early 20th century along with the lessening of the importance of the individual; both very fundamental conflicts most (including Kafka) found/find themselves in, especially in western culture. Simultaneously many can identify with the denial the Samsas find themselves in with their disgust of the vermin that comes to inhabit Gregor’s room. The Metamorphosis is widely regarded as one of, if not the, most important pieces of literature Kafka ever had published, but is a difficult pill to swallow and at the same time a worthwhile exposure of the conflict that Kafka, and many others, have struggled with.
+
+ I highly recommend, if you have not already read The Metamorphosis, purchasing the “Bantam Classics” version of The Metamorphosis which includes over one hundred pages of critical essays and academic discussions on Kafka’s masterpiece. Translator (and PhD) Stanley Corngold made a fantastic selection of analytic essays on the story ranging from incisive psychological analysis of Gregor’s transformation to the oedipal conflict and reversal of roles between the father and son that constantly lurks beneath the surface. Dutifully reading all of the explanatory notes on the text as well as the critical essays that Corngold included in the book drive the point firmly into place, Kafka was a brilliant writer and, like his tragic heroes, was a tormented individual who may have found solace in the escape that his death (from tuberculosis) ultimately offered him. diff --git a/_posts/2007-03-18-perforce-on-the-road-p4tunnel.html b/_posts/2007-03-18-perforce-on-the-road-p4tunnel.html new file mode 100644 index 0000000..eb2aff7 --- /dev/null +++ b/_posts/2007-03-18-perforce-on-the-road-p4tunnel.html @@ -0,0 +1,20 @@ +--- +layout: post +title: Perforce On The Road, p4tunnel +tags: +- Software Development +created: 1174220443 +--- +The best means of accessing a Perforce repository is over an SSH tunnel, to access my home repository while I'm on the road I use a handy-dandy little script to do a few things:
+The proxy is more so I can have some semblance of security while on open wireless networks, the rest should be self explanatory.
+
+Anyways, straight from /usr/local/bin, here's my p4tunnel script:
+#!/bin/sh
+
+HOST="yourhost.com"
+PROXY_PORT="8081"
+
+echo "===> Creating tunnel to ${HOST} with a SOCK5 proxy on port ${PROXY_PORT}"
+
+ssh ${HOST} -L 1666:localhost:1666 -L 8080:localhost:8080 -D ${PROXY_PORT} -C
+
diff --git a/_posts/2007-03-22-im-seriously-famous.html b/_posts/2007-03-22-im-seriously-famous.html new file mode 100644 index 0000000..1ef5c49 --- /dev/null +++ b/_posts/2007-03-22-im-seriously-famous.html @@ -0,0 +1,8 @@ +--- +layout: post +title: I'm Seriously Famous +tags: +- Mono +created: 1174576173 +--- +Okay, maybe not. But as it turns out, the Twitterbot however, is! A short 5-minute guide to setting up the Twitterbot has been created over here on the engtech blog, and does a far better job of documenting how to get started with the Twitterbot than I ever wanted to. With the help of a Twitterbot, twitter can be a great news-to-SMS gateway, or damn near anything else you can think of doing with about 140 characters worth of content either IMed or SMSed to you. diff --git a/_posts/2007-03-31-in-the-fifth-dimension.html b/_posts/2007-03-31-in-the-fifth-dimension.html new file mode 100644 index 0000000..80cc69a --- /dev/null +++ b/_posts/2007-03-31-in-the-fifth-dimension.html @@ -0,0 +1,13 @@ +--- +layout: post +title: In the fifth dimension +tags: +- Slide +- Miscellaneous +created: 1175396447 +--- +I figured I might as well come out and say it, things have been changing quite rapidly lately, thus the latency on blog postings. In the past two weeks, I have accepted a job offer, moved to San Francisco, and started working at Slide, Inc. with a friend of mine David Young (and quite a few other folks who are prime friend-candidates).
+
+I'm not sure yet how this is going to affect my Mac (development) musings, but what I do know is that in the coming weeks Python and I are going to become best of friends...or I'm going to kill it.
+
+There's still quite a few things in the pipeline, such as an update to the Twitterbot, and Twitterer, a customized version of Sparkle, and of course, Emission. I hope that the dust settles soon so I can return to wasting endless amounts of time blogging and hacking on open source projects, but that remains to be seen. diff --git a/_posts/2007-04-11-cocoaheads-silicon-valley.html b/_posts/2007-04-11-cocoaheads-silicon-valley.html new file mode 100644 index 0000000..f34caaf --- /dev/null +++ b/_posts/2007-04-11-cocoaheads-silicon-valley.html @@ -0,0 +1,12 @@ +--- +layout: post +title: CocoaHeads Silicon Valley +tags: +- Cocoa +created: 1176357251 +--- +Scott Stevenson beat me to the punch in announcing it, but I might as well reflect the sentiment and invite you all (even those of you who actually don't live in Silicon Valley) to come out to Cupertino tomorrow (thursday) night to see if I can actually pull off a Windows-esque presentation in front of a room full of Mac developers.
+
+I will be discussing a lot of the latest developments in .NET 3.0 and Visual Studio 2005 and contrasting them where appropriate to the state of Mac development with Xcode, Cocoa, Objective-C and all the other niceties that Leopard's developer tools offer. If possible I will also try to work in a bit about Mono as another alternative in the sea of options for developers these days.
+
+I'll make sure that I either post my slides to my flickr stream or the PDF of the slides to this blog after the fact. If I don't however post before Saturday that means I've probably been beaten up and left for dead by a room full of angry Mac developers. diff --git a/_posts/2007-04-21-city-of-lost-boys.html b/_posts/2007-04-21-city-of-lost-boys.html new file mode 100644 index 0000000..164521c --- /dev/null +++ b/_posts/2007-04-21-city-of-lost-boys.html @@ -0,0 +1,14 @@ +--- +layout: post +title: City of Lost Boys +tags: +- Opinion +created: 1177201910 +--- +I have struggled to characterize the city of San Francisco ever since first coming out here for a job interview almost a year ago. The city escapes generalization because of the sheer magnitude of intermixing of races, cultures and economic classes, regardless I still am constantly fascinated by San Francisco (that and +
+Despite the obvious age differential between some of my coworkers, and the different types of people that I meet either walking down the street or into a bar, I feel amongst my peers. It is uncanny to come from a place like Texas where the lines between young and old are drawn firmly in the dry, cracking soil, to a place like this where the more traditional boundaries between people have deteriorated. As a weird karmic side-effect, almost everybody seems to be perpetually stuck in their mid-to-late twenties.
+
+The youthful exuberance that floods over most of the bay area, and Silicon Valley, seem to be one of the many reasons why the topsoil is so welcoming to startups. Like most starry-eyed young people, not yet jaded by the harsh realities of an unforgiving world, so many people here have a dream to strike it rich. Unfortunately, like those that came to this part of California so long ago for the gold contained in the hills, almost nobody will strike gold. But just like birthday presents to your grandmother, it's the thought that counts.
+
+The perpetual optimism of San Francisco has made it the butt of numerous jokes but also the target of many envious eyes and in general a fun place to be. While it is very possible that
Buzz might be (temporarily) leaving the insanity, I'm thrilled to join in just the same. diff --git a/_posts/2007-04-25-choosing-a-platform-windows-and-linux.html b/_posts/2007-04-25-choosing-a-platform-windows-and-linux.html new file mode 100644 index 0000000..7b68a95 --- /dev/null +++ b/_posts/2007-04-25-choosing-a-platform-windows-and-linux.html @@ -0,0 +1,30 @@ +--- +layout: post +title: Choosing a platform, Windows and Linux +tags: +- Software Development +created: 1177526955 +--- +Came across an article through slashdot (I should almost template that intro) that presents the opinion that Microsoft wins over developers by not offering the wide variety of development tools for Windows that are available on Linux. I've got quite a bit of insight on this topic, and I'll get to that in the context of some quotes from the article, but let me start with one thing I think the author has absolutely right.
+
+Every time I thought I was going to be stuck, there were a dozen articles explaining how to do exactly what I needed to do, with sample code that was up to date with the versions of the software I was using, and that actually related to the problem I was trying to solve.
+
+There are always cases where you end up thinking "this example isn't what I want" on any platform, but by and large the material you can find on MSDN is second to only the OpenBSD man pages in documentation that I've found useful and usable. There is also a huge amount of additional information online for .NET programming (Code Project comes to mind). This is the only part of the article I can say I strongly agree with.
+
+
+
+I thought I’d share a few thoughts on why people seem to be drawn to the Microsoft Way.
+
+The reason I do Windows development is because it has been the platform available for every job I've had since 2001. When I was a co-op student working with industrial control systems I did PLC programming and the manufacturers provided Windows tools to work with. When I started my current day job they were looking for a nice Windows replacement for an old DOS program. I do a lot of quick data acquisition setup for experiments and I typically grab a Windows laptop and one of a pile of cheap PCMCIA data acquisition cards that we have lying around that don't have Linux drivers. I'm doing some freelance application development for a medium sized company which is an all-Windows shop. None of these reasons have anything to do with lack of choice, and I suspect my experience is fairly similar to a lot of Windows developers.
+
+Microsoft offers the certainty of no choices. Choice isn’t always good
+
+There is no lack of choice on Windows. Most of the options available for Linux also apply to Windows. I can do a project in Visual Basic, C, C#, C++, Java, Ruby, Python or Perl, or choose Win32, .NET, Mono, GTK+, Qt, WxWidgets, or nearly anything else under the sun. I will admit this may or may not apply as much to web development, since that is an area I generally stay away from, but saying there is no choice for development on Windows is simply not true. Just because there is an obvious preference doesn't mean the choice doesn't exist. I should state explicitly that I won't consider only products offered by Microsoft to be the same as choices for programming on Windows. Just because the OS provider is also a tool provider does not preclude the existence or use of other tools.
+
+The astute among you may have noticed I've sidestepped the choice of Linux distributions, and I did so intentionally. I consider it prerequisite for becoming a developer on either platform to be a user of that platform. If you are talking about converting Windows developers to Linux developers they first have to be Linux users, at least to some level of proficiency, and vice versa. The distribution choice is much relevant to users than to developers.
+
+The takeaway I get from this entire line of reasoning is this: that somehow, someway, we need to start doing some winnowing
+
+What I really think about why developers program on and for Windows instead of Linux is that Windows is still the dominant environment for most of these developers, exactly the reasons I gave for my own programming on Windows. I've done some Linux programming at my day job in addition to my Windows programming. The longer I'm here the more I'll do and the less dominant Windows will become in this one organizational group. The issue as I see it isn't the quality of the OS or the available development tools, nor is it the number of tools available, it is simply a matter of inertia.
+
+Unfortunately I'm in no position to bring Mac into this discussion, but it'd be great to see some discussion of that as well. diff --git a/_posts/2007-04-29-site-upgrade.html b/_posts/2007-04-29-site-upgrade.html new file mode 100644 index 0000000..62f420a --- /dev/null +++ b/_posts/2007-04-29-site-upgrade.html @@ -0,0 +1,8 @@ +--- +layout: post +title: Site Upgrade +tags: +- Miscellaneous +created: 1177914937 +--- +Just a side note, I upgraded this site to Drupal 5.1 this weekend. I'm not sure if there will be any visible changes besides the obvious theme change, but overall things should work smoother.
diff --git a/_posts/2007-04-30-im-in-ur-phonez.html b/_posts/2007-04-30-im-in-ur-phonez.html new file mode 100644 index 0000000..205eb87 --- /dev/null +++ b/_posts/2007-04-30-im-in-ur-phonez.html @@ -0,0 +1,31 @@ +--- +layout: post +title: Im in ur phonez +tags: +- Software Development +created: 1177929000 +--- +In a weird sort of cosmic coincidence, I happened to be researching some of the mobile developer tools available after a weekend of toying with the Windows Mobile 5.0 framework (which is pretty cool by itself) within Visual Studio 2005, and while I was doinking around on the internet, I came across Nokia's Open C platform. By itself Open C is pretty impressive, but after digging around some more the entire Nokia development platform is certainly not what I expected. Quicker than you can say OMIGOSHSYMBIANSUCKS I found myself immersed in whitepapers and code all targetted at developing for the gigantic mobile market.
+
+Before I dive into Windows Mobile, I must first disclaim that I'm a relatively big fan of the .NET platform, usually by means of the Mono Project. The .NET Compact Framework (referred to as .NET CF) is merely an extension of the .NET framework meaning you can use a lot of the same code and know-how for developing Windows Forms interfaces for Windows Mobile enabled smart phones as well as already existing code for the backend of your embedded application (there is also an interesting extension on .NET CF available at OpenNETCF). The power of this sort of portability should go without saying, but why not say it anyways? Because of .NET CF I can write the same services and network interoperability code that can be used in my desktop application and take it straight over to my embedded application with zero or minimal hassle (optimizing your bloated desktop code for an embedded application is always a good idea). In addition the normal trimmings of .NET, the Microsoft.WindowsMobile namespace offers a myriad of device-specific APIs for sending messages, interacting with a smart phone's contacts, calendaring, camera, media player and all the rest that comes stock on modern Windows smart phones. With a saturday afternoon spent in an empty office pouring over API documentation and hacking furioiusly on some test applications, I could send messages, take pictures, play with contact information and do some G-rated damage to a Windows smart phone (Rory Blythe's screencasts on the subject are a fantastic resource as well). The obvious downside is that it is Windows (Mobile) and that the consumers that tend to own Windows smart phones tend to be business types who walk around with suits and have the word "synergy" tattooed on their buttocks. Not my cup of tea, nor my target market. Next!
+
+On the other side of the world to Nokia. Nokia's S90 platform is expansive to say the least, and runs on quite a few devices as well. While I'm certainly not "in the biz" with regards to mobile device development, the sheer size of the entire S90 platform and the varying means of using it surprised me. Nokia's S90 platform builds on top of Symbian (ick!) which, fortunately, powers more than half the mobile market but, unfortunately, sucks. You know it, I know it, even Symbian Ltd. knows it, so let's stop pretending. With regards to Nokia's developer tools though, they offer a relatively stock Java API for developers to use (eSWT? gross!), their Carbide C++ framework which builds on top of Symbian's own C++ libraries, and even a Python API for their SDKs (the Maemo work is worth a look too). Most interesting to me was their Open C project which borrows some of the best bits and pieces from a few open source projects and brings them to the mobile platform. While Nokia obvious doesn't have a clue with device design they do seem to be with it in terms of the open source world. Open C is built primarily on top of OpenBSD and OpenSSL libraries with a bit of libz and GNOME thrown in there as well.
+
+
+
+
+
+
+
+
+
+
libcOpenBSD
libcryptOpenSSL
libcryptoOpenSSL
libglibGNOME
libmOpenBSD
libpthreadOpenBSD
libsslOpenSSL
libzlibz

+Either somebody at Nokia really wants to piss Theo de Raadt off, or they have a high opinion of his work! Personally I wouldn't have chose OpenBSD, but their unwaivering committment to the "absolutely open source" ideology seems to make their projects an ideal fishing ground for commercial ventures who are really looking to stand atop the shoulders of giants.
+
+Even Blackberry has tools readily available for developers, but I can't say I've researched them too much. I'm pretty sure that people who develop applications for Blackberries go sterile or get cast outside the universe at armageddon or something.
+
+The device development world is riper than ever for some killer application development, the Opera guys seem to get it (they use Qtopia from what I can tell), the Google guys seem to get it, where are the smaller shops? If the iPhone turns out to have some sort of "Cocoa Mobile Edition" (a poor ripoff on my part from JavaME) then I think we will see an influx of Mac independent developers to the iPhone as a platform all battling for a tiny niche of a niche just as they are on the Mac platform. What about the entire rest of the mobile market?
+
+With the growing ubiquity of the mobile devices market the opportunity for independent developers to write killer applications for Windows Mobile, Symbian, embedded Linuxes, and possibily the iPhone, is more attainable than ever. The tools to develop are either free or cheap, and you don't necessarily need to be a hero-programmer to develop applications for these embedded systems anymore either.
+
+That said, Brent, I'll buy you a beer when I see NetNewsWire iPhone Edition. diff --git a/_posts/2007-04-30-windows-eye-for-the-cocoa-guy.html b/_posts/2007-04-30-windows-eye-for-the-cocoa-guy.html new file mode 100644 index 0000000..0c14354 --- /dev/null +++ b/_posts/2007-04-30-windows-eye-for-the-cocoa-guy.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Windows Eye for the Cocoa Guy +tags: +- Software Development +created: 1177980477 +--- +I finally got around to posting the slides for my presentation at the april CocoaHeads Silicon Valley meeting. The motivation for the talk was to introduce my fellow Mac developer colleagues to some of the goods and bads of modern Windows develolpment. One of the primary points I tried to bring across was that Apple doesn't yet have an IDE that I would put on the same level as Visual Studio 2005, which is arguably one of the most complex and complete IDEs out there (with Eclipse in a close second, in my opinion). Xcode (and friends) in Leopard are very close to taking the throne away from Microsoft in that respect, but there are still a few things that are holding them back, such as gdb, which is still a relatively primitive debugger.
+
+With .NET 3.0 however, Microsoft is fighting back hard for the make-believe "most cool framework" award, with additions like Windows Presentation Foundation (formerly called Avalon). The downside of a lot of .NET 3.0 however is Microsoft's incessant love of all things XML, as WPF is based primarily on XAML which is grotesque on a good day.
+
+Unfortunately I can't repeat my entire presentation, and I didn't want to post my presenter notes, but hopefully you can ascertain enough information from my presentation.
+
+Windows Eye for the Cocoa Guy diff --git a/_posts/2007-05-01-twitterbot-recap.html b/_posts/2007-05-01-twitterbot-recap.html new file mode 100644 index 0000000..265498a --- /dev/null +++ b/_posts/2007-05-01-twitterbot-recap.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Twitterbot Recap +tags: +- Mono +created: 1178062136 +--- +While trudging through some comment spam, I came across some older comments that I felt needed recapping in this post about my Twitterbot. An anonymous poster had asked about some issues with Mono on Mac OS X returning 401 Unauthorized errors when using HTTP authentication within the Twitterbot. The issue was fixed relatively quickly after I brought it to the attention of some of the Mono developers, and the fix will be included in Mono 1.2.4 (preview available).
+
+There shouldn't be any more issues with regards to running the Twitterbot on any platform supported by Mono now. In the future I would also like to add better history and duplicate checking by using either a flat-file datasource or one that feeds on a database, but the latter would probably make the program far more complex and difficult to use. Ideas, as usual, are always welcome. diff --git a/_posts/2007-05-03-windows-eye-for-the-cocoa-guy-the-series.html b/_posts/2007-05-03-windows-eye-for-the-cocoa-guy-the-series.html new file mode 100644 index 0000000..9396546 --- /dev/null +++ b/_posts/2007-05-03-windows-eye-for-the-cocoa-guy-the-series.html @@ -0,0 +1,16 @@ +--- +layout: post +title: Windows Eye for the Cocoa Guy, The Series +tags: +- Windows Eye for the Cocoa Guy +created: 1178178004 +--- +After giving the idea a bit of thought and the desire to further alienate myself from my fellow Mac developers (i've noticed the drop in hits when I started mentioning Windows development versus Mac development), I've decided to turn "Windows Eye for the Cocoa Guy" into a series of posts detailing some of the architectural and semantical differences between developing applications in Cocoa on Mac OS X, and .NET on Windows. I've found myself lamenting my performance at the CocoaHeads Silicon Valley meeting because I felt like I either didn't have the time, or carelessly glossed over a lot of details that should have been mentioned. I was cramped for time before the presentation as well so I couldn't prepare enough (see: any) code samples or demos beforehand to pimp out some features of .NET or Visual Studio that are still lacking in Objective-C 2.0 and Xcode.
+
+I'm still crafting some of my points to make in upcoming posts, by user request (here) I intend to cover XAML in general (as well as Silverlight) contrasted against the "freeze-dried objects" model that Interface Builder, with a dash of Windows Forms Designer too.
+
+Also on the yellow notepad of bloggery, I would like to touch on the differences between C# Events in how they're handled and created versus the less than popular NSNotification way of doing events in Cocoa. Major differences also exist between the ways of doing .NET asynchronous I/O compared to Cocoa "asynchronous I/O," in quotes because, as much as I love the runloop, scheduling tasks to the runloop doesn't count in my opinion as asynchronous I/O [1].
+
+While I enjoy being slightly provacative, I'm really aiming to be pelted with rocks at WWDC. You'll be able to find me sitting at a table all by myself outside Moscone. Regardless of the certain doom I will face posting about Windows development from a Mac developer perspective, I hope the series will at the very least be interesting and educational.
+
+1. The lack of "real" asynchronous calls in Cocoa bugs the hell out of me. Darwin is one of the few operating systems I've developed on with functions like aio_read(2) and friends. Besides scheduling a call on the runloop, you can spawn a worker thread yourself, both options don't take advantage of the aio_* functions which just...sucks. diff --git a/_posts/2007-05-06-my-guilty-pleasure.html b/_posts/2007-05-06-my-guilty-pleasure.html new file mode 100644 index 0000000..c59735e --- /dev/null +++ b/_posts/2007-05-06-my-guilty-pleasure.html @@ -0,0 +1,14 @@ +--- +layout: post +title: My Guilty Pleasure +tags: +- Media +created: 1178483600 +--- +Reminiscent of Michael Bolton, Peter's side-kick, from Office Space I find myself indulging more and more in one of my numerous, geeky, guilty pleasures. Hip-hop. Not just any hip-hop, dirty south hip-hop. Sideways-sittin', wood-grain grippin', screwed and chopped, smoked-out dirty south hip-hop. One of the few exports that I'm proud Texas has produced (ahem) in the last ten or fifteen years. Texas hip-hop in general is a weird mix between the "roots" of rap in that a lot of it focuses on the ghettoes and hardships the artist has experienced growing up in places like Houston's 5th ward, to the "more modern" hip-hop which has become more and more about women, cash, and cars; mainstays of any good hyper-masculine artform.
+
+There. Now you all know. I'm a sandals-wearing, Volkswagen driving, computer programming, book reading, hip-hop fan. Chances are, if I'm driving somewhere, in between points A and B, I'm bumping in my blue Jetta to some David Banner, Paul Wall, Mike Jones, Slim Thug and even some good old Geto Boys. Forget the east coast-west coast nonsense, with the exception of artists like Mos Def, the new home for hip-hop is in the south.
+
+While working, I listen to a few internet radio stations whose collections of hip-hop far exceed my own. In the past I have listened to a great bit of Smoothbeats.com which is a more traditional hip-hop and rap station, but since leaving Texas I find myself listening to Thugzone.com far more. I recommend them both if you're in the same ackward cultural boat that I am, or if you just loves you some hip-hop.
+
+The hip-hop scene has definitely embraced the internet with independent artists like Slim Thug and Mike Jones using it to get their music out to their audiences without relying on rich, prodominently white, record executives to decide which music was more fit for black America. Fortunately for the suburban white kids among us, who have been able to side-step the mainstream media and enjoy the works of artists who may be only from a few miles away but are on the other side of a deep crevasse of social precendence and economic class-structure. diff --git a/_posts/2007-05-10-our-employees-are-our-most-valuable-asset.html b/_posts/2007-05-10-our-employees-are-our-most-valuable-asset.html new file mode 100644 index 0000000..2de474d --- /dev/null +++ b/_posts/2007-05-10-our-employees-are-our-most-valuable-asset.html @@ -0,0 +1,18 @@ +--- +layout: post +title: Our employees are our most valuable asset +tags: +- Slide +- Software Development +created: 1178791890 +--- +Having an epiphany over a two-beer lunch on a Wednesday isn't hard, and if you can't, make it a three-beer lunch. I had one such epiphany today where, as if stars in the mental mockup of the corporate world inside my head, started to come into alignment. It is one thing to release a corporate memo that states 'employees are our biggest asset'"or similarly market-drone-tainted nonsense, it is another thing to try to maintain a state of human resources nirvana where your employees genuinely like each other. In my less than expansive track record as a professional software developer, I've always chose the cut in pay, over dealing with colleagues that I don't like. That is to say, I've always opted for the companies to work for where I really enjoyed working with who I'm working with, regardless of what I've been working on. In the end, it's just code. They're just projects. And none of it really matters if you absolutely abhor your coworkers.
+
+I don't. I enjoy working with who I work with, and if you've followed the constant stream of absolute nonsense from twitter stream it might start to become apparent why I spend so much time at the office (cue suspenseful music). I realized that I'm in the right place over the aforementioned two-beer lunch when I made a reference to a paragraph-long snippet from an ancient page of Jamie Zawinski's and everybody at the table knew exactly what I was talking about (Wednesday, 21 September 1994). The references to Arrested Development, or just the common understanding that we will all make jokes, and often the funnier ones are at each others' expense, all make the office a very enjoyable place, to where you can find yourself getting carried away until the wee hours of the morning. (Did I mention we're hiring?)
+
+The startup atmosphere is certainly refreshing after dealing with smaller companies for so long that just "don't get it" when it comes to balancing between trying to bring products to the market yesterday, slowly grinding employees into either burnout or other companies, and the companies that don't understand you're allowed to think big, even if the payroll is small. It is also harder for companies to grow, while maintaining their "startup" tendencies. Apple seems to be proverbially stuck in the "90 hours and loving it!" mode, while Yahoo! has gone from a Web 1.0 blitzkrieg of products to a slow, lumbering giant that operates in every sense that you'd think a large software company, with the right hand not knowing exactly what that pesky left hand is doing over there. Google just has too much damn money. Microsoft is disintegrating into the IBM of old, and all of them fail to capture the fun and excitement of the startup, even though some have tried so valiantly to replicate it[1].
+
+At the end of the day, the majority of us (Americans) need to find some sense of satisfaction and identity in what we do for a living, the importance of who you work with for the majority of your day is the difference between waking up in the morning and dreading what is to come, and waking up in the morning looking forward to lunch just so you can cut out of the office and hang out with your coworkers (I was going to fabricate some statistics about heart disease and stress levels, but the well ran dry shortly after that two-beer lunch when I exceeded my quota of bullshit for the day). In any given job interview that I've been on, I've always been measuring them up while they measure me up, asking myself important questions like if I work here:There is little worse (professionally) than ending up on a team, or in a company with people you would try to avoid in public, but on the flip so there is little better (professionally) than ending up on a team, or in a company with people you would come to the office to hang out with even if you didn't have to.
+
+
+[1]: The startup atmosphere seems to thrive around the idea of "make it big or go home." They tend to know that their time is limited so they try to shoot for the stars while they have a chance, some make it there, some burn up on the descent back down. diff --git a/_posts/2007-05-19-sp4mz0r.html b/_posts/2007-05-19-sp4mz0r.html new file mode 100644 index 0000000..8d42c06 --- /dev/null +++ b/_posts/2007-05-19-sp4mz0r.html @@ -0,0 +1,10 @@ +--- +layout: post +title: Sp4mz0r +tags: +- Miscellaneous +created: 1179610398 +--- +After receiving an email a few weeks back about blog spam on my former blog, I decided that I'd go ahead and remove it. About 500 random spam comments later, it's been mostly removed. I'm still wondering if the captcha is that much better for Drupal, or if I've simply not posted anything popular enough to register on the Digg, or O'Reilly blog radars to attract the spam bots? I feel so unloved :)
+
+As a side note, I finally got around to fixing the Drupal mail issue for this site, so if you attempted to register, but never got the confirmation you can request a new password to reset your account. I'm also testing the Twitter Drupal module with this post. Oy. diff --git a/_posts/2007-05-26-conference-season-osbc.html b/_posts/2007-05-26-conference-season-osbc.html new file mode 100644 index 0000000..31a881c --- /dev/null +++ b/_posts/2007-05-26-conference-season-osbc.html @@ -0,0 +1,31 @@ +--- +layout: post +title: "Conference Season: OSBC" +tags: +- Opinion +created: 1180231424 +--- +I was fortunate enough to be able to go to "OSBC" (Open Source Business Conference) during this past week, I didn't exactly have a badge and I didn't register, I walked right in and snooped around since OSBC was hosted at the Palace Hotel on New Montgomery and Market St (a mere two blocks from Slide offices). It was right there, how could I resist? While at OSBC I met up with my good friend whurley to have lunch, meet some folks, and the usual pointing and laughing at the suits scurrying about. After the meeting a few folks and taking in a lot of what was going on, I couldn't help but thinking:
+
+
Shit.

+

+
+They know, they know, they know. Not only do they know, they now use it casually the same way they started to talk about "emerging web technologies", the "services oriented architecture", the "power of viral marketing through the blogosphere", etc.
+
+They are now talking about "leveraging open platforms" and "the convergance of open source and their systems". This has become nothing more than a bullet point on a poorly made PowerPoint presentation, nothing more than another tagline in a corporate press release.
+
+
Shit.

+

+
+It's over now, it was such a fun ride, but it is so over it hurts. Looking at the big companies re-orienting themselves around a more "open source" attitude is almost as painful to watch as last year's State of the Union address. Apple adopted open source out of necessity, Novell adopted open source out of necessity (besides, remember how much Groupware SUCKED?), why are these other companies adopting open source? It's the hip new thing of course!
+
+Overhearing suits talking to one another, blindly curious as to what the others' companies' "open source strategy is" is like nails on the chalkboard of my little open source soul. It is a completely empty thought for them, just as once upon a time they were buzzing about their new "web presence strategy" regardless of whether or not it made sense for "Johnson Toxic Chemicals USA, Inc." to have a web presence, they wanted one so they could checkoff a tally-mark on the "Uninformed Suits Monthly" magazine survey.
+
+If we're lucky they won't corrupt it too much like they did to the internet in the late 90's. whurley's comment "they're here" with regards to the number of lawyers that he came across at OSBC is extra-special scary. It's funny though, just the other week as I was partaking in yet another "GPL vs. MPL vs. BSD" license flamewar, I couldn't help but think: "you know what would make open source better, some more fucking lawyers." The only way I would want lawyers muddling with open source would be if their name was "Johnny Cochran," purely for the entertainment value alone.
+
+Just like everything good that's ever happened, rock music, the Olympics, rap music, hockey, and of course, beer. Open source is about to be commercialized and turned into a commodity by soulless corporations and lawyers.
+
+It was fun while it lasted, I guess.
+
+
Shit.

+
diff --git a/_posts/2007-06-03-almost-there.html b/_posts/2007-06-03-almost-there.html new file mode 100644 index 0000000..343a04d --- /dev/null +++ b/_posts/2007-06-03-almost-there.html @@ -0,0 +1,13 @@ +--- +layout: post +title: Almost There +tags: +- Slide +- Miscellaneous +created: 1180938640 +--- +For the past two weeks I've been in super-mega-extreme stress mode, helping release an insane amount of features, applications, and fuzzy bunnies, which means my miscellaneous hacking time has been consumed by the man. I've got two week old code sitting in my /Software folder waiting to be tested, committed to Subversion and released for my "Windows Eye for the Cocoa Guy" series.
+
+I've casually mentioned to a few friends that we'll catch up when the insanity dies down, to which I get chuckles and "nice knowing you" comments.
+
+You Silicon Valley veterans suck.
diff --git a/_posts/2007-06-08-long-live-the-license-flamewar.html b/_posts/2007-06-08-long-live-the-license-flamewar.html new file mode 100644 index 0000000..9029230 --- /dev/null +++ b/_posts/2007-06-08-long-live-the-license-flamewar.html @@ -0,0 +1,28 @@ +--- +layout: post +title: Long Live the License Flamewar +tags: +- Opinion +created: 1181333669 +--- +It's been far too long since I've lobbed a shell in the direction of a good "discussion" on open source licensing, so thanks whurley. I haven't stood on my soapbox/posted here in a while either, what better opportunity to go off on why I don't think the GPLv3 does anything worthwhile and what I think is wrong with nearly every GPLv3 vs. GPLv2 discussion.
+
+The non-problem that v3 tackles is "tivoization". The concept here is that Tivo takes linux, customizes it, puts it on their set top boxes, makes their customizations available, and locks down the set top boxes you can't change the software running on them. To the first reason at the link I gave, I say "so what". Tivo makes a device that phones home and you can't turn it off. There is no issue modifying the software, as they correctly point out, but you can't make the hardware operate with that modification. I don't think preventing people from repurposing hardware is something that should be pursued in a software license.
+
+They go on to further justify this with a doomsday scenario. The reason it seems far fetched is because it is. The programmable computer is simply not going to disappear. Special purpose computers are being locked down, but that is nothing new. I have a pile of electronics in my home that I can't program and I don't think one of them running Linux should make that any different.
+
+I'll also note that they don't seem to look at a doomsday scenario for the so-called ASP loophole.
+
+The other feature GPLv3 offers that I don't see much value in is the patent provisions. One more weapon in a patent arms race. While I appreciate that things like patent pledges have worked largely as a deterrent to widespread software patent lawsuits, so far, the GPLv3 is applying a small bit of salve to a sore while doing nothing for the disease.
+
+Now I'm going to talk about the argument itself. If we look through the comments
+to the post that I originally linked we can sum them up pretty easily.
+
+
+Thinking that people who disagree with the GPLv3 just need to be educated is wrong. I'm sick of seeing "You don't understand," "Trust in RMS," and "This is just an update" responses. Not every issue is a war to be argued, and not everyone will agree with you. I think you become a zealot when you decide that you are obviously right and there is no room for disagreement. diff --git a/_posts/2007-06-24-insanity.html b/_posts/2007-06-24-insanity.html new file mode 100644 index 0000000..18f08ca --- /dev/null +++ b/_posts/2007-06-24-insanity.html @@ -0,0 +1,25 @@ +--- +layout: post +title: Insanity. +tags: +- Slide +- Software Development +- Facebook +created: 1182691338 +--- +It's been exactly one month since the F8 event (Facebook Platform Launch) changed everything, and it's still going.
+
+Rumor has it that users at some point translate into money, and at some point that money might see my bank account. I'm not holding out hope for this, but it's a novel idea.
+
+Who would of thought that some of the goofiest ideas I've ever implemented would take off?
+
+Here's the differences that I've found:
+The sheer scale of the market on the web is mind-boggling, despite working for a web company, I still stand by Todd Manning's comments of "I hate the web, the web is stupid." It's a fact I accept however, I hate Windows as a development platform, but I'm willing to accept that it's too large of a market to ignore (something the guys at plasq get with both skitch and ComicLife).
+
+Not three months ago my days were filled with C# and now it's all python all the time.
+
+
+I'll sleep when the bubble pops.
+
+
+[1] Just kidding, I cherish every single one of my users like they were my own children, staying up late worrying, wishing it were legal to hit them with a plank of wood diff --git a/_posts/2007-06-26-thriving-in-a-development-vacuum.html b/_posts/2007-06-26-thriving-in-a-development-vacuum.html new file mode 100644 index 0000000..a9444e9 --- /dev/null +++ b/_posts/2007-06-26-thriving-in-a-development-vacuum.html @@ -0,0 +1,20 @@ +--- +layout: post +title: Thriving in a Development Vacuum +tags: +- Software Development +created: 1182879667 +--- +Last week there was a post on Coding Horror about the "Dangers of programming alone". Jeff quotes this article which does a fairly good job of expressing the plight. Programming is not a full-time aspect of my work (at least not now) but when we need an application to do some piece of analysis or run some piece of equipment I am the sole developer. While I can relate to watching myself make those mistakes I don't share the same bleak opinion of being a lone programmer. Over the years I've been slowly figuring out how to make the sole-developer arrangement work.
+
+
+
+I think suggesting that programmer should demand to work with other programmers, as suggested in the Coding Horror post, is a bit extreme. The real requirement is to be able to work in a way that won't drive us insane, whether alone or in a team.
+
+Of course this is all based on my personal position, which doesn't involve programming for all 52 weeks in a year, being constrained to one project for extended periods of time, or distributing my applications to any wide audience. Maybe what I should be writing about is all the reasons I love my job ... diff --git a/_posts/2007-07-04-mono-meet-facebook.html b/_posts/2007-07-04-mono-meet-facebook.html new file mode 100644 index 0000000..517c936 --- /dev/null +++ b/_posts/2007-07-04-mono-meet-facebook.html @@ -0,0 +1,31 @@ +--- +layout: post +title: Mono, meet Facebook +tags: +- Mono +- Slide +- Facebook +created: 1183571295 +--- +Recently I've been developing Facebook applications on behalf of Slide (my employer) using our killer internal frameworks. While this has resulted in an extremely fast turn around from the whiteboard to release and 8 of the most used applications on Facebook with well over 15 million users, it's all in Python, about 100 miles and a "tabs vs. spaces" flamewar away from what I "used" to do, Mono.
+
+Believe it or not, Mono has full ASP.NET 1.1, and a near-complete ASP.NET 2.0 class compatibility (check it out!). Not only that, there's two different ways of hosting a Mono/ASP.NET application, via xsp2 (for development) or with Apache 2 and mod_mono (for production). The only logical progression for a hacker such as myself, was to write a Mono-based Facebook application, and thus Weather# was born.
+
+Development
+Fortunately the pervasiveness of Facebook client libraries is approaching the commonality of Twitter client libraries, mostly because it's a simple REST API, and it's cool. Since somebody already wrote the code, and weaseled it into the Mono Subversion repository (facebook-sharp) I decided to use it instead of rolling my mini API. The code was a bit old, and obtuse to deal with, so I simply incorporated all of the classes into my project, building everything into my web application. Using one of the many SOAP webservices available on xmethods.net, I used the wsdl.exe app to generate my SOAP client stubs (which are always subclasses of System.Web.Services.Protocols.SoapHttpClientProtocol), which left me with only about 150 lines of interface and basic glue code to bring these components together such that on page load:
+The entire project was built in MonoDevelop which has pre-built ASP.NET templates which include customizable build, run and deploy settings for the MonoDevelop build system. When you click "Run" from inside MonoDevelop IDE, it will rebuld the solution, launch your project inside of xsp2 and then open up a new tab in Firefox to the web application. Building/Testing/Deploying is definitely the easiest part of the road to ASP.NET on Mono.
+

+While the ASP.NET Visual Designer is not yet ready for prime time, it's only a minor set back in that you can't drag and drop your web interface together a la Visual Studio .NET, but you have to revert to how most of the web builds their interfaces, with templates and by hand. Given the sheer simplicity of the Weather# interface, this wasn't a major hurdle to overcome.
+
+Deployment
+The only true problem with this near-perfect development setup is the actual public deployment, there are only a few hosts that provide mod_mono hosting as of yet. One of the most beneficial features of Mono however, is the full binary compatiblility with .NET, meaning you can develop your entire web application using the free and open source Mono tools, and then deploy your web application to an IIS ASP.NET server (which are very common in the hosting biz). If you have a colocated server, or a virtual private server, it's trivial to setup mod_mono on your Apache 2 web server with most of the mainstream Linux OSes and *bSD's. With ubuntu, in my case, there's only a few packages to install via Synaptic and then move the configuration over in the /etc/apache2/mods-enabled directory and make sure your configuration is correct. That said, if you're the proud owner of a colocated server it should be trivial to configure everything properly.
+
+Facebook Integration
+Facebook includes a couple key parameters in their calls into your page to present the user your application, such as the fb_sig_user and fb_sig_session_key, both of which you can pass into any Facebook client library to start to have your application querying the Facebook Platform. Weather# only makes this call once to users.getInfo to fetch the location information it needs. You can query for a lot more information if necessary, but for the purposes of this example, fetching the location was as basic as was necessary. The most complex part is setting up your Facebook applications settings in "My Applications", the Weather# information can be found here (opens in a new window). The most important information is in the screenshot, but if you'll note the callback URL settings. They are set to "iframe" for development purposes (and my desire not to open another port in the firewall to my workstation) and are hitting localhost port 8081, which is the local port I configured my MonoDevelop-deployment xsp2 settings to use. If you switch it over to FBML, you will either have to serve up FBML to the canvas page, or an <fb:iframe/>, but both require Facebook being able to contact your callback URL for proxying purposes.
+
+<fb:conclusion/>
+Developing with ASP.NET on Mono is essentially no different than developing with ASP.NET on the stock Microsoft .NET assemblies with the key difference being...no Microsoft .NET assemblies, and no IIS. Meaning, that if you're comfortable with C# or Visual Basic, you can very quickly, and very cheaply develop ASP.NET-based web applications (or web services) and serve them from within your existing LAMP infrastructure. In my opinion, this is one of the best options out right now for current web development, right behind Python; the absolute power of the .NET class libraries is unparalleled, from web controls, to web services, to ADO.NET for data storage, the tools available to the overworked and underpaid developer are worth looking into if you're not already "in the know." mod_mono and xsp2 both run on Mac OS X, Linux, and FreeBSD, and are in the package systems across those platforms (MacPorts, APT, or Ports). MonoDevelop works on Linux and FreeBSD, you can get it working on Mac OS X but it's about as painful as a brazilian bikini wax (erm..so I'm told).
+
+

+Resources
+
diff --git a/_posts/2007-07-10-conference-season-iphonedevcamp.html b/_posts/2007-07-10-conference-season-iphonedevcamp.html new file mode 100644 index 0000000..ece40cf --- /dev/null +++ b/_posts/2007-07-10-conference-season-iphonedevcamp.html @@ -0,0 +1,23 @@ +--- +layout: post +title: "Conference Season: iPhoneDevCamp" +tags: +- Software Development +created: 1184057251 +--- +I showed up late to iPhoneDevCamp, so late it was Saturday evening and I had just enough time to meet up with whurley, blake, and some of the guys that whurley brought from BMC Software before whurley and I went back to Slide's offices to get some devcamp work done for the night. Overall, I had an absolute blast at the event, despite posting the following to twitter before I arrived: "Walking towards iPhoneDevCamp. I feel so 2.0". The premise behind the devcamp was an interesting one, despite royally screwing us developers by trying to spin web technologies as an SDK, a lot of people still banded together to develop web applications that target the iPhone. Not that the iPhone isn't a cool device, but the browser is an absolute crap platform. As so many people have already pointed out, Cocoa rocks, Javascript, not so much.
+
+The Hacks
+The innate suckage of Javascript makes the hacks created by people at the devcamp so much cooler! One of my favorites (that I didn't write of course) was an application that would allow you to remote control your Mac called Telekinesis, followed closely by cooler (and more social) hacks like a flash mob app or the best word processor around for the iPhone, gOffice. In tune with the odd, and usually useless, nature of devcamp hacks, came iSleuth which is both a Mac application and a web application allowing the user to keep an eye on what's happening at the regular Mac while using their mobile one, these guys got extra points for using a real live baby crib during their demo to show how a user could protect their baby, ostensibly with a $2,000 security system.
+
+All in all the (web) applications that were developed were some great hacks, and great examples of developers making due with minimal resources and no API or great developer tools, both of which Apple is usually known for providing.
+
+My Hack
+Despite wearing a staff badge the last one and a half days while I attended the devcamp, I primarily hacked on an idea originally pitched to me by some of the BMC developers that showed up as "the hard part." I became so entrenched in the hack that I didn't sleep on saturday night trying to finish it in time for the demo session on Sunday afternoon at 2pm, before realizing around 11am on Sunday that I would probably have to clear this with my employer before open sourcing the project. I won't go into too much detail about it, since I can't post source code just yet (i'll post separately when I get the okay), but there are a few things worth noting: That said: Cover Flow
+
+I'm still working on it, and am preparing to be sued as soon as I polish it up to look closer to Apple's version :)
+
+All in all, despite what some people might say about the commercial aspects of the devcamp (being hosted at Adobe's Townhall here in San Francisco, among other things) I think it was a great success, bringing people together to make do with the "iPhone SDK". I enjoyed myself and can't wait to help organize the next one when Apple finally releases Cocoa ME (Mobile Edition).
+
+

+Note: Somehow my (more common than not) late night hackery got me in an L.A. Times article, I didn't have the heart to tell the reporter that I do this at least once or twice a week.
diff --git a/_posts/2007-07-21-new-email-etc.html b/_posts/2007-07-21-new-email-etc.html new file mode 100644 index 0000000..373f98e --- /dev/null +++ b/_posts/2007-07-21-new-email-etc.html @@ -0,0 +1,10 @@ +--- +layout: post +title: New Email, etc +tags: +- Mono +created: 1185087139 +--- +Digging through my repository of domain names i rent, I finally found one I felt like using for some of my open source hacking; specifically my dealings with Mono, OpenMoko and Mac OS Forge. I finally setup monkeypox.org for both email, general web servitude, and moved most (if not all) of my related mailing list subscriptions over to tyler(at)monkeypox.org.
+
+You can find me at that mailing address for all things Mono, and most things non-work related. I'm fine with giving out a few email address @monkeypox.org to some of my Mono compadres, provided they're super-cool and pass a 42km long obstacle course. diff --git a/_posts/2007-07-21-starting-with-openmoko.html b/_posts/2007-07-21-starting-with-openmoko.html new file mode 100644 index 0000000..663c31f --- /dev/null +++ b/_posts/2007-07-21-starting-with-openmoko.html @@ -0,0 +1,39 @@ +--- +layout: post +title: Starting with OpenMoko. +tags: +- Linux +- OpenMoko +created: 1185011139 +--- +I've already ordered my OpenMoko-based phone already and anxiously await its arrival to the U.S. from FIC. The first order of business will of course to see if I can use it as a real phone, which I'm not holding out for since it's very obviously both beta hardware and software. More importantly however, I'm very excited at the idea of getting Mono running on the mobile, Linux/arm-based device.
+
+In the meantime, I've been playing around with the OpenMoko platform inside of the QEMU-arm emulator. Enjoy :)
+
+

+

Meet OpenMoko


+Welcome to OpenMoko
+
+
+

Booting Linux


+Booting OpenMoko
+
+

The OpenMoko Interface


+OpenMoko Home
+
+

Running a Terminal


+OpenMoko Terminal
+
+

OpenMoko Mail


+OpenMoko Messages
+
+

Ordering Take-out


+OpenMoko Dialing Out for Thai
+

+
+All in all the interface definitely needs some work, but as my iPhone toting coworker David Young said "how cute!"
+
+The platform in general has a lot of potential in my opinion, it's still up for grabs whether FIC will completely miscarry on producing decent hardware to run the phone, but you never know. The biggest key will be whether open source developers, notable for producing some of the most horrid user-interfaces since Windows 95, can cope with the new design paradigm that a smaller touch screen interface creates. I'm going to be doing my part, and for that much I'm very excited.
+
+
+Is that a penguin in your pocket or are you just happy to see me? diff --git a/_posts/2007-07-23-ironru-ooh-shiney.html b/_posts/2007-07-23-ironru-ooh-shiney.html new file mode 100644 index 0000000..18aee2e --- /dev/null +++ b/_posts/2007-07-23-ironru-ooh-shiney.html @@ -0,0 +1,13 @@ +--- +layout: post +title: IronRu..OOH SHINEY! +tags: +- Mono +created: 1185204042 +--- +While debating which set of bugs to squash next, I popped open Vienna and started catching up on monologue and came across Jb Evains' post regarding IronRuby which John Lam from Microsoft posted as just being "released" (pre-mega-alpha).
+
+While I don't use Ruby, or even IronPython on a day to day basis, I have done a lot of work in Cocoa (Objective-C) and to a greater extent, Python. Watching hackers get dynamic languages up and running on top of the CLR is almost like watching Neil Armstrong walk on the moon, you were hoping that it could be done, but up until you actually saw it, you weren't really sure if it could actually be acheived.
+
+
+Unfortunately, I don't care for Ruby's syntax in comparision to Python's, but that still doesn't mean I can't get excited about dynamic languages on top of the CLR, wahoo! diff --git a/_posts/2007-07-28-facebook-grokathon-and-how-were-trying-to-take-over-the-world.html b/_posts/2007-07-28-facebook-grokathon-and-how-were-trying-to-take-over-the-world.html new file mode 100644 index 0000000..869472b --- /dev/null +++ b/_posts/2007-07-28-facebook-grokathon-and-how-were-trying-to-take-over-the-world.html @@ -0,0 +1,30 @@ +--- +layout: post +title: Facebook Grokathon, and how we're trying to take over the world. +tags: +- Slide +- Software Development +- Facebook +created: 1185624747 +--- +My day (friday) began like most others tend to working at Slide, it began with the previous day and another all night hacking session on an idea Nik (from SuperPoke!) had. Before too many people came into the office I found myself running back to my barely-furnished, marginally decorated apartment to take a shower before leaving for Palo Alto, stopping outside 612 Howard, a.k.a. Slide HQ, on my return trip for a brief cigarette to collect my thoughts and remember that this is all going to make us insanely rich (in theory), I hopped in the elevator. After pitching the idea Nik and I stayed up all night hacking on to our Director of Engineering, Jeremiah, I woke Nik from a beanbag in the game room and along with Will Liu (also behind SuperPoke!) we three Facebook Platform developers stepped into Max's BMW M3 and raced off towards Palo Alto.
+
+Fortunately, not only is Max a good driver, but the M3 is a phenomenal car, which got us there in a swift 30 or so minutes, just in time to show up 15 or 20 minutes late for the Facebook Grokathon. We met up with James Hong of "Hot or Not" while we were walking towards the Facebook Cafeteria and as we entered, Kevin Hartz of event brite said:
+
+
"Let's all pause now that Slide has arrived"

+(I'm probably butchering the quote)
+
+


(Photos courtesy of Seth Goldstein)


+
+I immediately sat down on the floor and popped open my laptop, partially to take notes, and partially because I still had lots of stuff to do! After holding up this sign to Meagan Marks, one of my favorite Facebook employees (alongside Dave Morin and Chris Putnam), I hopped on VPN and got to work. Hacking, taking notes, and listening to people's presentations was very reminiscent of my limited time in college, the hacking bit is more the reason why the time was limited, but that's another story.
+
+Since we arrived late, Max presented close to last instead of the scheduled first, and I'm glad that Max mentioned that he wasn't going to try to upstage anybody and announce an API or let on to too many of our viral marketing strategies. He just casually noted that our applications have touched most of Facebook's userbase in one capacity or another and that Hot or Not's "Moods" application has been integrated into Top Friends for almost a month. In fact, a lot of our application has APIs for them, Top Friends for example integrates into My Questions, FunWall, SuperPoke and Moods, and those applications at some level or another reciprocate. In the end it is more a question of how we, as a business, strategically partner with other companies or individuals inside the Facebook space than whether we feel the compulsion to stand up in front of our peers and say "Look! This stuff we're doing is so awesome! Aren't we awesome!?"
+
+While Dave Morin (head honcho behind the Facebook Platform) was giving a final presentation, Top Friends became the first application on Facebook to hit 10 million installed users. Aren't we awesome?! :)
+
+As the meetup started to come to an end I felt that was a lot of what the meetup/grokathon degraded into, which from a human standpoint, is understandable. We are all battling it out to be "King of the Facebook Platform", so at every meetup like this to come there will be a bit of chest pounding just as there will be collaboration, business dealings, and (hopefully for the next one I attend) good food.
+
+This is only just the beginning, the one year, not the today's two month, anniversay of the Facebook Platform launch should be very interesting.
+
+


+
diff --git a/_posts/2007-07-28-songbird-a-visual-review.html b/_posts/2007-07-28-songbird-a-visual-review.html new file mode 100644 index 0000000..16b46c1 --- /dev/null +++ b/_posts/2007-07-28-songbird-a-visual-review.html @@ -0,0 +1,70 @@ +--- +layout: post +title: Songbird, a visual review +tags: +- Opinion +created: 1185635396 +--- +A few nights ago, not knowing what I should hack on and thinking about Andreia's post about her progress embedding XulRunner in a Mono-based Windows Forms application, I remembered something I had heard about vaguely a few months ago (really vaguely, like remembering to turn the oven off after you've already been on vacation for two weeks). Songbird, a Gecko-based media player being touted as the possible Firefox for media applications, and as their site says:

+
+Songbird™ is a desktop Web player, a digital jukebox and Web browser mash-up. Like Winamp, it supports extensions and skins feathers. Like Firefox®, it is built from Mozilla®, cross-platform and open source.

+
+Feeling curious, bored, and a bit sadistic, I decided I'd give it a whirl on my MacBook Pro. How bad could it be? Besides the fact that they call themselves a "desktop web player" which means god-knows-what, it can't be that terrible, they have an über leet black interface!
+
+It was bad. Very bad.
+
+Songbird is at version 0.2.5 and is marked as a developer preview, and as a developer, I didn't like the preview. I would however, recommend trying out Songbird with a grain of salt in that they have to battle with Mozilla's notoriously bad source code and maintaining cross-platform capability across numerous architectues for Linux, Windows and Mac OS X. Regardless, on to the pictures!
+
+Starting up Songbird for the first time
+
Songbird, EULA!?

+Any application that first presents the user with useless legalese is not off to a good start, especially when Songbird has such an uphill battle to fight against WinAmp and iTunes. I'll subtract a point for the annoyance, but it's a recoverable error for 0.2.5
+
+
+Agreeing to use the software
+
Songbird, GPL == EULA?

+YIKES! One cannot stress this enough with any software that embeds the GPL, or any other software source license with their released distributions (looking at you OpenOffice.org). Are you out of your damn minds?! Minus five points!
+
+Phew, almost lost it there, now that I've agreed to promise not to violate the GPL when I play songs or "play the web on my desktop" as I inferred from their website, I can continue to get to actually use the software.
+
+Setting up Songbird
+
Songbird, first run

+Before you get to playing music, you definitely need to go through a first run setup, just like iTunes does, to set some initial presets. Nothing out of the ordinary here, but I do appreciate the checkbox to turn off reporting my usage or setup information, +1.
+
+Downloadin' ur extenzionz!
+
Songbird, Fetching extensions

+I was a bit taken aback by the fact that I needed to download the extensions that one would assume were already bundled, since they're selected in the installation process. Given the immaturity of the project, these extensions could have drastically changed since they bundled and pushed the release, so no point change, I can understand their decision even if I don't agree with it.
+
+The images get a bit bigger from here on out, so they'll be linked and pop up in an inline image window thanks to a derivative of Lightbox.
+
+Importing iTunes Library
+Fortunately they prefill the textbox with the full path to my iTunes library, otherwise I might not be able to find it myself, assuming I'm a normal user. No points awarded for common sense :)
+
+Importing iTunes Library, seriously
+I'm a bit confused, I thought I just imported my iTunes library? Unfortunately Songbird can grab the meta-data properly from my iTunes.xml library file, but can't seem to find the actual music! Therefore, the user needs to select their actual iTunes music folder, or whereever they actually store their music! Adding another step between me, and hearing my commemorative "10th Anniversary of The Wiggles" tracks is definitely not a good thing, -1.
+
+Now to my music!
+Not so fast cowboy, first, Songbird needs to tell me that some of my tracks failed to import. Does it mean my AAC music? Or my iTunes Store purchases? Wait, or does it mean my OGG music? Oh well, something failed somewhere. Now that that's done, you don't go straight to your music you just spent about 3 clicks too many importing, you go to some silly media-homepage in Songbird's internal browser. I don't care! I know what Songbird is! I just downloaded and installed it! All I wanted was to hear some rocking good kid's tunes from "The Wiggles." Minus three points for standing between me and my music.
+
+Menus galore!
+No really, menus!
+Menus and sidebars!
+The menus for most of Songbird are reasonably well done, but they have some fetish for including images and non-standard things in their interface. For example, at least on Mac OS X, I can't think of a single application outside of Safari's "History" menu that includes little icons in their menus to let you know exactly what you're reading really is what it says it is. Their side navigation bar also includes, just like Firefox does, bookmarks for crap I don't care about. They're trying to follow some conventions, but not conventions for my platform, a measely one point awarded.
+
+Browsing the library
+Fortunately, they weren't able to convolute the most basic function of the media player, playing and browsing through media. +2.
+
+Mini-birds
+More mini-birds
+One thing they definitely have over iTunes, is their minimized mode is much more compact, and definitely sleeker, +2.
+
+Browsing mp3 blogs
+Browsing "custom" mp3 blogs
+Essentially, a podcast, I think? Not sure if they're trying to coin the phrase "mp3 blog", but giving me a more direct access to sites that offer feeds is certainly nice, their hybrid browser + playlist interface is pretty interesting as well, +1 for trying something different.
+
+Trying to use it as a browser
+In the above image, I decided I should try to click on the links inside the Songbird browser, and I'm not sure if it's a good thing that it opened up my default browser of choice, or absolutely retarded. Given that I work at software company I am sure that this tiny behavioral decision must have taken forever, I can't even make up my own mind about it, might as well give them a pity point since I know that some poor developer probably had to switch this back and forth 8 times before this shipped.
+
+

+Ultimately, as a developer and big proponent of open source, I can certainly appreciate what they're trying to do with Songbird. On the other hand, as a user of computers in general, I don't care for what they've acheived thus far. Making great software takes a HUGE investment of both time and money, looking over the pond of media players to iTunes for an example, which took over 7 years to get to where it is today and it still sucks (sort of). As a Mac developer, I would recommend ditching their insane reliance on Firefox's codebase and use WebKit as their internal browser and strive for more native interfaces, but that's just being picky now isn't it?
+
+Final Score: -2 :( diff --git a/_posts/2007-07-30-hacking-with-ironpython.html b/_posts/2007-07-30-hacking-with-ironpython.html new file mode 100644 index 0000000..66012ed --- /dev/null +++ b/_posts/2007-07-30-hacking-with-ironpython.html @@ -0,0 +1,38 @@ +--- +layout: post +title: Hacking with IronPython +tags: +- Mono +- Linux +created: 1185801848 +--- +I've been wanting to play with IronPython for a very long time, but never really got around to it since most of my days are either consumed with Python or Mono to some capacity, but never both.
+
+Despite my initial instinct to flee in terror after looking over some of the IronPython examples I found on various blogs, I decided it would at the very least be worth an install just to check out the interpreter, and to see how well it performs on top of Mono.
+ccnet% ipy
+IronPython 1.0.2467 on .NET 2.0.50727.42
+Copyright (c) Microsoft Corporation. All rights reserved.
+>>>

+
+Scary! But familiar, so I forged ahead undaunted, wanting to start hashing some strings, I figured I'd import the md5 module and get to work.
+
+ccnet% ipy
+IronPython 1.0.2467 on .NET 2.0.50727.42
+Copyright (c) Microsoft Corporation. All rights reserved.
+>>> import md5
+Traceback (most recent call last):
+ File md5, line unknown, in Initialize
+ File hashlib, line unknown, in Initialize
+ File hashlib, line unknown, in __get_builtin_constructor
+ImportError: No module named _md5
+>>>

+
+Alright, so there are still some holes in the IronPython bridge into Python, but this is fine by me, I can call into .NET code! One other thing that seemed to be missing was the 'select' built-in module, which in turn made my little 'telnetlib' based project fall on it's head.
+
+I run an icecast2 server on my workstation, so I can just tune in with my MacBook Pro, and get whatever stream is being served up by the server. The source for the icecast2 server is a script using Liquidsoap which allows for shuffling, bumps, and a couple of other things to make my music-listening experience better. One of the nice things about Liquidsoap is that it has a telnet interface, so I can glean meta-data about what's playing, or control the playlist through the telnet interface. With this telnet interface in tow, I set out to hack up a Windows Forms and IronPython-based controller for already scripted radio station. And thus, my little IronRadio Controller was born:
IronRadio Controller

+
+Unfortunately, I couldn't use Python's native "telnetlib" so I rolled my own IronTelnet class that would permit basic reads and writes to the telnet server, but other than that, the IronRadio Controller is mostly WIndows Forms code and some events cobbled together. The interface is unfortunately poor, as I don't have an Interface Builder for WIndows Forms, let alone IronPython-based Forms (not to mention I could care less about spit-and-polish for anything in X11.app).
+
+The source for the script can be found here, and will require IronPython and Mono to run (or .NET if you're on a Windows machine).
+
+I'm still trying to figure out if I can use IronPython with mod_mono to replace fighting with mod_python, but there are no guarantees as to whether that will work or be worth the trouble. diff --git a/_posts/2007-08-03-subversion-branching-with-less-pain.html b/_posts/2007-08-03-subversion-branching-with-less-pain.html new file mode 100644 index 0000000..b5022e1 --- /dev/null +++ b/_posts/2007-08-03-subversion-branching-with-less-pain.html @@ -0,0 +1,51 @@ +--- +layout: post +title: "Subversion branching with less Pain\xE2\x84\xA2" +tags: +- Slide +- Software Development +created: 1186129471 +--- +No matter how good of a source control system you use, branching can always cause loads of problems, and even painful merge days. At Slide, and other companies I've worked with that use Subversion, branching has been particularly painful because Subversion just doesn't maintain branch history like some commercial source control systems (like Perforce), in fact "branching" is quite literally making a copy of the trunk in Subversion.
+
+Depending on the lifespan of a particular branch, and how often you refresh your branch from the mainline branch, merging back down to the main branch can go from bad, to even worse. Interestingly enough, running an `svn diff $BRANCH $MAIN` will give you the correct changes on the appropriate files that have been modified in the branch, where as running an `svn merge -r $START:$END $BRANCH ./` (whereas ./ is your working copy of main) can break in tremendously painful ways causing mis-merges and unintended rollbacks of previous changesets.
+
+While merging down to the main branch today I decided to mix and match both svn diff and svn merge such that I would only merge changes down to the main branch that had been modified in my development branch, ensuring that nothing was changed on the main/stable branch that wasn't intended. The end result was a Python script that would execute the appropriate commands and merge the files one by one from one branch to the other, allowing the developer or QA engineer to check each file before commencing the merge.
+
+After some serious tweaking and a couple of test branches in Slide's Subversion repository, merge-safe.py was born. The script is a bit hackish right now in that it executes svn(1) instead of using Py-Subversion bindings (which haven't ever worked the way I had hoped). There is definitely room for improvement as well, but the basic flow is there such that merge-safe.py will diff the two branches and aggregate a list of files that have been modified since the branch was originally cut from the main/stable branch, then iterate through the file list and either merge (if the file has been edited) or copy (if the file has been added) to the main branch as is necessary.
+
+The script should always be run from the base directory of your working copy of the mainline branch, so if your main working copy is in /home/tyler/slide/main, this script could be run from that directory like:
+python ~/scripts/merge-safe.py -h
+In general I think the script is easy to use, but I also wrote it so I'm open to suggestions for improvement or ideas on how to more efficiently merge branches together with Subversion.
+
+You can check the code out with:
+svn co svn://svn.geekisp.com/bleep/trunk/svnutils/
+
+Usage
+ccnet% python qa/svnutil/merge-safe.py -h
+Usage:
+
+The merge-safe script should help you, the lowly startup employee
+more effectively merge one branch to another by examining which files have changed, and merge/copy those to the destination branch.
+
+Examples:
+ Do a dry-run of merging from $SRC to $DST where r1002 is the starting branch of $SRC and r1050 is the last revision to merge from $SRC
+
+ %> python some/dir/merge-safe.py -s $SRC -d $DST -r 1002:1050 --dry-run
+
+ Do an interactive merge from $SRC to $DST
+ %> python some/dir/merge-safe.py -s $SRC -d $DST -r 1002:1050 -i
+
+ Usage: $prog [options]
+
+
+Options:
+ -h, --help show this help message and exit
+ -s SOURCE, --source=SOURCE
+ The source branch to merge from
+ -d DEST, --dest=DEST The destination branch to merge to
+ -i, --interactive Enable merging interactively on each file
+ --dry-run Run with --dry-run enabled
+ -r REVISION, --revision=REVISION
+ Specify the revisions separated by a colon (i.e. -r
+ 100:104)
diff --git a/_posts/2007-08-05-ordered-filled.html b/_posts/2007-08-05-ordered-filled.html new file mode 100644 index 0000000..7fa51c2 --- /dev/null +++ b/_posts/2007-08-05-ordered-filled.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Ordered Filled +tags: +- OpenMoko +created: 1186305244 +--- +My RT ticket #3824 was finally filled late last week, so I should be receiving my OpenMoko-based (developer preview) mobile phone sometime in the next couple days.
+
+As far as getting Mono functional on top of the device, it seems that the OpenEmbedded project and their BitBake build tool.
+
+I'm wondering how easy the device will be to develop for in terms of getting Mono, IronPython, etc running on top of it, but if it really is the fully-featured Linux-based phone it's reported to be, this could turn out to be lots of fun (regardless of whether or not I can actually use it as a replacement for my miserable Cingular phone). diff --git a/_posts/2007-08-06-ironpython-for-macports.html b/_posts/2007-08-06-ironpython-for-macports.html new file mode 100644 index 0000000..3537bfd --- /dev/null +++ b/_posts/2007-08-06-ironpython-for-macports.html @@ -0,0 +1,19 @@ +--- +layout: post +title: IronPython for MacPorts +tags: +- Mono +created: 1186391172 +--- +What goes better with Sunday evening boredom better than some Tcl scripting and package management? I know! Nearly nothing, my sentiments exactly. After stumbling across a guide or two, I decided I should give creating an IronPython MacPort a try.
+
+I'm not sure on the utility of this minor hack, since the Mono Framework installer includes IronPython 1.1a1. I decided to give it a whirl nonetheless and came up with a pretty simple IronPython Portfile, although there is one thing missing, the IronMath and IronPython DLLs are not properly installed in the GAC. I'm a bit hazy on whether I should be installing the DLLs using gacutil(1) or whether I should just copy things over to the $(PREFIX)/lib/mono/gac and be done with it.. Therefore the crux of my "work" was just creating a sane Makefile, since the IronPython makefile that's distributed on CodePlex uses "csc" and has some pretty nasty syntax.
+
+You can check out my Portfile and copy of IronPython 1.1 from anonymous subversion by:
+
+Clicking over here
+or
+Checking out the code with:
+svn co svn://svn.geekisp.com/bleep/trunk/IronPython

+
+I'm debating whether or not I should submit the port to MacPorts for inclusion in their next release, mostly because I'm not completely sure if the Mono port includes IronPython or not. If you've got the Mono port installed, feel free to let me know if it installed IronPython, or if you feel like offering up a Makefile.mono patch that properly installs the assemblies into the GAC. I'm a bit new to packaging up open source projects for Mac OS X properly, so any tips would be helpful. diff --git a/_posts/2007-08-08-meet-openmoko.html b/_posts/2007-08-08-meet-openmoko.html new file mode 100644 index 0000000..7f88a6b --- /dev/null +++ b/_posts/2007-08-08-meet-openmoko.html @@ -0,0 +1,40 @@ +--- +layout: post +title: Meet OpenMoko +tags: +- Linux +- OpenMoko +created: 1186633467 +--- +I'm not going to try to explain too much here, but I received my Neo 1973, the OpenMoko-based Smart phone today. While it's a developer preview, it's incredibly exciting. So far I've been able to use my Cingular SIM card, if you use AT&T/Cingular, you can check if yours is supported on the wiki. I can run the general built in suite of applications without too much trouble, I also made a phone call, which worked! Unfortunately however the latest build that I have on my Neo doesn't have sound properly working, which sagacis from the #openmoko channel on Freenode is helping me with currently. I'm a bit over-excited so I'll let the images do the rest of the talking for me.
+
+

+

Meet OpenMoko


+Meet OpenMoko
+

+

Some Assembly Required


+Some Assembly Required
+

+

+
+

+

Welcome to OpenMoko


+Welcome to OpenMoko
+

+

Yes, It Does


+OpenMoko, Runs Linux
+

+

Browsing around OpenMoko


+OpenMoko Menu
+

+

Dialing with OpenMoko


+OpenMoko Dialing.
+

+

Sizing up OpenMoko


+OpenMoko, Sizing It Up
+

+

Running applications "on" your desktop


+Running OpenMoko Applications
+

+
+In general, it's a bit slow, but the developer preview is probably about half as powerful as the planned public-released version. so I'm not exceedingly worried about that. This phone is just all around cool, and will hopefully be a fun device to carry around with me. You can check up on the OpenMoko community by adding Planet OpenMoko to the feed reader of your choice. This is just the beginning. diff --git a/_posts/2007-08-09-scaling-with-your-smart-platform-choice.html b/_posts/2007-08-09-scaling-with-your-smart-platform-choice.html new file mode 100644 index 0000000..e16d923 --- /dev/null +++ b/_posts/2007-08-09-scaling-with-your-smart-platform-choice.html @@ -0,0 +1,48 @@ +--- +layout: post +title: Scaling, with your "smart platform choice" +tags: +- Software Development +created: 1186669090 +--- +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:
+

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:
+
+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 :) diff --git a/_posts/2007-08-11-openmoko-2007-2-preview.html b/_posts/2007-08-11-openmoko-2007-2-preview.html new file mode 100644 index 0000000..4706620 --- /dev/null +++ b/_posts/2007-08-11-openmoko-2007-2-preview.html @@ -0,0 +1,85 @@ +--- +layout: post +title: OpenMoko 2007.2 Preview +tags: +- Linux +- OpenMoko +created: 1186901933 +--- +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 diff --git a/_posts/2007-08-12-video-hello-moko.html b/_posts/2007-08-12-video-hello-moko.html new file mode 100644 index 0000000..5b498ee --- /dev/null +++ b/_posts/2007-08-12-video-hello-moko.html @@ -0,0 +1,14 @@ +--- +layout: post +title: "Video: Hello Moko" +tags: +- Linux +- OpenMoko +created: 1186923300 +--- +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.
+
+

+

+

diff --git a/_posts/2007-08-14-another-facebook-developer-meetup.html b/_posts/2007-08-14-another-facebook-developer-meetup.html new file mode 100644 index 0000000..1f89cf3 --- /dev/null +++ b/_posts/2007-08-14-another-facebook-developer-meetup.html @@ -0,0 +1,25 @@ +--- +layout: post +title: Another Facebook Developer Meetup +tags: +- Slide +- Miscellaneous +- Software Development +- Facebook +created: 1187078869 +--- +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:
+

diff --git a/_posts/2007-08-15-coping-with-success-scaling-on-the-facebook-platform.html b/_posts/2007-08-15-coping-with-success-scaling-on-the-facebook-platform.html new file mode 100644 index 0000000..c3ba541 --- /dev/null +++ b/_posts/2007-08-15-coping-with-success-scaling-on-the-facebook-platform.html @@ -0,0 +1,20 @@ +--- +layout: post +title: "Coping with Success: Scaling on the Facebook Platform." +tags: +- Slide +- Miscellaneous +- Software Development +- Facebook +created: 1187213940 +--- +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)


+
diff --git a/_posts/2007-08-19-i-just-saved-150.html b/_posts/2007-08-19-i-just-saved-150.html new file mode 100644 index 0000000..3a799a9 --- /dev/null +++ b/_posts/2007-08-19-i-just-saved-150.html @@ -0,0 +1,12 @@ +--- +layout: post +title: I just saved $150! +tags: +- Miscellaneous +created: 1187529030 +--- +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. diff --git a/_posts/2007-08-21-scaling-with-mysql-a-brief-guide.html b/_posts/2007-08-21-scaling-with-mysql-a-brief-guide.html new file mode 100644 index 0000000..0867287 --- /dev/null +++ b/_posts/2007-08-21-scaling-with-mysql-a-brief-guide.html @@ -0,0 +1,17 @@ +--- +layout: post +title: Scaling with MySQL, a brief guide. +tags: +- Opinion +- Software Development +- Facebook +created: 1187755277 +--- +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) diff --git a/_posts/2007-08-22-my-boss-is-a-robot.html b/_posts/2007-08-22-my-boss-is-a-robot.html new file mode 100644 index 0000000..3616ec5 --- /dev/null +++ b/_posts/2007-08-22-my-boss-is-a-robot.html @@ -0,0 +1,15 @@ +--- +layout: post +title: My Boss is a Robot. +tags: +- Slide +- Miscellaneous +created: 1187845694 +--- +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 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. diff --git a/_posts/2007-08-23-back-to-the-basics.html b/_posts/2007-08-23-back-to-the-basics.html new file mode 100644 index 0000000..76ca641 --- /dev/null +++ b/_posts/2007-08-23-back-to-the-basics.html @@ -0,0 +1,22 @@ +--- +layout: post +title: Back to the Basics +tags: +- Academia +created: 1187887837 +--- +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 diff --git a/_posts/2007-08-25-facebook-developer-garage-palo-alto.html b/_posts/2007-08-25-facebook-developer-garage-palo-alto.html new file mode 100644 index 0000000..9d5b775 --- /dev/null +++ b/_posts/2007-08-25-facebook-developer-garage-palo-alto.html @@ -0,0 +1,17 @@ +--- +layout: post +title: Facebook Developer Garage Palo Alto +tags: +- Slide +- Miscellaneous +- Software Development +- Facebook +created: 1188064625 +--- +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. diff --git a/_posts/2007-08-26-facebook-developer-garage-wrap-up.html b/_posts/2007-08-26-facebook-developer-garage-wrap-up.html new file mode 100644 index 0000000..bbc7856 --- /dev/null +++ b/_posts/2007-08-26-facebook-developer-garage-wrap-up.html @@ -0,0 +1,21 @@ +--- +layout: post +title: Facebook Developer Garage Wrap-Up +tags: +- Slide +- Miscellaneous +- Software Development +- Facebook +created: 1188168348 +--- +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)
+
+
diff --git a/_posts/2007-08-29-video-facebook-developer-garage.html b/_posts/2007-08-29-video-facebook-developer-garage.html new file mode 100644 index 0000000..d222e1d --- /dev/null +++ b/_posts/2007-08-29-video-facebook-developer-garage.html @@ -0,0 +1,32 @@ +--- +layout: post +title: "Video: Facebook Developer Garage" +tags: +- Slide +- Facebook +created: 1188452401 +--- +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

diff --git a/_posts/2007-09-07-time-for-a-road-trip.html b/_posts/2007-09-07-time-for-a-road-trip.html new file mode 100644 index 0000000..4160066 --- /dev/null +++ b/_posts/2007-09-07-time-for-a-road-trip.html @@ -0,0 +1,16 @@ +--- +layout: post +title: Time for a Road Trip +tags: +- Miscellaneous +created: 1189155054 +--- +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
diff --git a/_posts/2007-09-13-for-what-its-worth.html b/_posts/2007-09-13-for-what-its-worth.html new file mode 100644 index 0000000..cd17ac3 --- /dev/null +++ b/_posts/2007-09-13-for-what-its-worth.html @@ -0,0 +1,11 @@ +--- +layout: post +title: For what it's worth +tags: +- Miscellaneous +created: 1189711474 +--- +I'm back in San Francisco, and I'm not dead.
+
+That was one crazy-fast road trip.
+

diff --git a/_posts/2007-09-14-cmon-down-to-silverlightdevcampsf.html b/_posts/2007-09-14-cmon-down-to-silverlightdevcampsf.html new file mode 100644 index 0000000..b870311 --- /dev/null +++ b/_posts/2007-09-14-cmon-down-to-silverlightdevcampsf.html @@ -0,0 +1,16 @@ +--- +layout: post +title: C'mon down to SilverlightDevCampSF +tags: +- Mono +- Software Development +created: 1189805360 +--- +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 ^
diff --git a/_posts/2007-09-15-silversurfer-try-out-silverlight-on-mac-os-x.html b/_posts/2007-09-15-silversurfer-try-out-silverlight-on-mac-os-x.html new file mode 100644 index 0000000..1141196 --- /dev/null +++ b/_posts/2007-09-15-silversurfer-try-out-silverlight-on-mac-os-x.html @@ -0,0 +1,23 @@ +--- +layout: post +title: SIlverSurfer, Try out Silverlight on Mac OS X +tags: +- Mono +- Software Development +created: 1189920348 +--- +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! diff --git a/_posts/2007-09-19-channel9-silverlight-interview.html b/_posts/2007-09-19-channel9-silverlight-interview.html new file mode 100644 index 0000000..f5d6010 --- /dev/null +++ b/_posts/2007-09-19-channel9-silverlight-interview.html @@ -0,0 +1,16 @@ +--- +layout: post +title: Channel9 Silverlight Interview +tags: +- Mono +- Miscellaneous +- Software Development +created: 1190204903 +--- +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. diff --git a/_posts/2007-09-21-unofficial-facebook-hackathon-in-palo-alto.html b/_posts/2007-09-21-unofficial-facebook-hackathon-in-palo-alto.html new file mode 100644 index 0000000..4ac46c6 --- /dev/null +++ b/_posts/2007-09-21-unofficial-facebook-hackathon-in-palo-alto.html @@ -0,0 +1,9 @@ +--- +layout: post +title: (Unofficial) Facebook Hackathon in Palo Alto +tags: +- Facebook +created: 1190442838 +--- +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 :)
+
diff --git a/_posts/2007-09-23-contemplating-remix-07-in-boston.html b/_posts/2007-09-23-contemplating-remix-07-in-boston.html new file mode 100644 index 0000000..0cf95d8 --- /dev/null +++ b/_posts/2007-09-23-contemplating-remix-07-in-boston.html @@ -0,0 +1,24 @@ +--- +layout: post +title: Contemplating ReMIX 07 in Boston +tags: +- Mono +- Miscellaneous +- Software Development +created: 1190547252 +--- +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? diff --git a/_posts/2007-09-27-popfly-how-to-lose-the-buzz.html b/_posts/2007-09-27-popfly-how-to-lose-the-buzz.html new file mode 100644 index 0000000..be0028b --- /dev/null +++ b/_posts/2007-09-27-popfly-how-to-lose-the-buzz.html @@ -0,0 +1,19 @@ +--- +layout: post +title: Popfly. How to lose the buzz. +tags: +- Mono +- Opinion +- Facebook +created: 1190889834 +--- +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? diff --git a/_posts/2007-09-29-operation-iraqi-freedom.html b/_posts/2007-09-29-operation-iraqi-freedom.html new file mode 100644 index 0000000..d44a00c --- /dev/null +++ b/_posts/2007-09-29-operation-iraqi-freedom.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Operation Iraqi Freedom +tags: +- Opinion +created: 1191098802 +--- +Where's the call to war to freedom for our fellow democracy seeking people in Burma?
+
+Instead, we should start a war with a country begging for a reason to show off it's developing nuclear arsenal?
+

+What the fuck.
+

+My old life-goal was to get filthy rich and waste it on ridiculous stuff like a t-rex egg, but I think I'll just try to get really rich and start buying Senators. diff --git a/_posts/2007-10-03-graphing-social-building-your-first-app-workshop.html b/_posts/2007-10-03-graphing-social-building-your-first-app-workshop.html new file mode 100644 index 0000000..d6bc644 --- /dev/null +++ b/_posts/2007-10-03-graphing-social-building-your-first-app-workshop.html @@ -0,0 +1,19 @@ +--- +layout: post +title: Graphing Social, Building your first app workshop. +tags: +- Slide +- Facebook +created: 1191406109 +--- +As one of the developers behind a big Facebook application or three (1, 2, 3), I've tried to share the love as much as possible. I can be found regularly on the #facebook channel on Freenode as well as in various tea lounges and bakeries. Through our Indie App Promotion in Top Friends and some other projects still developing, I'm trying my best to help ease the transition from web developer, to Facebook Platform developer as much as possible for my fellow hackers out there.
+
+So, partially because my employer has been gracious enough to allow me, and because Dave McClure has given me the opportunity, I will be hosting a workshop at the Graphing Social conference in San Jose, CA, this upcoming Sunday.
+
+The workshop is titled "Facebook App Dev 101: Intro to Platform / Building Your First App." In the first half of the workshop I'll cover some of the basics, with an introduction to the Facebook Platform, some Facebok Platform developer resources that are available, and then I'll touch on the various frameworks available for the Facebook Platform ranging from Facebook's PHP4/5 client library, to PyFacebook (Python), rfacebook (Ruby), and the Facebook Developer Toolkit (.NET). The second half of the workshop will cover building a sample application from the ground up, i.e. from setting up the developer version of the application as well as the live version, to writing a basic feed-postin', invitin', profile updatin' Facebook application in PHP and finally to running some basic tests and setting up basic metrics for the application.
+
+Regardless of whether the workshop is recorded on video (it's going to be two, hour and fifteen minute, sessions, so most likely not), I'll be sure to post my "workshop materials" here after the fact. Hopefully they become as useful to novice Facebook Platform application developers as I hope my previous presentation "Coping with Success" (video) has been.
+
+If you're in the Bay Area, I would highly recommend at the coming to Graphing Social as most of the bigger players on the Facebook Platform will be there, and it should definitely be an interesting conference, and if you're a developer who wants to get the scoop on developing Facebook Platform applications, be sure to come to the super-mega-awesome workshops we'll be doing this Sunday preceding the two main days of the conference.
+
+Hope to see you there :) diff --git a/_posts/2007-10-03-remix-07-boston-woohoo.html b/_posts/2007-10-03-remix-07-boston-woohoo.html new file mode 100644 index 0000000..776cb0b --- /dev/null +++ b/_posts/2007-10-03-remix-07-boston-woohoo.html @@ -0,0 +1,18 @@ +--- +layout: post +title: Remix 07 Boston, Woohoo! +tags: +- Mono +- Miscellaneous +created: 1191394907 +--- +
+Turns out I'll be attending Remix 07 Boston next week but unfortunately my mega-cool-Silverlight hack won't be finished due to some scheduling complexities involved with working 130% of my time at a start-up in San Francisco (turns out, not too conducive to side-projects). I will be arriving bright and early at 6:30a.m. pounding down a gigantic (and expensive) airport coffee, and then heading to the Hyatt Regency Cambridge, so I apologize in advance if I look exceedingly tired Monday morning.
+
+It'll be a great opportunity to get a feel for where Microsoft thinks that Silverlight is going, and how they intend to get there. It's a long hard road to even become near where Flash is in terms of market entrenchment, but Microsoft is one of three companies I believe currently capable of acheiving it (the other two being Adobe itself [bought Macromedia, they cheated], and Apple).
+
+I would also like to give those Popfly guys an earful but I may spare them depending on how busy I am trying to find some fellow Facebook developers that live in the Boston area, or Miguel, who I'm pretty sure doesn't exist, but is merely a robotic creation of some wacky laboratory in Mexico.
+
+If you'd like to meetup and have lunch, or a beer in the evening Monday or Tuesday, feel free to send me at email (tyler@slide.com) or track me down during the actual conference (i'm this guy).
+
+Special thanks to Anand for what us young-folk call "the hook-ups" and I look forward to seeing both of my blog readers in Boston next week ;) diff --git a/_posts/2007-10-06-conference-season-communitynext-platform.html b/_posts/2007-10-06-conference-season-communitynext-platform.html new file mode 100644 index 0000000..6f0716d --- /dev/null +++ b/_posts/2007-10-06-conference-season-communitynext-platform.html @@ -0,0 +1,11 @@ +--- +layout: post +title: "Conference Season: CommunityNext Platform" +tags: +- Slide +- Facebook +created: 1191693798 +--- +As luck would have it, I'm currently masquerading as Max at CommunityNext in Sunnyvale. The underlying drive behind the entire event is to discuss some of the intricacies behind a locked-down platform like Facebook's. CommunityNext is interesting in that Noah Kagan, one of the organizers, did a really good job of finding, and bringing a lot of the upper tier Facebook Platform developers to Silicon Valley from Philadelphia, Boston, New York City, etc.
+
+If nothing else, CommunityNext is rumored to have great parties, and there just so happens to be a BBQ later today down here in Sunnyvale. It's somewhat late to suggest that everybody I know to attend, so I'll just mention that you're missing some good fun in South Bay, and leave it at that. diff --git a/_posts/2007-10-06-introducing-why-are-you-awesome.html b/_posts/2007-10-06-introducing-why-are-you-awesome.html new file mode 100644 index 0000000..de5af42 --- /dev/null +++ b/_posts/2007-10-06-introducing-why-are-you-awesome.html @@ -0,0 +1,20 @@ +--- +layout: post +title: "Introducing: \"Why are you awesome?\"" +tags: +- Software Development +- Facebook +created: 1191736927 +--- +As I previously mentioned, I'll be teaching a workshop on "developing your first Facebook application" tomorrow at the Graphing Social conference in San Jose. I figured, what better way to explain building your first Facebook app then to write one! Why the hell not right? So last thursday night I cleaned the dust off my pathetic PHP skills and set to work to create an application in a couple hours, that I could use as a tool for teaching the "basics" of Facebook application development.
+
+

Behold, awesomeness


+

+
+Why are you awesome? is a relatively simple application that follows the self-importance of Twitter, but adds the "social graph", and voting capabilities. Using "Why are you awesome?" I hope to convey in a marginally basic sense some of the core concepts behind rendering FBML pages, making use of notifications/feed posts/invitations and Mock AJAX from the profile.
+
+I won't disclose too much before the presentation (not that anybody will see this before the presentation), but I'm extremely happy with what about 4 hours of morning hacking has garnered me, and the possibilities of the application.
+
+You know what, let's see that super-mega-hot interface one more time.
+
+
diff --git a/_posts/2007-10-07-facebook-app-development-101-wrap-up.html b/_posts/2007-10-07-facebook-app-development-101-wrap-up.html new file mode 100644 index 0000000..53d6f74 --- /dev/null +++ b/_posts/2007-10-07-facebook-app-development-101-wrap-up.html @@ -0,0 +1,17 @@ +--- +layout: post +title: Facebook App Development 101 Wrap-up +tags: +- Slide +- Facebook +created: 1191799294 +--- +In addition to posting the source code for the application I wrote specificaly for Graphing Social ("Why are you awesome?") I also figured I should post my slides from the two hour or so session, which was composed of much more discussion and suggestions from Ari Steinberg (a Facebook Platform developer) and myself on developing on the platform and some of the intricacies involved. Gary Lerhaupt did a good job of "live blogging (part one)" (part two) the workshop if you're interested in the play-by-play.
+
+In theory there should be video soon so "stay tuned" (get it!) and I'll be sure to either post or link appropriately.
+
+Regardless, I hope you can at least find the presentation informative if you couldn't be here.
+
+
Facebook App Development.pdf

+
+In general I really enjoyed presenting and answering questions from some folks in the audience who were really keen on squeezing as much knowledge out of my pea-sized brain as possible. Unfortunately I can't stay for the next two days of Graphing Social, as I'm off to ReMix 07 Boston and some Silverlight hackery! diff --git a/_posts/2007-10-07-why-are-you-awesome-source-code.html b/_posts/2007-10-07-why-are-you-awesome-source-code.html new file mode 100644 index 0000000..eb93a8c --- /dev/null +++ b/_posts/2007-10-07-why-are-you-awesome-source-code.html @@ -0,0 +1,14 @@ +--- +layout: post +title: "\"Why are you awesome? Source Code" +tags: +- Facebook +created: 1191795164 +--- +I got off-stage just a few moments ago, but since Dave McClure already blogged about it, I would go ahead and post the source code so Dave could link to it.
+
+
"Why are you awesome?" source code

+
+The version of the client that the code is using, is specifically for PHP4, you can just replace the client/ folder with the PHP5 version depending on your host settings. The source code also includes the database schema that "Why are you awesome?" expects.
+
+Happy hacking, and add the app! diff --git a/_posts/2007-10-08-in-boston-at-remix-phew.html b/_posts/2007-10-08-in-boston-at-remix-phew.html new file mode 100644 index 0000000..6f4dd00 --- /dev/null +++ b/_posts/2007-10-08-in-boston-at-remix-phew.html @@ -0,0 +1,17 @@ +--- +layout: post +title: In Boston, At Remix. Phew. +tags: +- Mono +- Miscellaneous +- Software Development +created: 1191843734 +--- +After a grueling flight that started with a full-on sprint from the TSA security checkpoint and ended about a quarter mile through the terminal (in socks no less), I have made it across the country to Boston for Remix 07 Boston.
+
+I'm still anxiously awaiting the keynote, and trying to find the Mono guys that are in attendance to try to learn as much as possible about the development and future of Moonlight, while simultaneously trying to learn as much as possible about how other developers are embracing and using Silverlight too.
+
+If you're at Remix, come find me, I'm a San Franciscan in a rainy Boston, and I'm scared ;)
+
+I'm this idiot, rocking my "business attire"
+
diff --git a/_posts/2007-10-08-miguel-questions-the-manhood-of-400-microsoft-developers-awesome.html b/_posts/2007-10-08-miguel-questions-the-manhood-of-400-microsoft-developers-awesome.html new file mode 100644 index 0000000..797453b --- /dev/null +++ b/_posts/2007-10-08-miguel-questions-the-manhood-of-400-microsoft-developers-awesome.html @@ -0,0 +1,20 @@ +--- +layout: post +title: Miguel questions the manhood of 400 Microsoft Developers. Awesome. +tags: +- Mono +created: 1191856045 +--- +Miguel de Icaza, one of my own personal geek heroes, just gave his brief "keynote" as part of Microsoft's partner talks component of the overall Remix Boston 07 keynote speech.
+
+After previous demos being proudly shown for "working in Safari on Mac OS X, and oh by the way, it's PC compatible too", Miguel showed everybody up by pulling up the still very development version of Moonlight and dazzled a room full of hardened .NET/ASP.NET developers and designers with Mono's progress on the Moonlight project in a scant 4 months since the original "Mix Vegas" conference earlier this year.
+
+If you hang around Miguel enough, you'll know how much he loves Compiz, which he used gratuitously during his demonstrations. The mixture of a good looking Gnome skin and Compiz really helped convey that "yes, Linux is here, Gnome is a fully-featured desktop environment, and check out this AWESOME CUBE EFFECT!" As a developer who's participated in the open source community for almost five years now, it was very inspiring to see a room full of Microsoft's battle-tempered third party developers pine to have some of the cool features that Linux has!
+
+Some of the Silverlight applications Miguel demonstrated were Metaliq's Top Banana which ran surprisingly well, then Silverlight Chess followed by the Halo 3 trailer running (not streaming) on Miguel's Linux laptop. To invite further jealousy from the room of developers, Miguel fired up Firefox, running Moonlight, running the Halo 3 Trailer, on the edge of a "cube" workspace (such as this). Applause ensued.
+
+Coming back to the topic of developing Silverlight/Moonlight applications on top of Linux, Miguel fired up MonoDevelop claiming that "we have one, I just don't use it; I have an allergy to IDEs." Much to my surprise, he then fired up Emacs to edit his local copy of Silverlight Chess, updating a property such that it returned "Mono" instead of ".NET" in the interface, dropped back into his X terminal and ran "make" like, quote, "real men do" (to which some of the crowd applauded and the rest laughed). Miguel then ran the SilverlightMoonlight Chess application and closed his keynote speech stating that:
+
+"Your designers can use Expression Blend on Windows, but your real developers can use Linux to develop Silverlight."
+
+Overall the keynote was very well done but it really seemed like Miguel stole the show after so much emphasis was placed on "Silverlight's portability" by really showing what the Mono Project is capable of, and that while Silverlight may work on Mac and Windows, Moonlight runs on the corner of a wicked cool cube. diff --git a/_posts/2007-10-08-unofficlal-facebook-developers-meetup-boston.html b/_posts/2007-10-08-unofficlal-facebook-developers-meetup-boston.html new file mode 100644 index 0000000..da75611 --- /dev/null +++ b/_posts/2007-10-08-unofficlal-facebook-developers-meetup-boston.html @@ -0,0 +1,14 @@ +--- +layout: post +title: "Unofficlal Facebook Developers Meetup: Boston" +tags: +- Facebook +created: 1191858834 +--- +During the insane array of things that have been/are going on these past couple days, I have neglected to mention that I'll be organizing another Unofficial Facebook Developers Meetup, this time in Boston.
+
+The Facebook event can be found here, and I am thinking we'll be striving to grab dinner and drinks tomorrow (Tuesday, October 9th) in the Cambridge area since that seems to be central enough for everybody to come.
+
+Zach Allia, of Free Gifts fame, myself, as well as a few independent Facebook developers have already RSVP'd, but I'd love to see as a lot more Facebook developers, or those just interested in the platform, come out and join us to discuss some Facebook platform related things, pick each others' brains, and throw back a pint of Sam Adams.
+
+The venue hasn't really been decided yet, I'm debating between a couple different resturants in Cambridge, so if you have any suggestions, by all means bring it up. Regardless, if you're in the Boston area, come on out, it should be lots of fun. diff --git a/_posts/2007-10-09-miguel-de-icazas-remix-07-boston-keynote-address.html b/_posts/2007-10-09-miguel-de-icazas-remix-07-boston-keynote-address.html new file mode 100644 index 0000000..d40fa04 --- /dev/null +++ b/_posts/2007-10-09-miguel-de-icazas-remix-07-boston-keynote-address.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Miguel de Icaza's Remix 07 Boston Keynote Address +tags: +- Mono +created: 1191989997 +--- +Before I leave Boston, I had to make sure of one more thing, that my fellow Mono bretheren got to see what I got to see, Miguel's keynote. Thanks to lots of hard encoding and video preparation done by G. Andrew Duthie and his crew from Microsoft's Media Room at Remix 07 Boston, the videos from the keynote have already been posted in their entirety to Channel 9.
+
+Unfortunately they didn't clip the videos on a per-speaker basis, so you'll probably want to fast-forward in the video to about the 11 minute marker to watch our fearless leader question the manhood of 400 Microsoft developers as I had previously mentioned. Talking with Miguel after the fact he mentioned that some of his more witty quips were mostly due to him worrying about things breaking on stage and going impromptu with some of the things he was talking about. Overall though I think Miguel did a great job exhibiting Moonlight and the Gnome desktop in general, so I hope you enjoy the video (again, fast-forward to the 11 minute marker).
+
+
Watch Miguel on stage at Remix 07 Boston (direct link)
(Download VLC to watch on Linux/Mac OS X)
diff --git a/_posts/2007-10-12-remix-07-boston-wrap-up.html b/_posts/2007-10-12-remix-07-boston-wrap-up.html new file mode 100644 index 0000000..91e58ce --- /dev/null +++ b/_posts/2007-10-12-remix-07-boston-wrap-up.html @@ -0,0 +1,23 @@ +--- +layout: post +title: Remix 07 Boston Wrap-up +tags: +- Mono +- Slide +- Miscellaneous +- Facebook +created: 1192179088 +--- +Earlier this week, following CommunityNext and Graphing Social I was lucky enough to have been asked out to Boston for Remix 07 Boston. After receiving the necessary flack from my co-workers at Slide (primarily a Python/Linux shop), I boarded a plane late Sunday night to arrive extremely early on Monday morning (6a.m. isn't my best hour).
+
+Upon arrival to the Hyatt Regency Cambridge, I found out that I had access to the Media Room, which allowed me to recharge my laptop and plug into a hard-wired connection such that I was able to write up a few blog posts from the conference itself. Having such access also allowed me to work on some sample Silverlight applications that I'll write up over the weekend covering Silverlight and IronPython.
+
+While I enjoyed the sessions, such as Miguel's session on Moonlight and Mono and another session on the DLR and dynamic languages, what I enjoyed most was the ability to pick the brains of some of the folks there. Specifically guys like Aaron Brethorst, who works a lot on Microsoft Popfly's interface among other things, who let me question just about everything under the sun with regards to Popfly while still maintaining that I really like the application and its potential.
+
+I also really enjoyed meeting up with Miguel and his crew at Novell (Aaron Bockover and Michael Hutchinson) after Miguel was kind enough to take me to a late lunch and then show me around Novell's Boston office. I also think Miguel successfully guilted me into contributing more code that I've been putting off for so long, like my Mono.Nat NAT-PMP code, Mono.Facebook.Platform, and some patches for System.Web.Script.Serialization; all of which I have neglected in the difficult search for a good night's rest, or the perfect ping-pong serve against co-workers.
+
+I still look and feel mostly dead from exhaustion, but not dead enough not to continue pounding away on everybody's favorite Facebook app, or working on some of the other really cool things that we work on here at Slide (bubble text!). In the valley, everybody knows who Slide is now, everybody knows what's going on with Facebook, and an extremely small subset of people that matter know who I am; but on the east coast, far fewer understand what's going on right now on "that college social network, right?"
+
+Miguel said he doesn't install Facebook applications citing the near-complete opacity of the security and data-storage policy to the end-user, but maybe now that he's met me, and knows who's behind it, he'll install Top Friends and I'll finally be able to claim that Miguel uses something that I wrote, instead of the usual case of vice versa.
+
+Note to self: Travel back to Boston, soon. diff --git a/_posts/2007-10-13-google-search-inside-of-facebook.html b/_posts/2007-10-13-google-search-inside-of-facebook.html new file mode 100644 index 0000000..cb643b3 --- /dev/null +++ b/_posts/2007-10-13-google-search-inside-of-facebook.html @@ -0,0 +1,22 @@ +--- +layout: post +title: Google Search Inside of Facebook +tags: +- Miscellaneous +- Facebook +created: 1192318644 +--- +A couple of days ago I found out that you could get Google results in JSON while poking around for simple JSON APIs that I could use for miscellaneous hacks.
+
+I was thinking of all the fun things I could do with search results, and finally settled today on the most ridiculous one possible, searching from within Facebook. About an hour's worth of PHP5 later, I present Search!, another ridiculous example application.

+Unlike my previous "Why are you awesome?" demonstration application, Search! doesn't really integrate into Facebook nearly as much. Search! doesn't post to the profile, send notifications, or do much more than provide an easy means of sharing search links via your "Posted Items" or sending them along in a message to a friend on Facebook.
+
+Searching with Search!

+
+Sharing search results

+
+
+I can make no claims to this being a "good" application by any means, I just really felt the need to write something ridiculous, and this is what came out. The source code can be considered public domain, but I would appreciate attribution if you spread this super-mega-awesome code.
+
+
Install Search! | Search! Source Code

+ diff --git a/_posts/2007-10-15-speaking-at-widget-summit.html b/_posts/2007-10-15-speaking-at-widget-summit.html new file mode 100644 index 0000000..655df5c --- /dev/null +++ b/_posts/2007-10-15-speaking-at-widget-summit.html @@ -0,0 +1,17 @@ +--- +layout: post +title: "Speaking at Widget Summit " +tags: +- Slide +- Miscellaneous +- Facebook +created: 1192451801 +--- +This upcoming tuesday (October 16th) I'll be speaking on Facebook Development to what will presumably be an audience of "widgeteers" (as I'll call them).
+According to Wikipedia, a web widget is "a portable chunk of code that can be installed and executed within any separate HTML-based web page by an end user without requiring additional compilation."
+
+Following this definition, most of Slide's products are "widgets" per se, but our Facebook applications don't necessarily fall under this category of "web things," as they are in a category unto themselves by integrating into the Facebook Platform whenever and wherever possible.
+
+I'll be speaking on some of the differences between normal "widget" development on the web in contrast to Facebook "apps." As the session page notes, I'll be covering some of the topics like:I'm really looking forward to talking in a slightly different capacity than usual, as "my usual audience" is developers who are really interested in Facebook application development at other venues like at Graphing Social, the Facebook Developer Garage: Palo Alto and other mini-conferences, hackathons, and meetups. At Widget Summit I'll be speaking about a bit higher-level concepts, indirectly related to development, to an audience of product managers, entrepreneurs and folks generally interested in how to get in on the Facebook Platform.
+
+Widget Summit will be at the Mission Bay Conference Center at UCSF is located at 1675 Owens Street, just off the 280 freeway in San Francisco (directions). I'm really looking forward to the event, if you can make it out today, our fearless leader Max Levchin will be giving a keynote of sorts this morning at 10 a.m. which should definitely be insightful and entertaining to say the least. I'll be there tuesday to speak, so if you can make it, come for both days! diff --git a/_posts/2007-10-16-widget-summit-slides.html b/_posts/2007-10-16-widget-summit-slides.html new file mode 100644 index 0000000..85e21a6 --- /dev/null +++ b/_posts/2007-10-16-widget-summit-slides.html @@ -0,0 +1,15 @@ +--- +layout: post +title: Widget Summit Slides +tags: +- Slide +- Facebook +created: 1192570978 +--- +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)
diff --git a/_posts/2007-10-20-any-unemployed-net-developers-in-nyc.html b/_posts/2007-10-20-any-unemployed-net-developers-in-nyc.html new file mode 100644 index 0000000..7583808 --- /dev/null +++ b/_posts/2007-10-20-any-unemployed-net-developers-in-nyc.html @@ -0,0 +1,19 @@ +--- +layout: post +title: Any Unemployed .NET Developers in NYC? +tags: +- Mono +- Miscellaneous +- Software Development +created: 1192878071 +--- +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. diff --git a/_posts/2007-10-24-my-new-favorite-chuckle.html b/_posts/2007-10-24-my-new-favorite-chuckle.html new file mode 100644 index 0000000..8d88ba7 --- /dev/null +++ b/_posts/2007-10-24-my-new-favorite-chuckle.html @@ -0,0 +1,16 @@ +--- +layout: post +title: My new favorite chuckle +tags: +- Miscellaneous +- Facebook +created: 1193238434 +--- +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:
+Seriously now.
+


+

+* I dropped out of college earlier this year, after winter semester
+
diff --git a/_posts/2007-10-25-the-superpoke-facebook-song.html b/_posts/2007-10-25-the-superpoke-facebook-song.html new file mode 100644 index 0000000..3c0397f --- /dev/null +++ b/_posts/2007-10-25-the-superpoke-facebook-song.html @@ -0,0 +1,15 @@ +--- +layout: post +title: The SuperPoke Facebook Song +tags: +- Slide +- Facebook +created: 1193337683 +--- +We recently stumbled across this here at Slide, and it's pretty awesome, check it out, and of course, check out SuperPoke!.
+
+

+

+

+
+Thanks J. Michnovicz, L. Siegel, and E. Stuart!
diff --git a/_posts/2007-10-28-on-investing.html b/_posts/2007-10-28-on-investing.html new file mode 100644 index 0000000..5ef8e4a --- /dev/null +++ b/_posts/2007-10-28-on-investing.html @@ -0,0 +1,19 @@ +--- +layout: post +title: On Investing +tags: +- Miscellaneous +created: 1193595416 +--- +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. diff --git a/_posts/2007-11-03-silicon-valley-gangstas.html b/_posts/2007-11-03-silicon-valley-gangstas.html new file mode 100644 index 0000000..199588b --- /dev/null +++ b/_posts/2007-11-03-silicon-valley-gangstas.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Silicon Valley Gangstas +tags: +- Miscellaneous +- Media +created: 1194116701 +--- +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.
+
diff --git a/_posts/2007-11-04-your-order-has-been-completed.html b/_posts/2007-11-04-your-order-has-been-completed.html new file mode 100644 index 0000000..6aa5c1c --- /dev/null +++ b/_posts/2007-11-04-your-order-has-been-completed.html @@ -0,0 +1,14 @@ +--- +layout: post +title: Your order has been completed +tags: +- Miscellaneous +created: 1194216890 +--- +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

+

+
diff --git a/_posts/2007-11-06-a-note-to-my-graphing-social-students.html b/_posts/2007-11-06-a-note-to-my-graphing-social-students.html new file mode 100644 index 0000000..cf98ee0 --- /dev/null +++ b/_posts/2007-11-06-a-note-to-my-graphing-social-students.html @@ -0,0 +1,12 @@ +--- +layout: post +title: A note to my Graphing Social "students" +tags: +- Facebook +created: 1194339061 +--- +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.
+
+
diff --git a/_posts/2007-11-06-building-mono-on-leopard.html b/_posts/2007-11-06-building-mono-on-leopard.html new file mode 100644 index 0000000..5e813fe --- /dev/null +++ b/_posts/2007-11-06-building-mono-on-leopard.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Building Mono on Leopard +tags: +- Mono +created: 1194343180 +--- +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
diff --git a/_posts/2007-11-08-bug-number-seven.html b/_posts/2007-11-08-bug-number-seven.html new file mode 100644 index 0000000..d776c16 --- /dev/null +++ b/_posts/2007-11-08-bug-number-seven.html @@ -0,0 +1,25 @@ +--- +layout: post +title: Bug Number Seven +tags: +- Facebook +created: 1194520600 +--- +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.
+ diff --git a/_posts/2007-11-15-why-are-you-awesome-meet-mono.html b/_posts/2007-11-15-why-are-you-awesome-meet-mono.html new file mode 100644 index 0000000..b07e77c --- /dev/null +++ b/_posts/2007-11-15-why-are-you-awesome-meet-mono.html @@ -0,0 +1,19 @@ +--- +layout: post +title: "\"Why are you awesome?\" meet Mono" +tags: +- Mono +- Facebook +created: 1195135032 +--- +When I originally wrote the Facebook demo application "Why are you awesome?" I wrote it in PHP4 in about 3 hours and hated myself for every one of those miserable 180 minutes. Since then however, I've been slowly and methodically working on a new, JSON-based, Facebook client library (Mono.Facebook.Platform) specifically to bring together some of the aspects of pyfacebook, the PHP client, and the Facebook Toolkit that I like (implementation progress can be found in the NOTES). After getting some of the key Facebook calls implemented to support "Why are you awesome?" I figured I might as well give it a whirl and see if a "real" application would work on top of the library (it does).
+
+Thus far, all that were needed as far as library calls were:
+
+A couple of the things I've found thus far in my work have been, that writing a library that you have to use forces you to think about what you add and what you remove a lot more and focus on simplicity and extensibility; secondly, JSON is much faster, meaning I can do things with the Mono.Facebook.Platform library that I couldn't with the XML-based PHP4/5 library. Operations like fetching the user IDs of all 700 friends of mine complete in a timely fashion under the JSON library, whereas they typically timeout with the XML-based libraries.
+

+
+The Mono.Facebook.Platform library isn't even alpha, it's in negative greek letters right now, there's not enough of the API implemented, and it doesn't handle errors very well at all, so don't use it. When it's finished however, I intend to support over 90% of the Facebook calls, and offer it up as a faster, viable option, for ASP.NET developers on Windows and on Mono.
+
+Of course if you want to check out "Why are you awesome?", head on over to the application page and install it.
+ diff --git a/_posts/2007-11-17-facebook-flyers-make-my-eyes-bleed.html b/_posts/2007-11-17-facebook-flyers-make-my-eyes-bleed.html new file mode 100644 index 0000000..6acc640 --- /dev/null +++ b/_posts/2007-11-17-facebook-flyers-make-my-eyes-bleed.html @@ -0,0 +1,24 @@ +--- +layout: post +title: Facebook Flyers Make My Eyes Bleed. +tags: +- Facebook +created: 1195317344 +--- +As part of what consists of my day/night/weekend job, developing Facebook applications like Top Friends, I spent a lot of time on Facebook (mostly losing games of Scrabulous to other developers). Since I spend anywhere between 20 and 30 hours a day on Facebook, I see a lot of Facebook's ads, and in particular, Facebook's "Flyers".
+
+The concept at it's most basic level is a novel one, allow posting a flyer, similar to stapling a "Free Couch" flyer to a bulletin board, except on Facebook. In practice however, they suck. They suck bad. Really bad. I have a much higher respect for advertisers that can come up with ads that are either intriguing, or at the very least, not absolutely painful to see.
+
+Over the past week I've been quietly taking screenshots of the absolutely worst Flyers that I've seen that have brought me close to sending a flaming bag of poo down to Palo Alto. Think about the lame kind of spam you get in your inbox, that's about the level that Facebook's Flyers seem to be, except I can't fix it with aggressive spamassasin rules.
+
+

+
+
+
+

+

+

+Isn't this supposed to be targeted? These all seem to target single, stupid, bi-curious, poor, gullible, and desperate people, and I'm pretty sure I only fall in, at most, three of those categories.
+
+Seriously, what the fuck.
+
diff --git a/_posts/2007-11-22-turning-famousosity-up-to-11.html b/_posts/2007-11-22-turning-famousosity-up-to-11.html new file mode 100644 index 0000000..9e177ab --- /dev/null +++ b/_posts/2007-11-22-turning-famousosity-up-to-11.html @@ -0,0 +1,17 @@ +--- +layout: post +title: Turning Famousosity Up To 11. +tags: +- Slide +- Facebook +created: 1195728896 +--- +Sergio, one of our talented web monkeys, sent an email out today that started with "OMFGBBQ!"
+
+As it turns out, Sergio is a much more religious reader of Penny Arcade than the rest of us (a public shaming and revocation of some geek cards is in order) since he was the first to notice this:
+
+

Click to view the image fullsize

+

+Hell yes.
+

+As a side note, I have Sergio to thank for the sweet drag-and-drop interface on the Top Friends edit page and now for bringing some Gabe and Tycho love to our attention. diff --git a/_posts/2007-11-24-ichatagent-leaks-in-leopard.html b/_posts/2007-11-24-ichatagent-leaks-in-leopard.html new file mode 100644 index 0000000..984dcc4 --- /dev/null +++ b/_posts/2007-11-24-ichatagent-leaks-in-leopard.html @@ -0,0 +1,18 @@ +--- +layout: post +title: iChatAgent leaks in Leopard +tags: +- Cocoa +- Miscellaneous +- Software Development +created: 1195933933 +--- +I really don't have much that I can say about this, I came into the office after leaving my Mac on (as per usual) for about 12 hours and found that I was out of space on my startup disk, out of all available system memory, and things were crashing left and right.
+
+What the fuck right?
+
+Well, after I recovered the system enough to pop open "Activity Monitor" I found the exact culprit.
+
+Memory Leak
+
+
diff --git a/_posts/2007-12-01-missed-spain.html b/_posts/2007-12-01-missed-spain.html new file mode 100644 index 0000000..7b490cf --- /dev/null +++ b/_posts/2007-12-01-missed-spain.html @@ -0,0 +1,12 @@ +--- +layout: post +title: Missed Spain :( +tags: +- Mono +created: 1196542797 +--- +I hope everybody enjoyed their stay this past week in Madrid for the Mono Summit 2007.
+
+Unfortunately, it's been too hectic a month to take the week off and go to Madrid, so I'm incredibly jealous of all of you. Grumble.
+
+
I'm in ur office earnin ur salry

diff --git a/_posts/2007-12-12-urlenco-de-mono-lighttpd-and-postgresql.html b/_posts/2007-12-12-urlenco-de-mono-lighttpd-and-postgresql.html new file mode 100644 index 0000000..b4a5784 --- /dev/null +++ b/_posts/2007-12-12-urlenco-de-mono-lighttpd-and-postgresql.html @@ -0,0 +1,15 @@ +--- +layout: post +title: "Urlenco.de: Mono, Lighttpd, and PostgreSQL." +tags: +- Mono +- Miscellaneous +created: 1197456339 +--- +During the nigh 12 hour break I had between regular work over Thanksgiving, I spent about four hours writing a little utility that I wanted to use instead of TinyURL, and found a fantastic domain name for it too: Urlenco.de. I also wanted to use the opportunity to explore using Npgsql, the .NET connector for PostgreSQL, which was a very pleasant experience after using the MySQL .NET connector (part of the pleasant experience was using PostgreSQL itself, of course). Another new thing to explore was the FastCGI support for Mono/ASP.NET, I'll be sure to jot down my experiences with Mono's FastCGI support in a later post since my brain is too fried to talk about it coherently in detail.
+
+The most important part of the entire project was further refining my rapid-development process for Mono and ASP.NET so I can do quick little projects like this and push them to a live webserver in a matter of hours instead of days (of time I don't have). This mostly consists of boiler-plate project templates for some basic database code, page templates, and a NAnt build script that facilitates the building and testing of the site using xsp2 on localhost. Nothing spectacular, just having a toolkit of necessities to take from one project to the next, especially when time is at such a premium, is a minor but important difference from how I work now as opposed to how I used to work (when I had expendable time).
+
+One of my favorite parts of the entire Urlenco.de project was setting up a Urlenco.de API for both encoding (tiny'ing) and decoding (untiny'ing) URLs to and from Urlenco.de, all in under 10 minutes after a suggestion from my friend Dennis at Palantir. After another suggestion, I also wrote a Urlenco.de stats page using the streaming to my browser window, since the server would not stop sending data for the file.
+
+Curious as to what the image was, I downloaded it via Safari, which downloads to the "Downloads" folder which has a convenient "stack" icon in the dock. If you're not familiar with "stacks" in Leopard, they essentially are a nifty way to navigate to folders straight from the dock, and also offer an iconic preview of the most-used/latest item in the folder.
+
+Unknowingly, this image that I had downloaded was completely corrupted, but I had just downloaded it to the "Downloads" folder, and the Dock started to try to render a preview in the Dock of the corrupted image. Doing so set off a looping chain-reaction that was a wonderful sight to see, and ended up in a hard-restart of the machine as I couldn't get control of it. First the Dock crashed, following the Dock, Finder restarted and then Spaces crashed entirely. Sitting looking at a Dock that kept restarting and crashing and Spaces that had completely abandoned 5 other "spaces" full of windows, and an unresponsive Finder I made like a Windows ME user and rebooted my machine.
+
+After the machine started up again I got to the Downloads folder and deleted the image before the cycle could start again and managed to restore the machine to a usable state again.
+
+According to Apple, Mac OS X Version 10.5.1 is a full-fledged release, but it still feels like a release candidate depending on the day of the week, the amount of sunshine outside, or any one of a large number of arbitrary variables. diff --git a/_posts/2007-12-16-mono-and-fastcgi-an-awkward-relationship.html b/_posts/2007-12-16-mono-and-fastcgi-an-awkward-relationship.html new file mode 100644 index 0000000..7c5def1 --- /dev/null +++ b/_posts/2007-12-16-mono-and-fastcgi-an-awkward-relationship.html @@ -0,0 +1,72 @@ +--- +layout: post +title: Mono and FastCGI. An awkward relationship. +tags: +- Mono +- Miscellaneous +created: 1197801370 +--- +I've spent the week tweaking and adjusting my
lighttpd configuration to where it cooperates better with Mono's FastCGI server, and I finally feel confident enough with the configuration to share.
+
+Around thursday morning or so (maybe it was wednesday) the site was spewing so many 500 errors that somebody who I'm not sure I know where I know them from, emailed me saying "dude, site's broke." After checking the error logs, I found a lot of errors that were all like this:
fcgi-server re-enabled:  0 /tmp/fastcgi-mono-server

+backend is overloaded; we'll disable it for 2 seconds and
+send the request to another backend instead: reconnects: 0 load: 130
+
+fcgi-server re-enabled: 0 /tmp/fastcgi-mono-server
+backend is overloaded; we'll disable it for 2 seconds and
+send the request to another backend instead: reconnects: 0 load: 130
+

+
+After diagnosing the problem and kicking the server again, I decided that a couple of tips on the wiki page for Mono's FastCGI & Lighttpd had done me in, the first being about the FastCGI handler's max-procs configuration variable:
"max-procs" specifies the maximum number of servers to spawn. Because ASP.NET stores session specific objects, I am unsure of how applications would react if switching from one server to another, or if Lighttpd bonds a single server to a client. As such, I highly recommend keeping this value as "1" to avoid any conflicts.
Fortunately Urlenco.de doesn't really need any session information, so I did what Emeril and Apache admins are both familiar with doing, I kicked it up a notch (to about 10). After kicking the server one more time, this time with "max-procs" > 10 I watched the load on my little 1U server spike up to 30. While every terminal I had became so sluggish I could barely interact with the machine, I managed to open up "top(1)" and see what processses were royally screwing my machine. Turns out it was 10 instances of Mono, all trying to digest an ASP.NET site at once, all competing for the meager resources available. It seems that the Mono FastCGI server will process and compile your entire ASP.NET web application as soon as the FastCGI server is bootstrapped and accepting requests. Fortunately pushing new code to the site gets updated on the next HTTP request, so the number of times you'll have to kick (i.e. restart) the Lighttpd server should be minimal and you won't have to incur the huge performance penalty that often (I've since changed max-procs to 4).
+
+I also went against some of the other advice on the wiki page
To overcome these problems, the recommended method for processing files is to send all requests directly to the FastCGI Mono Server.
By effectively passing every single request off to the Mono FastCGI Server you can avoid exposing some internal ASP.NET resources that should be interpreted and not sent over the wire, this seems to be poor practice as far as Lighttpd and FastCGI are concerned. Lighttpd is a very good, high performance HTTP server and should be allowed to do it's job, whereas FastCGI servers merely serve as a means for executing server-side pages, returning markup, etc. To avoid passing every single request off to the FastCGI server, I merely setup the FastCGI handler for .aspx pages and then mapped other ASP.NET extensions to that handler as was appropriate:
fastcgi.map-extensions = (

+ ".asmx" => ".aspx",
+ ".ashx" => ".aspx",
+ ".asax" => ".aspx",
+ ".ascx" => ".aspx",
+ ".soap" => ".aspx",
+ ".rem" => ".aspx",
+ ".axd" => ".aspx",
+ ".cs" => ".aspx",
+ ".config" => ".aspx",
+ ".dll" => ".aspx"
+)
+

+
+The base configuration for one of my virtual hosts (Urlenco.de) turned out something like this:
$HTTP["host"] == "urlenco.de" {

+ fastcgi.server = (
+ ".aspx" => ((
+ "socket" => "/tmp/fastcgi-mono-server",
+ "bin-path" => "/usr/local/bin/fastcgi-mono-server2",
+ "bin-environment" => (
+ "MONO_FCGI_APPLICATIONS" => "/:/serv/www/domains/urlenco.de/htdocs",
+ "MONO_FCGI_LOGLEVELS" => "Standard", #All", #Debug",
+ "MONO_FCGI_LOGFILE" => "/var/log/lighttpd/mono.log",
+ ),
+ "max-procs" => 4,
+ "check-local" => "disable"
+ ))
+ )
+}

+
+Specifying the "application path" is somewhat of a pain, as now I more or less need a separate FastCGI configuration, which means they'll also need separate FastCGI servers, so another virtual host in the configuration (pineapple.monkeypox.org) has the following setup:
$HTTP["host"] == "pineapple.monkeypox.org" {

+ fastcgi.server = (
+ ".aspx" => ((
+ "socket" => "/tmp/fastcgi-mono-server-pineapple",
+ "bin-path" => "/usr/local/bin/fastcgi-mono-server2",
+ "bin-environment" => (
+ "MONO_FCGI_APPLICATIONS" => "/:/serv/www/domains/pineapple.monkeypox.org/htdocs",
+ "MONO_FCGI_LOGLEVELS" => "Standard", #All", #Debug",
+ "MONO_FCGI_LOGFILE" => "/var/log/lighttpd/mono.log",
+ ),
+ "max-procs" => 1,
+ "check-local" => "disable"
+ ))
+ )
+}

+
+Since the virtual host pineapple.monkeypox.org barely runs any ASP.NET code at all, I decided to only give it one Mono FastCGI process. Also of note is that the "socket" is different from the other FastCGI handler, if you try to use the same socket, the first Mono FastCGI process will take it over and both FastCGI handlers will return the same code, returned from the first handler.
+
+Feel free to bug me with any questions, this is my first foray into using Lighttpd and I'm already pleased as punch with it (compared to Apache) but there are certainly some caveats and bits of black magic involved with Mono, FastCGI and Lighttpd. That said, it still feels less sticky than running Apache 2 and mod_mono (not that they're not great and all). Hopefully web traffic will increase and give me a good test-bed for figuring out "the right stuff" to scale Mono on Lighttpd.
+

+Scary thought isn't it? :) diff --git a/_posts/2007-12-17-my-new-startup.html b/_posts/2007-12-17-my-new-startup.html new file mode 100644 index 0000000..f01f177 --- /dev/null +++ b/_posts/2007-12-17-my-new-startup.html @@ -0,0 +1,12 @@ +--- +layout: post +title: My new startup +tags: +- Miscellaneous +created: 1197895741 +--- +I was talking to Dennis about quitting Palantir and coming to work for my startup which has no funding, and no time, but lots of brilliant ideas, when I realized I don't have a name for the startup yet.
+
+So effectively immediately my I'm naming my startup TY-Combinator and wouldn't you know it! We're currently accepting angel funding, demon funding, and picnic baskets filled with those little sandwiches cut into triangles.
+
+Also effectively immediately, I'm still going to work at Slide. diff --git a/_posts/2007-12-18-comparing-ironpython-and-cpython.html b/_posts/2007-12-18-comparing-ironpython-and-cpython.html new file mode 100644 index 0000000..6ec68bb --- /dev/null +++ b/_posts/2007-12-18-comparing-ironpython-and-cpython.html @@ -0,0 +1,115 @@ +--- +layout: post +title: Comparing IronPython and CPython +tags: +- Mono +- Software Development +created: 1198043060 +--- +First a little background to help explain some of the terms, etc. "Python" is a language, similar to how "Java" is a language; unlike Java wherein the language is also relatively synonymous with the actual implementation of that language, Python has multiple implementations. If you've run python(1) from the command line, you're most likely running the CPython implementation of the Python language, in effect, Python implemented in C. Other implementations of Python exist, like Jython (implemented on top of the Java virtual machine), PyPy (Python implemented in Python), and IronPython (Python implemented on top of the .NET CLR).
+
+I was talking with some of the guys from the #mono channel on GIMPNet about IronPython versus CPython as far as performance is concerned and I decided that I would refine my testing (using pybench) for more similar versions of the respective implementations, in as controlled of an environment as possible.
+
+I ran pybench.py on a "quiet" (i.e. not-busy) machine sitting in a remote datacenter not too far from Novell, the machine is a Pentium III (i386) based machine running openSUSE 10.3. Since IronPython reports it's "implementation version" as Python 2.4.0, I decided to build and run CPython 2.4 against it. IronPython is running on top of the recently released Mono 1.2.6 which I also built from source (I got IronPython from the IPCE package in YaST however). pybench reported the various implementation details for both as such:
+
+CPython
+

+ Implementation: 2.4.4
+ Executable: /home/tyler/basket/bin/python
+ Version: 2.4.4
+ Compiler: GCC 4.2.1 (SUSE Linux)
+ Bits: 32bit
+ Build: Dec 18 2007 23:00:48 (#1)
+ Unicode: UCS2
+

+
+IronPython
+

+ Implementation: 2.4.0
+ Executable: /usr/lib/IPCE/ipy.exe
+ Version: 2.4.0
+ Compiler: .NET 2.0.50727.42
+ Bits: 32bit
+ Build: (#)
+ Unicode: UCS2
+

+
+IronPython did alright, but it got pretty thrashed on a lot of the benchmarks. Unfortunately it's hard to tell whether it's Mono getting beaten up, or whether it's IronPython itself that's losing the battle here, running similar tests on the .NET 2.0 CLR would be beneficial but not something I am curious enough to boot a Windows virtual machine for. Regardless, here are the results, I've highlighed the rows where IronPython performs better than CPython.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Test Minimum Run-time Average Run-time

+
CPython IronPython Diff CPython IronPython Diff
BuiltinFunctionCalls:448ms357ms+25.4%450ms405ms+11.0%
BuiltinMethodLookup:530ms1329ms-60.1%536ms1390ms-61.4%
CompareFloats:380ms129ms+194.3%381ms132ms+187.7%
CompareFloatsIntegers:377ms93ms+306.1%378ms97ms+291.2%
CompareIntegers:436ms160ms+172.5%437ms161ms+170.6%
CompareInternedStrings:425ms443ms-4.1%426ms445ms-4.3%
CompareLongs:360ms292ms+23.3%361ms293ms+23.0%
CompareStrings:423ms330ms+28.0%423ms337ms+25.6%
CompareUnicode:377ms243ms+54.7%377ms245ms+54.2%
ConcatStrings:726ms9452ms-92.3%823ms10071ms-91.8%
ConcatUnicode:711ms5687ms-87.5%756ms6039ms-87.5%
CreateInstances:508ms761ms-33.2%518ms815ms-36.4%
CreateNewInstances:451ms3475ms-87.0%458ms3581ms-87.2%
CreateStringsWithConcat:473ms2650ms-82.1%475ms2833ms-83.2%
CreateUnicodeWithConcat:482ms1008ms-52.1%508ms1092ms-53.4%
DictCreation:405ms2944ms-86.2%407ms3057ms-86.7%
DictWithFloatKeys:552ms934ms-40.9%553ms944ms-41.5%
DictWithIntegerKeys:423ms1118ms-62.2%426ms1137ms-62.5%
DictWithStringKeys:413ms1186ms-65.1%414ms1317ms-68.6%
ForLoops:412ms189ms+118.5%413ms217ms+90.7%
IfThenElse:372ms128ms+191.8%374ms141ms+165.8%
ListSlicing:311ms4033ms-92.3%315ms4230ms-92.6%
NestedForLoops:488ms349ms+39.7%489ms382ms+28.1%
NormalClassAttribute:430ms1080ms-60.2%432ms1104ms-60.9%
NormalInstanceAttribute:401ms427ms-6.1%404ms442ms-8.7%
PythonFunctionCalls:393ms302ms+30.1%402ms352ms+14.3%
PythonMethodCalls:478ms643ms-25.7%536ms673ms-20.3%
Recursion:547ms158ms+245.9%659ms159ms+313.6%
SecondImport:476ms1383ms-65.6%481ms1432ms-66.4%
SecondPackageImport:501ms1425ms-64.8%503ms1482ms-66.1%
SecondSubmoduleImport:589ms1916ms-69.3%592ms1990ms-70.2%
SimpleComplexArithmetic:475ms729ms-34.9%476ms758ms-37.3%
SimpleDictManipulation:424ms1009ms-58.0%427ms1020ms-58.2%
SimpleFloatArithmetic:416ms455ms-8.7%422ms480ms-12.0%
SimpleIntFloatArithmetic:345ms161ms+113.8%346ms162ms+112.9%
SimpleIntegerArithmetic:345ms161ms+114.7%345ms161ms+113.9%
SimpleListManipulation:346ms497ms-30.4%350ms501ms-30.1%
SimpleLongArithmetic:402ms1120ms-64.1%403ms1130ms-64.3%
SmallLists:417ms1693ms-75.4%421ms1717ms-75.5%
SmallTuples:450ms3839ms-88.3%453ms3915ms-88.4%
SpecialClassAttribute:431ms1104ms-60.9%432ms1133ms-61.8%
SpecialInstanceAttribute:608ms423ms+43.8%610ms437ms+39.5%
StringMappings:443ms2255ms-80.3%448ms2311ms-80.6%
StringPredicates:503ms1058ms-52.5%504ms1066ms-52.7%
StringSlicing:527ms2880ms-81.7%562ms3008ms-81.3%
TryExcept:418ms21ms+1905.2%418ms39ms+985.6%
TryRaiseExcept:587ms6670ms-91.2%591ms6733ms-91.2%
TupleSlicing:390ms1817ms-78.5%397ms1863ms-78.7%
UnicodeMappings:362ms1323ms-72.7%365ms1347ms-72.9%
UnicodePredicates:438ms860ms-49.0%439ms912ms-51.8%
UnicodeProperties:400ms0msn/a401ms0msn/a
UnicodeSlicing:624ms2491ms-75.0%666ms2638ms-74.7%
+

+

+The results are disappointing but not all that surprising, especially with regards to string manipulation. I attempted to run the same pybench.py tool on top of Jython but Jython doesn't appear to support the "platform" module, so I don't have a really good baseline for "managed/virtual machine-based Python implementations" right now. However, given the lack of evidence otherwise, I'll just go ahead and assume IronPython blew the doors off of Jython :). In general though this isn't the be-all end-all benchmark for IronPython, especially on Mono, but it does give a nice hint of where some improvements could be made both in the Mono runtime and IronPython. I'll have to run the benchmarks again with the newer versions of both implementations of Python to see where they're improving or degrading but by all means don't let this deter you from checking out IronPython! I'll be writing up a few code samples over the next couple weeks that I hope will be helpful to those "unenlightened" among us; dynamic languages on the CLR, what has the world come to. diff --git a/_posts/2007-12-18-what-a-heaping-pile-of-fail.html b/_posts/2007-12-18-what-a-heaping-pile-of-fail.html new file mode 100644 index 0000000..e2e029c --- /dev/null +++ b/_posts/2007-12-18-what-a-heaping-pile-of-fail.html @@ -0,0 +1,17 @@ +--- +layout: post +title: What a heaping pile of FAIL. +tags: +- Cocoa +- Miscellaneous +created: 1197984055 +--- +I had mentioned previously that iChatAgent in Leopard leaks, I'm going to take that statement back. iChatAgent in Leopard hemorrhages memory, and I think I know why now.
+
+While I was napping, there was a network hiccup causing iChat to get disconnected, when the network connectivity returned, it first tried to sign on a couple of Jabber accounts, both of which use self-signed SSL certificates. Being the lovely old chap that iChat is it prompted the user (napping at the time) to accept the self-signed certificate. While the dialog box was up, iChat sat waiting around before it signed on the other accounts and spun and spun and spun.
+
+iChat spun and spun and spun until all the available disk space for virtual memory was used up by every process that had to swap out to make space for iChatAgent's demands on real memory, and then by iChatAgent itself swapping out.
+
+

+
+God fucking damnit. diff --git a/_posts/2007-12-31-sxswi-and-me.html b/_posts/2007-12-31-sxswi-and-me.html new file mode 100644 index 0000000..7c0c48a --- /dev/null +++ b/_posts/2007-12-31-sxswi-and-me.html @@ -0,0 +1,18 @@ +--- +layout: post +title: SXSWi and Me +tags: +- Mono +- Slide +- Miscellaneous +- Facebook +created: 1199106668 +--- +I spoke with Tammy (our PR mastermind) about whether or not Slide was going to let me out of my cage to go to South by Southwest Interactive this coming March and it seems like they might actually let me! (I'm just as surprised as you are)
+
+Unfortunately things with Facebook were at such a ridiculous pace when SXSWi was accepting panel submissions, that I never got a chance to submit my panel idea: "Slide is awesome, now let's talk about how great Slide is." This leaves me in a slightly awkward position, I cannot remember the last conference or event that I went to where I wasn't speaking or talking or dancing with a baboon in front of a live studio audience. Even at the last SXSWi I was there for about 36 hours and most of that time was spent setting up and then helping run BarCamp Austin2. Ideally I'd like to get on stage with some of the guys from Twitter, Facebook, Bebo, Google and maybe even Myspace to discuss the more open social web that we seem to be moving towards and a bit about how awesome Slide is. It's probably nothing more than a pipe-dream however, since the panels seem to be quite locked down at the moment.
+
+Of course, if nobody will have me, then I might be relegated to slumming up and down 6th street in Austin hanging out with the usual drunkards that I know in Austin (you know who you are) and getting into trouble. Mmm, trouble.
+
+Regardless, if you're going to be in Austin for SXSWi let me know, I've got a stack of swanky new business cards I want to get rid of :)
+
diff --git a/_posts/2008-01-05-perforce-backups-revisited.html b/_posts/2008-01-05-perforce-backups-revisited.html new file mode 100644 index 0000000..24a0ced --- /dev/null +++ b/_posts/2008-01-05-perforce-backups-revisited.html @@ -0,0 +1,20 @@ +--- +layout: post +title: Perforce Backups, Revisited. +tags: +- Miscellaneous +- Software Development +created: 1199556742 +--- +A very long time ago I wrote about my backup script for archiving my entire Perforce repository. I can finally write the obvious follow-up to the post, as I've finally had to use my backups.
+
+In my scenario, the last backup I took was in February of 2007, almost an entire year ago (my development slowed around that time). During my transit from San Antonio to San Francisco the "server" my Perforce repository ran off, also known as orange (seen on the bottom here), a "headless laptop", had its disk completely fail. Up until recently however I haven't had a replacement for "orange" but now that I have pineapple sitting in a colocation facility, I have a new candidate for a Perforce server.
+
+Luckily I had made a habit of burning my backups to DVDs every two weeks, since two weeks of nightly backups would fill up an entire 4.7GB DVD (I still have no idea how my own source repository grew to 120MB or so). After rsync'ing the latest backup tarballs, it was completely up to Perforce to reliably restore them.
+
+Perforce's documentation is very good, so I suggest going over the backup and recovery procedures if you find yourself needing to recover from backups.
+
+Within about 15 minutes I had restored the Perforce database files as well as the actual source code itself and begun to sync a new Perforce client up with the new server (thanks to my p4tunnel script).
+
+I can't talk enough about how much I really like Perforce as a version-control-system and am nothing short of elated to finally have my repository back online, it only goes to show how backups are crucial for anything you might ever want later, in my case backups albeit old backups, were still better than no backups.
+ diff --git a/_posts/2008-01-06-just-curious.html b/_posts/2008-01-06-just-curious.html new file mode 100644 index 0000000..06698b2 --- /dev/null +++ b/_posts/2008-01-06-just-curious.html @@ -0,0 +1,8 @@ +--- +layout: post +title: Just Curious +tags: +- Miscellaneous +created: 1199637915 +--- +
At what point, as a man, do you give up hopes of being in a rock band? diff --git a/_posts/2008-01-23-five-and-seven-zeroes-is-big.html b/_posts/2008-01-23-five-and-seven-zeroes-is-big.html new file mode 100644 index 0000000..dc03ea9 --- /dev/null +++ b/_posts/2008-01-23-five-and-seven-zeroes-is-big.html @@ -0,0 +1,15 @@ +--- +layout: post +title: Five and Seven Zeroes is Big. +tags: +- Slide +- Facebook +created: 1201084170 +--- +It was recently announced that Slide (this little start-up that I work for) raised some more money. Neato.
+

+Since Max isn't the aeron chair kind of CEO, it looks like we're going to spend that money on things like "engineers, hardware, etc." Bummer, I've always wondered how an $800 chair can exist that doesn't rub your feet and write your code for you.
+
+Regardless, should be a fun year.
+
+(p.s. we need more engineers) diff --git a/_posts/2008-01-23-your-voice-interface-is-fucking-stupid.html b/_posts/2008-01-23-your-voice-interface-is-fucking-stupid.html new file mode 100644 index 0000000..ddec0a1 --- /dev/null +++ b/_posts/2008-01-23-your-voice-interface-is-fucking-stupid.html @@ -0,0 +1,48 @@ +--- +layout: post +title: Your "voice interface" is fucking stupid. +tags: +- Opinion +created: 1201157068 +--- +Recently the bank that financed my car switched their phone payment systems over from their more traditional "press a number to do stuff" to a "talk to a computer and try to do stuff" interface, and my reluctance to pay my car payments has increased tenfold.
+
+Before they switched the phone interface, I almost had the correct sequence of numbers to press entirely memorized to where I could press 3-5 numbers in sequence and be done with my "payment session" in under two minutes. Meaning in a matter of two minutes, I could initiate a transaction from my checking account, to send almost $300 to Chase, in two minutes. I hated losing the money, but I loved the efficiency.
+
+Recently however, they've "pulled a Vista" and replaced a wonderfully functional system that "got the job done" with a bloated, slow and buggy system that infuriates me everytime I need to talk to the computerized woman at the other end of the line. A rapid mashing of touch-tone keys on my phone has been replaced with:
+
+PaymentBot: Welcome to Chase Auto Finance!
+
+*pause*
+
+PaymentBot: If you would like to make a payment, say "make a payment." If you would like to check your payoff balance, say "payoff balance." If you would like to blow a goat, say "baaaaaaaa."
+
+Tyler-Unit: make a payment
+
+PaymentBot: It looks like you want to make a payment, if this is correct say "yes."
+
+Tyler-Unit: yes (at this point I'm usually irritated that I've past the two minute mark)
+
+PaymentBot: First I need to find your account, please say your account number or your social security number, or enter them into the phone
+
+Tyler-Unit: *mashes on keys*
+
+PaymentBot: The number you entered was 1-2-3--4-5--5-6-5-4, if this is correct, say "yes."
+
+Tyler-Unit: YES
+
+PaymentBot: I'm sorry, I didn't catch that, if the number you entered: 1-2-3--4-5--5-6-5-4 is correct, say "yes."
+
+Tyler-Unit: YES
+
+PaymentBot: Okay, if you would like to make a payment over the phone, say "phone." If you would like to make a payment via mail, say "mail."
+
+I could continue, but I won't .
+
+Just to get to the point where I finally need to enter my payment details (because Chase couldn't update their system to, god-forbid, remember the same information I've been mashing into a keypad for the past two years) takes close to five to eight minutes.
+
+Between the various financial institutions that I need to deal with every month I get to fight with terrible websites, miserable phone interfaces and idiot-customer service representatives, it almost makes me regret being fiscally responsible (our government isn't, why should I have to?). I'm hoping there's a special portion of hell reserved for whichever numbnuts in middle-management at Chase decided "OMG! Voice interfaces are TOTALLY kewl!!!!!"
+
+Are there means of consolidating smaller (think below $10,000) loans from one bank to another? While it's pretty obvious that Chase can effectively handle its finances, they certainly can't handle "user-experience", if your customers' only interaction with you as a company is over the phone, or over snail-mail, it's usually in your best interest to make sure those "interfaces" to your customers are top-notch.
+
+I hate voice interfaces. diff --git a/_posts/2008-01-26-fbrubbar-chikken.html b/_posts/2008-01-26-fbrubbar-chikken.html new file mode 100644 index 0000000..2fd86db --- /dev/null +++ b/_posts/2008-01-26-fbrubbar-chikken.html @@ -0,0 +1,18 @@ +--- +layout: post +title: +tags: +- Slide +- Facebook +created: 1201420542 +--- +
Courtesy of Adonomics


+We've been working pretty hard for the past month (well, for the past 8 months too) but I'm particularly proud of the work that my co-conspirator and I have been putting in on Top Friends (we're that green line that creeps up from behind on FunWall and Super Wall).
+
+One of the most helpful "tools" that's been available to me has been Slide's competitive spirit. In addition to the 2,000+ developers on the Facebook platform we have some pretty healthy competition going on inside Slide as well. Between Top Friends, SuperPoke and FunWall there is plenty of trash-talking and "friendly competition" (read: if it weren't an HR violation, I'd of already resolved to dirty tactics). In doing so we've cultivated an environment where some of the most often heard phrases are: "Is Facebook down again?!" and "OH SCHNAP!"
+
+Another key factor to our team's enjoyable demeanor has been (in my opinion) our liberal use of the "rubber chicken" as part of a sort of group hazing. In essence, when you have glaring mistakes that somehow get pushed to the live site, you will come into the office the next day with rubber chickens adorning your monitor. This group acknowledgement of when we "fuck up" encourages more of a social-pressure to write good code instead of relying on policy, etc to ensure code quality, especially on the rapid release schedules we adhere to. Rubber chickens are the truly quintessential gift at Slide, it is always feels better to give than to receive.
+
+As we near the end of the first month in 2008, I wish Facebook and Bebo continued success with there platform(s); not because I love FQL and FBML oh so much, but because I work for Slide, on the Facebook team, where competition and rubber chickens reign supreme in the land of embedded videos, sortable friends and flying sheep.
+
+(Now seriously, Slide is hiring) diff --git a/_posts/2008-01-28-sigsegv-in-my-brane.html b/_posts/2008-01-28-sigsegv-in-my-brane.html new file mode 100644 index 0000000..626c48a --- /dev/null +++ b/_posts/2008-01-28-sigsegv-in-my-brane.html @@ -0,0 +1,15 @@ +--- +layout: post +title: SIGSEGV in my brane. +tags: +- Opinion +- Miscellaneous +created: 1201537646 +--- +I'm not proud of it, but I do read TechCrunch every now and again, if for only the occasional gem that comes across that causes me to hate buzzwords and everybody that uses them.
+
+In the second paragraph of this article almost caused an entire system shutdown in my central-buzzword-processing unit (CBU):
+
+
"Both Imeem and Anywhere.FM saw a lot of synergy in the deal."

+
+I couldn't read any further into the article after reading that, whenever anybody uses the word "synergy" seriously I have a tendency to tune out completely and think the absolute worst of them until they offer me chocolates, caffeine or other goodies. diff --git a/_posts/2008-02-01-are-free-gifts-still-gifts.html b/_posts/2008-02-01-are-free-gifts-still-gifts.html new file mode 100644 index 0000000..5ff80bb --- /dev/null +++ b/_posts/2008-02-01-are-free-gifts-still-gifts.html @@ -0,0 +1,18 @@ +--- +layout: post +title: Are Free Gifts Still Gifts? +tags: +- Opinion +- Facebook +created: 1201894031 +--- +Facebook has been pretty nice to Free Gifts in the past, despite originally being a blatant rip-off of the real Gifts application. Prior to today, I have only received one complaint from Facebook regarding Free Gifts practices. They asked me to remove a gift that looked similar to one of their gifts. I was okay with that even though mine was a lemon and theirs was a lime; maybe it was tough for the color blind audience to decipher? Today, I received my second complaint from them, which stated:
+
+Your Facebook application, Free Gifts, is currently in violation of the Platform Application Guidelines section I.3 (see http://developers.facebook.com/guidelines.php). Specifically, please note that the Terms prohibit applications from acting in a manner that is misleading, deceptive, or fraudulent.
+
+The application's link under the profile picture uses the same wording as Facebook's Gift application (please see attached). Please change this to reflect your application's name to differentiate Facebook's Gift application and "Free Gifts" application, as it is currently misleading users to think that this refers to the associated Facebook features.
+

+
+I will admit it is relatively the same wording, but they failed to explain how using "Send xxxx a Gift" is deceptive or misleading to users. First of all, Facebook provides a tool tip when you hover over a profile action which says "Provided by the xxxxxx Application," which immediately makes a distinction between Gifts and Free Gifts. Second, as far as I know, users are still sending a gift when they use Free Gifts. Third, I have been using this text for longer than I can remember now with no complaints. With over 50 million gifts sent, I have never had a user say they were "trying to use the real gift" application.
+
+I did comply somewhat by making all future profile actions say "free gift" instead of "gift," but there is no easy way for me to fix the 8 million profiles already containing the text. As of now they have failed to respond to my question of how exactly I was deceiving users, but I am really interested in hearing their reasoning. diff --git a/_posts/2008-02-02-on-funding-my-startup.html b/_posts/2008-02-02-on-funding-my-startup.html new file mode 100644 index 0000000..2134219 --- /dev/null +++ b/_posts/2008-02-02-on-funding-my-startup.html @@ -0,0 +1,13 @@ +--- +layout: post +title: On funding my startup +tags: +- Opinion +- Miscellaneous +created: 1201980639 +--- +This has been a whirlwind year for startups across the bay area and my startup, TY-Combinator really is no different. Barely a month into 2008, Slide, Inc announced it had received funding, the recent news about the bid from Microsoft to purchase Yahoo! for just above the GDP of Croatia and now great news for the TY-Combinator.
+
+I'm pleased to announce that the TY-Combinator has received an unsolicited bid from Microsoft that values TY-Combinator shares at over 400% under market value. Microsoft is willing to offer TY-Combinator a half-eaten sammich in exchange for 85% of TY-Combinator outstanding shares. This is an exciting time to work for TY-Combinator, with the prospective addition of the capital Microsoft is willing to offer we will be able to finance new projects to expand our global reach over 1000%, up from our reported reach in the 2007 fiscal year of 1.
+
+

Microsoft's bid for a stake in TY-Combinator
diff --git a/_posts/2008-02-03-tips-for-beginning-facebook-developers.html b/_posts/2008-02-03-tips-for-beginning-facebook-developers.html new file mode 100644 index 0000000..71cb33c --- /dev/null +++ b/_posts/2008-02-03-tips-for-beginning-facebook-developers.html @@ -0,0 +1,23 @@ +--- +layout: post +title: Tips for beginning Facebook developers. +tags: +- Slide +- Software Development +- Facebook +created: 1202087034 +--- +I am starting to see more and more novice developers on the Facebook forums as well as the IRC channel asking fewer and fewer "development" questions and more and more "product" questions. I find this incredibly interesting because it means one of two things: either everybody has figured out how to use the Facebook platform or an increasing number of people are putting the proverbial cart before the horse when it comes to developing Facebook applications.
+
+Call me cynical about the first option, but I find it highly unlikely that everybody figured out how to use the Facebook Platform; despite its low entry barrier many people are over-thinking it or simply trying to develop a Facebook application before they figure out how to build a web application in general.
+
+The second option is far more likely, Facebook applications have reached such a level of ubiquity that "everybody and their mother" wants to write a Facebook application these days. Right now at a small consulting firm in Omaha, Nebraska some middle manager is asking his lead developer if the firm can reinvigorate their collaborative synergies and utilize the social graph to further meet their clients needs.
+
+Facebook is the new Windows, and the Facebook Platform is the new Visual Basic and I feel as if there is a burden on "us" (the existing "top developers" on the platform) to start to cultivate a community that will encourage stylish, functional and ultimately useful applications on the Facebook platform, to ensure that there will never be a "Facebook 98" or a "Facebook ME".
+
+Here's a couple of the best tips I can offer, and maybe Zach (developer of Free Gifts) can help expand.
+
+