Categories
Uncategorized

Ruby Stuff: IronRuby 1.0, IronRuby Reading and a Ruby Job Fair

Hello, IronRuby 1.0!

ironrubyAlthough it’s been out for the past couple of weeks and might be considered old news, I couldn’t let it pass unmentioned, especially given my history with the Ruby programming language: IronRuby 1.0 has been released!

IronRuby is an implementation of Ruby targeting the .NET Framework and built on Microsoft’s Dynamic Language Runtime, which in turn runs on top of the Common Language Runtime. Version 1.0 is compatible with Ruby 1.8.6; future releases will aim for compatibility with Ruby 1.9.

You can use IronRuby 1.0 to build these sorts of applications:

  • Desktop applications using WPF
  • Desktop, in-browser rich internet applications and Windows Phone applications using Silverlight
  • Ruby on Rails applications (up to Rails version 2.3.5)
  • Good ol’ command-line applications
  • and of course, the REPL (Read-Evaluate-Print Loop) goodness of irb

As of version 1.0, IronRuby comes in two flavors:

  • The one that runs on top of .NET 4.0. The .NET 4.0 framework is the latest version and was released with Visual Studio a couple of weeks ago (you can download it for free here). This is the preferred version, and features goodies such as:
    • Faster startup
    • Compatibility with C#’s dynamic keyword
    • Access to all the new features in the .NET 4.0 framework
  • The one that runs on any earlier .NET, starting with 2.0 SP1. For compatibility with earlier versions of .NET as well as with Mono, you’ll want to use this version.

IronRuby is free in both senses of the word:

  • Free as in beer. It costs nothing – just download it and use it!
  • Free as in speech. It’s open source software, released under the Microsoft Permissive Licence, which is recognized by the Open Source Initiative.

Download icon You can download IronRuby 1.0 from the IronRuby site on Microsoft’s CodePlex site.

Ruby and IronRuby Reading

programming ruby

Programming Ruby, a.k.a. “The Pickaxe Book”, is on every serious Rubyist’s shelf. It’s both a good introduction to the language and a pretty decent reference.

poignant guide foxes

why’s (poignant) guide to ruby isn’t a complete guide to Ruby, nor is it your typical programming book. It’s free, online, the most whimsical programming book you’ll ever read, and it’s been the driving force behind a lot of dynamism and creativity of the Ruby community.

ironruby unleashed

The newly-released IronRuby Unleashed covers both the Ruby programming language, the IronRuby implementation and using IronRuby to mix Ruby and .NET into a Reese peanut butter cup of developer goodness.

Ruby Job Fair 2010

Last year, I attended and wrote about employment.nil?, the Ruby job fair held by Toronto software development shop Unspace. They’re doing it again this year with a different format. Where last year’s was modelled after a science fair (the kind you remember from high school), this year’s is going to be modelled after “speed dating” and will feature 5-minute chats between people looking for work and people looking to hire.

To reflect the new format and pay homage to the Ruby-style naming of the first event, they’re calling it require ‘date’. The job fair will take place in Toronto on Sunday, May 30th in the back room of the Rivoli (334 Queen Street West, just east of Spadina) from 2:00 p.m. to 4:00 p.m.. It will be followed from 4:00 p.m. to 9:00 p.m. with OMGRPNBBQ, a special barbecue party edition of Ruby Pub Nite held at Unspace’s office and rooftop deck (342 Queen Street West, a few doors over from the Rivoli).

  • If you’re looking to hire people or looking for a job and want to attend, sign up here. There’s a small registration fee of $6.66.
  • If you want to attend OMGRPNBBQ, sign up here.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

New Programming Jargon

Every field comes up with its own jargon, and oftentimes subgroups within a field come up with their own specific words or phrases (those of you familiar with Microsoft Canada’s Developer and Platform Evangelism Team know that we have our own term for “broken”, named after one of our teammates who is notorious for killing all sorts of tech gear).

A question recently posted on Stack Overflow asked for people to submit programming terms that they or their team have coined and have come into regular use in their own circles. I took a number of the submissions and compiled them into the alphabetically ordered list below for your education and entertainment.

Have you come up with your own jargon? Tell us in the comments!

Banana Banana Banana

"Bluth's Frozen Banana" stand from "Arrested Development"

Placeholder text indicating that documentation is in progress or yet to be completed. Mostly used because FxCop complains when a public function lacks documentation.

