Miracle fruit: 1st shipment has arrived

The grapefruit tasted like a delicious, sweet, juicy orange. Balsamic vinegar had strong hints of blackstrap molasses. Lemon and lime were candy. Banana was unchanged; dark chocolate was sickly sweet.

I just finished testing the first batch of freeze-dried miracle fruit extract. Now I need a scale to portion out 50 49 1 gram doses, and the only place that comes to mind are pot paraphernalia shops. They even sell the little baggies!

Unlike the fruit, the extract is stable in the refrigerator for months, so I have some time to plan this party.

Rails: making restful-authentication secure by default

If you used restful-authentication with the –stateful flag and did not add an admin_required filter, anyone can delete users. A patch is on github.

This is not the first time I have found this type of problem. Check your favourite authentication generator; is the default code secure? Can any new user delete others?

In a perfect world, programmers would read all the code that these generators create and check every comment for things to fix.

Realistically, that’s not what happens. For the activation emails, in my branch of r_a, I intentionally generate failing tests.

Once you have entered the appropriate values in your emails, the tests pass. Rather than hoping they read my notes, I am forcing the coder to fill in the blanks.

If you must communicate your gotchas using comments, at the very least, they should use FIXME or TODO keywords that are picked up by ‘rake notes’.

Lifestyle businesses

“Lifestyle Businesses”: The topic came up at yesterday’s Montreal Tech Entrepreneurs Breakfast after the Montreal Start Up crew joined Darrel and I.

Lifestyle Businesses are businesses that are set up and run by their founders primarily with the aim of sustaining a particular level of income and no more; or to provide a foundation from which to enjoy a particular lifestyle. (wp: Lifestyle Business)

Why wait until an IPO, after you are already addicted to the 80 hour weeks? Freelancing already affords me the opportunity to make a healthy income and pursue other interests - dancing, community building and more.

When I got home, there was an Amazon parcel waiting for me with two books:

I actually bought a chocolate maker, beans and chocolate. Just for fun. It’s the kind of lifestyle I would want after a successful start-up, only I get to have it now. If you are waiting until you’re a millionaire to enjoy the life you can have now, you are crazy.

VC’s naturally dislike these businesses. Investing in Daniel Haran simply won’t scale. Once I can charge more per hour, I’m more likely to work fewer hours. I could hire sub-contractors and grow but the margins are small - if there is growth, it will be organic.

If you ask a VC to invest in your lifestyle business, you will just annoy them and waste everyone’s time. As Daniel (from MSU) pointed out, there’s probably some way to make money at it - however the structure of a VC fund isn’t appropriate (they have to return the money to their investors at the end of a fund, usually around 7 years).

Around this time, Aran Rasmussen joined the conversation: Would micro-finance or another type of fund structure help us get some sustainable lifestyle businesses? More than a handful of high-profile successes (like RIM), Montreal could have a vibrant tech business scene if we could figure out a funding model for these companies. Fortunately, people like Daniel are thinking about it.

I may one day decide I want to start a company. Working at a small business should hopefully increase my odds of success - I’ve built relationships and learned valuable lessons already.

The motivation would be different. I believe the lottery ticket approach to startups is a personal and spiritual dead end. I already have enough money to afford a comfortable lifestyle, a few millions will not make me happier. Well, not for very long.

Hopefully the discussions at these breakfasts will bear fruit. The most potent one could be a vision of entrepreneurship that did not sacrifice community, family or sleep. As the Silicon Valley prophets of greed and workaholism continue blogging their tired message, we could be using the web the way it was intended and creating lasting wealth.

Miracle fruit: taste-tripping in Montreal

Swish this berry around in your mouth for a minute, and for the next 30 minutes to 2 hours, bitter and acid foods taste sweet. After the NY Times reported on this “Miracle Fruit”, I knew I had to try it:

Nearby, Yuka Yoneda tilted her head back as her boyfriend, Albert Yuen, drizzled Tabasco sauce onto her tongue. She swallowed and considered the flavor: “Doughnut glaze, hot doughnut glaze!”

Given antics such as those, it’s no wonder they call it flavor-tripping.

I’ve ordered miracle fruit and extract (aka ‘miraculin’) from two different suppliers and am anxiously waiting for deliveries. As soon as I get some, there will be a flavour-tripping party right here in Montreal. I’ve never been so excited about eating sauerkraut and Umeboshi.

For more information on synsepalum dulcificum, you can check out the wikipedia page for miracle fruit, information about its history and my del.icio.us bookmarks.

Wikipedia Policy FAIL

The warning has been in place since July 2007. Visit the wikipedia page for Gargamel, or click picture for full-size view:

Wikipedia Gargamel article

Don’t link to Tourisme Montreal

The terms of service used to forbid linking:

  You are prohibited from creating links in other Web sites leading to this Web site without prior express authorization from the Site Owner. (To obtain an authorization, contact our Web site administrator at info@tourisme-montreal.org) — retrieved May 21st

Today I checked again, and lo! the terms have changed:

  The Site Owner reserves the right to request, at any time, that any link to this Web site created from a third party’s website be deleted if, in Site Owner’s sole discretion, such link causes the Site Owner a prejudice.

We can assume some clueless nitwit insisted on keeping the provision, no matter how often it was explained to them that it was ridiculous and unenforceable.

TD Customer Service

Dear TD Customer Service,

I emailed you because of concerns of fraud. An ATM that collects PIN numbers is a known attack vector.

