Categories
Uncategorized

RubyFringe: Day 1 Notes, Part 1

Here’s the first of my notes from RubyFringe, the non-corporate, almost-non-sponsored, edgy Ruby-but-not-Rails conference organized by the folks at Unspace and held in Toronto (a.k.a. “Accordion City”) on July 18th – 20th, 2008. I’ve read on a lot of blogs that people have been calling it “the best Ruby conference ever” — I might go so far to say that it’s the best tech conference I’ve been to.

This first set of notes covers the following presentations:

  • Adhearsion (Jay Phillips)
  • Deployment Monoculture / Scaling Ruby Down (Dan Grigsby)
  • Rockstar Memcaching (Tobias Lutke)
  • Living on the Edge (Yehuda Katz)
  • Testing is Overrated (Luke Francl)

Adhearsion (Jay Phillips)

From the RubyFringe program booklet:

Jay Phillips will talk about what’s been changing in the Adhearsion and VoIP scene and how people with virtually no VoIP experience can use Ruby and Adhearsion to write their first application in this generally foreign world of technology. If you’re building a Rails web application, with Adhearsion you could consider leveraging voice as a new, cutting-edge feature of it. If you’re a cowboy hacker with more personal ambitions, Jay will also talk about fun hacker projects and how you can go about implementing them. The world of voice is certainly a growing market and it can’t hurt to know a little about the technology!

- "Voice development on the fringe"
- "There's opportunity in the fringe"
- "Web development has this problem...it's saturated with innovation"
- Rails integration is a one-liner
- Asterisk's config file: complex and looooooong, app-specific config syntax
- Adhearsion's config: Ruby

Q&A
- Does it scale? Yes
- Asterisk breaks down at about 130 simul calls -- new box after that

Deployment Monoculture / Scaling Ruby Down (Dan Grigsby)

From the RubyFringe program booklet:

Most conversations about scaling Ruby web apps are pointed in the wrong direction. Instead of talking about whether Ruby can scale up — I think we all agree it can — I’d like to see it scale down.

As an entrpreneur, I launch dozens of ideas before I pick the one to turn into a startup. The Rails-inspired approach of deploying long running instances of the runtime, one or more per app, doesn’t scale down to support even a few side-by-side applications.

Instead of reflexively arguing that EC2 is cheap enough, this talk will challenge some base assumptions, take a hint and some inspiration from Google App Engine, and suggest another angle for deploying Ruby-based web apps.

- The programmer/entrepreneur lifestyle
    - Attractive
    - Hits the "sweet spot" -- lets you be who you are
    - It's all about controlling your own destiny
- The trick is to find opportunities to build stuff and match it with people who
  want that stuff

- Barrel research
    - It's a way of looking at markets and opportunities
    - Think of all the markets and opportunities out there as the volume
      within a barrel
    - Think of anything released into the market as a rock dropped into the
      barrel
    - The size of the rock in the barrel represents the size of the
      corresponding project or opportunity
    - Big rocks represent big projects taken on by big organizations
    - There are plenty of gaps between the big rocks, which can be filled in
      by smaller stones, representing smaller projects executed by smaller teams
    - It's fractal -- there are smaller gaps between the smaller stones, which
      can be filled in with sand, which represents even smaller projects by
      even smaller teams.

- The ideal team size these days: about 3
- Our current tools allow us to create well-crafted stuff with a small team
- Consider icanhascheezburger.com -- employs 9 people
- "Happy end of the Mythical Man-Month"
- If you're a hacker and have good hacker friends, you can do well

- With this in mind, what ideas should you implement?
    - "Late-bound ideas"
    - You want to make multiple, small, narrowly-focused bets
    - Act darwinistically -- take on a number of projects and cull those
      that aren't "fit to survive"

- Psychology and "Free"
    - Cheap is not free
    - Worry about spending money
    - Small psychological inputs can have a very large impact
    - Treat non-free things as dependencies -- try to get rid of them
    - Eliminating non-free things is part of a larger process:
      eliminating inefficiencies
    - If a customer is worth $100 -- Google will try to charge me $99 for it
    - Whoever your potential customer is, there'll always be someone out there
      who's going to spend more money than you trying to land that customer

