Montreal

Reminder: Montreal Shopify Meetup This Thursday!

by Joey deVilla on August 30, 2011

Once again: a reminder that the Montreal Shopify Meetup takes place this Thursday at the Irish Embassy (1234 Rue Bishop) at 6:00 p.m.. Come meet your fellow shopowners, developers and designers! Come meet some of the Shopifolks (Edward, Cody, Ada and Yours Truly) who are coming down for the event! Come on down and join us for good food, good drink and good company!

Once again, our deepest thanks to Mitch Amihod and Dave Lazar for putting this thing together. Mitch says that while RSVPing isn’t necessary, you should drop him a line on Twitter (his handle’s @meeech) or email him just so he knows how many plan to attend and can book space accordingly.

This article also appears in the Shopify Technology Blog.

{ 0 comments }

Montreal/Toronto/Edmonton Event Reminders

by Joey deVilla on September 30, 2010

reminders

Deployment Clinic Today in Montreal

Deployment clinics are a little more formal than Coffee and Codes. You can book an exclusive timeslot to deploy and test apps to a Windows Phone 7 device, and there’s one taking place all day at Microsoft’s Montreal office (2000 Avenue McGill College, 4th floor) on the 30th. Email Christian Beauclair to reserve a time slot.

Coffee and Code Today in Toronto

I’ll be at the Starbucks at King and Yonge (4 King Street West) from 11:00 a.m. to 5:00 p.m. with a Windows Phone 7 for you to play with and deploy your apps to. I’ll be at or near the big table in the back — come on down!

Montreal “Speaker Idol” Deadline is Soon!

Compete in Speaker Idol to win a licence of Visual Studio Ultimate and the respect of the Montreal .NET Community! The deadline to subm,it a 200-word abstract and a brief bio for your 10-minute presentation is coming fast (midnight Friday).

TechDays Edmonton is Next Week

TechDays comes to Edmonton next week, taking place on October 5th and 6th, and with it will come CloudCamp Edmonton (October 4th) and Windows Phone 7 Coffee and Code Edmonton (October 7th). Watch this blog for more details!

This article also appears in Canadian Developer Connection.

{ 0 comments }

Montreal Coffee and Code Today!

by Joey deVilla on September 29, 2010

Coffee and Code: Cup of coffee and a milk server on a wooden table

Today, Wednesday, September 29th, join “les bons gars”, Developer Advisor Christian Beauclair and Regional Director Guy Barrette, who’ll be holding a Coffee and Code at Le Café de la Cité on 75 Queen. They put on a professional appearance, but we all know qu’ils vont ecrire des «fart apps»! They’ll be doing it in both official languages: Silverlight and XNA!

This article also appears in Canadian Developer Connection.

{ 0 comments }

“Speaker Idol”: Montreal, October 25th

by Joey deVilla on September 29, 2010

Speaker Idol: photo of microphone

Want to share your .NET knowledge in front of an audience? Got some special pearl of wisdom that you’d like to pass to your grateful, applauding peers? Want to win prizes for your scintillating oratory?

“La Communauté .NET Montréal lance un grand concours appelé Speaker Idol afin de vous donner la chance d’être conférencier,” says the Speaker Idol event site. Luckily, my vast experience in talking my way out of sticky situations in La Belle Province has given me enough skill to translate it:

Logo: Speaker Idol - Communaute .NET MontrealThe Montreal .NET Community is starting a competition called Speaker Idol. It’s your chance to be the speaker, presenting a .NET-related topic, trick or technique in ten minutes in front of a panel of expert judges. Impress them, and you’ll get:

  • An opportunity to do a full presentation in front of the user group at a later date
  • A license for the all-singing, all-dancing, all-coding Visual Studio 2010 Ultimate

The rules for Speaker Idol:

  • When and where? Speaker Idol takes place on Monday, October 25th, from 6:30 p.m. to 9:00 p.m. at Microsoft’s Montreal Office (2000 Avenue McGill College, 4th floor).
  • Both official languages welcome. No, not C# and VB, but French and English!
  • They’re looking for new speakers. The contest is open only to people who’ve never spoken at a user group or conference.
  • Submission deadline: You need to submit a brief description (200 words max.) of your talk and a speaker bio by midnight, October 1st (Friday!) to info@dotnetmontreal.com.
  • Maximum number of participants: They’re looking for 10 participants, and no more. If more than 10 people sign up, the best 10 submissions will get picked. Sign up soon!
  • Who presents first? Speaker Idol contestants will present in alphabetical order, based on surname. If your family name is Aaaaaaabercrombie, you’re probably going on first!
  • Speaker Idol contestants will be announced on October 4th.
  • Contestants will be judged on:
    • Mastery of their subject
    • Quality of their presentation
    • Ability to get the point across
    • Quality of their slides
    • Quality of their code
  • What will be provided: A laptop with Visual Studio 2010 Ultimate and SQL Server Express 2008 installed will be available. If your presentation requires the installation of other software, please bring your own (if your bring your own, set your screen resolution to 1024 * 768).
  • What won’t be provided: There will be no internet connection available.
  • What you should bring: Bring your PowerPoint presentation and demo code on a USB key or drive. Your presentation and code will be featured on the .NET Community’s site.
  • Judging: A panel of 3 judges will comment on your presentation and the audience will vote. They promise a relaxed environment.

Once again, if you want to participate, submit your 200-word-max presentation description and bio to info@dotnetmontreal.com!

This article also appears in Canadian Developer Connection.

{ 0 comments }

This Week’s Coffee and Codes / Deployment Clinics

by Joey deVilla on September 27, 2010

Coffee and Code: espresso cup sitting among coffee beansCreative Commons photo by “Demion”.

Join us as we make ourselves available to you so you can try out a real live Windows Phone 7 device and see how your apps work on the real thing. We’ve got a couple of Coffee and Codes and one deployment clinic this week:

Wednesday, September 29 in Montreal (Coffee and Code)

Coffee and Code is all about us spending the day working out of a cafe so that you can find us, join us, talk, ask questions and get to know us better. These days, it’s also about Windows Phone 7, but we’re happy to talk and answer questions about anything. Please drop by, whether it’s for five minutes or five hours!

