Categories
Uncategorized

Meet the Stars of “The Hangover 2”

Joey deVilla in a Hawaiian shirt, Glenn block in silver lame shirt and fun fur jacket, and Glenn Block in a striped shirt

Actually, from left to right, it’s me, Ward Bell of IdeaBlade and Microsoft’s Glenn Block, whom John Bristowe and I interviewed in the most recent Ignite Your Coding webcast. Ward and Glenn have forgotten more about building composite apps than I will ever learn. If you attended the “Building Composite Applications with WPF and Silverlight” session in my track at TechDays Canada 2009, you saw what was essentially Ward’s presentation; he’s the only reason I know anything about Prism.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

EnergizeIT: Coming to 20 Cities Across Canada

EnergizeIT: Anything is Possible - March/April 2010

Whenever you do anything where money changes hands, from getting cash from the ATM to buying anything – movie tickets, groceries, a new pair of shoes or a new car to booking a flight and hotel room, chances are that there’s some Microsoft technology involved. It could be an SQL Server database, an app written in Visual Studio, a site living on IIS or Azure or a business process powered by SharePoint, and more likely than not, someone was using Office as well. From devices that fit in your pocket to cavernous data centres, the Microsoft platform helps millions of people across a broad spectrum of industries get real work done every day.

Want to know what’s possible with the Microsoft-based platform? Want to know how it all fits together? That’s what the EnergizeIT 2010 tour is for. In March and April, we’re visiting 20 cities across Canada – as far west as Victoria and as far east as St. John’s – to host free local gatherings where we show you how you can take advantage of our tools and technology to drive your business and your career.

EnergizeIT will comprise different sorts of events in different cities, all of which are listed below.

The “From the Client to the Cloud” Full-Day Events
(Vancouver, Edmonton, Calgary, Ottawa, Toronto and Montreal)

City skylines: Vancouver (YVR), Edmonton (YEG), Calgary (YYC), Ottawa (YOW), Toronto (YYZ), Montreal (YUL)

In Canada’s six largest cities, we’ll hold our EnergizeIT From the Client to the Cloud full-day events, where we’ll cover the Microsoft-based platform in detail. And yes, even though it’s full-day, it’ll still be free!

In the morning, we’ll talk about the big picture. We’ll show you a scenario featuring the Microsoft-based platform as seen from different points of view: the customer, the information worker, the developer and the IT professional. You’ll see our latest and greatest as well as our up-and-coming developer goodies: Silverlight, .NET 4.0 and Visual Studio 2010. We’ll show you Windows 7 and Azure in action, talk about Office 2010 and SharePoint 2010, and tell you how all of Microsoft’s stuff works together.

Just as the morning session answers the question “What’s the latest technology?”, the afternoon sessions answer the question “How do I get to the latest technology from where I am now?” These sessions, split into two tracks – one on infrastructure management and deployment, one on the development process – will cover what you can do with our tools and technology in a little more depth. They’ll show you what you need to implement what you saw in the morning session and provide a roadmap you can follow to learn more and take action.

For more details about From the Client to the Cloud events or to register (it’s free!), visit the EnergizeIT From the Client to the Cloud page.

The “Community Connection” Evening Events
(Many Cities Across Canada)

A scene from EnergizeIT 2009 in Mississauga

We’ll also hold Community Connection events in the evening in many cities across Canada, where we’ll do the “big picture” session (the morning session) of our From the Client to the Cloud events.

The Community Connection evening events will take place in the following cities:

  • British Columbia: Vancouver, Kelowna and Victoria
  • Alberta: Edmonton and Calgary
  • Saskatchewan: Regina and Saskatoon
  • Manitoba: Winnipeg
  • Ontario: Ottawa, London, Kitchener and Mississauga
  • Quebec: Montreal, Quebec City and Trois-Rivières
  • Atlantic Canada: Halifax, St. John’s, Moncton and Fredericton

For more details about Community Connection or to register (it’s free!), visit the EnergizeIT Community Connection page.

Office 2010 Installfests
(Vancouver, Ottawa, Calgary, Montreal, Mississauga)

Microsoft Office 2010 logoI’ve been using the beta and release candidate versions of Office 2010 in my day-to-day work for the past couple of months – PowerPoint for my public speaking stuff, Outlook for email, scheduling and get-things-done stuff and OneNote for my copious note-taking. We’d like you to take it for a spin!