- Disproportional Reward
    - This part of the talk is going to be all about market hacks,
      "fuzzing the market" and getting a result that is disproportionately
      greater than the time/effort/money you put in
    - They're all tech-driven: does not require you to be a salesperson
    - These approaches are tech- and marketing-based

    1. Breaking into the walled garden
        - PayMe.com was Pepsi to PayPal's Coke, with about 10% market share
        - We realized that auction buyers would be the big adopters of
          systems like ours, so we approached eBay who wouldn't take our ads
          because of an exclusive agreement
        - We found out that eBay had relationship with LinkExchange -- they sold
          a lot of ads in eBay
        - We bought out LinkExchange ads, many of which ended up appearing on
          eBay pages as per their arrangement, effectively doing an end run
          around eBay's refusal, getting out ads on their pages against their
          wishes
        - Exploiting this non-obvious relationship made our company successful

    2. Baby's Mamma
        - The parenting market has a strong geographic component: new parents
          tend to clump together in the same neighbourhoods
        - Certain postal codes are parent-rich
        - Going after parents? Find out where new schools are being built --
          that's where they are
        - School websites post which of their teachers are going on maternity
          leave -- send their colleagues coupons!
        - Take a page from the stalker book: use readily-available demographic
          information, sych as driver's licence registration, voter info
          registration
        - Do analysis on that information
        - Look for info that ties them to a specific demographic -- consider
          names that belong to specific generations, like "Hildegarde"
        - Use Freedom of Information Act requests
            - For example, Nate's dad gets an National Science Founation
              database of people who just got funding and uses it
              to cold call them
            - Often, he would be the first person to inform them that they
              got the funding, making him the bearer of good news and thus
              more likely to make the sale

    3. Tai Chi Marketing
        - I wrote a script to auto-fill contact forms that I knew would lead to
          my getting called by a telesales person
        - I got calls from telesales people, whose jobs are tough
        - I'd explain that I wasn't likely to buy what they were selling, but
          told them that I have a product that would make their job easier;
          could they introduce me to their boss?"
        - End result: an inbound sales call was redirected and turned into a
          sale to them
        - Making emotional connection with people is key

    "At this point in the list, we're now approaching that fine line that
    separates an entrepreneur from a criminal

    4. Dorm Spam
        - My first job: selling white box computers at dorms, a la Michael Dell
        - My major cost: shipping flyers
        - So I used the inter-campus mail system to send the flyers

    5. Tragedy of the Commons for Fun and Profit
    - This was in the era of desktop-based file-sharing clients like Scour,
      Kazaa and eDonkey
    - Shared a lot of windows media files with the names of popular videos and
      movies
    - .WMV files back then could include an instruction to pop open a browser
      window pointing to a specific URL when the file was played
    - We used this as advertising

Don't short this stuff:
- As programmers, we have a tendency to bury ourselves in coding when things
  get tough
- Some problems can't be solved with tech
- Learn about handling people

Rockstar Memcaching (Tobias Lutke)

From the RubyFringe program booklet:

Memcached is what makes the web fast. It’s also the simplest thing ever: you put a little memory aside for it, you put some keys in, you get them out at a later time.

So why the hell do all of you geniuses use it wrong? I’ll teach you how to tackle your performance issues using memcached once and for all.

