Stack Overflow DevDays Toronto 2009 – Better Late Than Never

So I attended this event literally a month ago, but I had to write this post for work. I figured I would reprint here:

Stack Overflow DevDays was a one day platform-neutral web developer conference, discussing everything from new languages and technologies to general theory on software development and the business of software development.

A public discussion of the Toronto Dev Day is available here, complete with the audio of a few of the speakers:

http://meta.stackoverflow.com/questions/27151/devdays-reviews-toronto

Topics of the day:

Joel Spolsky (Fog creek Software, Stackoverflow) discussed Elegance in User Interface Design, and the tension between giving users lots of options (more power) and the decision paralysis that can come from “asking the user too many questions.” He pointed out that many of the questions and options that appear in most applications via settings menus or pop up boxes are mostly things that really don’t need to be asked (such as “would you like to check for new software updates?”)  – they are things that simply get in the way of a user performing a task. In the example of software updates, why not just check and update them silently? The average user does not really care what version of software they are using.

Other examples of bad UI design given were the Windows Vista UAC dialog (where every time you try to do something, the screen goes dark and you are asked “Are you sure?”) and the Dancing Pigs problem, as well as a music website with a search dialog box where you type in a term, but then have to choose from a dialog box wheter the term is a song, artist or album (Why can’t the application just search in all three places?).