Join “les bons gars”, Developer Advisor Christian Beauclair and Regional Director Guy Barrette, who’ll be holding a Coffee and Code at Le Café de la Cité on 75 Queen. They put on a professional appearance, but we all know qu’ils vont ecrire des «fart apps»! They’ll be doing it in both official languages: Silverlight and XNA!

Thursday, September 30 in Montreal (Deployment Clinic)

Deployment clinics are a little more formal than Coffee and Codes. You can book an exclusive timeslot to deploy and test apps to a Windows Phone 7 device, and there’s one taking place all day at Microsoft’s Montreal office (2000 Avenue McGill College, 4th floor) on the 30th. Email Christian Beauclair to reserve a time slot.

Thursday, September 30 in Toronto (Coffee and Code)

I’ll be at the Starbucks at King and Yonge (4 King Street West) this Thursday from 11:00 a.m. to 5:00 p.m. with a Windows Phone 7 for you to play with and deploy your apps to. I’ll be at or near the big table in the back — come on down!

This article also appears in Canadian Developer Connection.

{ 0 comments }

samedi .net in montreal

Don’t forget that a Samedi .NET event is taking place this Saturday, September 25th in Montreal: Introduction au B.I., or as they say en Anglais, Introduction to B.I.. As in Business Intelligence. For the full details, see my earlier blog entry and the event’s registration page. It won’t cost you much to attend; admission to the event is under $10.

Thanks to La Communauté .NET Montreal for putting on the event and to Microsoft Canada Regional Director Guy Barrette, my go-to guy for keeping me in the loop on Montreal geek events!

This article also appears in Canadian Developer Connection.

{ 0 comments }

Le 25 Septembre: Samedi .NET– Introduction au B.I.

by Joey deVilla on September 3, 2010

le business intelligence

samedi.netIf you’re in Montreal on September 25th and want to learn about developing BI applications – that’s BI as in “Business Intelligence” — La Communauté .NET Montreal’s Samedi.NET event, Introduction au BI, is exactly what you need.

Here’s what the event site says:

La Communauté .NET vous propose une journée de formation complète sur le B.I. Le but de la journée est de de faire un tour d’horizon des bases et des techonogies de B.I.  Le public cible est un développeur .NET ou un DBA n’ayant jamais fait de B.I. Le format de la journée est "hands-on" avec une série de démos ayant une suite logique.

And here’s my best shot at translation, courtesy of my high school French classes and youthful dalliances with a Quebecoise or two:

Montreal’s .NET Community will be presenting a day’s worth of information on BI. Its goal is to give you an overview of BI basics and technologies. The intended audience is a .NET developer or a DBA who’s never done BI before. It’ll be a hands-on event featuring a series of demos to illustrate the concepts.

Here’s the schedule – note that it’s subject to change:

  Sujet Conférencier
9h00 Mot de bienvenue et description de l’architecture du projet Éric Moreau
9h30 Concept de framework/préparation des templates (SSIS) Christian Côté
10h15 Chargement des dimensions et table de faits Sébastien Notebaert
11h15 Pause  
11h30 Description du cube Charles Verdon
12h00 Lunch (non inclus)  
13h00 Création du cube avec Analysis Services (SSAS) Charles Verdon
13h45 Utilisation et création de rapports avec Reporting Services (SSRS) David Myers (anglais)
14h30 Pause  
14h45 Utilisation et création de rapports avec Power Pivot Michelle Gutzait (anglais)
15h30 Questions et conclusion Christian Côté

The sessions will be presented in a classroom-style amphitheatre to make it easier to take notes. They recommend bringing paper and your favourite writing implement; while you can bring a computer to take notes, they can’t guarantee that electrical outlets will be nearby (bring an extension cord). Note that the event will not have internet access.

To attend the event, you have to be a member of La Communauté .NET Montreal, which you can join via their site. The registration fee for the event is $5 plus service charges, and as the event site says, “$5 c’est pas tellement cher”. (Loosely translated, that means “five bucks ain’t gonna hurt your wallet.”)

Want to find out more? Visit the event site for Introduction au BI.

This article also appears in Canadian Developer Connection.

{ 2 comments }

coffee plus windows phonePre-manufacturing Windows Phone 7 devices are incredibly hard to come by, but we’re working on ways for you to test your WP7 apps on the real thing. One way we’re doing this is by holding “Deployment Clinics” all over Canada.

Today (Thursday, Sept 2): Toronto

  • If you’re in downtown Toronto, I’ll be holding a Windows Phone 7 Coffee and Code from 11:00 a.m. to 5:00 p.m. today at the Starbucks at King and Yonge (northwest corner, right above King subway station). We’ll be at the big table in the back. Bring your Windows Phone 7 app and see how it runs on a real phone!

Friday, September 3: Calgary and Toronto

Next Week: Montreal

It doesn’t matter if you’re a Francophone, Anglophone or allophone: we want you to come see and deploy to Windows Phone!

Thursday, September 9th

A Microsoft Canada event: Windows Phone 7 Night in Montreal (featuring a developer device!)
5:30 – 8:30 p.m. at the Microsoft Montreal office (2000 Ave McGill College, Suite 450, Montreal)

Join Christian Beauclair from Microsoft Canada, along with Colin Melia from DreamDigital, for an evening about Windows Phone 7 in the flesh.  That’s right, they’ll be there in person, oh and so will a real developer device!

In October, Microsoft will start accepting application submissions on the mobile marketplace for Windows Phone 7 applications, with devices being available at retail shortly thereafter.

Will you be one of the first developers selling a cool application? Are you an IT Pro that wants to figure out how these devices fit into your organization?  To get to grips with this new mobile platform and build on your existing .NET and infrastructure knowledge, you’ll need to know the features of the new phone platform.

Visual Studio 2010 together with the WP7 tools make building applications a delightful experience. During this evening event, you’ll have the opportunity to see the phone in action, learn about the tools and understand how the phone integrates into your enterprise.

You absolutely must be registered to attend.

Register for this event

Friday, September 10th

Deployment clinic at the Microsoft Montreal office (2000 Ave McGill College, Suite 450, Montreal)

This article also appears in Canadian Developer Connection.

{ 0 comments }

My Photos from Make Web Not War 2010

by Joey deVilla on May 29, 2010

I’ll post a more detailed write-up of the Make Web Not War conference later, but I thought that those of you who were there (or wished they were there) would like to see some photos as soon as possible. I’ve posted my photos at full resolution to my Make Web Not War Flickr photoset, which you can view either on Flickr or the slideshow above. The photos all have titles, and I promise I’ll finished the remainder of the descriptions over the next couple of days.