- "I'm here to present the most boring talk of the entire conference"
- Memcached: "like a hash with Alzheimer's"
- Originally for LJ ("which is about people cutting themselves)
- Lots of people use memcache

- How does memcached work?
- Talking to servers
    - Simple protocol: get, set, delete
- What do you store in it?
- Object caches
    - after save to database, save it to cache
- Expiry options
    - flush_all: the nuclear option
    - :expires_in
    - use an observer -- delete an activity after saves
- Unique ID lookup

Living on the Edge (Yehuda Katz)

From the Rubyfringe program booklet:

Ruby is growing up quickly, and a number of Ruby’s mainstays are falling by the wayside. I’m talking about classics like Rails, Rake, Rdoc and much much more. This talk will help you squeeze even more developer productivity out of the latest edge tools that will be the mainstays a year from now. Of course, living on the edge is a dangerous game, so I’ll cover how to sanely keep abreast of the latest and greatest without having to spend all your time keeping your tool chain up and running.

I intend to cover Merb and DataMapper (briefly, as they are rapidly reaching escape velocity from the Land of Edge), Thor, YARD, basis and Johnson. I will also cover other edge tools that are released between time of printing and Rubyfringe. Rock on!

1. Merb
- Not really edge anymore, but still worth playing with
- Monolithic-ness not everything it's cracked up to be
- Merb lets you pick and choose
- Large community
- Stats: "I don't have numbers, but this is real!"
- You probably want to use Merb off edge
- Sake:
    - Does all the work cloning multiple git repositories

2. DataMapper
- NonSQL things
- Hard to get set up
- You should be using Github -- see github.org
    - "It's pretty much where Ruby edge is at"

3. Sake
- Lets us set up tasks

4. Thor
- Rake + Sake + Optparse

5. YARD
- Bigger than just an RDoc replacement

6. Johnson
- Rhino for Ruby
- A full Ruby-JavaScript bridge
- Lots of support for JavaScript expressions
- What's it for?
    - Server-side JS
    - Templates that work on client and server
    - Browserless tsting, potential
    - Optimizing Ruby?

Testing is Overrated (Luke Francl)

From the RubyFringe program booklet:

Develper-driven testing is probably the most influential software development technique of the last 10 – 15 years. There’s no question that it has improved the practice of building software. And in a dynamic language like Ruby, it’s hard to get by without it. But is it really the best way to find defects? Or is the emphasis on testing and test coverage barking up the wrong tree?

- Testing is a programmer's solution to the problem of bugs
- Coding's what we do, so why not make the solution out of code?

- What's wrong with this?

    1. Testing is hard
        - Developers tend to write clean tests describing the normal execution
        - Tend not to write "dirty" tests, which check non-normal cases, such as
          out-of-bounds conditions, bad data, various error states
        - Mature orgs write more dirty tests

    2. You can't test code that's not there

    3. Tests have bugs
        - A number of studies have shown that tests are just as likely to have bugs
          as the code they're testing
        - Who tests the tests?
        - There's also the matter of developers who comment out tests
          just in order to "get stuff done"

    4. Developer testing isn't very good at finding defects

- Complements to developer testing

    1. Manual testing
        - A good tester is worth his/her weight in gold
        - A good tester I know is not only good at explaining how the bug
          occurred, but also very thorough about providing info about it,
          including the stack trace
        - Have testers do it rather than programmers --
          besides, programmers hate it
        - Testers are also responsible for verifying fixes -- don't take the
          programmer's word that the bug has been fixed, confirm it!

    2. Code reviews
        - A good measure of code quality is the number of "WTFs per minute"
          during the code review
        - The polite code review definition of "WTF" is "What is this function?"
        - There are sociological considerations for code reviews -- you are,
          after all, leaving your creation (and by extension, you)
          open to criticism
        - Try to find bugs, not rip your collegaues to shreds
        - Code reviews can motivate you to code better
        - Can code reviews make better developers? Possibly:
          consider Robert Glass' argument that reading code
          can help make you a better developer

    3. Usability testing
    - Fun and easy
    - Jeff Atwood: Usability test failure is the ultimate unit test failure
    - The cheap way to do usability testing is to follow the model of
      Steve "Don't Make Me Think" Krug's "Lost our lease" usability lab:
      the testing computer and a camera, with you following the user
      through your application

- "Don't get me wrong: I write tests, I'm just not fanatical about it"

Categories
Uncategorized

Scenes from RubyFringe, Part 1

It’s been a while that we’ve had a slide as controversial as David Heinemeier Hansson’s infamous one from the Canada on Rails conference, so I thought I’d make one, and this one’s a good deal friendlier too:


Photo by Libin Pan.

Here’s the crowd at FAILCamp, the gathering that Hampton Catlin and I hosted, where people shared their stores of personal and professional failure — and sometimes even the lessons learned. This was taken early in FAILCamp; later on, the room was packed quite nicely:

After FAILCamp came the kickoff party at the open space on the upper floor of the Amsterdam Brewing Company. Here’s the RubyFringe logo projected against the back wall:

The opening act was Katie Crown, who had a charmingly oddball stand-up routine, which included her taking song suggestions from the audience and turned them into slightly-different version that were in the public domain (for example, she turned Who Let the Dogs Out into Who Released the Canines) and even invited me to join in with the accordion and help her out. We ended up creating public domain versions of Welcome to the Jungle and Gigantic:

Here’s the crowd at the Amsterdam taking in Katie’s routine:

The second act were We Take Lovers, who put on a great show with their indie-rock sound. They’re shopping around for accordions, so I was pleased to “talk shop” with them.

Today is day one of the conference; tonight we’re off to West Queen West to descend on the Drake and Camera!

Categories
Uncategorized

RubyFringe Guide: The Unofficial IRC Back Channel

Joey\'s Unofficial Ruby Fringe Guide to Toronto - Small logoIn case you were looking for the IRC back channel for the RubyFringe conference, there’s one on irc.freenode.net at #rubyfringe. Check it out, and see you there!

Categories
Uncategorized

RubyFringe Guide: The Lay of the Land, Part 2

Joey\'s Unofficial Ruby Fringe Guide to Toronto - Small logoThis is article number eight in Joey’s Unofficial RubyFringe Guide to Toronto, my guide to Accordion City for attendees of the RubyFringe conference, as well as anyone else who’s interested in our fair city.

In case you missed them, here are the other articles in this series:

  1. Where Did All the Cigarettes Go?
  2. Getting from the Airport to the Hotel
  3. Boozin’ in Accordion City
  4. The Lay of the Land, Part 1
  5. FAILCamp
  6. The Best Damn Cookie in Town
  7. Active Surplus, a.k.a. Hardware Nerdvana

In The Lay of the Land, Part 1, I covered some areas close to the hotel. In this article, I’m going to go over some of the interesting areas to the west: Chinatown, Kensington Market and Queen Street West.

Chinatown

The interesting neighbourhood that’s closest to the Metropolitan Hotel is Chinatown. From the hotel, all you have to do is walk to Dundas Street and hang a left and starting walking westward along Dundas. Things will start out a bit sparse, but as you cross University Avenue, there’ll be more to see. Continue westward and the concentration of Chinese restaurants and shops will increase until you reach the corner of Dundas and Spadina, the heart of Chinatown. Chinatown stretches north to about College Street, south to Sullivan, and west to about Denison.

As you might expect, Chinatown is lined with a lot of Chinese restaurants, although you’ll also find a lot of Vietnamese places, with a little Thai and Japanese thrown in for good measure. You’ll also find a lot of grocery stores with sidewalk stalls carrying fruits and vegetables. There are also some cheap clothes in the mix: if you need some plain T-shirts, there are plenty of places that carry them in many colours, 4 or 5 for a mere $10.

If you find yourself with the late-night munchies, Chinatown is the solution to your problem. A good number of the restaurants cater to the late-night crowd; many close as late as 5 a.m. on the weekends, and at least a couple of the Vietnamese places run 24 hours.

Kensington Market

Getting to Kensington Market is easy: just walk west on Dundas from the hotel for about ten minutes and go one block past Spadina, then turn up Kensington. You’ll be in Kensington Market, an area that blends alternative and counter-culture stores, traditional food markets, international restaurants and offbeat bars. Here’s a map of the area:

If you’re looking for stuff that you’re not going to find at the mall, this is the place to go.

For more about Kensington Market, see its Wikipedia entry and this Globe and Mail story (with video) of Dr. Richard “Creative Class” Florida paying a visit to the Market.

You can also take a little photo tour of the Market through the slideshow below:


Created with Admarket’s flickrSLiDR.

Queen Street West

Check out this map: it shows the way from the hotel to the corner of Queen Street West and University Avenue, followed by a long stretch west. If you’ve got the time, it’s a very interesting walk — about 4 kilometres (two and a half miles) of one of the more interesting streets in the city. Things will start off a little more gentrified and no more edgy than the Hot Topic store in your local mall, but as you progress westward, the stores, bars and restaurants get quirkier, and you’ll see the “creative class” types who make Queen West their home. If you don’t feel like walking, you can always check out the scenery via streetcar.

Once again, I direct you to Wikipedia for a description of Queen Street West and its OurFaves page for some locals’ recommendations.

And There’s More!

I haven’t yet told you about Little Italy on College West, the Annex, that stretch of Baldwin Street with all the restaurants, the Beach(es), Mink Mile, Greektown, Koreatown, Roncesvalles, High Park and a lot of other places, but I hope that I’ve given you a good start. If you’re at the conference and have any questions about the city, feel free to ask me or any of the other locals — we’ll be happy to help!

See you at the conference!

Categories
Uncategorized

RubyFringe Guide: Active Surplus, a.k.a. Hardware Nerdvana

Joey\'s Unofficial Ruby Fringe Guide to Toronto - Small logoWelcome to installment number seven of Joey’s Unofficial RubyFringe Guide to Toronto, my guide to Accordion City for attendees of the RubyFringe conference or for anyone who’s wondering about interesting stuff in Toronto.

The previous articles in this series are:

  1. Where Did All the Cigarettes Go?
  2. Getting from the Airport to the Hotel
  3. Boozin’ in Accordion City
  4. The Lay of the Land, Part 1
  5. FAILCamp
  6. The Best Damn Cookie in Town

This article will cover Active Surplus, a long-time resident of Queen Street West and a surplus electronics-and-gear store like no other. It’s a short walk away from the Metropolitan Hotel and well worth a visit.

If you’re a mad scientist, electronic hobbyist, artist, looking to get your stereo hooked up or even getting stuff for your wedding, I recommend taking a look around Active Surplus on a regular basis. A fixture of Queen Street West since my high-school days (the early 1980s!), Active Surplus is a warehouse filled with bins of all sorts of gadgets, gears, cables, adapters, speakers and all sorts of electronic and mechanical stuff that you’re just not going to find at Best Buy or Radio Shack, especially at their prices.

Active Surplus is located at 347 Queen Street Westhere’s a Google Map showing you the way there from the Metropolitan Hotel.

Here’s what it looks like once you climb up the stairs leading into the store:

They’ve got all sorts of cables: audio, video, computer…

…and there are power strips and extension cords aplenty, all going dirt cheap:

They’ve got a row of interface peripherals — mice, trackpads and keyboards, including this water-resistant flexible USB keyboard:

…and there are all sorts of electric motors and pumps, from those for small aquariums to those for light industrial purposes:

You can unleash your inner security officer with one of these surveillance cameras:

Or perhaps it’s your inner meter maid you want to unleash with these assemblies from decomissioned electronic parking meters:

They’ve got a section of bin devoted to digital camera and card goodies. They’ve got all kind of card readers going for very low prices:

If RubyFringe turns into that kind of party, you’ll know where to buy electric trimmers:

Active Surplus has a good stock of pens, for those of you who like taking notes by hand:

They have a few bins of sunglasses as well as 3-D glasses:

Need to cordon off an area so that you can do CSI-style investigations? They’ve got police barrier tape:

They have a seemingly endless supply of stickers and adhesive-backed mini-mirrors:

I have no idea what this glass thing was originally for (bedpan?), but I’m sure all of you who listen to jam bands saw this and thought “bong!”:

Here’s a portable toilet, suitable for camping. I love that they felt it was necessary to say that you’re not supposed to try the in the store:

And last but not least, they’ve got “Baby Legs”, which are described as “young padawan parts, thanks to Darth Vader.”

Categories
Uncategorized

RubyFringe Guide: Best Damn Cookie in Town


Photo courtesy of SpotlightToronto.com.

Joey\'s Unofficial Ruby Fringe Guide to Toronto - Small logoThis is the sixth installment of Joey’s Unofficial RubyFringe Guide to Toronto, my guide to Accordion City for attendees of the RubyFringe conference as well as people just curious about this place.

In case you missed the earlier articles in this series, they are…

  1. Where Did All the Cigarettes Go?
  2. Getting from the Airport to the Hotel
  3. Boozin’ in Accordion City
  4. The Lay of the Land, Part 1
  5. FAILCamp

In this article, I’m going to talk about a little detour you might want to make for an extremely delicious cookie (and other snacks).


If you’ve ever gone walking around Paris looking for a quick bite to eat, Le Gourmand will give you a sense of deja vu. It’s a cafe that doubles as a somewhat pricey mini-grocery that carries gourmet food. They make excellent coffee and hot chocolate (you even get a choice of two of French chocolate mixes), delicious sandwiches, a nice bowl of steel-cut oatmeal with fruit, but most importantly, cookies to die for. Hell, they’re cookies to kill for.

The chocolate chip cookie (pictured at the top of this article) is a nice and large, which makes it crispy at the edges and soft and chewy in the center. The dough is rich, flavourful and packed with very good chocolate chips. I might actually keep my bike right by the conference to do a cookie run during the mid-afternoon lull.


Photo courtesy of SpotlightToronto.com.

If brownies are more your speed, Le Gourmand also has the Nookie Cookie, which is a brownie-like drop cookie dusted in icing sugar. It’s enough to make Dr. Atkins spin in his grave, but it’s throwing off your low-carb regime for this treat. Pair this with one of their black coffees, and you’ve got a nice civilised mid-afternoon snack.

The nearest Le Gourmand branch is at 152 Spadina, a little under a block south of Queen Street, not far from the Unspace office. Here’s a Google Map showing the way to Le Gourmand from the Metropolitan Hotel.

If you’re going to exploring around town beyond the general area of RubyFringe, there’s another branch of Le Gourmand at 20 Bloor Street East, just east of Yonge. If you’re going to be looking around the Yorkville area of town, be sure to pass by.

Categories
Uncategorized

RubyFringe Guide: FAILCamp (Friday, July 18 – 4 to 7 p.m. at The Rhino)

Joey\'s Unofficial Ruby Fringe Guide to Toronto - Small logoWelcome to the fifth installment of Joey’s Unofficial RubyFringe Guide to Toronto, my guide to Accordion City for attendees of the RubyFringe conference as well as people just curious about this place.

In case you missed the earlier articles in this series, I’ll list them here:

  1. Where Did All the Cigarettes Go?
  2. Getting from the Airport to the Hotel
  3. Boozin’ in Accordion City
  4. The Lay of the Land, Part 1

In this article, I’m going to cover FAILCamp.


The first event of RubyFringe is the only one that’s open to anyone, whether or not they’re attending the conference itself. It’s FAILCamp, a gathering where we’ll share stories about and lessons from failure. It will take place at The Rhino Bar and Grill (1249 Queen Street West, just west of Dufferin) and runs from 4:00 p.m. to 7:00 p.m.. Once again, you don’t have to be a RubyFringe attendee to catch this one. Admission is free, but you’ll have to buy your own beer.

Here’s a quick description of the event, as written by its originators, Amy “Slash7” Hoy and Thomas “Scriptaculous” Fuchs:

We believe that it’s time to give our personal fail some tough love and talk it out over beer!

Join us for a brief, rousing introduction followed by camaraderie, beer, and show-and-tell. We’ll present a little about failure through the ages, mining your personal suck, maybe some science, pithy quotes from people you may or may not respect, and share some failure stories of our own.

Then it’ll be your turn. If all goes to plan, you may even win in our friendly “race to the bottom” for the most public, most expensive, or most ridiculous Story of Fail.

I believe that the original plan was for Amy and Thomas to host the event as a dry run for a much larger FAILCamp event taking place on the 26th in Philadelphia. Circumstances have arisen and they will be unable to make it to Accordion City this weekend. While this fits with the theme of FAILCamp, it hasn’t stopped it — instead, two new hosts have stepped up to fill in for them:

  • Hampton “HAML” Catlin, who very well might be the best Ruby hacker in town, and
  • Yours Truly, who very well might be the worst Ruby hacker in town.

Hampton’s going to provide a lot of insight and programming know-how to FAILCamp. Me? I’m going to be responsible for innuendo-laden stories of personal and professional failure peppered with gratuitous Zardoz references.

As for the Rhino itself, it is truly pub with a “neighbourhoody” feel. Where many places are content to be mere endpoints in the Anheuser-Busch/Molson-Coors supply chain, the Rhino is what some sociologists call a “third place”, a neighbourhood gathering point for all kinds of people, from the locals who’ve been in the Parkdale area since it was a more rough-and-tumble place to the artsy and musician types who moved into the neighbourhood to the geeks who use it as the venue for the monthly Rails Pub Nites and Ajax Pub Nites. Even though the neighbourhood is gentrifying in a manner similar to New York’s Lower East Side or certain parts of Brooklyn, The Rhino has managed to remain pretty much douchebag-free and inexpensive, unlike a number of the other pubs in the area.

The only way in which The Rhino gets fancy is with their beer menu. There are about 200 beers on the menu hailing from a few dozen countries, and they’re generally well-stocked and priced in the 5 to 7 dollar per pint/bottle range. Be sure to try the locals: their own lager, as well as Mill Street, Wellington and Creemore Springs.