Telling me to call instead is lame. Especially a day later.

You should know if I’m a customer that uses online banking (I do).

You should know if there were sufficient funds in my account (there were, and I made a withdrawal at another ABM).

So an ATM that doesn’t let me withdraw is suspicious. Especially when the error message does not correspond to the reality.

I emailed you because of the 5 minute wait on the phone.

Next time I just won’t bother.

Thanks for nothing,

Daniel.

Hello Daniel,

I appreciate your concern that you are unable to withdraw funds from your
TD Canada Trust using a Triton machine.  Thank you for taking the time to
write, and I apologize for the delay in responding to your email.  We
strive to respond to all email received in a timely fashion and we wish to
assure you that this delay is not typical of the level of service we aim to
provide. I regret any inconvenience or frustration this delay may have
caused.

If you are confident that there are funds available in your account for
withdrawal but continue to receive an “insufficient funds” message at an
ATM (ABM), it’s a likely indication that you have reached your daily
withdrawal limits placed on your card.  Every Access Card is set with daily
and weekly limits for both ATM withdrawals and Interac purchases.

To have this situation investigated, I encourage you to contact EasyLine at
1-866-222-3456 or collect at (416)-983-5393, available 24 hours a day, 7
days a week.  If you are not registered for EasyLine, please press option 2
when you call.

Alternatively, you can contact your branch for assistance. Branch
information, including phone numbers, can be located here:

http://www.tdcanadatrust.com/locator/

As email is not a secure channel for transmitting information, I regret
that I’m unable to assist you via this medium.  I apologize for any
inconvenience this situation may present.

I hope this direction is helpful.  Thank you once again for writing.

Best regards,

<name removed>

Internet Correspondence Representative

Heresies learned at Unspace

Two and a half weeks at Canada’s best known rails consultancy taught me a few lessons.

Test less

The folks at Unspace haven’t jumped on the testing bandwagon. They do have a human that does a pretty thorough job of going through their sites and reporting bugs. Yes, a flesh-bot. How quaint, eh?

This works for Unspace because they only build very simple applications. Rather than a limitation, this is actually a design goal. Layers and libraries can get abstracted, but the web application itself must remain simple.

At that point, most bugs are pretty obvious with even minor amounts of smoke-testing. Worse yet, some bugs are for functionality that was specified by a client but just doesn’t make sense, and it’s only when you’ve implemented it that it gets discovered by a human tester.

My first inclination was to think they were crazy to not test. I don’t personally feel comfortable with such a style, preferring heavy unit tests with light or automated functional tests. Simpler applications however are now one of my design goals: web apps just shouldn’t be that complex.

If your helpers need testing, you’re probably doing something that should be done in the model or some other hack.

No Contracts

In a bit over 2 weeks, there were several meetings with the client. Things got re-prioritized, items were added and dropped. Contracts bind both client and provider; it’s easier to work by the hour.

Work less

3 to 4 hours a day of billable time on average. They only bill for work they do when in the zone - even if that means not even showing up at the office on some days.

Some would say that’s unprofessional. Code will suck if you’re tired or not feeling well, and that’s a lot less professional.

Work on fun projects

You can’t always do projects for clients. Complainy took only a few hours for them to write and launch, and they had much fun with it. Visiting them after the end of my contract, they were hacking a Facebook app for playing cards.

It’s fun, and it’s a way to learn and test out libraries and speculative technology. That kind of stuff keeps you sharp - and now they can tell a client they have experience with a facebook app.

Party!

If you work for work’s sake, you FAIL. If you’re ever in Toronto, try to wrangle an invite to their Friday “Tea Party”.  Rubyfringe attendees should see some pretty amazing partying.

Tourism, ambassadors and stupid flash websites

Heri rants justifiably about Tourisme Montreal spending $1.5 million on a yet another crappy flashy brochure website.

Before an agency embarks on such a high budget exercise ($1.5 for a website is a gigantic budget), I’d want to ask the following:

  • How will they measure ROI?
  • Who is the audience?
  • What are the key metrics?
  • What budget is there for iterating and adjusting the site?

While ‘user-generated content’ is no panacea, I’d suggest there are good uses for it, especially if we target those people I call Ambassadors.

Montreal has a lot to offer. When a friend told me he was considering a visit, I sent him Jazz Festival information, because he’s a jazz fanatic. Montreal has a festival, event or point of interest for just about every taste. I was effectively acting as an ambassador. An ambassador can be a local, or a person that visited your city and loved it so much they tell others.

One key metric I’d suggest for a Tourism promotion site is how many ambassadors used it to invite friends and family with targeted content.

For people that come visit me, I have created a google map (with the ‘My Maps’ feature) with recommended spots in my neighbourhood, places to see and public transit information. Combine the implicit data from many of those mash-ups, and you can have a list of ‘most recommended’ places and events.

Considering you can’t properly bookmark a page and that there’s no ‘tell a friend’ feature, I’d venture that idea was never even considered. Tourisme Montreal’s project hasn’t even caught up with staples of the 1990’s web marketing.

One nit to pick with Heri: I would squarely blame the agency for this failure. They should know the web if that’s their medium, and be ready to educate clients or refuse work that reflects so poorly on them.

Freelancing with Unspace

My first freelancing gig is with the folks at Unspace. Hampton convinced me to move to Toronto for a couple of weeks to work on CommunityLend. It’s an exciting project, check it out.

Email me if you are in Toronto and would like to meet up.