This article also appears in Canadian Developer Connection.

{ 0 comments }

We’ll Be in Montreal This Week

by Joey deVilla on May 24, 2010

Montreal: photo of poutine

Microsoft Canada’s Developer and Platform Evangelism team is headed to Montreal this week, where we’ll be getting together for our annual team meeting as well as to help run the Make Web Not War conference on Thursday.

We’re not travelling in the usual way either. We’ve hired out a VIA Rail car to take us and a lot of Make Web Not War attendees to Montreal in style. The car’s rigged with power, wifi, Xboxes, Rock Band, monitors and other goodies to make the five-ish-hour trip even more enjoyable for all that nerdy brainpower on board. The train leaves Toronto on Tuesday morning and returns on Friday – watch this space for reports from the train as well as from Montreal!

This article also appears in Canadian Developer Connection.

{ 0 comments }

via nerd car

A quick reminder: if you’re looking for cheap transport to Montreal for MonDev, Montreal’s Open Source Week (which concludes with the Make Web Not War conference), we’ve booked an entire VIA Rail car from Montreal to Toronto! The train car (pictured above) has wifi, power outlets and will be equipped with video monitors, an Xbox or two, a big-ass HP TouchSmart computer and other technological goodies to make the time pass by.

Best of all, if you want to book a trip on this car, we’re subsidizing it. Round-trip tickets are a mere $50 and cover the cost of the ride, a sandwich lunch and drink voucher! The train departs for Montreal on the morning of Tuesday, May 25th and departs back for Toronto on the morning of Friday, May 28th.

For more details, email cdnsol@microsoft.com.

This article also appears in Canadian Developer Connection.

{ 4 comments }

make web not war banner

Make Web Not War is a cross-platform conference focusing on web development in mixed open source and commercial environments. Make Web Not War is jointly sponsored by Microsoft, our friends at PHP Quebec and open source communities across Canada. We’re proud to be a part of MonDev, Montréal’s Open Source Week, which takes place from May 24th through 28th, 2010.

mondev open source week in montreal

About Make Web Not War

Make Web Not War is a free-as-in-beer event taking place on Thursday, May 27th featuring free-as-in-speech software development. Among other things, you’ll get to:

  • Mingle with some of the best web developers in the country
  • Listen and learn from industry experts and leaders
  • Play with some of the new and exciting toys being offered by Microsoft
  • See who gets crowned as Canada’s top developer at the FTW! Coding Competition
  • Attend the VIP party held in the heart of beautiful Montréal

Make Web Not War’s schedule has two tracks:

  • The Main Track, which covers new opportunities and the business impact of interoperability on the web. Its sessions will be short presentations followed by roundtable discussion with the panelists and Q&A.
  • The Developer Track, which are hands-on sessions covering interoperable tools and technologies.

Make Web Not War will take place at Reunion, located at 6600 Hutchison:

Map picture

 

Want to Attend Make Web Not War?

Registration is free – just visit the registration page and sign up!

About MonDev

MonDev logo

MonDev, Montréal’s Open Source Week, runs from Monday, May 24th through Friday, May 28th. It’s a celebration of Open Source technology and community throughout the Montréal area and features many events, including:

  • Demo Ignite Camp
  • Startup Drinks
  • WebCamp
  • Make Web Not War

From MonDev’s “About” Page:

By encouraging local and international partnerships, Open Source developers are creating free software that can be continuously updated and shared. For many software innovators, Open Source represents the future transformation of software development.

Through Open Source, communities, cities and nations around the world are presented with the opportunity to promote and actively nurture an environment of learning, collaboration and innovation.

Montréal is an important centre of global Open Source activity and home to many software developers, projects and companies. Open Source Week will bring together industry leaders, teachers and students from around the world for a full week of activities that will include workshops, seminars and presentations.

Take the DEVTrain to Montreal — $50 Round Trip!

devtrain

Microsoft Canada’s Technical Evangelism team – Yours Truly included – will be taking the train to Montreal, and we want you to ride with us! We’ve booked an entire car, and we’re bringing the Xbox, Rock Band (and hopefully Red Dead Redemption) and other goodies, and since it’s VIA Rail, there’ll be wifi and power aplenty, and good company and conversation, of course! Best of all, we’re subsidizing the trip – you can travel from Toronto to Montreal on Tuesday morning, depart Montreal for Toronto on Friday, and it’ll cost you only $50!

What’s on the train?

  • Power and wifi
  • We’re sponsoring a meal and a drink
  • A chance to mingle with Toronto’s web developer community (you’ve got about 6 hours to make friendships and even collaborate)
  • A chance to meet Microsoft Canada’s Technical Evangelism team – a fine bunch
  • The cheapest, most comfortable round trip to Montreal you’re going to find!

Want to travel on the cheap in in high geeky style? Take the train with us – email cdnsol@microsoft.com to get the invitation to ride.

This article also appears in Canadian Developer Connection.

{ 0 comments }

greg wilson 1

Here’s the fourth in my series of notes taken from keynotes at CUSEC 2010, the 2010 edition of the Canadian University Software Engineering Conference. These are from Bits of Evidence: What we actually know about software development and why we believe it’s true, a keynote given by my friend Greg Wilson, the computer science prof we all wish we had. He’s also the guy who gave me my shot at my first article for a developer magazine, a review of a couple of Ajax books in Software Development.

My notes from his keynote appear below; he’s posted his slides online.

A Little Family History

  • My great-grandfather on my father’s side came from Australia
  • He was sent there, along with many other criminals from the UK, to Botany Bay
  • Whenever we kids did anything bad, my mother would say to my father: “This your side of the family"
  • This happened until the day my sister triumphant discovered that my maternal great-grandfather was a Methodist minister who ran off with his church’s money and a 15-year-old girl from his parish
  • She never brought up my father’s family history again
  • It took years and poring over 70,000 sheets of microfiche to track down my great-grandfather, all to find two lines, which said he was sentenced, but not why
  • These days, students get upset if it takes more than 15 seconds to find answers to last year’s exam
  • Some things haven’t changed: while technology has improved, the way we develop software for it hasn’t