Join us at one of our Microsoft Office 2010 Installfests and we’ll hook you up with the latest build of Office, show you some of our favourite features and demonstrate how to get the most out of our productivity suite.

For more details about the Office 2010 Installfests or to register (it’s free!), visit the EnergizeIT Office 2010 Installfest page.

Academic Sessions

We’ll also be passing through a number of colleges across Canada, talking to students about getting ready for the working world and showing them resources that they can use to fire up their careers.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Are You Going to MIX10?

Bill Buxton: The Future of Web Design and User Experience

imageAre you Canadian and going to the MIX10 Conference?

If you’re going to MIX10, let me know, either in the comments or via email. A number of us from Microsoft Canada will be there and we’d love to catch up with you!

Among the Canadian contingent going to Vegas are:

  • Gladstone Grant, Developer and Platform Evangelism Lead
  • Allan Hoffman, ISV Group Manager
  • Paul Laberge, Web Platform Evangelist
  • John Oxley, Director, Audience Marketing and my manager
  • Mark Relph, Senior Director, Windows Ecosystem (and former Developer and Platform Evangelism Lead)
  • Jamie Wakeam, ISV Architect Evangelist
  • Yours Truly, Joey deVilla, Developer Evangelist and guy with accordion

Hope to see you there!

What is MIX10?

Scott Guthrie: MIX10: Where Designers and Developers intersect to make the web a great place

MIX10 is the 2010 edition of MIX, Microsoft’s most “right-brained” conference. Its area of focus is on the web and other technologies that aren’t the desktop, which is traditionally where Microsoft “lives”, as well as on design, usability, information architecture and user experience. Silverlight made its first appearance here, under the less-wieldy name of WPF/E (“WPF Everywhere”), as have improved versions of Internet Explorer. Expect some interesting stuff at MIX this year!

