Latest from the blogs 
Scott Mark — Links for 2008-07-23 [del.icio.us]
Posted July 24, 2008 05:00 AM
Magnetbox — links for 2008-07-24
Posted by Ben @ July 24, 2008 01:30 AM
-
Of all the tools in the weather tool box, I bet radar ranks as the most useful for anyone who has a stake in the weather.
Schneier on Security — Information Security and Liabilities
Posted July 23, 2008 09:09 PM
Jason Bock's Weblog — Dynamic Languages
Posted July 23, 2008 07:35 PM
This is kind of a rambling post...
For a while now, I've been doing lots of DynamicMethod generation in my spare time (we all have our hobbies). I've also started to use the var keyword by default in C# (yes, I know var is just type inference and not late-binding or anything "dynamic" in nature, but still...).
I'm starting to wonder if I should just start moving over towards a dynamic programming language full-time.
Not that I'd ever give up on C#. Nor would I just dive into Ruby or Python (actually, I like JavaScript - there's lots of cool things you can do). But I'm starting to see that there's a definite benefit to having dynamic features in a language.
Maybe Cobra is what I'm looking for.
F#? Maybe...some geeks have fallen in love with it, and what I've seen with it is very cool...but I'm still not quite sold on it just yet...
For many years I've been in the typed world because dealing with typeless programs (i.e. VB pre-.NET) was incredibly painful. But times have changed (e.g. unit tests are the norm, which aids greatly in ensuring that code works as expected). I guess I'd like a little from column A and a little from column B when needed, and that should be seamless.
MN Headhunter — Daily Twitter Notes
Posted by MN Headhunter @ July 23, 2008 06:35 PM
Sometimes the day does not allow a blog post let alone write about things on my mind or I hear about like economic, political, local news (sports too).
With Twitter, you at least get some of the flavor, a flash moment during the day, of what I am thinking about. You can follow during the day or see the digest below.
Here are the highlights of my recent Twitter activity. If you want to see the full version click MN Headhunter on Twitter
MN Headhunter on Twitter | July 22, 2008 - July 21, 2008 (last one first, links added):
July 22, 2008
- Checking out for the night and praying, "please mind shut up. turn off" I need some sleep.
- Had a great breakfast this morning (that turned into a great 3 hour chat) with Claudia Faust and Alise Cortez of www.improvedexperience.com
- @NicoleBodem Wake up, yeah your funny. 7 am I was up.
- 72 hours (and 17 minutes) to the Minneapolis Recruiting Roadshow
July 21, 2008
- @Animal thanks for pointing out our MN colleague @greggdourgarian Did not know he was on Twitter
- Minneapolis Recruiting Roadshow: 250 registered and +8 on the wait list. www.recruitingroadshow.com and www.johnsumser.com
- @slolee How was the VISI move? Happy my email is still working :)
Jason Bock's Weblog — Rush Playing Rush on Rock Band
Posted July 23, 2008 05:58 PM
OMFSM...this is classic - Rush tries to play "Tom Sawyer" on Rock Band:
EPIC FAIL :). They don't even get to Alex's solo!
(Hat tip: Isorski's Musings)
Jason Bock's Weblog — C# Compiler Error CS0718 and VB Compiler Error BC30371 - This Feels So...Odd
Posted July 23, 2008 02:26 PM
Consider the following two classes:
public static class StaticClass
{
}
public sealed class SealedClass
{
private SealedClass() : base()
{
}
}
Now, I thought there wasn't any difference between these definitions. There are some slight deltas, though...here's the dump from ILDasm for both classes:
.class public abstract auto ansi sealed beforefieldinit CSharpCode.StaticClass
extends [mscorlib]System.Object
{
}
.class public auto ansi sealed beforefieldinit CSharpCode.SealedClass
extends [mscorlib]System.Object
{
.method private hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
}
}
It's odd that the static class is defined both as abstract and sealed, but...oh well. Anyway, let's define a generic class:
public sealed class GenericClass<T>
{
}
OK, here's the oddity. The following call works:
var genericSealed = new GenericClass<SealedClass>();
But this one doesn't:
var genericStatic = new GenericClass<StaticClass>();
I get the following compilation error:
Error 1 'CSharpCode.StaticClass': static types cannot be used as type arguments C:\JasonBock\Personal\.NET Projects\CS0718\CSharpCode\GenericClassConsumer.cs 12 41 CSharpCode
Here's what the documentation says for CS0718:
Because a static type cannot be instantiated, it cannot be used as a generic argument. To resolve this error, remove the static type from the generic argument.
But...you can't create an instance of SealedClass either! I could make an abstract class:
public abstract class AbstractClass
{
}
And use that in the generic type:
var genericAbstract = new GenericClass<AbstractClass>();
And that works.
I can even create a "module" type in VB:
Public Module ModuleCode End Module
Which looks like this in IL:
.class public auto ansi sealed VBCode.ModuleCode
extends [mscorlib]System.Object
{
.custom instance void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StandardModuleAttribute::.ctor() = ( 01 00 00 00 )
} // end of class VBCode.ModuleCode
It's pretty much like StaticClass, but without the abstract qualifier. And guess what, I can use that with the generic type:
var genericModule = new GenericClass<ModuleCode>();
As a side note, if I reverse the issue and write this in VB:
Public Module VBGenericClassConsumer
Public Sub Consume()
Dim genericSealed As New GenericClass(Of SealedClass)()
Dim genericAbstract As New GenericClass(Of AbstractClass)()
Dim genericStatic As New GenericClass(Of StaticClass)()
Dim genericModule As New GenericClass(Of ModuleCode)()
End Sub
End Module
That last line of code is invalid - I get the following error message:
Error 1 Module 'ModuleCode' cannot be used as a type. C:\JasonBock\Personal\.NET Projects\CS0718\VBCodeThatReferencesEverything\Stuff.vb 9 45 VBCodeThatReferencesEverything
This is compiler error BC30371.
So...these compiler errors are really odd. I'm guessing in the C# it must be looking for types that are abstract and sealed with no constructors and considering those to be "static types". With VB, I'm guessing that it's looking for classes that have the StandardModuleAttribute. Why? Because I compiled the following IL code:
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}
.assembly ILStuff
{
.custom instance void
[mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) =
( 01 00 08 00 00 00 00 00 )
.custom instance void
[mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() =
( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )
.hash algorithm 0x00008004
.ver 1:0:0:0
}
.module ILStuff.dll
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003
.corflags 0x00000001
.class public auto ansi sealed NonAttributedModuleCode
extends [mscorlib]System.Object
{
}
And I was able to use NonAttributedModuleCode as a generic argument in both C#:
var genericNonAbstractSealed = new GenericClass<NonAttributedModuleCode>();
And VB:
Dim genericNonAttributedModule As New GenericClass(Of NonAttributedModuleCode)()
At the end of the day, the compilers are "working by design". But...the design doesn't feel right in either language. With VB, it seems like it's looking for a specific attribute in the class (but without that attribute the code works so it seems like an odd restriction), but in C#, there are other types that match the description in the compiler ("cannot be instantiated") that work just fine.
Thoughts? Opinions? Criticism?
VISI BLOG — Partners in Learning
Posted by Stephanie Jones @ July 23, 2008 01:36 PM
Tech~Surf~Blog — My Day in the Sun - I Mean, the StarTribune
Posted by GraemeThickins @ July 23, 2008 11:41 AM
Or I really should say, our day in the sun -- meaning our whole team at DoApp (my new gig). What a bunch of great guys, and I tip my hat to every one of 'em! Especially our illustrious founder, Joe ("Google guy") Sriver, and our crack team of talented developers.
It isn't every day you wake up and find yourself at the top of page one of your local daily's Business section. I was even quoted there, before the jump. Here's the story: Apple Shines on Minneapolis Firm's iPhone App (Minneapolis StarTribune). But wait, there's more: another great piece on us appeared late Monday: Minnesota Keeps Feeding the iPhone Habit (Minnov8.com).
Having our myLite Color Strobe and Flashlight app break into the top ten of *all* free apps on the iTunes App Store, surging past many big-name apps -- like Facebook, AOL, MySpace, Google, and the NY Times -- has been a humbling and amazing experience. (We topped out at #8, after a wild ride up the charts.) We're even ranked higher than all the apps featured on "What's Hot" on the App Store front page! (Apple's a little behind in updating that list, it seems...)
Go grab any or all of our apps on iTunes -- just type "DoApp" in the search box. And reviews are always appreciated once you download 'em! (Our apps are getting high ratings by consumers, which you can see via the independent ranking service, Medialets. For example, myLite is currently #25 of all apps -- paid and free! -- with an average rating of 4.5 out of 5.)
Our other apps are myTo-Dos with Email Support and Magic 8 Ball (it's mystical, man!). And DoApp has many more iPhone/iPod Touch apps on the way, in a variety of categories. We're even updating our first three apps with cool, new features. (One you get an app, you automatically get the updates -- so sweet.)
Apple said yesterday the number of iTunes App Store downloads is now up to 25 million! Got an iPhone or iPod Touch yet? Downloading apps like mad? Tell us your experiences in the comments...
Schneier on Security — Speed Cameras Record Every Car
Posted July 23, 2008 11:32 AM
behind the times — Metaprogramming in Groovy Pecha Kucha
Posted by Hamlet D'Arcy (noreply@blogger.com) @ July 23, 2008 12:11 PM
Check it out over on the GUM site: http://groups.google.com/group/groovymn/web/metaprogramming-pecha-kucha-wip
Or head straight for the YouTube video: http://www.youtube.com/watch?v=4XL42u7vtJ4
And yes, that is my sultry voice you're hearing. I'm available for voice work; I excel at roles typically reserved for 12 year old boys.
Tiny Pixel Blog — iPhone 3g Fame Going It's Head
Posted July 23, 2008 10:08 AM
Tiny Pixel Blog — MacBooks to Hit Sub-$1000
Posted July 23, 2008 09:37 AM
Bob McCune — In case you missed it…
Posted by Bob McCune @ July 23, 2008 06:23 AM
Today the Wordpress team released the first version of their native iPhone application! I’m using it right now and am pretty impressed. The setup was a piece of cake and the editing interface is clean and simple. It provides you with the basic functionality you need to write posts, including nicely-integrated image support.
Overall, I think this looks like a great tool for mobile blogging. Kudos to the Wordpress team!
- blogged from my iPhone
Chase's Techno Rants and Raves — Back at the Hall Of Justice...
Posted by Chase Thomas @ July 23, 2008 03:58 AM
I am back from the deep dark world of Brick n' Mortar and back to consulting again, and boy I gotta tell ya - it feels good! And not only am I consulting again, but I found a place that truly appreciates the Geek Ninja in all of us and where the other consultants are in my opinion true rock stars of the .NET development world. I have not met a more passionate group of folks anywhere in the past and I have worked at some places where passions on technology can run pretty deep, so that is saying A LOT!
So what is this Dojo of the Digital age you ask - well I am talking about ILM in Edina MN. These guys are fantastic! I have only been here a week and they have made me feel right at home! Even the owner is a hard core techie. And it's not just code that these guys are into, being a former professional mechanic and inventor, I can truly appreciate the stuff I have seen so far, never a dull moment for me and I am the guy who likes to rip things apart just to see how they work and challenge myself by putting it back together again (with no left over parts and in either working or better condition than when I started mind you - LOL).
We all went out to lunch last week and I remember the owner asking us out of the blue, "So what are you guys excited about in Technology outside of programming". This took me aback as I have never heard anyone else do this in the past, it's always been about code, but these guys were really talking my language now! Could it really be that these guys are into all that stuff too?! Sure enough we went from talking about the new G3 IPhone and other gadgets (typical everyday stuff) to theories on more efficient means to escape the earths gravity to facilitate cheaper space travel - and these guys were really deep in it - I had a blast, truly awesome stuff.
I think I found a long term home here.
Nick Sieger — Jazzers and Programmers
Posted by Nick Sieger @ July 23, 2008 03:57 AM
At RubyFringe, I could have gone the easy route and talked about any manner of tech that I’ve been working on or associated with, including JRuby, JRuby-Rack, Warbler, image_voodoo, Glassfish, activerecord-jdbc, Connection pooling for Rails, or Ruby-Processing. Instead, I took a risk and went in a completely different direction. What follows are some thoughts I expressed in the talk. I’d be interested to hear your take as well.
Jazzers and Programmers
Why do we program? Why do you program? Not the 9-5 systems analyst working for a paycheck. I’m talking about you and me; we, the passionate fringe of the programming world. Fame and fortune? A knee-jerk answer, but that’s not the one I’m looking for. What I think drives great programmers is the desire to learn, share, collaborate, and constantly get better at what you do. Which might explain, to a large degree, why all of you came to RubyFringe.
RubyFringe bills itself as deep nerd tech with punk rock spirit. So what are some elements of punk rock spirit that we identify with? While I enjoy and appreciate punk and its culture of DIY, I’m not an expert. However, I am passionate and knowledgeable about jazz.
At this point you may be shaking your head, “Sieger didn’t get the memo!”
At which point I counter: if you think this clown and the music he plays is jazz, then prepare to be corrected, because you need to hear what I’m about to tell you. Listen. Jazz is punk before punk even existed. And if we’re associating ourselves with punk, the fringe, or, to use another word, vanguard, perhaps we can learn a few things from this truly unique American art form.
How did I pick this topic for my talk? I was thinking about the fringe, the vanguard and growing up nerdy and a misfit, which we probably all can relate to. In addition to my interest in computers, I was also a band geek. I wore ties on random days at school just to accentuate myself away from the “in” crowd. And after school, I played in the jazz band. Playing in the jazz bands continued through college, where despite my majoring (and graduating) in electrical engineering, I decided to move to New York City to experience the big city and hopefully continue to play jazz. Instead, in an odd but practical twist, NYC became my transition into a programming career. Because you gotta pay the bills somehow, after all.
Recently, after taking in David’s “Surplus” talk at RailsConf, although it sounds trite, I really took his suggestion to heart to look outside the programming world for insights on how to become a better programmer. I soon realized that jazz, my dormant passion, was that place right in front of me that might hold some of those crucial insights. And as odd as it may appear that I am speaking about jazz at a programming conference, I thought I’d share some thoughts about this from my vantage point as programmer and jazz musician. (Plus, I get a kick out of saying that I came to RubyFringe, stood up in front of a captive audience, and auditioned jazz clips for 30 odd minutes.)
Styles of Jazz
It’s taken me all my life to learn what not to play. – Dizzy Gillespie
Jazz as a unique musical style is incredibly diverse. Its history spans over a hundred years, and is remarkable in its breadth. From Ragtime, New Orleans “Hot” Jazz, Swing, Bebop, Cool, Hard Bop, Free/Avant Garde, Jazz Rock/Fusion to splintering into a thousand directions, the music was (and is) constantly evolving and changing with the times.
The history of programming is undergoing a similar arc, but is nowhere near as developed as a communication medium as jazz is. Whereas modern programming only 40-50 years old depending on when you start counting, jazz was just getting a head of steam at that point. You could break it down like this: C is akin to New Orleans “hot” jazz: foundation for much that followed, and still relevant in a lot of ways, but definitely showing its age. Java is like swing (literally! c.f javax.swing.*): appeals to the masses, anyone gets it without a lot of cognitive load. Ruby is like bebop: favors minimalism, more powerful, more intellectual, and less understood.
So what does that mean for the future of programming? We’re already seeing an increase in DSLs, polyglotism, and languages and tools used for specialized purposes. I would expect that trend to continue, and using the development of the many styles of jazz as a ruler, would say that there will not be a Next Big Language (NBL). Specialization and niche skills will be increasingly important as differentiators in our careers, but that means there will also be plenty of opportunity to stake out that new ground for ourselves and become leaders in these new specializations.
Jazz Fundamentals
Anyone can make the simple complicated. Creativity is making the complicated simple.” – Charles Mingus
Jazz as a creative medium has a number of compelling features that surround the music itself as well as the players. Let’s examine a few of these, using them as a mirror to reflect on programming.
Instrumentation. The modern jazz small ensemble is built upon the rhythm section -- piano, bass, and drums. The bass is the starting point, and is responsible for marking the beat as well as laying the harmonic foundation, often by “walking”. Because of this critical role, the bass player in a jazz band is almost always positioned in the rear-center of the stage, between the piano and the drums. The piano and drums also have a role in keeping time, but have more freedom in creating tension and dissonance by layering rhythms on top of the bass, in an activity known as Comping.
The easiest parallel to programming is libraries, frameworks and patterns. These are the building blocks upon which we code. A well-designed library makes your work as a programmer easier and more enjoyable in the same way a solid, experienced rhythm section complements a soloist.
To use an example from web programming, may I suggest Bass-Drums-Piano == Model-View-Controller?
When you hit a wrong note it’s the next note that makes it good or bad. – Miles Davis
Musical Structures. Much of bebop and straight-ahead jazz employs the well-established structure of the head, followed by solos, and finally repeating the head. The head is basically a crib sheet that consists of a tune or melody (usually a well-known jazz standard) and a set of chord changes that forms the harmonic basis for the entire piece. During the solo section, one or more musicians improvise over the changes for one or more “choruses”.
The 12-bar blues is easily the most common form found in jazz. It is usually the first form that a budding jazz musician practices when learning how to improvise.
Every working jazz musician is expected to memorize and be able to play a large number of tunes and harmonic structures. This body of tunes is exemplified by the Real Book, an underground, illegal transcription of a large number of tunes by some Berklee College students in the 70’s that has become a standard part of a jazz musician’s toolbox.
Collectively, these musical conventions and rules form a jazz vocabulary and a shared ritual that allow musicians to play together in a jam session without having played together before.
The takeaway is that conventions and standards, when organically grown, tend to be powerful, liberating forces for communication and collaboration. There was no OASIS- or W3C-like committee that sat down when the roots of jazz were taking hold and dictated that it would be played this way. It just happened, night in, night out, on bandstands and in sessions all over New Orleans and Chicago and New York.
I believe that some of the best examples of programming and technology embody those same ideas. Certainly Rails is a shining example in the programming world of such a set of conventions and how they allow you to be productive no matter what Rails project you’re working on.
It was when I found out I could make mistakes that I knew I was on to something. – Ornette Coleman
Improvisation. Making it up as you go. Jazz wouldn’t be jazz without improvisation. The whole concept of improvisation in jazz builds upon the conventions and structure, but gives you the license to do whatever you want. Improvisation is what turns those constraints into freedom. Conviction is the key. Get up and play, tell your story, tell it with conviction, and there will be no wrong notes.
Improvisation is also where the musical conversation happens. Where the soloist connects with the crowd and his/her fellow musicians. As a listener, following along with that conversation sometimes takes a trained ear. But there are still some musical devices that are easy for anyone to appreciate and can give you something to listen for.
Trading fours is a conversational device between players in the group. Most commonly, it’s used to give the drummer a chance to stretch out by alternating four bars of soloing with one or all of the instrumentalists. It’s a great way to enjoy the inventiveness of the group collaboration element of jazz by listening to how the soloists play off each other in short spurts.
An outstanding example of trading fours can be found in “The Blues Walk” between Clifford Brown and Harold Land (at about the 5:30 mark in the tune). They trade fours for two choruses, then twos, then ones, then halfs. The lines they weave are unreal!
Quoting is humor and inventiveness applied to improvisation. It’s named for a device where a player spontaneously inserts a recognizable melody into the middle of a solo. It’s basically easter eggs applied to jazz. Dexter Gordon and Sonny Rollins are two players known for their penchant for breaking out and quoting in the middle of a solo.
Improvisation and Programming
Learn the changes, then forget them. – Charlie Parker
As far as programming is concerned, it’s harder to see how improvisation can translate. Chad Fowler recently posted about programming as performance, asking for examples. Unfortunately, most of the examples given use programming as a means, but with some form of multimedia art as the end. I’d like to see programming performance where the code itself is the end result.
Do programmers improvise? I certainly believe that the best ones do. While it may be hard to capture the spontaneity of pure, real-time improvisation in a way that maps to how we write code, I think we can get close.
Continuous rewrites. Consider Fred Brooks’ axiom, “Plan to throw one away; you will, anyhow.” Jazz musicians do this on the bandstand every night! What if, rather than throwing one away, you rewrote a non-trivial piece of code five, ten, twenty times? What do you think would come out of that exercise as a result?
Live coding as a performance and teaching mechanism. I think live coding is an awesome example of spontaneity and risk-taking in programming, and one that not enough people attempt. Have you ever looked over the shoulder of a great programmer? It’s fun to watch, because you learn a lot. I could easily sit for an hour watching a seasoned programmer create code while working in their own environment. On the other hand, there’s a trend in conference talks where the presenter, to avoid the wrath of the demo gods, stands idly by while playing back a pre-recorded video of the demo. Sorry, I don’t buy this. If it’s not live, it’s not real. Let’s make live-coding something we all strive to do! Don’t be afraid to show the audience that you’re not perfect!
Do not fear mistakes. There are none. – Miles Davis
Instead of a hackfest, try a Coding Jam Session. Hackfests only rarely unite people to work toward a common cause; people enjoy the communal feel but too often people revert to working on their own thing instead of collaborating. Sprints are better, where the general topic or project is shared but each person is still working on their separate pieces. Rather, what I’d like to see is a group of programmers working toward a single shared goal. Plan ahead for a gathering of a handful of people for a lengthy period of time, say 8 or 12 or even 24 hours. Agree upon a theme or rough plan ahead of time, but allow for serendipity and improvisation to take hold of the group during the session. Get together, and start writing code. Try “trading fours”, allowing each person in the session to drive and add their bit of code into the mix in short spurts. The overarching theme should be collaboration and building on each other’s contributions. Avoid negative responses, such as saying “No” or “Yes, but...” or taking over and deleting or substantially rewriting someone else’s code. Instead, say “Yes, and...”. Imagine yourself on the bandstand, where once a note is played, it can’t be taken back. Really try hard to put away your devil’s advocate side or need to take control and instead play up to each others’ strengths. Depending on the blend of personalities, this could be a great way to spike a idea for a new website or a startup!
Group Gitjour repository sharing. Crazy idea: what about using gitjour at a coding jam in a mode where everyone broadcasts their own repository and adds everyone else as remotes? Commit notifications could be broadcast on the local network with Growl or a similar tool, and pulling in someone else’s changes could be a simple short one-line command, or perhaps even automatic. Imagine writing code together where suddenly a git merge is done for you automatically and the text changes right before your eyes right in your editor! Real-time collaboration!
Join the conversation!
I hope you’ll join me and post your thoughts about some of these ideas, either in the comments below or on your own blogs. And find some inspiration in your passions and pastimes you have outside of the programming world that help you become a better programmer and collaborator!
Discography
Those who saw my talk in person may be interested in this list of song samples. I personally recommend any of these albums. Information is organized as Section: Artist, Song, Album.
- Intro. Naked City, Thrash Jazz Assassin, Torture Garden.
- Ragtime. Jelly Roll Morton, Maple Leaf Rag (Morton style), The Library of Congress Recordings, Vol. 1: Kansas City Stomp.
- New Orleans “Hot”. King Oliver’s Creole Jazz Band, Dipper Mouth Blues, Louis Armstrong And King Oliver.
- Swing. Duke Ellington & His Orchestra, Take The “A” Train, The Fabulous Swing Collection.
- Bebop. Charlie Parker, Koko, The Complete Savoy and Dial Studio Recordings.
- Cool. Miles Davis, Israel, The Birth of the Cool.
- Hard Bop. Herbie Hancock, Watermelon Man, Takin’ Off.
- Free. Ornette Coleman, Free Jazz, Free Jazz.
- Jazz Rock. Miles Davis, Black Satin, On the Corner. (Also remixed on Panthalassa: The Music of Miles Davis, 1969-1974.)
- Contemporary. The Bad Plus, Iron Man, Give.
- Walking. Sonny Rollins, Blue Seven, Saxophone Colossus.
- Trading Fours. Clifford Brown, The Blues Walk, Clifford Brown and Max Roach.
Update. I’ve posted a muxtape of the songs here. Enjoy! (Also, I had to substitute Focus On Sanity from Ornette’s Shape of Jazz to Come album due to the length of Free Jazz. SoJtC is an early free album, a little more digestible than FJ.)
Magnetbox — links for 2008-07-23
Posted by Ben @ July 23, 2008 01:33 AM
Jason Bock's Weblog — Evolving New Games
Posted July 23, 2008 12:13 AM
The Gumption Blog — Pascal Update
Posted by thomas @ July 22, 2008 10:05 PM
He’s doing so well he doesn’t have to stay for the full 24 hours and is coming home tonight! We’ve got a string of normal vet visits ahead of us to readjust his insulin levels, but that’s a minor adventure after what we experienced this morning.
“The world is a dangerous and uncertain place. A few odd moments of respect and affection here and there is about as good as life gets.” — Hal Hartley, Ambition
thingelstad.com — WordPress for iPhone
Posted by Jamie @ July 22, 2008 08:10 PM
I just installed the WordPress application on my iPhone and am testing it out. It will be fun to be able to post and edit on the road!
Related posts
Missing Method — CommunityEngine - l18n support added
Posted by bruno @ July 22, 2008 08:06 PM
Thanks to some great contributions from the CE developer community, CommunityEngine now has full support for internationalization. We even have a good portion of the interface translated into (admittedly poor) Spanish.
This means all you non-English speakers around the world can use CommunityEngine to build awesome community sites in your own language!
This release is tagged v0.10.5 and you can find it here: http://github.com/bborn/communityengine/tree/v0.10.5.
If you’re interested in helping us translate the application into another language, please let us know! Drop us a line at Google Groups discussion list.
MNteractive — Roku + NetFlix + RedBox = TV heaven?
Posted by Darrel Austin @ July 22, 2008 06:41 PM
Roku + NetFlix + RedBox = TV Utopia.
We recently went cold turkey and cancelled our satellite service. The price was getting close to gouging range and we were increasingly finding that we were just paying for a lot of crap. We recently redeemed our $40 government coupons for our Digital TV Converter Boxes and discovered there’s a 24 hour TPT Kids station. So that was the final straw…we no longer needed to pay DirecTV to babysit and instead of paying DirecTV, we can toss a few more bucks TPT’s way.
So, we’re going to see if we can get by on OTA TV and NetFlix.
NetFlix is great, but we tend to forget to watch what came in and it sits there for weeks. The online video selection is OK, but we’re stuck with the laptop for that.
RedBox is great, but we tend to forget to return the movie we get, so that $1 soon creeps up to $4-$5.
It seems like there’s potential there for a great partnership or outrright merger. Add the $100 Roku box for your TV and it seems like NetFlix could easily corner the market…RedBox instead of Blockbuster, Roku instead of iTunes, and NetFlix instead of cable/satellite. Hmmm…
Schneier on Security — Washington DC Metro Farecard Hack
Posted July 22, 2008 06:29 PM
refactr blog on software development, design, agile processes, and business — Repsonding to RFP’s
Posted by Ben Edwards @ July 22, 2008 06:22 PM
At Refactr we don’t often get RFP’s (Requests for Proposals). Most of our consulting project work comes from word of mouth and referral where we help brainstorm what is to be created at the outset. It is the only time in a project where there are routinely meetings for more than an hour - a time of much personal interaction. I would say that sending out an RFP, sends an entirely different message. At best, it is impersonal and puts up walls that must be knocked down. More seriously, when it comes to software development projects at least, RFP’s can set the stage for failure.
An RFP attempts to describe and document the project. The first part of this (to describe) is good, but the intent for an RFP to do anything other than get some ideas down and start a dialog between the stakeholders and developers* is misguided. An RFP is drafted prior to development, when the least amount of information is available and with a small subset of the whole team in place.
Another side-effect of the RFP process is the creation of a mindset that software development is something that happens to an organization by an external source. Software development should be one of the most collaborative endeavors into which businesses enter. Stakeholders and developers should work side-by-side in designing the software, customers and those who use the software should be involved in the use-and-feedback loop.
To underscore the idea that RFP’s are simply the “hello” to a longer conversation, we often informalize the process right up front by meeting in person and responding with text emails rather than fancy Word or PDF file proposals. Our hope is that this helps to establish a new tone for the project and have found that when formality dissolves away, real communication happens.
* The terms developers and software developers are used here to encompass all people who develop software including visual, information, and interaction designers, client-side coders, server-side programmers, etc. I could also have used software designers to mean the same bunch of folks.
Schneier on Security — The Case of the Stolen Blackberry and the Awesome Chinese Hacking Skills
Posted July 22, 2008 04:05 PM
Wide Awake Developers — Article on Building Robust Messaging Applications
Posted by michael @ July 22, 2008 03:52 PM
I've talked before about adopting a failure-oriented mindset. That means you should expect every component of your system or application to someday fail. In fact, they'll usually fail at the worst possible times.
When a component does fail, whatever unit of work it's processing at the time will most likely be lost. If that unit of work is backed up by a transactional database, well, you're in luck. The database will do it's Omega-13 bit on the transaction and it'll be like nothing ever happened.
Of course, if you've got more than one database, then you either need two-phase commit or pixie dust. (OK, compensating transactions can help, too, but only if the thing that failed isn't the thing that would do the compensating transaction.)
I don't favor distributed transactions, for a lot of reasons. They're not scalable, and I find that the risk of deadlock goes way up when you've got multiple systems accessing multiple databases. Yes, uniform lock ordering will prevent that, but I never want to trust my own application's stability to good coding practices in other people's apps.
Besides, enterprise integration through database access is just... icky.
Messaging is the way to go. Messaging offers superior scalability, better response time to users, and better resilience against partial system failures. It also provides enough spatial, temporal, and logical decoupling between systems that you can evolve the endpoints independently.
Udi Dahan has published an excellent article with several patterns for robust messaging. It's worth reading, and studying. He addresses the real-world issues you'll encounter when building messaging apps, such as giant messages clogging up your queue, or "poison" messages that sit in the front of the queue causing errors and subsequent rollbacks.
The Gumption Blog — The Most Unthinkable Disasters
Posted by thomas @ July 22, 2008 03:35 PM
Over the weekend Jen and I got our spankin’ new iPhones, which made us very, very happy. This morning, after our usual walk, Pascal had a diabetic seizure and is now beginning a 24 hour stay at the emergency vet. Interestingly, I’m reminded of one of the most truthful and scary quotes by the narrator of A Christmas Story:
Oh, life is like that. Sometimes, at the height of our revelries, when our joy is at its zenith, when all is most right with the world, the most unthinkable disasters descend upon us.
Chase's Techno Rants and Raves — VSTS 2008 - Unable to create DB connections in Server Explorer and how to fix it
Posted by Chase Thomas @ July 22, 2008 02:02 PM
Recently I posted about how to install SSMS 2005 after installing VSTS 2008. After doing this I ran into an issue the minute I tried to create a database connection to my local SQL 2005 server to do some T-SQL debugging. The error I got was this...
Could not load file or assembly 'Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies.
This is happening because Visual Studio needs the latest version of SMO (which was deleted when you uninstalled SQL Express 2008).
To fix this - there is a patch available via the RC0 Feature pack for SQL Server 2008.
You can get it here...
You only need to install the SMO stuff so when you get to this page scroll down until you find this...
Microsoft SQL Server 2008 Management Objects
As always there are versions for X86 and X64 as well as Itanium (IA64) processors - download the one you need - install it and restart VS 2008. You should be able to create the connections to SQL from VS 2008 server explorer once again.
Technology Evangelist — Verifying Comment Spam Phrases
Posted by noemail@noemail.org (Ed Kohler) @ July 22, 2008 01:40 PM
Sometimes I come across blog comments that are just a bit too generic. They're complimentary, but don't mention anything specific to the topic of the post. When this happens, there is a good chance the comment is a piece of spam.
Here's an example:

It's certainly polite, although it also says nothing related to the topic.
Other hints: Keyword stuffed username, SEO site, and an email address a human would never use (test@)
If that wasn't enough, I searched for the blog post's phrase on Google and found this:

WOW! That 10-word sentence has been indexed 17,300 times by Google.
Looks like that spammer has had quite a bit of success getting their spammy comment past thousands of bloggers.
Comment on this post
Book of the Month: Everything is Miscellaneous
Gadget of the Month: Panasonic HDC-SD1 AVCHD 3CCD Flash Memory High Definition Camcorder
Web Site of the Month: Google Docs - Used to Write Technology Evangelist Posts
Technology Evangelist Podcasts: Subscribe to Podcast Feed
Technology Evangelist Videos: Subscribe to Video Feed
Tiny Pixel Blog — Beijing Police Ninjas?
Posted July 22, 2008 12:49 PM
bjhess blog — Post Redirect Get in Rails
Posted by Barry @ July 22, 2008 12:00 PM

Post/Redirect/Get (PRG) is a web application design pattern used to supply users with nice, GET-generated results pages that bookmark and reload with ease.
Say you have a results page with a filtering form at the top. The user might alter filtering options, and submit a form to winnow down her results. This is a POST, meaning params will be hidden from the user (not in the URL), making direct bookmarks to the filtered results impossible. Also, reloading the page will result in a “POSTDATA” warning message (”Do you want to resubmit POST data or would you rather we do a hurkey-jerky dance to confuse you?”) to the user. These are not things people like to deal with. Post/Redirect/Get says that your application should accept the POST command, and redirect to the results page using a GET request.
This is really quite simple to implement in Rails. Take this example action filter for an expense report controller, reduced to its bare essentials:
def filtered
redirect_to fitered_expense_report_path(params) and return if request.post?
# Actual action work here.
end
end
Very easy - the trick is really knowing the pattern more than anything. There has been some discussion on adapting this to deal with validation failures. In my experience, I’ve only made use of this pattern in non-RESTful controllers. You are sure to do better with it than I.
Tiny Pixel Blog — Featured Posts at Tiny Pixel
Posted July 22, 2008 09:03 AM
Tiny Pixel Blog — Call of Duty 4 for Mac on 8/25/08
Posted July 22, 2008 08:54 AM
Magnetbox — links for 2008-07-22
Posted by Ben @ July 22, 2008 01:30 AM
-
Read the news through an experimental interface that allows you to create typographic maps of current news stories.
-
Nice minimalist calendar screensaver.
-
A digital version of a Greek manuscript of the Bible handwritten 1,600 years ago, including the oldest complete copy of the New Testament.
Bex Huff — Oracle Open World Around The Corner...
Posted by bex @ July 22, 2008 12:31 AM

Oracle Open World starts September 21st... That's just 2 months away! Woot! Goosebumps, I tell you.
The conference last year was a bit chaotic for me... when I'm presenting, I never feel like I have enough time... And with 60,000 attendees, it can get a little crazy. This year will probably be similar. I'm doing a variation on my introduction to integrating with Stellent talk, because it was one of the top ten talks at Collaborate 08 a few months back. Nice... The IOUG folks were kind enough to score a spot for me, and I'm gonna soup up the talk a bit. Andy and I will probably also giving an ECM business-strategy presentation that aligns with our upcoming book.
Then I can relax!
I haven't looked at too many of the other presentation yet, but the ones that won Jake's "pick a session" contest on Oracle Mix all look good. I'm glad to see that Dan Norris will be presenting on how to be an Oracle ACE... also, Lonneke Dikmans will be presenting a shootout between Oracle WebCenter and BEA Weblogic.
I'm sure that last one will be hyper political...
Its also good to see Eric Marcoux presenting on a comparison between Oracle Portal, Oracle WebCenter, and Stellent... its nice to see a Stellent presentation make the top 25. Although it will be tough to give a decent comparison of all 4 Oracle Portal Products PLUS Stellent in one talk... Good luck to Eric.
Your turn: are you going to Open World? If so, what would you like to see?
Minnov8: Minnesota Innovation in Internet and Web Technology — Minnesota Keeps Feeding the iPhone Habit
Posted by Phil Wilson @ July 21, 2008 11:16 PM
DoApp has had a busy week. Their MyLite and MyTo-Do applications are currently available and moving up the rankings via the iPhone Apps Store and Magic 8 Ball and Whoopee Cushion are waiting in the wings. Current stats include MyLite ranking #8 overall on Top Free Apps, and #1 in Top Free Apps in the Utilities category along with MyTo-Dos showing at #81 overall on Top Free Apps, and #8 in Top Free Apps in the same category
Launched as PagePow, DoApp was founded in 2007 by former early Google employee Joe Sriver. The company positions itself as “a new kind of internet applications company.” They aspire to the rather lofty sounding mission of enabling “a glorious new world of distributed content and commerce.” Okay, so flashing lights and whoopee cushions don’t exactly sound “glorious”. However, in our interview Sriver assures me that there is more afoot at DoApp than finding your keys in the dark, telling the future, or goofing on your friends. The current applications for the iPhone are about establishing the firm and “gaining experience in the process.”
He goes on to say, “The iPhone applications are just one aspect of DoApp, making up part of a growing portfolio of work.” More serious applications in the commerce, utility (including MyTo-dos), and entertainment segments are planned.” We have a staff of eight and we are working furiously to keep pace with the ideas we are generating.” Those ideas include mobile and web based applications. In fact PagePow was originally launched as a widget builder. There is still a presence in that market with plenty of interest, much of it on an international level, but “the attention around iPhone applications has really replaced the buzz on widgets.” according to Sriver. Clearly, though it may be hard to believe, not everyone has an iPhone and there are still plenty of opportunities to supply applications for other platforms. This reality does not appear to be lost on DoApp.
As for iPhone applications, “Nobody really knows the criteria by which Apple decides which applications to release to the App Store, so we can’t really provide a timeline for what’s next there.” says Sriver. As the company expands beyond its current staff it will be less reliant on Apple because it will be delivering applications for other platforms. For now though, being ranked #1 in a category on the hottest application distributor site is not a bad way to bring recognition to a growing firm. Perhaps its own Magic 8 Ball app would say that it “appears likely” that this Minneapolis based firm will parlay that attention into serious application success.
(In the interest of full disclosure it should be norted that Minnov8 contributor Graeme Thickins is also the DoApp Marketing VP.)
Tiny Pixel Blog — The LG Vu is Good From Here
Posted July 21, 2008 07:16 PM
Technology Evangelist — Google Indexing Audio Files?
Posted by noemail@noemail.org (Ed Kohler) @ July 21, 2008 02:56 PM
A thread on WebmasterWorld (via SEO Roundtable) suggests that Google is close to adding a new type of content into their indexing mix. To date, in addition to typical web pages, they index PDF files, Word docs, Excel, PPT, RTF, txt, and swf and a few other formats found here.
Adding MP3 into the mix would be incredibly cool since a ton of very interesting content found on the web today is hidden inside audio podcasts.
Many podcasters have been going through the work of transcribing their podcast productions in order to generate easily indexable text transcripts. Should Google manage to auto-transcribe the contents of MP3's for indexing, this may become slightly less important.
However, my initial take is that transcription would still be valuable since Google will still have an easier time indexing text over taking their best guesses at what was said in audio files. Hard of hearing and non-native speakers are also big fans of transcripts since it allows them to consume or read along with audio content that would otherwise be inaccessible.
Comment on this post
Book of the Month: Everything is Miscellaneous
Gadget of the Month: Panasonic HDC-SD1 AVCHD 3CCD Flash Memory High Definition Camcorder
Web Site of the Month: Google Docs - Used to Write Technology Evangelist Posts
Technology Evangelist Podcasts: Subscribe to Podcast Feed
Technology Evangelist Videos: Subscribe to Video Feed
Schneier on Security — Scary Knife Makes for Great Newspaper Headlines
Posted July 21, 2008 12:12 PM
Schneier on Security — Cost/Benefit Analysis of Airline Security
Posted July 21, 2008 11:53 AM
The Glass is Too Big — Mid-2008 Bookshelf Activity
Posted by J Wynia @ July 21, 2008 10:45 AM
Somehow, despite a June where I found myself working an absurd number of hours, I've actually managed to squeeze in some reading of the dead trees variety recently. Even more surprising is that it wasn't all non-fiction.
Part of the reading time came when Shelly started a new job in May that is barely a mile from my main consulting client. Since then, whenever it's made sense for post-work scheduling, we ride together. That, in itself, resulted in a serious of negotiations.
Since her car gets much better mileage than mine, it made obvious sense for us to share her car. That gave us our starting point. However, given how we've both driven to work in solitude for many years, we figured we should probably work out some of the other issues.
First was the radio. Because it's been made clear for nearly as long as we've known each other that I don't like listening to her choice of radio station. That meant that one of us was going to be listening to headphones. A quick discussion later, Shelly offered to do the driving. That put me in the passenger seat for many of the commutes over the last 6 weeks.
That conversation also resulted in rules like "little or no talking". It felt vaguely like Jerry and Elaine trying to figure out how to sleep together and still be friends. We were trying to figure out how we could drive to work together and still keep our relationship working like it already did. However, our attempt seems to have worked considerably better than theirs did.
Much of that time in the passenger seat has been filled with reading. So, what exactly *have* I been reading?
Odd Hours
Because I aim for rational, critical thinking in so much of the rest of my life, I enjoy my fiction, my TV and my movies with a strong dose of the impossible. In the case of Dean Koontz, that doesn't mean futuristic sci-fi, but often does mean granting some rule of nature being bent or broken, bringing a bit of the supernatural to otherwise modern stories.
The "Odd" series is one of my favorites (and clearly one that others like too, given the sales figures). The latest isn't quite as enjoyable as the last couple have been, but was still enjoyable, nonetheless. If you haven't read any of this series, featuring Odd Thomas, the fry cook who sees dead people and hangs out with the ghost of Elvis in Pico Mundo, CA, you should definitely read at least the first one.
If you have been following the series, this one follows a similar story to the others, with Odd falling into the middle of a big mess, relying on his supernatural gifts and the guidance of the silent ghost of Frank Sinatra to work things out.
It's also worth noting that the audiobooks in the "Odd" series are particularly well done as well.
On Intelligence
A while back, I saw an episode of Wired Science on PBS, featuring Jeff Hawkins (he founded Palm Computing) talking about the area of study that's pulled him in repeatedly: neuroscience. His description of the neocortex, including its similarity in size and thickness to a cloth dinner napkin and that thin layer of cells' pretty much *being* the thing that makes us human intrigued me. So, I bought his book.
On Intelligence is the book on this list that took me the longest to actually get through. It's not particularly long or even hard to read. However, every chapter led me to ponder quite a bit. As a result, I tended to read this one in fits and starts over a few months.
The central premise is his theory and the science to back it up focuses on the general algorithm for the neocortex. Oversimplified, every portion of the neocortex just watches for and stores patterns, combining them and replaying them. That goes for sensory input, our own motor control, etc.
Ever since reading this book, I've been seeing more and more in day to day life that fits with this theory. Should his model for how the brain works turn out to be completely right, it will be huge, particularly in the area of computer-based artificial intelligence.
I fully expect to continue mulling this one over for months and years to come.
The Back of the Napkin
Given how much time I spend at a whiteboard, I've often contemplated how to more effectively use that tool. A really well drawn diagram, particularly if it's accompanied by both a good analogy and a good example ends up hitting nearly all of the learning styles in a given room.
The Back of the Napkin was recommended to me as a really good book for how to improve whiteboard diagrams. That recommendation wasn't ill-founded. This approach gives a nicely structured system for how to diagram most common business situations. By focusing on the who/what/when/where/how much types of questions, you clarify your own thinking as well as ending up with things that are fairly easy to draw out.
Fortunately, if you're concerned about your ability to draw, this book should help to alleviate some of those worries. That's because nearly everything he shows could be drawn by a typical elementary school child. So, "I can't draw" is not a reason to avoid drawing in this kind of context.
Presentation Zen
In a similar vein, I've enjoyed the Presentation Zen site for quite a while. So, when I saw that the author of that site had put out a book, I had to take a look.
Like all of the stuff on his site and in conference presentations, etc. I've really found his message to be one that resonates with me. I'm still struggling with how to apply the "zen" approach to Powerpoint in more technical presentations, as opposed to the inspirational and conceptual presentations that dominate the examples, but it's clearly a direction in which to strive.
The book is in keeping with the website content, and bundles it together quite nicely. Much like the presentations themselves, the book makes really good use of white space, vivid photographs and nice layouts.
If you're still using the standard bullet-point layouts from Powerpoint (and the default Keynote layouts aren't really any better, FYI), you should definitely read this one.
Crisis of Abundance: Rethinking How We Pay for Health Care
I read this really short book on a flight from Chicago in preparation for an economics book club that I joined this past month. It wasn't particularly engaging (I'm not really as much into the policy and politics of economics as I am the other aspects of the discipline), but did tackle a very timely topic: upwardly spiraling health care costs.
His thesis is that among the tradeoffs we could employ, most, including limiting access to procedures are extremely unlikely and distasteful to Americans. The remaining possibility (other than just living with the higher costs) is to remove the insulation from the costs that plagues the US health care system.
Our current system grew out of wage freezes in the post-WWII era where employers attempted to attract employees by adding perks, among them health care. A couple of generations later, everyone presumes that this is the way it's always been and end up going to the doctor where an appointment resulting in a couple of Tylenol and one where you get an MRI and dozens of lab tests cost exactly the same.
If you remove that price insulation (as you've got with things like LASIK surgery), the market does a bunch of work on your behalf to pressure the prices.
It's an interesting theory and one we discussed on Tuesday at the book club. This is the kind of thing that's interesting if you find that sort of thing interesting. If not, skip it.
The Mythical Man-Month: Essays on Software Engineering
Most of the stuff in Fred Brooks' Mythical Man-Month is stuff I've read in one place or another over the years. However, I'd never read all of it in one place and it had been a while. When I heard the audio of his presentation at OOPSLA 2007, I grabbed a copy and read it through.
The details and examples are definitely showing their age, but the underlying principles, including the source of the title still ring true 35 years after he wrote them the first time. There are some myths of software development that just seem to have imbibed the zombie powder. They just won't die.
I've lost count of the number of project managers who seem to think that they're going to be the first to add people to a late project and speed it up. Re-reading these essays invigorates my desire to challenge that assumption more emphatically when it comes up.
Predictably Irrational: The Hidden Forces That Shape Our Decisions
Behavioral economics is a field that interests me deeply. For some reason, I'm drawn in whenever someone gathers data about not only *what* we do (rather than what we think we do), but why we do it.
When those things come together, it provides a model for understanding my own behavior and, when necessary, modifying it. This book hits one right up the middle in that way, as does the author's site.
He examines some of the behaviors we all exhibit that don't mesh with what a purely rational/logical behavior would be in the same situation. For instance, we nearly all have a completely irrational desire to avoid closing off options. We'll go to absurd lengths to keep our options open, even when 1-2 of those options are demonstrably better in every way.
That's an impulse I feel regularly that has bothered me. After reading this book, there's a lot of those kinds of things I see myself doing that bother me. Fortunately, now that I recognize them, I can actually stop and adjust my behavior. On the flip side, I also now understand other people's behavior a little better as well. That can help when you're working with others and need a better model in your head for how they're going to act in day-to-day situations.
Overall, definitely an eye-opening book and approach.
Wrap Up
When I sat down to write this up, I figured it would be a quick post. I had a couple of books that I finished and wanted to mention. As I started writing, I saw how many books were lying around that I knew I'd finished recently and, next thing you know, I've slobbered nearly 2000 words into this post.
A while back, I read a comment that said you should only pass along books worth reading. The person in question thought that if you didn't really enjoy a book, you shouldn't donate it to charity, etc. as it would encourage someone to read an unworthy book.
I don't think I agree with that (too many books are liked or disliked on largely subjective terms), but it does make me think whenever mentioning a book to make a point of being fairly clear about whether it worked for me or not and why. And, for this list, there you are.
MN Headhunter — Daily Twitter Notes
Posted by MN Headhunter @ July 21, 2008 05:28 AM
Sometimes the day does not allow a blog post let alone write about things on my mind or I hear about like economic, political, local news (sports too).
With Twitter, you at least get some of the flavor, a flash moment during the day, of what I am thinking about. You can follow during the day or see the digest below.
Here are the highlights of my recent Twitter activity. If you want to see the full version click MN Headhunter on Twitter
MN Headhunter on Twitter | July 20, 2008 - July 18, 2008 (last one first, links added):
July 20, 2008
- @myklroventine A&W, you saying that brings back the kid in me. Fond memories.
- MN Headhunter blog: June 2008 Minnesota Jobs Report
July 19, 2008
- Minnesota Twins: Umm, last I saw Texas 2, Twins 1 early in the game. Now top 8th, 14-2 Minnesota. I missed a TD and 2 FG's. (crap)
- 3 DM's today asking if I am OK. Had not made myself seen on Twitter yet today. Busy with event and day job stuff, Recruiter 101, PowerPoint
July 18, 2008
- @RobertFischer Is this the third time I have sent you a message along the lines of, Recruiters Suck?
- @StevenRothberg This is easy when John and the Recruiting Roadshow bring presenters and content like you. I can send email all day :)
- MN Tech friends: Know a talented PHP programmer (Rails/Flex a plus) who may be looking for a perm job? I have a cool gig to share with them
- MN Recruiters and Recruiting Roadshow event: FULL BABY!!! 250 of 250. A wait list has started as we will have cancellations.
- State of MN jobs report: +3,400 jobs added but I saw little coverage about it. Good/better news must not be news.
The Savvy Technologist — So digital natives don’t exist?
Posted by Tim Wilson @ July 21, 2008 04:16 AM
I was sitting in one of Ewan McIntosh’s sessions at BLC08 and couldn’t help noticing how much delight he took in disputing the digital native/digital immigrant distinction. The native/immigrant comparison may not be accurate (so Ewan says), but it sure is useful. I’ve used those terms many times since reading Prensky’s original article (PDF, 132kB) to bring the issue of relating to today’s kids more sharply into focus with groups of educators. So if there’s no such thing as a digital immigrant or native, is there any useful distinction to be made between today’s students and their teachers?
There are a couple others that I’ve used at various times. The first is a sort of attribution theory I read about some time ago whose reference I’ve misplaced. The basic message was that when adult learners encounter a technological obstacle such as a button that doesn’t do what they expected it would, they often respond by attributing their failure to their own lack of technology savvy. Kids, on the other hand, usually assume that the technology is poorly designed and try to identify a workaround. Ewan hinted at this when he talked about how kids will just press buttons to see what happens. I don’t see adults do that very often.
The other comparison I like is one that became clear to me when I was in the classroom teaching physics. We were talking about Newtonian mechanics, and the story of Isaac Newton and the falling apple came up in our class discussion. The classic story of the apple falling on Newton’s head is a myth; the actual story involved Newton observing the moon rise in the distance as an apple fell from a tree across the yard. When Newton witnessed those events he realized that the same force that caused the apple to fall must also be affecting the moon. He surmised that the moon is actually falling just like the apple. Of all the people who had ever witnessed a similar scene, what was different about Newton? Oh, I don’t know… how ’bout genius?
Geniuses see connections that regular people miss entirely. I think the same difference applies to experts and novices. How long does it take you to learn a new word processor? Not very long I’d guess because you’ve probably used a bunch of different word processors in the past, and you realize that all word processors work pretty much the same. Technology novices tend to get hung up on the small differences.
I don’t know if either of those are as immediately useful as the immigrant/native comparison. I’d sure like to know if anyone has any proven techniques to accelerate the move along the novice-expert continuum.
MN Headhunter — June 2008 Minnesota Jobs Report
Posted by MN Headhunter @ July 20, 2008 05:38 PM
No doubt the Minnesota jobs reports have not been outstanding but since the -10,000 in April '08 that was all over the print and TV news I have not seen much written about the +5,000 gained since then.
Frequent visitors are not surprised to see me say something like this, bad news is news and good news is not news. Some balance would be nice.
What I mean is, when the April report came out one might have thought the sky was falling. They did not mention with the late winter and spring employers had not yet started to hire for the season. They (most) did not mention that the biggest loss of jobs was for those under 25.
Does it suck to be under 25 and without a job? Of course. But looking at things in a macro view it needs to be taken in context.
Also, only a couple of national stories mentioned the higher minimum wage. I do wonder how much that plays a part in this. Surely some small employers are doing more with fewer workers. (This is not a political statement for against but it in some small part it has to be cause/effect)
Points from the June ‘08 report:
- The state has added 1,900 jobs through the first half of the year, compared with a U.S. loss of 438,000 jobs during that period.
- Growth: Government, and Education and Health Services +1400, Financial Activities + 900, Other Services +600 and Construction +600.
- Declines: Trade, Transportation and Utilities -1500, Professional and Business Services -800, Information -200, Leisure and Hospitality -200, and Natural Resources and Mining -100.
Unemployment rate (seasonally adjusted):
- June '08, 5.3%
- May '08, 5.4%
- April '08, 4.8%
- March '08, 4.7%
- February '08, 4.6%
- January '08, 4.5%
- December ’07, 4.9%
- November ’07, 4.4%
- October ’07, 4.7%
- September ’07, 4.9%
- August ’07, 4.6%
- July ’07, 4.6%
- June ’07, 4.5%
Jobs Created/Lost (seasonally adjusted):
- June '08, +3,400
- May '08, +2,500
- April '08, -10,100
- March '08, +5,200
- February '08, -4,100
- January '08, +8,500
- December ’07, -2,300
- November ’07, +6,900
- October ’07, -6,600
- September ’07, -6,300
- August ’07, -2,000
- July ’07, -7,300
- June ’07, +4,200
Over The Year Job Growth (not seasonally adjusted):
- June '08, +7,600
- May '08, +7,100
- April '08, +19,000
- March '08, +17,200
- February '08, +12,500
- January '08, +15,300
- December ’07, -700
- November ’07, +2,566
- October ’07, +2,100
- September ’07, +9,800
- August ’07, ???
- July ’07, +19,165
- June ’07, +35,133
Click Employment & Economic Statistics for more posts on the topic and MN Headhunter for the latest blog posts.
MN Headhunter — Backup Your LinkedIn Profile NOW
Posted by MN Headhunter @ July 19, 2008 11:46 PM
This may be my shortest post ever. Rather than repeat what Jason Alba posted at JibberJobber just go over there, LinkedIn Maintenance: Do This Right Now (or else?)
It has been 2 years or so since the last time I downloaded my contacts and back then I do not remember being able to do the same for my profile.
While there, be sure to check out his two books and related sites (Disclaimer: I get nothing for the referral):
behind the times — Awesome new Groovy Mixin Syntax (and F#'s alternative)
Posted by Hamlet D'Arcy (noreply@blogger.com) @ July 19, 2008 11:10 PM
Check out how easy it is to add multiple new methods to an existing class:
class ListUtils {
static foo(List list) { "foo called" }
static bar(List list) { "bar called" }
}
List.metaClass.mixin ListUtils
assert "foo called" == [1, 2, 3].foo()
assert "bar called" == [1, 2, 3].bar()
From the DefaultGroovyMethods source, it looks like you can currently call .mixin on any Class or MetaClass object, passing a new Class (here ListUtils) or list of classes. Awesome.Paulk made a few comments regarding the Maximum Segment Sum implementation in Groovy from my last post. Looking at both the F# and Groovy original implementations, it was easy to see the value that F# brought for functional programming. But the new versions can be seen here, and the results are not so different.
Open classes are still available in F#, despite it being a statically typed, compiled language. I still find the F# open classes syntax simple and appealing:
open List
type List with
member x.foo = "foo called"
member x.bar = "bar called"
if "foo called"
[1;2;3].foo then failwith "error"
if "bar called"
[1;2;3].bar then failwith "error"
I especially like how the 'this' reference can be named anything at all (here 'x').Let the golf begin.
SlickThought.Net — What I'm Reading...
Posted by jab @ July 19, 2008 07:47 PM
I was having a conversation the other day with a customer and we started talking about what each of us had been reading (non-technical, no work related). It is always fun to learn about a new author and share opinions on common books. I thought I would post on what I have recently finished or am currently working on.
Recently Finished:
The Dreaming Void (The Void Trilogy, Book 1) : Peter F. Hamilton
I am a huge Peter F. Hamilton fan. His The Reality Dysfunction Series was absolutely fantastic, as was his series starting with Judas Unchained
. The Dreaming Void is set in the same universe he developed for Judas Unchained. It was a bit of a slower start than his other books, but it really started to move in the second half of the book. Hamilton is a master at developing a complete world and the characters within i