Scurvy

  • In the Seven Years’ War, which lasted longer than seven years (1754-63), Britian lost:
    • 1,512 sailors to enemy action
    • 100,000 sailors to scurvy
  • Scurvy’s a really ugly disease. You get spots on your skin, your gums puff up and go black, you bleed from your mucous membranes, and then the really bad stuff happens
  • In 1747, a Scotsman named James Lind conducted what might have been the first-ever controlled medical experiment
  • Pickled food keeps fresh, he reasoned, how about pickled sailors?
  • Lind tried giving different groups of sailors with scurvy various acidic solutions:
    • Cider
    • Sulfuric acid
    • Vinegar
    • Sea water (this was the control)
    • Oranges
    • Barley water
  • The sailors who had the oranges were the ones who recovered
  • Despite Lind’s discovery, nobody paid attention until a proper Englishman repeated the experiment in 1794
  • This discover probably won the Napoleonic Wars: the British navy was the deciding factor
  • As a result of this discovery, British sailors planted lime trees at their ports of call and ate the fruit regularly; it’s how the term “limey” got applied to them, and later by association to British people in general

Lung Cancer

  • It took a long time for medical science to figure out that controlled studies were good
  • In the 1920s, there was an epidemic of lung cancer, and no one knew the cause
  • There were a number of new things that had been introduced, so any of them could be blamed – was it cars? Cigarettes? Electricity?
  • In the 1950s, the researchers Hill and Doll took British doctors and split them into 2 groups:
    • Smokers
    • Non-smokers
  • The two discoveries to come from their research were:
    • It is unequivocal that smoking causes lung cancer
    • Many people would rather fail than change
  • In response to the study, the head of the British medical association said: "What happens ‘on average’ is of no help when one is faced with a specific patient"
  • The important lesson is to ask a question carefully and be willing to accept the answer, no matter how much you don’t like it

Evidence-Based Medicine

  • In 1992, David Sackett of McMaster University coined the term "evidence-based medicine"
  • As a result, randomized double-blind trials are accepted as the gold standard for medical research
  • Cochrane.org now archives results from hundreds of medical studies conducted to that standard
  • Doing this was possible before the internet, but the internet brings it to a wider audience
  • You can go to Cochrane.org, look at the data and search for cause and effect

Evidence-Based Development?

  • That’s well and good for medicine. How about programming?
  • Consider this quote by Martin Fowler (from IEEE Software, July/August 2009):
    ”[Using domain-specific languages] leads to two primary benefits. The first and simplest, is improved programmer productivity… The second…is…communication with domain experts.”
  • What just happened?
    • One of the smartest guys in our industry
    • Made 2 substantive claims
    • In an academic journal
    • Without a single citation
  • (I’m not disagreeing with his claims – I just want to point out that even the best of us aren’t doing what we expect the makers of acne creams to do)
  • Maybe we need to borrow from the Scottish legal system, where a jury can return one of three verdicts:
    • Innocent
    • Guilty
    • Not proven
  • Another Martin Fowler line:
    ”Debate still continues about how valuable DSLs are in practice. I believe debate is hampered because not enough people know how to use DSLs effectively.”
  • I think debate is hampered by low standards of proof

Hope

  • The good news is that things have started to improve
  • There’s been a growing emphasis on empirical studies in software engineering research since the mid-1990s
  • At ICSE 2009, there were a number of papers describing new tools or practices routinely including results from some kind of test study
  • Many of these studies are flawed or incomplete, but standards are constantly improving
  • It’s almost impossible to write a paper on a new tool or technology without trying it out in the real world
  • There’s the matter of the bias in the typical guinea pigs for these studies: undergrads who are hungry for free pizza

My Favourite Little Result

  • Anchoring and Adjustment in Software Estimation, a 2005 paper by Aranda and Easterbrook
  • They posed this question to programmers:
    ”How long do you think it will take to make a change to this program?”
    • The control group was also told:
      ”I have no experience estimating. We’ll wait for your calculations for an estimate.”
    • Experiment group A was told:
      ”I have no experience estimating, but I guess this will take 2 months to finish.”
    • Experiment group B was told:
      ”I have no experience estimating, but I guess this will take 20 months to finish.”
  • Here were the groups’ estimates:
    • Group A, the lowball estimate: 5.1 months
    • Control group: 7.8 months
    • Group B, the highball estimate: 15.4 months
  • The anchor – the “I guess it will take x months to finish” — mattered more than experience.
  • It was a small hint, hint buried in the middle of the requirements, but it still had a big effect, regardless of estimation method or anything else
  • Engineers give back what they think we want to hear
  • Gantt charts, which are driven by these estimates, often end up being just wild-ass guesses in nice chart form
  • Are agile projects similarly affected, just on a shorter and more rapid cycle?
  • Do you become more percentage-accurate when estimating shorter things?
  • There’s no data to back it up!

Frequently Misquoted

greg wilson 2

  • You’ve probably heard this in one form or another:
    ”The best programmers are up to 28 times more productive than the worst.”
  • It’s from Sackman, Erikson and Grant’s 1968 paper, Exploratory experimental studies comparing online and offline programming performance
  • This quote often has the factor changed – I’ve seen 10, 40, 100, or whatever large number pops into the author’s head
  • Problems with the study:
    • The study was done in 1968 and was meant to compare batch vs. interactive programming
      • Does batch programming resemble interactive programming?
    • None of the programmers had any formal training in computer programming because none existed then
      • (Although formal training isn’t always necessary – one of the best programmers I know was a rabbinical student, who said that all the arguing over the precise meaning of things is old hat to rabbis: “We’ve been doing this for much longer than you”.)
    • What definition of “productivity” were they using? How was it measured?
    • Comparing the best in any class to the worst in the same class exaggerates any effect
      • Consider comparing the best driver to the worst driver: the worst driver is dead!
    • Too small a sample size, too short an experimental period: 12 programmers for an afternoon
    • The next similar “major” study was done with 54 programmers, for “up to an hour”