Example:

/// <summary> /// banana banana banana /// </summary> public CustomerValidationResponse Validate(CustomerValidationRequest request, bool ...

Barack Obama

A project management account to which the most aspirational tickets – stuff you’d really like to do but will pobably never get approval for – gets assigned.

Bicrement

Adding 2 to a variable.

Bloombug

A bug that accidentally generates money. [Joey’s note: I have never written one of these.]

Bugfoot

Bigfoot

A bug that isn’t reproducible and has been sighted by only one person. See Loch Ness Monster Bug.

Chunky Salsa

A single critical error or bug that renders an entire system unusable, especially in a production environment.

Based on the chunky salsa rule from TVTropes: Any situation that would reduce a character’s head to the consistency of chunky salsa dip is fatal, regardless of other rules.

Configuration Programming / Programmer

Someone that says they are a programmer but only knows how to hack at configuration files of some other pieces of software configuration to make them do what they want.

Counterbug

A defensive move useful for code reviews. If someone reviewing your code presents you with a bug that’s your fault, you counter with a counterbug: a bug caused by the reviewer.

DOCTYPE Decoration

When web designers add a proper DOCTYPE declaration at the beginning of an HTML document, but then don’t bother to write valid markup for the rest of it.

Drug Report

A bug report so utterly incomprehensible that whoever submitted it must have been smoking crack. The lesser version is a chug report, where the submitter is thought have had one too many.

Duck

Rubber "Devil Duckies" surrounding a lone rubber "Angel Duckie"

A feature added for no other reason than to draw management attention and be removed, thus avoiding unnecessary changes in other aspects of the product.

This started as a piece of Interplay corporate lore. It was well known that producers (a game industry position, roughly equivalent to PMs) had to make a change to everything that was done. The assumption was that subconsciously they felt that if they didn’t, they weren’t adding value.

The artist working on the queen animations for Battle Chess was aware of this tendency, and came up with an innovative solution. He did the animations for the queen the way that he felt would be best, with one addition: he gave the queen a pet duck. He animated this duck through all of the queen’s animations, had it flapping around the corners. He also took great care to make sure that it never overlapped the “actual” animation.

Eventually, it came time for the producer to review the animation set for the queen. The producer sat down and watched all of the animations. When they were done, he turned to the artist and said, “That looks great. Just one thing – get rid of the duck.”

Fear-Driven Development

When project management adds more pressure, such as by firing a member of the team.

Ghetto Code

Ceiling fan kludged by hanging a box fan from the ceiling

A particularly inelegant and obviously suboptimal section of code that still meets the requirements. [Joey’s note: I’ve written ghetto code before, but that’s because I’m street, yo!]

Hindenbug

A catastrophic data-destroying bug. Oh, the humanity!

Hocus Focus Problem

Unexpected behavior caused by changes in focus, or incorrect setting of focus. Could also be used to describe an app stealing your focus.

Hot Potato / Hot Potatoes

A fun way to pronounce http:// and https://.

IRQed

Annoyed by interruptions. Pronounced like and has a similar meaning to “irked”.

Jimmy

"Opie" from "Family Guy"

A generalized name for the clueless/new developer. The submitter at Stack Overflow writes:

We found as we were developing a framework component that required minimal knowledge of how it worked for the other developers. We would always phrase our questions as: “What if Jimmy forgets to update the attribute?”

This led to the term “Jimmy-proof” when referring to well designed framework code.

It’s probably best not to use this term around IronRuby developer Jimmy Schementi.

Loch Ness Monster Bug

A bug that isn’t reproducible and has been sighted by only one person. See Bugfoot.

Megamoth

MEGA MOnolithic meTHod. Usually stretches over two screens in height and often contained inside a God Object (an object that knows or does too much).

.NET Sandwich

When .NET code called native code which calls other .NET code and makes the poorly designed application crash.

n-gleton

A class that only allows a fixed number of instances of itself.

NOPping

Not napping, but simply zoning out. Comes from the assembly language instruction NOP, for No OPeration, which does nothing.

Pokemon Exception Handling

For when you just gotta catch ’em all!

Reality 101 Failure

Solar-powered flashlight

The program (or more likely feature of a program) does exactly what was asked for, but when it’s deployed it turns out that the problem was misunderstood and the program is basically useless.

Refuctoring