Here’s a list of the topics that will be covered at MIX10:

  • .NET
  • AJAX
  • AppFabric
  • ASP.NET
  • Bing
  • Business
  • Cloud
  • Embedded
  • Expression
  • Identity
  • jQuery
  • Languages
  • Media
  • Mobile
  • Multi-Touch
  • MVC
  • MVVM
  • OData
  • Open Call
  • Open Standards
  • REST
  • SharePoint
  • Silverlight
  • SQL Azure
  • Surface
  • UX
  • Visual Studio
  • WCF
  • Windows 7
  • Windows Azure
  • Windows Azure Platform
  • Windows Phone
  • Workshop
  •  

    The Full Monty on Windows Phone Development

     Windows Phone 7 Series generic phone

    Glaringly absent from yesterday’s Windows Phone 7 Series announcement made at Mobile World Conference in Barcelona was the “how”: that is, how do you develop apps for Windows Phone 7?

    Explore the software that powers the Windows Phone 7 Series. Free development tools and support for all MIX10 attendees.

    That question will be answered at MIX10 (March 15th – 17th in Las Vegas) in a number of ways.

    If you go to MIX10, you will get the following:

    • Access to a track dedicated to Windows Phone 7 Series platform
    • An introduction to Windows Phone 7 Series’ development platform
    • Tutorials on how to work with the Windows Phone 7 Series’ development tools
    • A tour of the Windows Phone Marketplace
    • And last – but certainly not least — access to the Windows Phone 7 Series developer tools!

    The Hallway Opportunity

    Be inspired. Exchange ideas with fellow developers, designers and industry thought leaders.

    I’ve always believed that one of the marks of a good conference is the hallway. By “hallway”, I’m talking about the opportunities to meet people in those times and places between and after sessions. There’s something to meeting people in person that you don’t get online; hence the often-used saying “you had to be there”. MIX promises to have good hallway, partly because of the Microsoft teams who’ll be presenting some interesting new stuff and partly because the crowd is going to be a mixed bag of developer types, designer types and the type of people who like to straddle both worlds (I like to think of myself in that category).

    Go!

    MIX10 takes place at the Mandalay Bay Convention Center in Las Vegas, from Monday, March 15th through Wednesday, March 17th. If you register before February 21st, you’ll get a $200 discount off the MIX10 admission fee. Do it now!

    This article also appears in Canadian Developer Connection.

    Categories
    Uncategorized

    CUSEC 2010 Keynote: Reg Braithwaite – “Beautiful Failure”

    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.

    Categories
    Uncategorized

    CUSEC 2010 Keynote: Pete Forde – “NSFW”

    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.

      Categories
      Uncategorized

      CUSEC 2010 Keynote: Matt Knox – “On Weakness”

      CUSEC 2010 "goto 10" logoThis is the first of a series of notes that I took while attending CUSEC, the Canadian University Software Engineering Conference, which took place last week in Montreal. CUSEC is the biggest conference held by and for university students interested in software development. True to the Canadian techies punching well above their weight class (a great tradition started by Alexander Graham Bell), CUSEC manages to pull in big-name and up-and-coming speakers who’ve given talks that have outshined those I’ve seen an thousand-dollar-plus conferences.

      The first keynote was given by Matt Knox, who has probably distributed more Scheme runtimes than anyone else in the world (and this is a larger number than you might think), which he did in the name of putting adware on millions of machines. He’s since come to his senses and seems quite contrite.

      His presentation, On Weakness, is about his life on the Dark Side and the lessons he gleaned from it. It’s based on his talk, Crimes Against Humanity, Writ Small, which he gave at FutureRuby last year, but it was good to see it again, and its message is probably even more valuable to students. My notes (which I polished for comprehensibility) and photos from his session appear below:

      Matt Knox, standing at the lectern, delivering his keynote at CUSEC

      An Evil Job

      • How many of you are:
        • Technical, as opposed to business or arts students?
        • Engineering students?
        • Programmers?
        • Evil?
      • That’s what this talk is about
      • One way to describe one of my former jobs is doing “Windows hijinks with Scheme”
      • During my time with that job, I released many scheme runtimes
      • Aaron Swartz – I think it was at a Y Combinator startup camp – said this of me: "He uses Scheme for evil!"
      • It was more than just Scheme – I was writing stuff that had alternately “hard” (statically-typed languages) and “soft” (dynamically-typed languages) layers
      • I was in the adware business, which is like walking into a big monkey knife fight…
      • …except I was using a death ray! (Scheme == death ray, C == knife)
      • I started with good intentions, in the business of building spam filters
      • Business wasn’t so hit, and I ran out of money
      • My job search failed, but luckily, a job went looking for me
      • I was so pleased with being found that I  forgot to talk salary
      • I showed up for the interview and at the end, was invited to work for them
      • I did terribly when it came time to discuss what I would be paid
        • I didn’t research the New York City job market and cost of living
        • I asked for $40K
        • When I saw the look of shock of the guy’s face, I thought that I had asked for too much
        • Start reducing what I asked for; luckily he stopped me
      • We want you to come in an analyze our distribution chain, they said
      • It turned out to be an adware company:
        • Bought people’s “digital tchochkes” or mini-apps, such as screensavers
        • They had realized that there’s no lower bound for how cheesy something can be and still be a big seller on the internet
        • They took these mini-apps and gave them away online for free, bundled with software that gives you "special offers" from time to time
      • Some of these bundled apps turned out to be worms
        • So the company had me write software to remove any worms from a system and added them to the bundle
        • So now we were bundling my anti-malware along with their adware
        • I felt like "an assassin working for the mob, but killing terrorists". The mob were bad, but the terrorists were worse
        • "Awesome! I can probably keep up with Norton…it’ll be great!"
        • And for a while, the best way to eradicate worms your system was to install their adware with my anti-malware bundled with it
      • Low-level coding is dangerously seductive
        • In the beginning, it’s "like getting kicked in the face over and over again by buffer overruns"
        • But then it becomes fascinating
      • I wanted to do it in Scheme, but that would require embedding a Scheme interpreter
        • Such an interpreter would have to fit into a single TCP/IP packet (about 64K)
        • Scheme is great. For any superlative — “best performance”, “smallest app”, and so on – there are usually two contenders: some other language, and Scheme.
        • I managed to squeeze a Scheme interpreter down to 19K
      • My success with killing the worms led to a new request: In addition to your all this malware on other machines, why not eliminate all the competitor’s adware?
        • Now I felt like “an assassin for the mob, killing other mobsters”. Not as noble.
      • Then the next request came: How about keeping our software from being killed…by anything? (including Norton)
        • The only way to uninstall the adware was to use the uninstaller, which came with it
        • I initially viewed this as "a really interesting technical problem"
      • All this was made possible by a couple of Windows quirks…
        • CreateRemoteThread
        • Scheduler
          • You can have a process tell the scheduler that it needs to do a do-over — "I’m not done yet, I need more time", and the scheduler will grant that time
          • You can tell even Windows that a process is so important that if it fails, it needs to protect the user by presenting a blue screen
      • Windows is interesting from a purely archaeological perspective
        • Consider that all strings in Windows are 16-bit unicode, which means that nulls can be embedded in strings
        • But C strings, which is what’s used in the underlying DOS, are null-terminated and therefore can’t contain nulls
        • Interesting effects when moving null-containing strings between these layers

      What Drives People to Take Up Evil Jobs?

      Matt Knox, standing at the lectern, delivering his keynote at CUSEC

      • Aftermath of my working at the adware company:
        • Company got sued for $190 billion (by Elliot Spitzer!)
        • I was the first employee at the company — everyone else was a contractor
      • I left the company with these questions:
        • "Whut happen?"
        • "Is this who I am?"
      • Some jobs pay lots of money, but it’s hard to transition out of them
      • Will I be stuck in adware for the rest of my life?
      • There are some historical precedents:
        • Albert Speer
          • A promising architect who liked soaring buildings
          • He hooked up with rising politicians with the same aesthetic sense, one of whom was Hitler
          • He started with creating buildings, but then became the Nazis’ chief logistics guy
          • Later, a leader of the U.S. Air Force said that had he been aware of Speer’s involvement as the Nazi’s chief logistics guy, he would’ve dedicated an entire wing of the Air Force exclusively to killing him
          • It’s been suggested that Speer prolonged the war by a year or two by running the German forces more efficiently
        • Manhattan Project staff
      • But I didn’t want anecdotes…I wanted science!
        • There’s a scientific study of otherwise good people doing evil things: the Milgram Experiment
          • How many people would go all the way?
          • 1% of the population is psychotic – it was hypothesized that the number of people who’d go all the way would be similar
          • Instead, 70% did
          • Results replicatable with people from all walks of life
          • Women, it turned out, “went evil” in a slightly greater proportion than the men
          • "Most human evil lives here"
      • Read The Black Book of Communism
      • For a more mundane example of blind obedience to authority leading to evil, see "The strip search McDonald’s prank call"
        • In the prank, the prankster calls a McDonald’s, gets an employee on the line and says “I’m a police officer. We have reason to believe that there is a thief in your restaurant and we need you to take them into the back and hold them until we arrive.”
        • They provide a description vague enough so that someone in the restaurant will match it
        • Once coralled in the back, the prankster starts giving orders to torture and/or humiliate the customer, and many employees have complied
      • So what does this mean?
        • The human brain has a remote root exploit in 70% of the installed base
      • "With or without religion, you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." — Steven Weinberg
        • Nope. Just authority.
      • There is hope: people who were subjects of the Milgram experiments turned out to be better at resisting authoritative coercion

      The Power of Communication

      Matt Knox, standing at the lectern, delivering his keynote at CUSEC

      • Math: "There are only three reasonable numbers: 0, 1 and infinity"
      • When Robert Andrews Millikan did his oil drop experiments to determine the charge on an electron, he initially got the value wrong by 30 – 40%
        • People who repeated the experiment or conducted similar experiments with results close to Millikan’s erroneous number published their results
        • People who did so but got the correct value – which did not match Millikan’s value – didn;t publish, worried that they’d done something wrong, since their numbers didn’t agree with the number published by the authority on the subject
      • The world pre-blogs was so different from this world
        • Very first open source project: Oxford English Dictionary
          • Done via mail
        • Ever wondered where the term "flying off the handle" comes from?
          • It’s from sword-making – until they figured out the process of making swords as one-piece, with hand-friendly stuff wrapped around the base so you could hold them, swords often flew off their handles in battle
          • It took 900 years to evolve swords to one piece
      • Not everything has been solved, but it’s easier today
      • Rails is such a solution
        • It’s a series of incremental improvements
        • Can you out-Rails Rails?

      This article also appears in Canadian Developer Connection.

      Categories
      Uncategorized

      Montreal Bound

      porter plane Photo by Tom Purves.

      I’m boarding a Porter flight bound for Montreal, where I’ll be attending CUSEC (Canadian University Software Engineering Conference). I’ll be there from today through Saturday afternoon, watching technical presentation, flying the Microsoft banner, hosting DemoCamp and having a beer (or twelve) with my fellow conference-goers. I’ll be posting notes and photos from the presentations and other goings-on, so watch this space!

      This article also appears in Canadian Developer Connection.