So What Do We Know?

  • Look at Lutz Prechelt’s work on:
    • Productivity variations between programmers
    • Effects of language
    • Effects of web programming frameworks
  • Things his studies have confirmed:
    • Productivity and reliability depend on the length of program’s text, independent of language level
  • The take-away: Use the highest-level language you can!
    • Might not always be possible: "Platform-independent programs have platform-independent performance"
    • Might require using more/faster/better hardware to compensate
    • That’s engineering – it’s what happens when you take science and economics and put them together

 

  • Discoveries from Boehm, McClean and Urfrig’s (1975) Some Experience with Automated Aids to the Design of Large-Scale Reliable Software:
    • Most errors are introduced during requirements analysis and design
    • The later a bug is removed, the more expensive it is to take it out
  • This explains the two major schools of software development:
    • Pessimistic, big-design-up-front school: “If we tackle the hump in the error injection curve, fewer bugs get into the fixing curve”
    • Optimistic, agilista school: Lots of short iterations means the total cost of fixing bugs go down
  • Who’s right? If we find out, we can build methodologies on facts rather than best-sellers\

Why This Matters

greg wilson 3

  • Too many people make the "unrefuted hypothesis based on personal observation"
  • Consider this conversation:
    • A: I’ve always believed that there are just fundamental differences between the sexes
    • B: What data are you basing that opinion on?
    • A: It’s more of an unfuted hypothesis based on personal observation. I have read a few studies on the topic and I found them unconvincing…
    • B: Which studies were those?
    • A: [No reply]
  • Luckily, there’s a grown-up version of this conversation, and it takes place in the book Why Aren’t More Women in Science? Top Researchers Debate the Evidence (edited by Ceci and Williams)
    • It’s an informed debate on nature vs. nurture
    • It’s a grown-up conversation between:
      • People who’ve studied the subject
      • Who are intimately familiar with the work of the other people in the field with whom they are debating
      • Who are merciless in picking apart flaws in each other’s logic
    • It looks at:
      • Changes in gendered SAT-M scores over 20 years
      • Workload distribution from the mid-20s to early 40s
      • The Dweck effect
        • Have 2 groups do a novel task
        • Tell group A that success in performing the task is based on inherent aptitude
        • Tell group B that success comes from practice
        • Both groups will be primed by the suggestions and “fulfill the prophecy”
        • We send strong signals to students that programming is a skill inherent to males, which is why programming conferences are sausage parties
      • Facts, data and logic

Some Things We Know (and have proven)

Increase the problem complexity 25%, and you double the solution complexity. (Woodfield, 1979)

The two biggest causes of project failure (van Genuchten et al, 1991):

    • Poor estimation
    • Unstable requirements

If more than 20 – 25% of a component has to be revised, it’s better to rewrite it from scratch. (Thomas et al, 1997)

  • Caveats for this one:
    • It comes from a group at Boeing
    • Applies to software for flight avionics, a class of development with stringent safety requirements
    • Haven’t seen it replicated 

Rigorous inspections can remove 60 – 90% of errors before the first test is run (Fagan, 1975)

  • Study conducted at IBM
  • Practical upshot: Hour for hour, the most effective way to get rid of bugs is to read the code! 

Cohen 2006: All the value in a code review comes from the first reader in the first hour

  • 2 or more people reviewing isn’t economically effective
  • Also, after an hour, your brain is full
  • Should progress be made in small steps? Look at successful open source projects

Shouldn’t our development practices be built around these facts?

Conway’s Law – often paraphrased as “A system reflects the organizational structure that built it” — was meant to be a joke

Nagappan et al (2007) and Bird et al (2009) got their hands on data collected during the development of Windows Vista and learned:

  • Physical distance doesn’t affect post-release fault rates
  • Distance in organizational chart does
  • If two programmers are far apart in the org chart, their managers probably have different goals [Joey’s note: especially in companies like Microsoft where performance evaluations are metrics-driven]
  • Explains why big companies have big problems
  • I remember once being told by someone from a big company that "we can’t just have people running around doing the right thing."

Two Steps Forward

  • Progress sometimes means saying "oops"
  • We once thought that code metrics could predict post-release fault rates until El Emam et al (2001): The Confounding Effector of Size on the Validity of Object-Oriented Metrics, where it was revealed that":
    • Most metrics values increase with code size
    • If you do a double-barrelled correlation and separate the effect of lines of code from the effect of the metric, lines of code accounts for all the signal
  • It’s a powerful and useful result, even if it’s disappointing
  • It raises the bar on what constitutes "analysis"
  • We’re generating info and better ways to tackle problems

Folk Medicine for Software

  • Systematizing and synthesizing colloquial practice has been very productive in other disciplines – examples include:
    • Using science to derive new medicines from folk medicine in the Amazon
    • Practices in engineering that aren’t documented or taught in school
  • There’s a whole lot of stuff that people in industry do as a matter of course that doesn’t happen in school
  • If you ask people in a startup what made them a success, they’ll be wrong because they have only one point of data
  • If you’re thinking about grad school, it’s this area where we’ll add value

How Do We Get There?

  • One way is Beautiful Code, a book I co-edited
    • All proceeds from sales of the book go to Amnesty International
    • In its 34 chapters, each contributed by a different programmer, they explain a bit of code that they found beautiful
    • I asked Rob Pike, who contributed to the development of Unix and C, and he replied "I’ve never seen any beautiful code."
    • I asked Brian Kernighan, another guy who contributed to the development of Unix and C, and he picked a regex manager that Rob Pike wrote in C
  • This has led to a series of "Beautiful" books:
  • The next book is "the book without a name”
    • I would’ve called it Beautiful Evidence, but Edward Tufte got there first
    • The book will be about "What we know and why we think it’s true"
    • Its main point is knowledge transfer
    • I’m trying to change the debate
    • I want a better textbook, a believe that this will be a more useful textbook
  • "I want your generation to be more cynical than it already is."
  • I want you to apply the same standards that you would to acne medication
    • How many of you trust research paid for by big pharma on their own products?
    • I want you to have higher standards for proof
  • The real reason all this matters? [Shows a slide with a picture of the world and his daughter]
    • “She is empirically the cutest kid in the world”
    • Public debate is mostly evidence-free
    • You’re not supposed to convict or release without evidence
    • I want my daughter to inherit a better world