Barry Gervin and from Joey Devilla from Microsoft were next, discussing the ASP.NET MVC Framework. This is a framework built on the Microsoft stack, which simplifies the menial tasks that most developers go through whenever building a modern web application. For instance, querying from a database to display results on a webpage are greatly improved, and within a couple of clicks most of the code is generated for you. This is something I’ve always liked about the Microsoft frameworks; setting up the basic things that you normally have to write over and over again in other languages is quick and easy, and gives the developers more time to spend on actually building the logic for the site and other features. It also simplifies tasks like modern SEO techniques such as relevant paths for pages (http://fakesite.com/products/games/nintendo/ or http://fakesite.com/user/edit ).

Jordan Baker (Plone, Scryent) gave a very insightful introduction to the Python scripting language. His demo included a Spell checker written in 21 lines of code. It covers everything from extra letters, missing letters, transpositions (letters in the wrong order), and replacements (an Q typed instead of a W). The spellchecker was accurate up to a distance of two (meaning a word could have two different problems with it). This example was given to illustrate Python’s strength in list manipulation – it is very easy to write loops for reading, writing to and checking values in long sets of data.

Ralph Whitbeck gave a demo of jQuery, a technology already used on tvo.org, the upcoming drupal integrations of the new websites, as well as several Ideashaker projects. While I was already farmilliar with it, I am still new to this Javascript library, so it was nice to confirm based on his walkthroughs that I was not missing anything or doing anything incorrectly.

Joel came back out to give a live demo of FogBugz 7, a suite of tools for software bug tracking. While this was more a sales pitch then anything else, it did strengthen his presentation from the start of the day, illustrating some great UI design choices: The entire web app is cross browser compatible, can be used entirely via the keyboard with the tab key (makes data entry much faster), and uses things like Bayesian filtering to learn which users should be assigned certain emails and tasks based on their previous history.

Greg Wilson (U of T) gave a presentation about the history/future of software development, and how it should be compared to areas of academia such as medicine, specifically the methodologies used to build software and the way we benchmark these practicies. He cited several studies regarding several project management styles and methods as they pertain to software development. Some of them include:

  • Most errors occur during analysis and design. The later they are removed, the more expensive they are.
  • For every 25% increase in problem complexity, there is a 100% increase in solution complexity
  • The two biggest causes in project failure are poor estimation and unstable requirements
  • If more than 20-25% of a component has to be rewritten, it is usually better to rewrite it from scratch.
  • Inspections can remove 60-90% of errors by reading code before the first run. The first hour of code review is the most important.
  • Code Maintenance is 40-80% of the cost of a software project.
    • 30% of the time is spent figuring out how the code works.
    • 60% is code enhancements.

And one of the most important ones to me:

  • Physical Distance between project participants has no bearing on post-release faults. However, distance on the company org chart DOES.

This can apply directly to projects the Ideashaker works on, as almost all of our projects work with other departments (web encode, the web teams, producers, etc). It is important to have clear communication early and often with all these teams to make sure that everyone is on the same page at all stages of the project.

At the end of the day, Reginald Braythwayt gave a chat on the differences on programming languages and how they reflect how we think about software development. Specifically, he is implementing features in Ruby to “rewrite” the language in ways that reflect how he thinks about code.

Overall It was a great day of workshops. It not only shed some light on new technologies in the web development world, but also gave me some things to think about when it comes to project management and software design.

Flash In The Can – Day 3

This took a little longer to post (write) than I originally expected, but nontheless it is here!

Lee Brimelow’s ByteArrays for Beginners began the morning, and was one of the highlights of the day for me. I had been looking forward to this presentation; during some of my classes at Seneca I was exposed to basic bit-shifting concepts but never really understood what the power of them were, beyond advanced manipulations on video cards and such. In addition to walking us through the concepts and techniques, he illustrated many examples of things created in Flash using byte arrays. One such thing was WiiFlash, something I was planning on looking into before I went to FITC. I have since began quickly experimenting with it, and hope to show off some things I come up with.

 

I then wandered the floor for an hour, stopping in at every panel to see what was going on. I was initially interested in seeing Brian Lesser’s talk on RTMFP, but I got in late and had to sit at the back where I could not see any of the slides very well. I ended up in R. Blank’s AS2-AS3 Migration session, which had a larger audience than I anticipated – I guess I had figured that more people had made the jump to AS3 already. I’m glad I stopped in, as I picked up a few things.

 

Ryan Wolman gave a great talk on the business of Web 2.0 (probably one of my favourites of the show), and discussed things such as taking a step back when someone says “we should make a widget” or “we should use Twitter” and figure out what they are trying to do and why. In addition, Ryan talked about the concept of “going viral” and how when you plan to do it, it typically doesn’t work- but to be sure you have a plan to follow it up with in case you are successful.

Another aspect was knowing the audience you wish to reach, and knowing that there is a difference between demographics and behaviors. “Plan, then pick the right channels.” Ryan broke it down to 6 groups:
Creators vs Critics
Collectors vs Joiners
Spectators vs Inactives

Finally, he discussed risk assessment – figuring out all the possible things that could go wrong with a social media campaign, such as allowing people to post comments on your website, and taking into account that people may write negative things about your brand or product. This is something I got a lot out of, as it directly ties in to some things that I am currently working on.

 

Koen De Weggheleire gave a great lesson in Play with Pixels: Bitmap Manipulation in Flash (a pretty self-explanatory title). This is something that I’ve always wanted to spend more time learning, and Koen gave a great talk on the subject, discussing matrix transformations for color, shape, size, etc. It was a great introduction on the subject, and having only briefly touched some of this stuff in school during my game programming classes, it was a nice refresher on the subject.

 

Cool Japanese Flash Side B was presented by Timohiko Koyama (Saqoosha) and Yoshihiro Shindo (BeInteractive!). I had not attended Side A, but heard good things about it so I thought I would check it out. Saqoosha showed off some sites using FLAR toolkit, which while impressive, was nothing I hadn’t seen on YouTube weeks before. Shindo showed us a lot of different things he had been up to. Most interesting was Frocessing (an advanced Drawing library) and BetweenAS3 (a new Tween library).

 

At the end of the day, Jared Ficklin presented Seeing Sound, some of his exploits around audio visualization and sound manipulation. One high point was when Jared played a live Neil Diamond song (sounding like it was recorded during a club session with cheering and clapping), only to click a button and reveal that it was actually a studio track! The “crowed” was created dynamically based on the signal strength and sound information.

 

Another great part of his presentation was when he decided to give a rundown of Sound Wave mathematics in a nutshell. Realizing that not everyone in the crowd may be interested in such a thing, He placed a picture of Sienna Miller on one side of his slides, and Daniel Craig on the other, “so everyone has something to look at.” When he was finished explaining his mathematic concepts, he pointed out that no one had noticed that the pictures had actually swapped position halfway through, because “we’re all nerds!”

This being my first Flash In The Can, I didn’t know to expect. I thoroughly enjoyed myself and can’t wait till next year. I was quite inspired by pretty much everything I encountered at the show. There are many things that I have been exicted to take a look at and explore.

Flash In The Can Toronto 2009 – Days 1 & 2

Sure, this post is a little late to the party, but I wanted to jot down my thoughts on the show anyways.

This was my first time at FITC; last year I only attended the Get a Job Event. I attended all three days (day three’s post will come later), and had a great time. I will do my best to attend next year.

I didn’t know what to expect going in to this, part of me expected it a bit to be more like a trade show with booths, but as Sunil pointed out, “what kind of things would actually be in booths?” Not to worry, as there was always something to do.

 

Day 1

 

My first session was Dr. Woohoo’s Glue69: Connecting the Dots Between the Toolkits. He was prototyping some interesting ideas using OpenFrameworks to have SWFs communicate to desktop applications such as Illustrator, Photoshop & Maya. This is a concept I have always been fascinated by – coming up with ways to link two applications together, even if its just by something basic like batch scripts. Experiments in using Webcams as alternate inputs to audio visualization in Maya was demonstrated. As he put it “the possibilities are endless.” The strong selling point was that OpenFrameworks can sit on a cloud machine, and allow someone to use flash to create something on another computer’s version of Photoshop. This session was covered in the fitc blog, here.

 

Mario Klingemann’s The Tinkerer’s Box was next – a session I was very excited to see. I really enjoyed how he walked through the initial building blocks of what he was using – triangles and circles, and how he went about creating some custom Class representations, and then jumped from basic examples to the end result:

  

Some crazy illustrations! These were created as Photoshop-style filters, where an underlying image is analized and a new layer is placed on top. It really was successful at inspiring me – his whole talk (and many of technical talks of the weekend) had the attitude of “here’s how I did it, let’s see what you can come up with!”

 

At the end of the day, Joshua Davis discussed his work and inspirations, as well as some humorous anecdotes about his life over the last few years. Like Klingemann, he gave a very basic technical discussion of how he creates his work, and left me quite inspired. Davis is a big fan of using technology to assist in the generation of artwork. Using flash, he randomly generates “prototypes” of his art, which is exported to other applications such as Illustrator, and completed using normal digital art means. I’m a fan of his work – something about the abstractness captures my imagination.

 

Day 2

Ralph Hauwert’s Professionally Pushing Pixels was an interesting session to say the least. Half an inspirational talk, half a discussion on the future of Papervision now that Pixel Bender and Alchemy have arrived, Ralph touched on something that felt like the theme of the conference: computer programming as an art form. You read some of the things Ralph discussed in his own blog post.

 

Strategies for Flash Integration with Drupal was next, a talk I attended due to some work-related subject matter. I never realized how flexible Drupal was. The thing that stood out was the ability to completely turn your website into a web service for use with Flash, and not even have to publish a drupral “front end.” I was impressed enough to even consider experiment with creating my new portfolio layout with a Drupal backend.

 

 

Cool Shit!

Koen De Weggheleire, Ralph Hauwert, Mario Klingemann, Balazs Serenyi, and Dr. Woohoo all took the stage to show off some things they were working on. I was really excited for this demonstration, and while there were one or two very unexpected things, I was sort of let down as Kilngermann, Hauwert and Woohoo’s parts were abridged versions of what I had seen in their talks, and I was always planning on seeing Weggheleire’s on Day 3. Still, there was a highlight.  Serenyi, in about 10 minutes, created the basis for a pong game via SourceBinder, using the two halves of the audience as the controller (the left side of the audience waving would move the controller left, and the right side would move it right). He even made the “ball” the most recent #FITC Twitter post.

Another great demo was of Klingermann’s “Twitter ball” app, where recent tweets appear on the screen in bubbles (each bubble is one word of the tweet), and each bubble “fight” fights with one another to get in the right order to form the tweet. Older words don’t fight as hard as newer ones, and fade away after awhile.

 

 

Grant Skinner gave a talk titled Things Every Actionscript Developer Should Know, a talk he said he wished he had been given 5 or 6 years into his career.  While nothing earth shattering for someone who has always been a developer rather than a designer, it was good to see a proponent of “Know the rules, but don’t live by them.” Things such as not being bogged down by strict design patterns illustrated great insight. The slides are available from the above link, check em out.

 

Finally, Shaun Hamontree of MK12 discussed his team’s work on the Quantum of Solace opening credits sequence in a session titled Dame Judy Dench Could Kick My Mother’s Ass. While there was some funny anecdotes, and was cool to see the creative process they went through (in particular, the pitches they made that were rejected, one of which I liked better than the final product), I was a little disappointed by the presentation: It was never revealed how different elements were created (which tools were used for what, etc).  Perhaps that’s just my inquisitive nature – being a programmer, I always want to know how something works – but I would have preferred a little insight.  This was also covered in the fitc blog.

 

 

All in all, the first two days of FITC were a lot of fun. I would highly recommend it to anyone in the Flash community as a way to be inspired. Theres lots to see and do (with 5 sessions an hour, there’s always something to check out). More on FITC (day 3) should be posted within the week I hope.