The process of taking a well-designed piece of code and, through a series of small, reversible changes, making it completely unmaintainable by anyone except yourself. It’s job security!

The Sheath

The isolating interface between your team’s (good) code, and the brain-dead code contributed by some other group. The sheath prevents horrible things (badly named constants, incorrect types, etc.) in their code from infecting your code.

[Joey’s note: I’ve heard the term “shim” used for this sort of construct. I’ve used the term “transmogrifier” for this sort of thing.]

Shrug Report

A bug report with no error message or “how to reproduce” steps and only a vague description of the problem. Usually contains the phrase “doesn’t work.”

Smug Report

A bug report submitted by a user who thinks he knows a lot more about the system’s design than he really does. Filled with irrelevant technical details and one or more suggestions (always wrong) about what he thinks is causing the problem and how we should fix it.

Stringly-Typed

i can has string

A riff on strongly-typed. Used to describe an implementation that needlessly relies on strings when programmer- and refactor-friendly options are available.

Examples:

  • Method parameters that take strings when other more appropriate types should be used
  • On the occasion that a string is required in a method call (e.g. network service), the string is then passed and used throughout the rest of the call graph without first converting it to a more suitable internal representation (e.g. parse it and create an enum, then you have strong typing throughout the rest of your codebase)
  • Message passing without using typed messages etc.

Excessively stringly typed code is usually a pain to understand and detonates at runtime with errors that the compiler would normally find.

Unicorny

An adjective to describe a feature that’s so early in the planning stages that it might as well be imaginary. This one comes from Rails Core Team member Yehuda Katz, who used it in his closing keynote at last year’s Windy City Rails to describe some of Rails’ upcoming features.

Yoda Conditions

Yoda: "if (5 == count)"

The act of using

if (constant == variable)

instead of

if (variable == constant)

It’s like saying “If blue is the sky”.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

“Developer Junior” on Webnation

Joey deVilla and "Junior" from "Developer Junior" on Webnation

Last night, “Junior” and I went on Amber MacArthur’s show, Webnation, to talk about our show, Developer Junior. You can watch the clip by visiting Webnation’s site and clicking on the “Webnation May 06 – PT 3” link.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

IE9 Platform Preview 2

It wasn’t that long ago that an early version of Internet Explorer 9 – we called it Platform Preview 1 – was announced at MIX10 Conference back in mid-March. If you missed it, here’s MIX10’s Day 2 keynote session, in which the Internet Explorer team’s supreme Kahuna, Dean Hachamovitch, made the announcement (it’s the first part of the keynote, so you don’t have to watch or scan through the entire two hours):

Get Microsoft Silverlight
Don’t have Silverlight? Download it here,
or watch the video in WMV, high-def WMV or MP4 format.

As I wrote back then, IE9 showed a lot of improvements. In addition to the improvements, IE9 came with a commitment made to updating the preview about every eight weeks.

The time has come to announce the release of IE9 Platform Preview 2! The whole story’s over at the latest post to IEBlog, but I thought I’d cover a couple of things I felt were worth noting.

Improved JavaScript Performance

Chart showing JavaScript performance of various browsers

The chart above shows the results of various browsers, including IE9 Platform Preview 2, under WebKit’s Sunspider JavaScript benchmark, version 0.9.1 on a 3.0GHz Dell Optiplex with an Intel Core 2 Duo processor, 4GB RAM and Intel Integrated Video running Windows 7. As you can see, JavaScript performance on Platform Preview 2 is a mere eye-blink away from that of the Esteemed Competition.

If you’d like to run the SunSpider JavaScript benchmark in your default browser right now, click here.

Getting HTML5ier

Acid3 test for Internet Explorer 9 Platform Preview 2 - 68/100

The goal for the final release of IE9 is full HTML5 compliance and “Same Markup” – that is, rendering the same HTML, CSS and JavaScript the same way. The idea is that you, the web developer, shouldn’t have to come up with workaround or hacks to get the same page to display the same way across browsers.

If you’d like to run the Acid3 test in your default browser right now, click here.

Part of that approach is technical: a standards-compliant IE9, and the first platform preview was a step in that direction. Platform Preview 2 add more fixes to HTML, SVG, CSS3 and JavaScript implementations as well as features like CSS3 media queries, DOMContentLoaded, DOM traversal and range, getElementsByClassName, createDOcument and so on.