What University is For

  • [Asks the audience] Hands up if you think you know what university is for
    • One student answers “A piece of paper!”
    • Greg’s reply: "Remember when I said I wanted you to be more cynical? Don’t go that far."
  • In my high school in interior BC, there was no senior math or physics course, because there was no interest
  • I went to university, hungry to learn
  • I later discovered that it wasn’t about the stuff you learned
  • Was it supposed to teach us how to learn?
  • It’s supposed to train us to ask good questions
  • Undergraduates are the price universities pay to get good graduate students
  • This thinking got me through the next 15 years
  • Then I went back to teaching, at U of T, and I think I know what universities are for now:
    • We are trying to teach you how to take over the world.
    • You’re going to take over, whether you want to or not.
    • You’re inheriting a world we screwed up
    • You’ll be making tough decisions, without sufficient experience or information
  • Thank you for listening. Good luck.

Comments from the Q&A Session

  • Who’s going to an anti-proroguing rally this weekend?
    • It won’t do you any good
    • You want to make change? It’s not made at rallies, but by working from within
    • The reason you can’t teach evolution in Texas isn’t because fundamentalists held rallies, but because they ran for the school board
    • We have to do the same
    • To make change, you have to get in power and play the game
    • “Dreadlocks and a nose ring does not get you into the corridors of power”
    • The ACM and IEEE are arguing your case
      • Join them and influence them!
  • Do we want to turn out engineers, who are legally liable for their work, rather than computer scientists, who are not?
    • Some of us will have professional designations and be legally liable, some of us won’t — there’s no one future

This article also appears in Canadian Developer Connection.

{ 1 comment }

Reg Braithwaite, standing at the lectern, giving his keynote at CUSEC 2010

Here’s the third in my series of notes taken from keynotes at CUSEC 2010, the 2010 edition of the Canadian University Software Engineering Conference. These are from Beautiful Failure, a keynote given by my friend Reg “Raganwald” Braithwaite, who’s forgotten more about combinators than I will ever learn.

My notes from his keynote appear below; Reg has also published his slides online.

  • I gave a talk at Stack Overflow DevDays Toronto in which I was thinking out loud about programming about programming
  • I was trying to rewrite the way we program
  • The language we use for coding guides the way we think about the program and the solutions
  • When you write things to change your programming language, you change the way you think

