Categories
Uncategorized

Discuss C# with the “Head First C#” Author, Save Big Bucks on “Head First C#” Too!

Cover of "Head First C#, Second Edition"Want to learn C# or brush up on it? From Wednesday, August 18th through Tuesday, August 24th, you can join Head First C# co-author Andrew Stellman and other techies in a week-long exchange about C# in an O’Reilly “Inner Circle” discussion, where he’ll talk about C#, .NET 4.0 and Visual Studio 2010.

(If you’re a new programmer just getting started, Head First C# is a great book that will keep you engaged, even in those parts where the going gets a little tricky. If you’re an experienced programmer who’s new to C# – or like me, hadn’t used it in ages – it’s still a great read; just skip the basic parts and enjoy the “Head First” style in which it’s written. And yes, if you want to developer for Windows Phone 7, you’re going to need to know C#. Want to get Head First C# at a discounted price? See below for details.)

The discussion will span a wide range of topics, including:

  • Why use C# instead of any other language?
  • C# best practices
  • Becoming a better C# developer
  • Dealing with objects
  • Productivity hints
  • The best of C#

If you want to join in (I’ll be participating), register for the Andrew Stellman on C# discussion at O’Reilly. See you there!

Save Big Bucks on Head First C#!

O’Reilly have a deal on Head First C#, Second Edition (published this May, and it covers C# 4.0 and Visual Studio 2010): use the discount code BKCBD when ordering online from O’Reilly and save 40% off the dead-tree edition and 50% off the ebook!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Perspectives on Clojure and F#

Get Microsoft Silverlight

Don’t have Silverlight? You can download it here or download the video in MP4, MP3, WMA, WMV, WMV (High) and Zune formats.

Here’s a Channel 9 video shot at Emerging Languages Camp 2010, the first conference on up-and-coming programming languages held in Portland on July 21 – 22. It’s a casual conversation with:

  • Rich Hickey, creator of the Clojure (pronounced “closure”) programming language. It’s a dialect of Lisp intended general-purpose functional programming language with a lot of support for concurrent programming. If you caught our Ignite Your Coding webcast with Robert C. “Uncle Bob” Martin earlier this year, you heard his high praise for the language. Clojure targets both the JVM and CLR.
  • Joe Pamer, compiler developer for the F# programming language. F# is a “hybrid” programming language, built with functional programming in mind, but also programmable in a more imperative object-oriented way. Much of it is compatible with the OCaml programming language, there are some C# ideas in there as well, and it’s one of the languages baked right into Visual Studio 2010.

In this conversation, Rich and Joe talk about their ideas on programming language design and evolution, functional programming, concurrency, how F# fits into Visual Studio and the granddaddy of them all, Lisp.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Now in Beta: Windows Phone Developer Tools!

Devvin' for Seven: Windows Phone 7 DevelopmentThe announcement went out earlier today: the Windows Phone Developer Tools have moved from the CTP ("Community Technical Preview”) phase to Beta (“Almost There!”). As Brandon Watson wrote in the Windows Phone Developer Blog, “This Beta release represents the near final version of the tools for building applications and games for Windows Phone 7.”

Go ahead, go and download it! Click the big graphic link below. You know you want to.

click here to download wp7 developer tools beta

Make sure you uninstall previous versions of Windows Phone Developer Tools before you install the beta.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

The jQuery Online Conference: Monday, July 12th – Everywhere!

ThinkVitamin presents...The jQuery Online Conference

Are you a web developer and want to sharpen your jQuery skills? Would you like to attend a conference featuring some of the brightest lights in jQuery programming? Are you too short on time and travel expenses to hit such a conference?

For a mere US$150 and no travel at all, you can attend the jQuery Online Conference. It’s a live, over-the-‘net conference taking place on Monday, July 12th starting at 12:00 noon EDT / 9:00 a.m. Pacific and featuring these four sessions:

  • Beyond String Concatenation. Using jQuery Templating to Cleanly Display Your Data
    Rey Bango (Client-Web Community Program Manager for Microsoft and Head of Evangelism for the jQuery JavaScript Project)
    In this presentation, Rey will show you a new way to produce easily maintainable dynamic pages via pre-built JavaScript templates and the Microsoft jQuery templating plugin.
  • Testing Your Mobile Web Apps
    John Resig (JavaScript tool developer for Mozilla and creator of jQuery)
    This talk will be a comprehensive look at what you need to know to properly test your web applications on mobile devices, based upon the work that’s been done by the jQuery team. We’ll look at the different mobile phones that exist, what browsers they run, and what you can do to support them. Additionally we’ll examine some of the testing tools that can be used to make the whole process much easier.
  • Taking jQuery Effects to the Next Level
    Karl Swedberg (Web developer at Fusionary Media, member of the jQuery Team, author of jQuery 1.3 and 1.4 Reference Guides and maintainer of the jQuery API site)
    One of the first things web developers learn to do with jQuery is to show and hide elements on a page and then add some flair by sliding those elements up and down or fading them in and out. Too often, though, we stop there, missing out on the incredible range and flexibility of jQuery’s core effects. In this talk, we’ll investigate both standard and custom animations and how they can be used to create useful and fun effects. We’ll also build a couple effects plugins, explore parts of the effects API that are often overlooked, and learn how to avoid common problems when attaching these effects to certain events.
  • jQuery Pluginization
    Ben Alman (Developer at Boston.com, contributor to jQuery and Modernizr)
    In this live-coding session, Ben explains how, with just a little thought and effort around generalization, parameterization and organization, you can convert your "just get the job done" jQuery code into a legitimate, reusable, modular jQuery plugin.

Your conference attendance fee not only lets you watch the live event and ask questions of the presenters, it also lets you watch the recordings of the events any time afterwards. So if you can’t catch the live event (perhaps you’re busy at work, or it’s 3:00 a.m. in your time zone), you can still watch the presentations. This also lets you watch the live event to get the general idea, and then watch it again for note-taking or hands-on workshopping.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Uncle Bob: All Our Programming Languages Boil Down to Sequence, Selection and Iteration

“It’s not true that life is one damn thing after another,” wrote the American poet Edna St. Vincent Millay, “it is one damn thing over and over.” Her statement is simply a newer version of the French expression Plus ça change, c’est la meme chose, which is approximated in the English “The more things change, the more they stay the same”. In turn, that French expression echoes a sentiment that dates at least as far back as the biblical book of Ecclesiates: “What has been will be again, what has been done will be done again; there is nothing new under the sun.” Even the idea of history repeating itself has a history of repeating itself!

That’s the essence of the keynote at the 2010 RailsConf conference given by Robert C. “Uncle Bob” Martin, whom I like to think of as “the programming world’s adult supervision”. If you’ve got some time to spare – perhaps while you’re having lunch – watch the video above, because it’ll give you a better sense of the history of programming languages and some educated guesses as to where they’re heading. Once you strip away the syntactic sugar, argues Uncle Bob, our programming languages essentially boil down to three things: sequence, selection and iteration, and every construct within those languages is some combination of them. In the keynote, Uncle Bob explains this essence and considers the implications, in classic “Uncle Bob” style, which includes, of all things, a drum solo at the beginning.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Turning Up Where Least Expected

ip3 forumA conference devoted to devices that run iOS might be the last place you’d think you’d see a Microsoft developer evangelist, but here I am!

I’m at iP3 Forum, “a one-day event that will explore the changing mobile landscape and the business opportunities associated with Apple’s Touch Platform (iPhone, iPad and iPod touch), as business models adapt to a market where people are always connected.” It’s organized by Interactive Ontario, a group whose mandate is to promote the development of interactive media in Ontario.

iP3 Forum has two tracks: business and technical, with some sessions common to both; if you’re curious about its sessions, take a look at the schedule.

So what am I doing here? Learning. There’s a lot to learn from the mobile app cultures of the Esteemed Competition, and I want to take those lessons (I refuse to use the Microsoft term “learnings”) back to Windows Phone developers. At the same time, I’m also reaching out to iPhone developers to convince them to add Windows Phone 7 to their mobile OS roll, and I need to know about their world. I’m even doing a little noodling with iPhone and iPad development in order to learn more. As they say, travel broadens the mind, and that holds true even for “travel” to different operating systems.

My time at iP3 Forum has been peppered with interruptions – it’s the end of Microsoft’s fiscal year, which means meetings, meetings, meetings – but I’m taking notes for those sessions I’m able to catch and I’ll post them soon.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Launchlist: A Checklist for Web Developers and Designers

checklist manifesto

Checklists

To put it into programmer-speak, checklists are unit tests for everyday life. Like unit tests, checklists appear to be additional make-work that take valuable time away from performing the task at hand. However, when done right, checklists save time by helping ensure you’re doing everything you need to do and can even function as a sort of specification for the task (in fact, like unit tests, checklists often end up being the “real” specification for all intents and purposes).

Checklists may seem to the be province of by-the-book, obey-all-rules-and-regulations slaves to procedure, but I think it’s one thing those Poindexters got right. I would argue that the structure and order that they provide free us to spend our energy on those less controllable, more chaotic parts of our lives, work and play. As I like to say, “preparedness enables spontaneity”.

I could go on about the power of checklists and how even a pretty random goofball such as Yours Truly has benefited from them (at least when I use them), but I’d serve you better by pointing you to Atul Gawande’s book, The Checklist Manifesto: How to Get Things Right. In it, Gawande writes about how checklists have improved the outcomes in his own surgical practice, as well as in other fields such as piloting, where bad outcomes are really bad.

Launchlist

01 launchlist logoIn spite of repeated threats from your client, the odds are that no one will get injured or die if something’s wrong with the web site or application that you’re working on. I hope that you still have enough pride in your work and your profession that you want to get things right. If you do – and I hope that’s why you’re reading this blog; you’re the sort of reader I’m going after – you’ll want to use tools like unit tests and checklists to ensure you’re getting things done properly.

One such tool is Launchlist, a simple-but-useful web application that acts as a checklist for web developers and designers. Built by Jay Hollywood (coincidentally my stage name should this computer fad blow over and I need to become an “exotic dancer” to pay the rent) and Lee Karolczak, it is:

…intended to help and encourage web designers and developers to check their work before exposing it to the world at large.

The product was born out of frustration. For too long we had been using archaic methods to conduct pre-launch testing and the web was an obvious choice to do it better.

Launchlist features a set of questions about the site you’re working on, based on Hollywood’s and Karolczak’s own experiences building sites. You should be able to answer “yes” to all of them before you unleash your site upon the world:

03 list

Launchlist could’ve been a simple site using checkboxes and bog-standard form elements, but in the age of modern web apps and increased appreciation of design that’s both functional and beautiful, I’m glad to see that they went the extra mile and worked some CSS magic. The “yes/no” toggle switches are beautiful, yet function quite well as checkboxes, and even the “Product Details” section, which would’ve functioned quite adequately as a bunch of ho-hum text fields, is pleasing to the eye:

02 project details

Here’s a set of items on Launchlist’s checklist that shows what “checked” and “unchecked” items look like:

04 checked and unchecked items

Launchlist’s creators came up with a set of questions that should apply to most web sites. However, if some of them don’t apply to your site, you can simply mark them as “not applicable”:

05 not applicable

You can even add a comment to an item in Launchlists’s checklist, in case a simple “yes/no” answer isn’t sufficient:

06 comment

And knowing that you might have checklist items that are unique to your projects, they gave Launchlist the ability to house up to 10 custom ones, like the one I created, shown below:

07 custom item

The status report is at the bottom of the list, which is also where you can add your own custom items to the checklist. If any of the applicable items in the checklist remain unchecked, the status report will read “Launch not advisable” and report the number of unchecked items:

08 launch not advisable

If you checked all the applicable items in the checklist, Launchlist declares that your site is ready for launch:

09 go for launch

Once you’re done checking and unchecking items, you click the “Submit report” button at the bottom, after which you’ll see this:

10 report sent

…and as the text in the “Your report has been sent” message says, you and the intended recipient of the status report are emailed. Here’s the text of the report that Launchlist sent to me:

Launchlist Submission Report for Test (http://joeydevilla.com):

Status: Launch not advisable – 5 items are still outstanding.
We recommend you resolve these items before launching your website.

ITEMS OUTSTANDING (NOT CHECKED)
—————————————————————————-

– Required fields have been tested?
– Forms send to correct recipient?
– Web Statistics package installed and operational?
– 404 page exists and informative?

APPROVED ITEMS (CHECKED)
—————————————————————————-

– All text free from spelling errors?
– Page & Content formatting has been tested?
– Print stylesheet exists and tested?
– Meta data has been included and is appropriate?
– Page titles are descriptive and SEO friendly?
– Images have appropriate alt tags?
– Title tags are appropriate and SEO friendly?
– Favicon has been created and displays correctly?
– Footer includes copyright and link to site creator?
– HTML has passed validation?
– CSS has passed validation?
  Comment – Todd says he’ll have it fixed by Friday.

– There are no broken links?
– JavaScript is error free?
– Displays & functions correctly in ie7?
– Displays & functions correctly in ie8?
– Displays & functions correctly in Firefox (Mac & PC)?
– Displays & functions correctly in Chrome (Mac & PC)?
– Displays & functions correctly in Safari (Mac & PC)?
– Displays & functions correctly in Opera (Mac & PC)?
– Tested at 1024 x 768 resolution?
– Tested at larger resolutions?
– Forms have been tested and processed correctly?
– Picture of Sean Connery in "Zardoz" outfit on every page?

—————————————————————————-

This report has been crafted and delivered via Launchlist http://www.launchlist.net

Follow Launchlist on twitter – http://twitter.com/launchlistapp

Lessons from Launchlist

Here’s a quick run-down of what I think can be learned from Launchlist. I’m sure that I’ll think of more after I’ve published this article…

  • Design matters. Launchlist could’ve been built without all the stack we like to call "HTML5” (it’s really HTML5, CSS and JavaScript working together) and the gorgeous design, but without it, you wouldn’t be compelled to use it. And the design goes beyond its good looks; there’s also a great deal of usability and user experience design in Launchlist, from its clean layout to the controls that pop up only when they’re needed.
  • You can do HTML5 in Internet Explorer. Launchlist works just fine with Internet Explorer 8 (the screenshots I took for this article were taken from a Launchlist session in IE8) – a quick “View Source” reveals that they used the HTML5 Shim for IE. And of course, there’s IE9, which the Internet Explorer team is working furiously on.
  • Do one thing, and do it very, very well. I think that this is a good app philosophy, and I believe it applies doubly to those of you planning to build apps for mobile devices, whether they’re phones or tablets.
  • “Freemium” (or: Apps can be ads). Launchlist’s creators say that the version of Launchlist at Launchlist.net will always be free, but that they’re working on a paid subscription version with more features. I think this is a good approach – there’s no marketing like a “starter” version, especially when what you’re making is so nice.

This article also appears in Canadian Developer Connection.