While the Acid3 test isn’t the holy grail – some of its tests don’t mesh with the HTML5 standard as it is right now, others are still “under construction” – more compliance with HTML5 typically means a higher Acid3 score. IE9 Platform Preview 2 currently scores 68 out of a possible 100, which is an improvement over Platform Preview 1’s score of 55, and leaps and bounds ahead of IE8’s scores for 20.

People Issue : Standards

Another part of the “Same Markup” approach is working within the various standards groups defining the web experience. Among other things, we’ve been doing things like:

People Issue : Developers

Let me show you a couple of photos from Toronto Code Camp, which took place last Saturday. Here’s Colin Bowern’s session, titled JQuery is Your Friend:

Colin Bowern presenting at Toronto Code Camp to a packed room

That was a fairly packed room, but that ain’t nuthin’ compared to Todd Anglin’s afternoon session, The Rich Standard: Getting Familiar with HTML5, which went beyond “standing room only” and into the “any place I can park myself” zone:

Todd Anglin presenting at Toronto Code Camp to a very packed room

From looking at the crowd – and yes, talking with them, too – it’s quite clear that there’s a lot of hunger for information, tutorials, guidance and general knowledge of HTML5, CSS3 and JavaScript and how to build modern web applications using them.

That’s where I can help, and in all sorts of ways. For starters, there will be a number of HTML5, CSS3 and JavaScript articles, tutorials and pointers on this blog. I’ll also be participating in a number of presentations, workshops and TechDays events to cover HTML5, CSS3 and JavaScript. Keep watching this space for more.

Take IE9 Platform Preview 2 for a Spin!

Windows Internet Explorer 9

You can download Internet Explorer 9 Platform Preview 2 right now. As with Platform Preview 1, it coexists with Internet Explorer 8, and it’s a very thin wrapper around the engine, meaning that it’s really for developer and designer testing rather than general browsing. The UI elements you’d expect in a browser, such as the address bar (you open sites using File –> Open…), nor are the security features such as Protected Mode, SmartScreen filter and XSS scripting filter.

Platform Preview 2 installs right over Platform Preview 1; you don’t have to uninstall Platform Preview 1 before installing Platform Preview 2.

Take it for a spin and send us feedback!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Make Web Not War / MonDev (Open Source Week) in Montréal / $50 Round Trip Train to Montreal

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.

Categories
Uncategorized

If You Speak Python, Science Also Needs Your Brain!

Samuel L. Jackson from "Snakes on a Plane" talking on a phone and holding a snake: "Python! Do you speak it?"

Yesterday, I wrote about an opportunity to help a University of Toronto grad student build a tool to help programmers build and debug database queries. Today, I present a similar opportunity.

Once again, it’s one of the grad students of Greg Wilson, whose name you might recognize – he’s the co-editor of the must-read O’Reilly book Beautiful Code, and this student, Mike Conley, is looking for Python (and yes, IronPython counts) coders. If you’re an undergraduate programming student in the Greater Toronto Area, you’ll want to check this out:

Subjects are needed to take part in a study concerning peer evaluation and grading. Participants will be asked to complete small, fun programming exercises, and peer grade other submissions. Time needed for the study is approximately 1.5hrs and takes place in person in the Bahen Center at the University of Toronto.

Subjects should be undergraduate computer science students with programming experience in Python.

Participants will be entered into a draw for a $100 Best Buy gift card.

If you think you can help Mike with his project, drop him a line!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Developer Junior: Making Your Own Movies with Live Movie Maker / Appearing on “Webnation”

Here’s episode 2 of Developer Junior, the show where “Junior” the puppet (played by Brian Hogg of Hoggworks Studios) and I show kids how to make the most out of their technology. In this episode, Junior and I go Hollywood and make a quick little movie using Live Movie Maker, which runs on Windows and you can download for free.

In case you missed the previous Developer Junior episode, in which Junior and I build a video game using Kodu, you can watch it here.

Webnation: Amber Mac, Joey deVilla and "Junior"

Junior and I are headed to CP24’s studios tonight to do an interview with Amber Mac and Maurice Cacho on their show, Webnation, where we’ll be talking about Developer Junior, technology, kids and how they all fit together. If you’re in the Toronto area, tune in tonight to CP24 at 7:10 p.m. to catch our interview live; if you’re, you can see the interview online when they post it to the Webnation site.

This article also appears in Canadian Developer Connection.