Thinking About Programming About Programming

  • I often get called in by clients to automate a process
  • Often, during this process, they want to change the process that I’m supposed to automate
  • Automating a process forces you to think about it
  • The very act of thinking about how you do things helps you understand what it is you do
  • The exercise of thinking it through is useful, even if it fails or you don’t end up using it
  • Languages and frameworks come and go, but everything you to do fix what’s between your ears stays with you forever
  • Programming languages are just a notation for the way we think

 

  • Some people try to do things like add a "sum" method to Ruby’s Enumerable mixin
  • What happen when you try [[1, 2], [3, 4], [5, 6]].sum?
  • [He showed two implementations of a “sum” method:
    • One by “Alice”, which when applied to [[1, 2], [3, 4], [5, 6]], yielded 21,
    • and one by “Bob”, which when applied to [[1, 2], [3, 4], [5, 6]], yielded [1, 2, 3, 4, 5, 6]
  • With “monkeypatching”, it’s possible for two different modules to implement Enumerable#sum, and then for someone else to import both modules.
    • In which case, which version of sum will get called? It depends on the load order of the module
    • But what if these were written as gems? Then there’s trouble
  • To solve this sort of problem, I decided to steal extension methods from C# and add them to Ruby [Joey’s note: extension methods are a C# feature that let you add methods to an existing class without subclassing]
  • It works, but what’s wrong with what I’ve done?
  • My extension methods for Ruby are a hack…
  • It eliminates the annoyance without solving the core problem
  • Do extension methods reengineer the way we think about problems? Or do they simply deal with an annoyance?
  • Do they reengineer the way we think about programs?

 Reg Braithwaite, standing at the lectern, giving his keynote at CUSEC 2010

  • Take the Single Responsibility Principle (SRP)
  • When you write an extension method, you break SRP
  • When you monkeypatch, you violate SRP
  • Is that bad? I don’t know
    • C# breaks SRP with extension methods
    • Rails "runs roughshod over it"
    • If two popular languages break SRP, maybe SRP isn’t all that
    • What does the sum method tell us?
    • Why is this a beautiful failure?
    • Maybe we’ve gone beyond the class — Ruby is not C++ or Smalltalk
    • Hacks like this scratch an itch and suggest a flaw — what else is flawed?
  • You have an advantage over me
    • I have this ball and chain of experience
    • I’ve been fucking with computers for almost 40 years
    • They way I’ve been doing things has made me a living; I’m not incented to change the way I do things
    • You’re not tied down
  • So now I present a few ideas that have occurred to me — think about them!
    • I don’t have the answers

 

  • Unit tests tell us that compilers are flawed
    • If we need them, what is wrong with our programming languages and compilers that requires us to step out of what we’re doing to implement them?
    • Why do we need to take a great language and bolt something onto the side?
  • Github tells us that our existing idea of a program is flawed
    • Most people think of programs as static things
    • In Github, there is no "program" — there are branches, forks and tags
    • Languages themselves have no notion of what a version is
    • Looking at the way we actually use tools shows that there’s a disconnect between our toolsets and the way we write code
    • Are Github commits congruent to objects?
      • If you change 4 classes in a commit, there must be something they have in common, but that’s not apparent from the way we write them
  • Do we manage work the way we manage code?
    • Project management seems awfully disconnected from our tool chain
    • Consider the complete disconnect between issue tracking and time tracking
    • Maybe not so important in your company, but more important for personal projects
    • Git and Lighthouse — “like two cups connected by string”
  • Do we manage object versions the way we manage API versions?

 

  • "Do not follow in the footsteps of the sages, seek what they sought."
  • What I think is particularly cool and interesting is…but to me
  • Think about what your heroes were trying to achieve using the tools available to you today
  • An example of following blindly in the footsteps of sages:
    • In November 2002, I attended Paul Graham’s “Lightweight Languages 2” conference in Boston
    • The morning keynote was by John Armstrong, who presented Erlang, which today is considered an important language for concurrent programming
    • The afternoon keynotes was Matz, who presented Ruby, one of the most influential dynamic languages that soon after enjoyed a meteoric rise in popularity
    • Many people in the room, die-hard Lisp-heads, were shouting them down because their languages didn’t have macros [Joey’s note: Macros are a Lisp feature that smug Lisp weenies often use in the never-ending “Why my language is better than your language” argument]

Four Ugly Failure Modes and How to Avoid Them

Reg Braithwaite, standing at the lectern, giving his keynote at CUSEC 2010

Confusing correlation with causation

  • I think it’s one of the most prevalent diseases in the business world
  • Ruby is not a silver bullet
    • Was the success of many Ruby projects [such as Rails and Twitter] because of Ruby the language?
    • Or was it that smart people who could get things done were picking Ruby at a given point in time?
  • Agile is not a process
    • It’s a set of values
  • Here’s how many companies fail:
    • They start a little consulting company
    • They enjoy some successes, which leads to more business
    • As a result, they hire people and the company grows
    • But they can’t hire smart people faster than the work is coming in
    • So in order to hire people to meet the demand, they start hiring people who aren’t as smart
    • That’s when things go downhill
    • Who here doesn’t think this isn’t standard for any consulting company?
  • Toronto Agile User Group recruiting process
    • In our field, "best practices" are cow patties
    • I’ve gone to many companies where they combine "best practices" simply by smooshing them together
    • I’ve been to many Toronto Agile User Group meetings where very few attendees work at companies that even practice agile
    • The important thing is that the people there are attending because interested in finding a better way of doing their work – those are the people you should be hiring!
  • The plural of "anecdote" is not "data"
    • Greg Wilson will talk about this in his keynote later today – listen to him!
    • Problem: Talks are given by narcissists (or masochists)
    • When you read something in a blog, see something on TV or buy a book, you’re not getting a large enough sample, and the content is biased
    • Another problem is that history is written by the survivors
    • People write about really notable successes or failures

Confirmation bias

  • "Most of you will be immune to this, because you’re all sensible people"
  • You might fall victim to confirmation bias if you have an overly-inflated (or under-inflated) ego
  • You might also fall victim to it if your worldview is too narrow
    • If you’re a Ruby developer, you probably don’t read C# blogs, and vice versa
  • Seek out more representative info; not just the stuff that confirms your opinions

Local maxima

  • The innovator’s dilemma
    • If you have customers, they will trap you in a local maximum
    • They’re not trying to be mean, they’re trying to give you money
    • You might end up optimizing to serve your customer base while the rest of the world (and eventually your business moves on)
  • The Principle of Least Surprise is a trap!
    • Familiarity comes from doing the old things the old way
    • This doesn’t apply to just UI, but also naming variables or coding styles
    • Once in a while, you should say "Maybe this one time, we should do things differently"
  • Iterative anything is a trap
    • It’s hill climbing
    • Sometimes you have to leap
    • It’s supposed to be bad to "go dark" in development for a longer period rather than go through many small iterations, but sometimes it’s the only way to make a great leap
    • You can’t climb a big mountain if you do things in small increments

"A Market for Lemons"

  • What happens when you sell to people who don’t fundamentally understand what they’re buying?
  • If customers don’t understand what they’re buying, they make their decisions based on easily differentiable features
  • One example is buying a house, which you’re not going to do very often in your life, so most people know very little about it
    • As a result, they focus on easily differentiable features like square footage, number of rooms, and other features that can easily be picked out
    • But it’s better to focus on whether the house’s design makes it more liveable, which is harder to suss out
  • Another example of this is feature checklists on the back of product boxes
  • Gresham’s Law — “bad money drives out good” — applies to talent: When you have good currency and bad currency in an economy, the bad currency drives the good currency out
    • This happens in Cuba, where the good currency – black market US dollars – gets hoarded while the local currency gets spent
    • It also applies to information: people put the crappy information out, and it drives the good information down
    • It also applies to talent: headhunters, not knowing what sort of people to look for, end up grabbing the people who put the most buzzwords on their resumes
  • You don’t want to be one of those buyers

At the end of the presentation, posted a slide dedicated to his late friend, Sam Roweis (1972 – 2010).

This article also appears in Canadian Developer Connection.

{ 2 comments }

CUSEC 2010 Keynote: Pete Forde – “NSFW”

by Joey deVilla on January 25, 2010

Pete Forde, standing at the lectern, giving his keynote at CUSEC 2010

Here’s the second in my series of notes taken from keynotes at CUSEC 2010, the 2010 edition of the Canadian University Software Engineering Conference. These are from NSFW, a keynote given by my friend Pete Forde, partner at Unspace and one of the bright lights of Toronto’s tech scene.

My notes appear below. Pete’s posted his slides, notes and URLs online; be sure to check them out.

Introduction

“This talk is going to be adult,” began Pete. “If you can’t handle it, you should probably leave. I’ll buy you a Dasani afterwards.”

  • I’m a partner at Unspace
  • I’m a software developer, have been for a long time
  • But deep down, I want to be a designer
    • I have no formal training — I can’t draw; I can’t paint
    • I see life as a series of carefully-executed series of five year plans
    • I dropped out of high school 20 minutes before the final exam; I told the principal that I didn’t want him to take credit for future success
      • I don’t recommend this; it’s probably not repeatable, not even by me
  • You – as engineering and computer science students –- are better educated than me
    • “You probably know math and stuff”
  • In the past, I was a punk, and many other things
    • I’ve been a musician
    • I’ve also been a zine publisher
    • I’ve tried on a lot of things to see if the shoe fits
    • I’ve had an interesting run
  • When I get to the end of 5 years of doing something, I review what I’ve done
    • I’ve had 5 years of doing software at Unspace – what now?

On Pete

 Pete Forde, standing at the lectern, giving his keynote at CUSEC 2010

  • My dad’s an engineer, and as such, is a perfectionist
    • Engineers are by and large pedantic control freaks — and that’s okay, we need you to be that way!
  • I’ve discovered that I’m a starter, not a finisher
  • This tendency has put me at odds with my family and I used to feel really guilty about it
  • Now I realize is that you need to play to your strengths — recognize that you have an instinct, and harness it!
  • Is what you’re doing against the grain?
    • "There’s no time like the present to get your life on track"
    • "I could have saved myself a lot of time if I could talk to my present-day self"
  • As a starter but not a finisher, I realized that I had to recruit doers, people who could take my ideas and run with them
  • I am an introvert
    • See the article in The Atlantic, Caring for Your Introvert
    • So what am I doing onstage?
    • People who appear practiced onstage look that way because they are practiced

On Success

  • Steve Jobs says: “Find what you love”
    • People confuse “successful” with “happy”
    • Are you putting your life on hold to go and make your paycheque?
    • I’m convinced that many financially successful people are unhappy and bitte
  • Malcom Gladwell’s The Sure Thing
    • It paints a different picture from the one we see in the media of the entrepreneur as daring, as a “cowboy”
    • Entrepreneurs who became empire builders turned out be highly risk-averse
    • Their success comes from seeing opportunities in arbitrage and taking advantage of them
    • Consider John Paulson:
    • These men are predatory entrepreneurs in my opinion
    • Do they really need billions?
    • Maybe they don’t do it for evil – perhaps it might be for the thrill
  • Don’t want to model himself after these people
    • There’s a line written by Seth Tobocman, who wrote the comic book World War 3: "You don’t have to fuck people over to survive."
    • My twist on that is "You don’t have to fuck yourself over to be successful."
  • Who would I rather model myself after? Steve Jobs
    • He said: “Good business makes for good art”
  • Another good bit of advice comes from Andy Warhol: “Think rich, look poor.”
  • On Being an Artist
    • There used to be a harsh disciplinary division between technology and art and it’s reflected in code and art
    • Different now in the era of Rails
    • I like holding parties and inviting all sorts of people: if you put interesting people together from all walks of life, you’ve got a catalyst for change in your living room
    • The lines are blurring: we’re all artists now
  • Consider these guys

On Starting Up

  • How Unspace came to be
    • It started 5 years ago with 2 friends in 170 square feet of space
    • “There wasn’t enough room to lie down and make a snow angel”
    • Everything that happened in those first years was "path of least resistance"
    • We had this weird notion that Unspace would be worth nothing and function as a quasi-legal organization whose reason for being was so that we could write off tech toy purchases
  • We got lucky: Two founding partners — moved on to other things
    • One of them has since moved on, regrettably, to Ashley Madison
    • Choosing partners was important decision
  • Optimism springs eternal among entrepreneurs: there’s always that feeling that nothing can go wrong
  • Daniel Tenier says: “Partnerships suck”
    • It’s important to make your agreements explicit
    • Don’t be afraid to discuss bad stuff
    • Write everything down
    • You can’t make it work at all costs – you need to know when to walk away
    • Try to get to the bottom of questions like "What’s your definition of success?" Of failure? What’s the sunset clause? What’s the shotgun clause?
    • If you absolutely don’t need a partner, go it yourself (I myself, since I’m not a finisher, need a partner)
    • Look up what Chris Dixon has written about founder vesting

On Products

  • Most consulting companies start as product companies that were broke
  • Consulting is “kind of like a drug” — it keeps the fix coming

On Customer Development

  • You need to read Steven Gary Blank’s The Four Steps to the Epiphany
  • The ideas in this book led to the feeling in venture circles that customer development is a good thing
  • If you’re starting a company that sells things to people, read it!

Leadership

Pete Forde, standing at the lectern, giving his keynote at CUSEC 2010

  • Seth Godin says this of leadership: It’s about painting a picture of the future for other people and then leading them to it
  • Back in 2004, things went terribly wrong
  • I partnered with my friend Ryan, and it lasted a month
  • I had “lots of partners” – it was hard to get things done
  • Having a captain is good
  • In addition to being a “time-and-materials” company, we also started holding events
    • We instituted Rails Pub Nite, a monthly event that created a sense on community and gets regular attendance
      • Opposite of a user group: no agenda
      • It’s the "smartest thing we’ve ever done as a company"
      • At the time, “people making a living off Ruby you could count on both hands”
      • One of the raisons d’etre of Rails Pub Nite was to create meaningful competition
      • We went so much farther ahead by giving it the generic name Rails Pub Nite as opposed to Unspace Pub Nite
      • What we wanted to do was not create a feeling of participating in a corporate social experience
      • It was successful: Rails Pub Nite’s mailing list has 450 people, and every Pub Nite gets 40 – 50 attendees, and not just Ruby programmers, but also Java, .NET and PHP

Building Your Team

  • Another benefit of Rails Pub Nite is that it lets us meet all the smart people first
  • We have a “non-traditional fit test”
  • I feel that 8 – 14 people is perfect size for company
  • I’m tired of working for small companies that grew to large companies that started to suck
  • I’d rather have 3 companies with 12 people than 1 with 40 people

On Guilt

  • I have no high school education — how am I building projects for the UN?
  • It’s why sometimes, I feel like a fraud
  • Many people have this feeling; it’s called “Impostor Syndrome”
  • I feel like living embodiment of "fake it until you make it"
  • Refactoring makes me feel like a fraud
  • It’s the "Embarrassing Pattern": after looking over my code, it seems that I could replace a lot of it with existing stuff and patterns
  • “Your entire codebase can be abstracted away”
  • "I just spent a month writing 40 lines of code"
  • You have to recognize that it happens

On Getting Ahead

  • Read Derek Sivers’ (he’s the guy who created CDBaby and later sold it) article, There’s No Speed Limit
  • He says that “the standard pace is for chumps”
  • To get ahead, you have to push yourself beyond what you think your limits are
  • We can do whatever we want, as fast as we want

Adventure

  • Learning Giles Bowkett’s story through his RubyFringe presentation completely changed my life
  • It was all about leading a life less ordinary
  • In our line of work, we create things that didn’t exist before
  • When someone who doesn’t know how to create things is put in charge of people who do, it’s bad
    • I believe that Giles called them "Weasel-brained muppetfuckers"
  • Giles quotes Steve Jobs: “Real artists ship”
  • My advice on dating websites: "Don’t make them"

On Marketing

  • I’ve mentioned Seth Godin many times already
  • Sometimes his books have 3 pages of insight buried in 100 pages – I supposed it’s a case of “The Devil’s in the details”
  • Read The Dip, skip Tribes
  • In Tribes, Godin says that people don’t believe what you tell them, sometimes believe what their friends tell them and always believe the stories they tell themselves.
  • So give people stories they can tell themselves

On Ideas

Grand Visions for the Future

  • Disney wanted EPCOT to be a utopian city, a city of the future, but bureaucracy got in the way
  • Jacque Fresco: 93-year-old chronic inventor — a radical revolutionary
    • He designs amazing future habitat buildings
    • He has a whole compound of bubble domes in Venus, Florida
    • See the movie Future by Design
    • He’s 93 — "You know what that implies"

On Being Happy

    This article also appears in Canadian Developer Connection.

    { 2 comments }