Opinion

  • Feb 15 2013 - I am a technology tourist (or first impressions of Dart) ...
    So this week I met with someone who was very excited about working with Google Dart, a web programming language aimed at being a better JavaScript running both on the server and ultimately the client where the VM could run in browsers (only chromium for now). When Google first announced Dart in September '11 I thought "cool, too bad it will never work" and basically dismissed the project as doomed since it would presumably face too much pressure from competitors and open standards. After the failures of Flash, Java (applets) and most recently Silverlight it's hard to imagine Google having an ability to convince the world to abandon JavaScript in favor of Dart. Even GWT seems to be losing Google's attention somewhat. Having just been burned my MSFT on Silverlight I am overly wary of any proprietary tech these days.

    But what I overlooked when I initially dismissed dart was the dart2js compiler and the fact that Dart doesn't really need the Dart VM to succeed for the language to get some traction. So skepticism temporarily put on hold I decided to port a small existing project from jQuery to Dart. The project was pretty simplistic, about 175 lines of Javascript served up statically and allowing users to navigate a full page grid with vim-like keybindings, entering free flowing text in "contenteditable" divs within the grid.

    Some thoughts on the experience:
    • Dart editor based on eclipse is handy and the integration with chromium made the whole experience of getting up and running with the SDK really easy
    • Classes! Optional Types! (or ?) Libraries! Isolates! Lexical Scoping! All very nice and immediately familiar in the resulting code.. although I did find myself momentarily confused by: 
      • lack of object notation (use Maps instead) 
      • lack of dot access to those map properties
      • lack of explicit private keyword  (use _prefix to indicate private) 
      • lack of string concatenation (use string  interpolation, which I actually really like) 
    • handling of concurrency is really interesting not just in the Isolates but also in the "Future" type which makes for some really clean chaining of asynchronous calls such that you are not nesting N levels of callback functions. Didn't use them but they looked cool.
    • There are equivalents in the "dart:html" library for a lot of what you'd commonly reach for in jQuery, but in general I found myself writing more verbose code than what I was doing equivalently in jQuery. That said... 
    • I had WAY fewer error cycles in Dart, and the semi-static typing made the whole conversion process take only a couple hours including all the time spent looking things up..
    • ... and looking things up was pretty easy, you can tell it's largely from Google but they are investing enough in their docs that it was always pretty easy to get what I needed
    • A nagging feeling... While dom manipulation was straight forward I found myself cut off from Javascript. It looks as though calling between them is totally doable but feels hacky as soon as you go down that path. Dart itself assumes just enough responsibility that leaving the core libraries feels like foreign territory effectively isolating you off from all of the innovation happening out there in Javascript land. I may be making a mountain out of a molehill here but having to choose between Dart native libraries and Javascript community for common tasks is not pleasant.  
    So all in all it was a really positive experience, the tooling is solid, the language itself is very comfortable for someone with my background and I can see clear advantages especially on a larger project.  But I'm now at crossroads on this little project,  do I go with the comfortable tools and language with questions around the long term viability and community support for the proprietary Dart (to be fair it's open source, but open source doesn't remove the fact that this is very much a Google initiative) or do I stick with the "open web" and just deal with all the pains?

    .....

    After a couple days and writing this out I decided I just can't commit to Dart yet. There's too many exciting developments happening in the open web and Dart feels too much like unnecessary fragmentation of the collective efforts to improve things.  Will be keeping an eye on this though, just because it's cool. The project's ambition is admirable and it feels like they are just getting started. 


  • Sep 15 2010 - I just quit my job.... ...

    Ha! No I didn’t. But starting on the premise that I had and I had already saved a bunch of cash and decided to finally become my own boss, what would I do first?

    For me this is hypothetical, but for my good friend who’s about to make the leap out of full time employment to self employment it is very very real. And so I will live vicariously and imagine what I’d do.

    The Goal:

    • build a business that can at a minimum support me before my year of savings has run out so that I can continue to build said business long enough affect real change and or make loads of cash 
    My Challenges:
    • I have enough money to sustain myself for the year, or to invest and sustain myself for less
    • I love to program. I love to program, and specifically solve technical problems, so much that I focus on it to the detriment of other tasks. (like writing business plans, talking to users or bathing)
    • I have a set of real technical hurdles to clear in order to have anything of value
    My Assets:
    • A good idea
    • Mad programming skills
    • Friends in medium places



    (caveat that this is an hour’s worth of dumping thoughts based on a few conversations and some latent thought) ;-)

    My first steps: 
    • Set some very high level goals (these can change)
      • Month 1 initial Product Plan is ready (see below)
      • Month 1 website is up, domain is secured (even if a teaser)
      • Month 2 delivering live usable software with weekly updates for the remainder of the year
      • Month 3 gut check milestone - pull the plug or keep going?
      • Month 4 gut check milestone - go alone or go big? do I need more money?
      • Month 5 gut check milestone - pull the plug or keep going?
      • Month 6 target - engaged user community is built and driving the backlog (uservoice)
      • Month 6 target - marketing (adsense? viral? user communities?)
      • Month 8 target - earn my first dollar
      • Months 9  gut check - is this a venture someone would buy? should I start talking to those people?
      • months 10-11 - rinse and repeat, drive drive drive
      • Month 12 - profit! 
    • Make a workspace
      • Seclusion, powerful machine, dual monitors, natural lighting, huge whiteboard, music and snacks
      • block reddit.com from this network
      • have a laptop available for games, surfing etc - try however possible to keep these separate
    • Make a development environment
    • Start building! 
    • For at least two days a week early on, or maybe a couple hours a day in the beginning besides building I would ALSO do the following….  (Product Plan)
      • Write myself a short Vision and Scope document which would include:
        • The elevator pitch, preferably in a single sentence which I would then post on a wall in my workspace
        • The high level guiding principles for the need I’m trying to solve, how I’ll translate that into some revenue (not overly specific), who I’m targeting, who my competitors may be and what the biggest risks are. 
        • I would do this loosely, but I would do it. Just the act of looking and solidifying my direction would be motivating. 
      • Build a backlog of features, ideally written in the style of “As a <<user>> I want <<to do something>> so that <<some value>>" 
      • Make a persona or two or three based on the largest value user segments
      • Pick one persona who I can deliver something of value to
      • Prioritize my backlog with this user type in mind, and work backwards to find the minimum viable product that could actually be used by a user. This is my first milestone. 
      • Look for ways to accelerate getting to revenue sooner. 
      • Look around for ways to extend the 12 months without too much distraction (grants etc)
    • Network network network. A lot of my milestones might be easier with help. Socialize that I’m up to something even if I’m not giving away the secret sauce. 
    • Force myself to join some local developer user groups that align to my technology choices
      • force myself to attend some tech talks and socialize with other technologists
      • guarantee that at least some evenings are spent away from my work
    • Refer to my 12 month road-map on a weekly basis. (Monday morning when I’m slow)
      • Change it whenever
      • Where will I deploy? How will I deploy? I only have two months before it needs to be live in some form so figure that out. 
      • Will finding my initial target user be difficult? Start hunting early
      • What questions will I need to ask in order to answer my gut check milestones? Ask those early.
      • Are there components I should look to buy or rent rather than build? How do those align to my backlog?
      • How could I accelerate delivery of features? Can some things be outsourced? Should my backlog be altered to allow my investment decision in month four?
      • What else might I need to make a go big decision in month four? Do I need a more formal business plan? Do I need to incorporate?
    • Continue to build like mad!!
    • Profit!!  

  • Jun 30 2010 - curiosity killed the addictive gamer in me ...

    I can see it now. Homeless, slightly demented and jabbering about inane details of imaginary characters. This will be my life in six months from now after suffering through a debilitating addiction.  An addiction to the ridiculous time suck that is world of warcraft (aka world of walking). I’m almost embarrassed to admit that I have now played through the 10 day free trial (damn you free trial!) and have paid to play for another month. What happened?! How could I go from so jealously guarding my time to pissing it away into the ethereal fantasy world that is the “world” of warcraft?

    And yet…. And yet, I am completely fascinated. I’ve read a few articles about professors studying the economics of  the game, and about the staggering number of people (11 million?) who play the game but never really understood the allure. In fact, just the idea of playing games “online” is largely unappealing to me. And by online I mean amongst hoards of teenage kids and angry shut-ins throwing slang at each other. I mean internet gaming, the kind where you show up and get completely slaughtered before you even know what’s going on.  LAN gaming on the other hand, with a room full of people you knew and could taunt… that’s a different story. How old am I?

    I got to witness my young (11) cousin not too long ago playing on his XBox. It was eye opening to see the way his generation has adopted online anonymous gaming in a way that I have yet to really get to. Jump online, form casual alliances, piss some people off, play basically completely ad-hoc and move on to the next one. It’s social too, with banter and chat being casually tossed around. I still didn’t really get it though. (Is this just the introverted programmer in me?)

    [time passes]

    I started writing this post in December, and after five months of not playing the game I am all of a sudden well into this thing now. I had to stop playing after the holidays were over just to get back into work, and once I stopped I stopped. Course all it took was to login again after a stressful week at work and I was back at it.  No different than any other game I suppose except that this game has no ending. I really can see how this game could destroy school, relationships, careers. Thank god I already have a family.

    And I have to say after a few weeks the social elements are starting to be far less baffling to me. I still find that given constraints with kids in the house and limited time windows I rarely have the opportunity to commit to a game socially, (very poor form to just turn off the game midstream like I do when I play alone) but having now run a few quests both with planned partnerships and adhoc allegiances I am starting to really get the appeal.  It’s amazing too the diversity of people online (teens to doctors, moms to executives), and you have an ability to really choose who of that diverse group you actually interact with for the most part. The game includes two main modes of play, either player vs player or player vs environment. Both are collaborative, but PvE is primarily groups of humans versus AI and bosses.  I may yet play PvP but I fear that’s where you really lose control over your experience. I don’t relish the thought of being ambushed by a group of players who’s sole purpose is to run around finding people to annoy/destroy/humiliate.  And even when playing against the environment you still have arenas in which you can pit yourself against other players which honestly is enough for me.

    Biggest distraction for me so far? The remote auction house on my iPhone. I can be walking to a meeting and purchase or sell gear for my toon, check out upgrades etc. It’s insane.  I lament the thought of what these hours amount to in terms of lost productivity to global economies. ;-)

    Anyway this is way off topic but I’m cleaning up old posts and thought I’d get it out.  For the record I can’t yet say I’d ever recommend playing to my real-life friends, but these MMORPG worlds are insanely rich and engaging, not to mention wildly popular.

  • May 30 2010 - Flying at the right altitude - advice to a slightly younger me ...

    No posts in five months! Almost exactly the same time I’ve been in a new position at work. 

    Disturbing trends, this completely predates just the last six months…. 
    I’ve moved from being a team lead to being the head of our R&D group. I now have as many teams (7) as I did people to think about, and a whole new world of politics, strategy and planning. With a group of this size HR issues seem to be at least a weekly occurrence and I am now fully and completely on the manager’s schedule.   

    However now that I’ve somewhat got my sea legs in this position I am increasingly allowing myself to get back into technical issues where I think I can add value. “Where I think I can add value” is the whole challenge here though. I have literally not opened visual studio in five months of running around like a chicken with my head cut off. How often does having the boss swoop  in and give their less informed perspective do more harm than good? Impossible to answer without knowing the boss in question of course, but surely there are ground rules some sage masters can teach me. 

    I have to say I really enjoy looking at things from this altitude, in that you really can see patterns in development across teams, opportunities for reuse or better design across teams, efficiencies to be gained etc. It all can be very fun, but at the same time I worry about losing relevance, and I worry about sidetracking teams. Even worse is the feeling that by interfering I actually hurt the autonomy and self-sufficiency of these teams by interfering (which almost outweighs the fear of divergent or  teams).

    Here are some things I think I would tell the me of six months ago:  (advice to a new executive)
    1. Don’t stop the old routine completely.  I actually think a lot of my comfort these days is precisely because I’m getting back to things like my reader and blogger. Just imagine how nice it would be if I could do the occasional code review or bug fix! (unlikely) My life has gotten decidedly more stressful (father died, promotion, second child all within the last six months) and my routine has out of nowhere incorporated quite a bit of gaming all of sudden. (COD2 MW, WoW) Good stress releases but I need to get myself back into creating rather than just consuming things.  
    2. Embrace the manager’s schedule, but respect the maker’s schedule. It’s a very tricky thing not to let your new found schedule dictate awkward length and times for meetings with the people who are there to actually do the development. Resist the urge and find ways to be more effective with meetings. It is SO easy to forget the real costs around this.  
    3. Don’t seek consensus on every decision. It can work on a team of seven or eight to drive for consensus and try to win minds but on much larger teams you’re going to have to get used to making some calls without the comfort of knowing you have everyone on board. Of course reasonable efforts still need to be made but it becomes about key people and finding the influence in the group. 
    4. Be open and give status frequently. Still one I struggle to do properly but it really is key. I am trying right now to really focus on problems at the request of my boss, but don’t forget to acknowledge the wins as well. The more open you are about the warts the easier it is to excise them. In my opinion, maybe counter intuitively, more shit should flow up and more sunshine down. (though that’s an easy one to over generalize)
    5. Trust and trusting your gut. Not really anything new to the position, but the frequency with which I’ve run into this has gone through the roof. You often just know the right course of action. Waiting to find out the hard way (or expensive way) that you were right can be painful.  Trusting yourself is only second to trusting your people. Trust your gut on your people, make sure you have the right people and put that trust in them. 
    6. There will be a lot of water sprayed at your back, be the duck.  Or, in other words, find a way to regain your slack


  • Dec 14 2009 - google chrome software updates make everything else feel broken ...

    I am growing more and more annoyed at the Apple's and the Adobe's of the world who are constantly interrupting my work to tell me that there are updates waiting for me to install. Why do I have to manage this? Yes I know that I can go in there and tweak the settings so that I don't get annoyed... but why should I even have to do that? I would need to do that across every user account on every machine I use on a regular basis! (5) This is noise, and it isn't at all necessary for me to have to think about it.

    I believe this is part of the convenience of applications delivered in the cloud. (sorry to throw that term out there) It is part of the convenience that has me accepting fewer features in order to get that functionality.

    There are companies out there who understand this, and are working hard to create a better user experience. Google for example went to great lengths in order to be able to update their entire browser in under 100 KB of download just to make the experience more efficient, user friendly and safer. Not only that but chrome updates happen automatically, again to help with security. It's very close to the experience I get by logging into gmail, which is always up to date.  Now I can already hear rattles of complaint about "control" over your own machine, but I have to ignore this or I'll get completely derailed. I'll say in short that I think that control is an illusion, and the alternatives are worse.

    If you have not already read this post by the chrome developers I highly recommend it.
    http://blog.chromium.org/2009/07/smaller-is-faster-and-safer-too.html

    And then you have the Apple, who has gone from a position of pushing hard to avoid needing to reset the operating system unless absolutely needed to requiring reboots for Quicktime, Safari and sometimes even iTunes (especially in windows).  You can argue all you want that it's because of kernel extensions or who knows what else - but at the end of the day it doesn't matter why. This is bad design and leads to a diminished user experience.


    It seems like more and more often I am prompted with a software update dialog that looks like this one. Three out of four of the updates require a reboot! Are you serious? And chances are good that I will continue to ignore this dialog because closing all of my browser sessions, and ending the long running handbrake encode, and stopping the download I have going, and turning off the TV program I'm watching all amount to a whole lot of trouble for something I don't think I should even have to think about.

    Seriously what is so special about Safari that they require me to download 36.2 MB and restart my machine for a point release?? Maybe this didn't seem so offensive before Chrome, but now it feels dated and clunky.

    I really should pick on Adobe here for the horror that is the Adobe Updater, but honestly I really do expect more from Apple. Adobe is too easy of a target.

     Please fix this Apple, you can do better.  Where is the Steve Jobs who wanted to save lives by reducing boot times??
  • Dec 5 2009 - build it (so it's easy) and they will come (make the right decision) ...

    One of the biggest lessons I think I’ve learned over the past few years is that you have to be very careful with what you make easy to do in a software system.



    When you are working within a preexisting system, it is very hard to work effectively outside the bounds of that system. Whether you are limited by time constraints, peer pressure, political decisions or just pure technical inertia, those early/legacy decisions in a system will have long reaching impacts on the decisions of those who follow.

    I’ll give you an example. On a product I worked on for years, the decision to use an object relational mapper (ORM) in early stages was based on a desire to eliminate boilerplate code, reduce the learning curve for new developers and generally push the development of new entities down to the entire team rather than specializing this role in one person.  All in all the reasoning was sound, but the inability to see some of the psychological aspects that would impact the future had some serious impact on the future of the system.
    1. Developers stop thinking about database impacts because they never really SEE the database
    2. The object model and the schema become inexorably tied
    3. Accessibility to the DAL ends up being given to junior developers who may not have otherwise dealt with it yet.** 
    4. Things that could reasonably be built OUTSIDE the ORM end up dropped in without consideration because developers are following the template. 
    This can be avoided by having data contracts that are specific to the DAL
    ** There is nothing inherently wrong with ORM, and if your DAL is properly abstracted so that the ORM isn’t propagated throughout the stack then this too isn’t necessarily a problem. 

    I add those two caveats because I really don’t have an issue with ORM, in fact I think used properly it makes way more sense then to waste days of development doing repetitive and simple CRUD work.

    However the deeper issues that arose for us still focused on convenience. It was convenient to expose the friendly querying methods of the domain objects that mapped to our tables directly to the business logic assemblies. It was convenient to let junior developers write code that accessed those objects as if retrieval and persistence were magically O(1) operations. Of course in reality we discovered embarrassingly late that we had more than a few graphs of objects that were being loaded upon traversal, leading to a separate mapper triggered SELECT for each object and its children. This is the kind of thing that only becomes apparent when you test with large datasets and get off of your local machine and see some real latency.

    And yes, in this case, I think you could argue that QA dropped the ball here. But as a professional software developer you really never want to see issues like this get that far.

    I’ve picked one example, but there are many many others in the system I’m referring to. Including but not limited to a proliferation of configuration options and files, heavy conceptual reuse of classes and functionality that are only tangentially related to each other, and an increasing reliance on a “simple” mechanism to do work outside the main code base.

    Ultimately, this post has less to do with ORM and proper abstraction and more to do with understanding how your current (and future) developers will react to those decisions. I think a conscious effort has to be paid to how a human will game your system. You need to come up with penalties for doing dumb things if possible, and the path of least resistance for the right ones.  There are entire books dedicated to framework and platform development that encompass some of these ideas, but they apply at every level really in my opinion. (except maybe the one man shop?)



  • Aug 7 2009 - the rise and fall of myspace (and twitter) ...

    This is a great post on how myspace rose and fall and how the same thing applies to Twitter (and I’d imagine Facebook as well) Some really good thoughts. Getting popular before you have your mission can forever trap you into that identity vacuum where popularity is everything.

    http://codybrown.name/2009/08/06/myspace-is-to-facebook-as-twitter-is-to-______/

    A good read, and the level of blogging I’d like to work towards (more pictures!).

  • Jul 23 2009 - manager schedule vs maker schedule ...

    Popular comp-sci essayist and lisp hacker extraordinaire Paul Graham recently posted this article on the difference between a manager’s schedule and a maker’s schedule. This is really inline with my own views on this issue and really sums up a big problem we have where I work with meetings being scheduled with the makers and the impact that has. We’ve had tons of discussions around the cost of mental context switching, but even that’s an understatement of the problem…

    Great work, it’s always helpful hearing echoes of these types of thoughts beyond my own everyday sphere. Who knows maybe I can use to add some weight to my arguments.

    http://paulgraham.com/makersschedule.html

  • May 11 2009 - taking a step back/up/sideways (thebrain) ...

    Around 2003, 2004 I had a bit of a mild obsession with organizing my life into digital form, creating as many mappings as I could from my everyday existence into some kind of digital form. This of course included ideas and thoughts, writings and paintings, music and movies, friends and bits of information about those friends etc. This amass of data have gone from one disjointed medium to another (.txt files in folders, emails, blog posts, napkins) without ever really achieving any chohesiveness or real improvement in my ability to actually synthesize or act on all that information.

    At that time the closest tool I found that could come close to mapping ideas and thoughts in a way that made sense to me was “TheBrain” a piece of software intended for visualizing information, and as importantly, the links between that information. As a user, you add “thoughts” to your brain which become nodes in a large graph of ideas, thoughts, attributes, urls etc. You can then very quickly build child, parent and sibling links between those nodes to add more context and information. Those links can then be categorized to add even more context to the relationship between ideas which is often very important information. Unlike a lot of “mind mapping” tools I’ve used though, the brain does not force you into a tree structure. Your thoughts can have multiple parents and siblings or “jumps” to thoughts anywhere else in your brain, whether they are directly related or not. Hyperlinks, imagine that! I think for the actual exercise of brainstorming and free flow thought this is critical. It also mimicks how I visualize my own thoughts working. I’ve since tried personal wiki’s which give you a lot of the same flexibility but lack the very fast keyboard entry for connections and nodes and force you to think at the level “inside” the node, by editing the page. Whereas the brain allows you to think and work at the level of the topology, which is really effective.

    I stopped using the software basically because of the overhead of attempting to keep the futile mapping exercise up to date. Imagine if every idea and thought you had needed to be compulsively cataloged manually into a program in order to keep the overall picture intact. It just doesn’t work, at least not for me, and not for long and detracts from my overall goals. I found that every time I opened my brain there was just too much catchup work to do in order to get things synced up and in order.

    The other thing that changed for me since 2004 has been search. Between Google and Spotlight on my mac I basically stopped categorizing information in the same ways I used to have to. It becomes less and less necessary to build nested categories of programs or emails or documents etc. Search has exposed the entire hierarchy in a glance, in many cases keeping the context intact that would have derived the categories. Still there is value in the information of that structure, but in a far less visible way.

    Well I’ve resurrected the brain and am using it in a new way that seems to be actually working for me. For starters I don’t keep any notes or real content in the brain, this is one of the clumsiest facets of the tool and almost seems like an afterthought. It really is all about the topology, which for me is fine since the bulk of what I need is often in dedicated stores (subversion, sharepoint, team foundation server) I’ve found any attempt to use the clumsy palettes and data entry forms to just be too cumbersome to bother with.

    Focusing on the nodes and connections, and learning all the keyboard shortcuts have enabled me to use the brain in a way that is a lot like I sometimes use notepad when I need to brainstorm. Except rather than dashes, asterisks and plus-signs I’m using jumps, parents and children of small snippets of text. It’s really a cool feeling being able to navigate this very large graph of interrelated concerns and ideas with very little effort. Wiki’s and other hypertextual forms have served me well too, but never with so little impediment.

    For high level thinking and free form brainstorming this tool is the best I’ve used. And provided I keep it to just the free flowing jumping and navigating it’s incredibly useful.

  • May 6 2009 - Transcendent Man! ...

    I read the singularity is near last year and really enjoyed it, despite a few misgivings for Kurzweil’s ego and some dubious use of statistics. One of the things I found myself really intrigued by was Kurweil himself and this movie looks like a fun look at the man and his ideas.



    Do I believe him? Part of me wants to, definitely. The ultimate end-game of the singularity is fascinating and wondrous, but I actually found some of the more intermediate steps in his projections to be more fascinating. Maybe that’s just a factor of what I can relate to. One example of this was the idea that nano-technology will lead us to self-assembling products from base materials and an instruction set transmitted as information. So much of my life is already so information focused that the idea of being able to go 100% information based and the implications on how society is structured etc… it’s mind numbingly cool. Try to imagine how much energy, time and effort we put into moving goods around this planet and how incredible it would be for all of that to end.

    Anyway, looking forward to renting this one when it becomes available.

  • Mar 25 2009 - silverlight 3 - after the high ...

    I failed to convince my manager at work that sending me and a few members of my team to MIX was a worthwhile expense in this economy. So instead I spent a couple days this sprint with http://live.visitmix.com/ on one screen and visual studio in the other. I have to say, Microsoft did an amazing job with MIX in terms of getting me excited and having me “tuned in”. If you are at all interested in web development on the Microsoft stack and  haven’t checked out the keynote I’d recommend it. I really enjoyed Buxton’s presentation and Guthrie was amusing.

    So now that it’s been a week, and “the Gu” and all those dancing flashy lights are no longer influencing my opinion… I’m STILL excited about Silverlight 3. Sadly the development tools can’t be run in parallel with Silverlight 2 and we’re near the end of our sprint so can’t afford the risk. Which is really too bad because one of the things our current application is leveraging is the wcf duplex polling module. A lovely little COMET like implementation for server push. The version of the duplex polling that made it into the Silverlight 2 toolkit was a little more bare than your typical Microsoft module. And while it works pretty well, it leaves a lot of plumbing code in the hands of the programmer, specifically a lot of asynchronous channel handling code that is  a bit of pain to deal with. (though a bit educational too) Anyways, this is one of those areas that Microsoft is improving on in Silverlight 3, and one of those things I’m excited about. Right next to the simpler duplex polling usage for me is the introduction of binary serialization for web services (including duplex!). When comparing to Flex and the myriad of tools and options for using AMF Silverlight was really behind the ball on this one. When we eventually decided to build our tool in Silverlight as opposed to Flex we basically committed ourselves to rolling our own binary serialization.  I’m very happy we’re not going to have to follow through on that.  Read more from the web services team :

    http://blogs.msdn.com/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx


    Another great addition in the realm of things-that-were-annoying-but-possible-and-already-in-flex is the new navigation uri support within Silverlight 3. Check out Tim Heuer’s typically great post on all the silverlight changes here.  (link specifically to the nav)


    Lastly to round out my list of really exciting enhancements to SL3 are the network monitoring API, which gives developers events to subscribe to detect when the network is and isn’t present - as well as assembly caching which is huge, allowing Silverlight to cache assemblies  like the toolkit so that once a user has been exposed to it they don’t necessarily have to download it again until a new version is required. This in turns makes XAP’s smaller which is always a good thing. 


    So to summarize, I think the top five features from the slew of enhancements that I’m looking forward to are : 

    1. Binary Serialization
    2. Duplex  polling enhancements
    3. Network detection API
    4. Assembly Caching
    5. Navigation and Deep Linking suport

    My perspective on Silverlight is very biased to the needs of our application of course. And our application will live and die on the network, with performance being a top concern in everything we do.  Controls are nice but we can buy those from vendors like Telerik, animation and media are cool for demos but likely won’t do much for us in the short term. The out of browser story is huge, but again with a SaaS app that relies on the network we don’t envision a whole lot of offline work happening in the early versions of our app. 


    Honorable mentions for features go to GPU acceleration (performance) and the SaveFileDialog (control) and Expression Blend 3. I don’t use Blend much myself, but the current version is a huge pain for our team. Maybe more on that in a separate post.  

  • Feb 18 2009 - decision making : flip a coin then check your gut ...

    I once heard an interesting anecdote about how to make a difficult decision between two paths. When you find yourself spinning, alternating between one choice and then the other, it can be helpful to simply assign each choice “heads” or “tails” and flip a coin. When you reveal what side the coin landed on pay attention to your emotional reaction… are you relieved or are you disappointed?  Try it sometime, it really can work.

    I recently spent about three weeks or so doing an in-depth analysis of Adobe Flex vs Microsoft Silverlight for an enterprise application and I really feel like I ultimately decided via the coin flip method (without actually flipping the coin). Our company is about to embark on a new product aimed at the enterprise that will require levels of functionality and control that Ajax alone can not provide. We are essentially looking to take a workflow that has been heavily dominated by Word and Outlook and drag it into the future with real-time collaborative tools in the spirit of Google Docs.

    I ended up choosing Silverlight, despite the potential risk adoption may pose. At the end of the day we believe our target market will be willing to accept the Silverlight install process, and that the underlying engine (.net) provides far more robustness for building the kind of application we’re looking to build. Honestly this is a whole other post, but the nail in the coffin for Flex ended up being the lack of threading support for developers. On nearly every other level the two were neck and neck, with very subjective “wins” for either and Flash being the clear winner when it comes to adoption etc.

    What’s interesting though is that my first choice was Flex. After weeks of agonizing I decided we needed to build this thing in Flex, working around the lack of threading where necessary and going with the safe route of next to zero adoption barriers. It only took a weekend after making that decision to flip-flop. I was supposed to be making the call as if this were my company on the line, and with a clear vision of the unknowable future… at the end of the day though taking the safe and compromised route just didn’t feel right. I could see the complexity of our application snowballing in the future, I could see the legacy of the flash runtime catching up with us, I could see a competitor choosing to build their offering in Silverlight and spanking us in the next year. Making the decision from a technical standpoint the only winner was Silverlight, if the business deemed the adoption risk too great then fine we could do Flex, I was prepared for either.

    My proverbial flip of the coin had basically taken those three weeks of opinions and research and testimonials and flame wars had all gelled together once I had made an actual commitment to choosing Flex. It was only then that my gut told me what I needed to know and I have not looked back from Silverlight since.


  • Jan 31 2009 - QWERTY Myth and the entrenchment of Flash ...

    This is a great article about the myth of how the best technology doesn’t necessarily win. Granted, sometimes the best technology does not win, but there is a persistent and pervasive sense that the populous often chooses the “VHS” over the far superior alternative. The article addresses the VHS vs Beta debate directly as well as the victory over Dvorak by QWERTY. To encourage you to read the original I won’t reveal the clever arguments made.

    http://www.reason.com/news/show/29944.html   (Read Me!)

    I’m posting this because there seems to be a real sense of fait accompli when it comes to the Flash vs Silverlight debate. Critical mass has already been acheived, why would content producers or development shops choose to target any other platform than the Flash runtime when users have clearly already made their choice? How could Beta possibly make a resurgence against an already entrenched VHS? It would take an entire round of evolution before DVD would come along and supplant the status quo. There are a couple reasons why this article has relevance for Silverlight, and why the VHS / Beta argument doesn’t hold water.

    1. Flash vs Silverlight is about a producer investment in technology NOT a consumer investment. Machines are powerful enough, and installations simple enough that the relative cost of owning both technologies is nothing like owning two peices of hardware. 
      1. If there is a competitive advantage for a producer to be gained via a specific technology they will use it. Any differentiators in a competitive field like software has a high potential of making a return. This is a very different decision process than it is for consumers. 
      2. Consumers don’t really care or even know which technology is driving their rich content. They care that it “just works” (like flash based video in comparison to WMP or Quicktime) and that the functionality they desire is there. Without a right-click most users won’t even realize which is which behind the curtain once they have both installed. 
      3. “Owning” everyone (high adoption) is really not that big a deal when your competition can also have 100% adoption at the same time. This is not like choosing a computer or an operating system. Only Microsoft can prevent themselves from achieving their penetration goals.
    2. Better technology does win. I’m not saying that Silverlight is necessarily the better technology right now, Flash maintains an edge on some specific rendering speeds it appears, and their designer tools are clearly better… but Silverlight has the benefit of coming at this with second mover advantage. They didn’t start from scratch, they built out a proven technology (.NET) into new ground by largely copying and improving on the entrenched technology. (sure looks copied from my perspective but that’s a different post) The .NET runtime, threading, compiled/managed code and the lack of legacy in Silverlight will all combine to produce demonstrations of browser based technology that will be extremely difficult and expensive to reproduce on the Flash runtime. 
    3. Silverlight does not have to “kill” Flash to win, it only needs to join Flash in the 90% adoption numbers to be a great success.
    I like both technologies by the way, I’m just entertained by some of the almost religious like statements on those on the Flash side that sound a lot like any attempt to improve or even add to the status quo is a total waste of time. (or somehow an affront to their own efforts)

  • Nov 11 2008 - Lunar Reconnaissance Orbiter ...

    A good friend of mine Sarah believes that the moon landings were a hoax. Despite being a huge science geek , a fan of NASA and a member of the planetary society she subscribes to the idea that man has not in fact walked on the moon, and the entire thing was a lie perpetrated in an effort to win the political war with the USSR. Or something along those lines.

    Somehow this deeply disturbs me. Anything coming from Sarah carries considerable weight, so I can’t just discard her opinion. How could it be that the same person avidly following the mars rover mission also believes that we couldn’t land someone on the moon (or rather, didn’t)? I can say that I have not watched/read/been brain washed by the same materials that she has, but I’m expecting to be convinced to do so after this post.

    Skepticism is vitally important to science, no doubt. I think scientific thinkers must challenge anything that doesn’t make sense to them. I myself am open to hearing the counter arguments, and I even spent a half hour or so reading the respective wikipedia articles on the matter…

    http://en.wikipedia.org/wiki/Apollo_Moon_Landing_hoax_accusations
    http://en.wikipedia.org/wiki/Independent_evidence_for_Apollo_Moon_landings

    I also think while conspiracy theories are fun (x-files we miss you) they are also wrong 99.99% of the time. In a time where science is considered elitist and unnecessary in one of the most important political, economic and scientific centers on earth, and when NASA continues to face diminishing budgets and smaller mandates it seems terribly unproductive to undermine those efforts being made by real engineers and scientists by giving credence to crack pot theories about hoaxes.

    Consider how difficult it is to keep a secret. Imagine the incentive to those cynical people out there who wish to undermine the real achievements of science. Remember the movie contact and Ocham’s Razor? Do we make hundreds of assumptions about the ability for hundreds of people in the government, at NASA and elsewhere all keeping a secret about the landings? That the telemetry mirrors left behind were done by unmanned missions (and that we had the robotics capable at that time to do so?) That the long documentation trail left behind from all the steps leading up to Apollo 11 were somehow part of it? That the FIVE additional moon landings (after the public had already lost interest) were also faked just to add weight to the first faked landing? Or can we assume that no such plot exists and that NASA’s account is roughly accurate? I realize you can flip this and play the other side, but you can read the articles for the details rather than me iterating through the arguments that have already been made on both sides.

    I have to admit, I want to believe. I want to believe that we really did achieve the mantel of a moon landing. That we as a culture were able to step outside of our regular bullshit to come together and accomplish something truly spectacular for mankind.

    LRO - finally time to shut up the crackpots

    In any case, the only real reason I started this post, besides to provoke you Sarah, was so that I could mention the upcoming Lunar Reconnaissance Orbiter , a mission I will be really looking forward to. It looks like we’re going to get a lot more familiar with our friend the moon. This can only be a good thing as privatized space exploration steps up and produces more tourism and public interest in things beyond our humble planet. The moon may seem a bit provincial at this point, but if you were to seriously consider visiting it (when you make your millions on the internet) do you not get totally stoked? It seems like the next logical jumping point for our more grandiose visions. LRO is launching in early 2009 from Cape Canaveral this mission will include (from wikipedia)


        • Characterization of deep space radiation in Lunar orbit
        • High-resolution mapping (max 0.5 m) to assist in the selection and characterization of future landing sites
    And onboard instrumentation will most importantly include :
    LROC — The Lunar Reconnaissance Orbiter Camera (LROC) has been designed to address the measurement requirements of landing site certification and polar illumination.[11] LROC comprises a pair of narrow-angle cameras (NAC) and a single wide-angle camera (WAC). LROC will fly several times over the historic Apollo lunar landing sites, with the camera’s high resolution, the lunar rovers and Lunar Module descent stages and their respective shadows will be clearly visible. It is expected that this photography will boost public acknowledgement of the validity of the  landings, and discredit the Apollo conspiracy theories.[12]




    It will be nice to put this to rest. Long live Elvis.

  • Jun 26 2008 - Bill C61 notes ...

    So I have a great personal distrust and disgust in the way copyright law has continually degraded and been abused by large corporations over the past 30 or 40 years . (Thanks Mickey!) I cringe at the idea of the RIAA sueing people to protect their broken business model and laugh my ass off when bands like Metallica (2) and Kiss make total asses of themselves while those artists that are still relevant embrace new ways of engaging their fans. Anyway, that’s the context for this post. I am legitimately interested in seeing how Canada will follow other countries in protecting artists, content producers and consumers.

    As much as I abhor the record industry I do think the law should reflect the reality of the new digital landscape. Content creators need to be protected, and consumers should get their money’s worth when buying or consuming copyrighted material.

    Anyway I watched these videos about the new Bill C61, and as painful as it is to listen to Jim Prentice repeat the same meaningless quip over and over in response to these questions, I did find it interesting. I’ve been really concerned about Canada following in the steps of the DMCA, and I imagine that under the covers this is largely similar, particularly where “digital locks” are concerned but I’ve so far not heard anything really terrible.


    http://www.digital-copyright.ca/node/4761  (videos)

    Some highlights from the videos

    • Need for international cooperation, if it lets me watch more movies online for cheaper then going to the video store then yeah let’s go. How long has that been possible in the US?
    • “and of course new technologies such as mp3 players and memory sticks” I just included that because it struck me as funny.
    • Time shifting and format shifting is preserved
    • BUT “digital locks” which are chosen by businesses (ie stopping format shifting) will be legally enforceable and will allow those time shifting and format shifting rights to be circumvented
    • Having personally already rented videos on iTunes I can see some benefit to these locks and some of the new models they enable (death to blockbuster)
    • Also though owning a bunch of iTunes tracks I can’t use on other devices makes me hate the locks. But ultimately this is my decision on what to buy so I can’t complain too much. It’s important to let the market decide on some of these issues I think. Although how much of a market is it really when there are only a handful of really big labels and studios producing all the content?
    • no liabilities for ISP’s is great I think
    • New limits on the liability for “personal use” of copyrighted material to $500 PER INFRINGED WORK  (they kept playing up $500 limit as a good thing for consumers but it sounds like downloading 4 movies is still a $2000 hit)We all know how quickly this would completely sink most households.  In Prentice’s example this goes from five videos at $20,000 each  = $100,000 to $500 total… he didn’t seem to really have that part down and I’m still not sure if it’s $500 per work or per incident or whatever?
    • Not that that matters as this is totally unenforceable, the law will enable companies to more confidently invest in delivery mechanisms that rely on locks and have a clearer understanding of rights, but none of it will help anyone actually enforce it. (Unless the companies do it themselves ala the RIAA sueings)
    • This whole bill was rammed through right at the end of summer with little consultation, seems ugly
    • When timshifting you can’t store those as a library of recordings, again very vague and would seemingly limit PVR software quite a bit.
    • You can’t import devices into Canada that enable bypassing locks (vague, could encompass a lot of devices )
    • Teenagers seem to be the “they” in all these videos. Makes the questioners and the lawmakers seem out of touch. I understand teenagers are big offenders but they are by far not the only ones.
    • What are the whitewood treaties Mr Prentice brings up? I’m assuming I didn’t hear him because I didn’t see anything on my initial Googling of it.

    The business network video is the best video of the bunch, if you want a summary just scroll down and watch that one.

    One of the things I was most surprised to hear was from Mr. Sookman saying that time shifting and format shifting is currently NOT legal? Really? I had always been under the impression that this was actually legal in Canada.

    Check out this website for more information on Bill C61
    http://www.digital-copyright.ca/

  • Jun 14 2008 - Dynamic vs Static... no wait make that DBC! ...

    I need to blog this basically to toss it in my archive. There have been some interesting posts on the religious debate of static vs dynamic languages. I don’t know why I always get drawn into these lines of thought, but I do. (in fact I just added a “versus” label)

    I say drawn in because my underlying philosophy in all of these things is to choose the right tool for the job and leave it at that. I know, hardly original thinking, but despite the mantra and the collective nod that this is true we still get very heated on issues that are not actually at odds with each other.

    I’m NOT arguing that with you. I’m not arguing that with YOU. I’m not ARGUING that with you. I’m not ARGUING that with you Harry! Harry… Harry… Yeah Harry… but can he DO the job. I know he can GET the job but can he do the job?
    Mr. Waturi, Joe vs the Volcano
    Still there is fun to be had in the whole exercise. For the record I tend towards the static languages. Despite my recent fun with Python I have spent the last four years neck deep in C# and really am loving it. Our application uses over 75,000 lines of JavaScript, and every opportunity I have to decrease that number I will take. (Part of my excitement about Silverlight is just not having to write as much JavaScript anymore) I see the power in dynamic, I’ve done some really cool things with JavaScript and I’ve really enjoyed working in Python again…. but I believe there is less of a ceiling for static languages then there is for dynamic in terms of tool set, performance and the ability to handle large projects with large teams.

    Anyway, Mat Podwsocki presents a great summary of the debate with links to a few bloggers here :

    http://codebetter.com/blogs/matthew.podwysocki/archive/2008/05/28/static-versus-dynamic-languages-attack-of-the-clones.aspx


    The original Steve Yegge presentation is here :

    http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html


    And the response that I enjoyed the most is here :

    http://codebetter.com/blogs/gregyoung/archive/2008/05/18/revenge-of-the-statically-typed-languages.aspx


    I enjoyed Greg’s response because it just really got me thinking. I honestly know nothing about the design by contract research that’s going on, but it just feels like something that makes sense. I got excited just imagining seeing errors like the ones described showing up in our project at compile time. I believe that if we were using such a system we would see a real improvement in quality. I can see how some would see this as an unnecessary burden on the developer, but these are probably the same crowd not writing their unit tests.

    Design by contract is really a great example of what I mean when I’m thinking about the potential for statically typed languages in tool sets.

  • Jun 7 2008 - Do I really need to embrace C++? ...

    My internal debate rages on… I have some C++ courses in the pipeline so I will definitely learn more than the basic understanding/grasp I have now…

    Still though. Currently I associate C++ proponents with old-school attitudes on the need for absolute control and a fear of newer levels of abstraction that are allowing increasing complex and large projects. Garbage collection, the .NET framework etc, are all grouped together into a category of tools that only “weak” programmers need. I recoil pretty hard from this line of thinking and associate it with a dangerous cowboy like attitude towards engineering.

    There is a lure there, to join the elite, to be one of those cowboys who don’t need frameworks or garbage collection and who’s code can scream past yours with sheer force of will by the programmer. So I’m constantly torn between mockery and envy. I will say that I think it’s important to learn and think in C++ because the deeper our understanding of the systems we develop for the better off we are. I’d say the same thing about assembly though and would be just inclined to write large systems in C++ as I would in assembly.

    My own line of thinking is that these abstraction layers we’ve invented are more akin to compilers and file systems and OS API’s. Why should we all re-invent the wheel (and poorly) when these problems can be solved in a generic way?

    Anyway C/C++ are probably not going anywhere and have their niche, but I thought I would post this article to preserve it in my memory bank.

    http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html

  • Apr 12 2008 - Terrible ad campaign (seal hunt) ...

    So when I started this blog I wanted to make a point of not posting one angry rant after another. Essentially trying to follow the sage advice of bloggers like Scott Hansleman who says amongst other advice to: “stick to a topic”, “avoid politics”, “don’t blog bile”

    Well I’ll break all those rules now by pointing out my extreme distaste for a series of ads being run by the international fund for animal welfare (IFAW). You can see the ads at stopthesealhunt.ca which basically attempt to use guilt and self perceived shallowness to make people act.

    Here are some examples of the ads being run at bus stops in my city :


    <img style=“cursor:pointer; cursor:hand;” src="/assets/seal_ad1.jpg" border=“0” alt=““id=“BLOGGER_PHOTO_ID_5212148087871400082” />
    <img style=“cursor:pointer; cursor:hand;” src="/assets/seal_ad2.jpg” border=“0” alt=““id=“BLOGGER_PHOTO_ID_5212148235305695874” />


    Let’s put aside the actual question of whether or not hunting seals is immoral or wrong. The point I want to make is that these ads are based on the idea that somehow local/personal concerns should be trumped by global concerns. That any problems that we have in our day to day lives do not justify anger or action because there are bigger problems in the world we should be solving.

    If we as humans actually worked like this we’d be frozen by indecision in simply trying to prioritize our actions in the global context. I believe we just do not work like that. We must continue to act locally, as our communities and our daily interactions with each other are the foundation for everything else we can accomplish. Trivializing one issue because a larger one exists does not nullify the original issue. The bus is late, ok fine that’s a problem. Seals are dying, that is a problem. People are starving, that is a problem. Apparently by IFAW’s logic we would be selfish fools to worry about dying seals knowing that humans are dying.

    Check out this TED talk on prioritizing the world’s problems :
    http://www.ted.com/index.php/talks/view/id/62

    Here’s a laundry list of some issues I’d rather put effort towards before worrying about seals. (these are from the video above)
    • 800 000 million are starving
    • one billion lack clean drinking water
    • two billion lack sanitation
    • two million dying from aids


    <img style=“cursor:pointer; cursor:hand;” src="/assets/seal_myad.jpg” border=“0” alt=““id=“BLOGGER_PHOTO_ID_5212148345682661666” />

    Anyway, the point is that these issues are not mutually exclusive. I think cruelty to animals is important, but I’m offended when this type of marketing uses negative appeals to our emotions with flawed logic.

  • Mar 30 2008 - University Bureaucracy ...

    Depending on how I choose to count I am now dealing with my fifth or sixth post-secondary institution in my odyssey to finish my computer science degree. One thing that all of the schools I’ve dealt with have had in common is a slow and inflexible bureaucracy.

    Of course as a younger man I blamed a lot of my own failings on what I perceived then to be a completely fucked up system (University of Manitoba) that was screwing me over. I paid them for a service and yet the treat me as if I should feel lucky to be there! (Can you imagine dealing with thousands of similar minded young punks who couldn’t be bothered to actually read the calendar??)

    In retrospect though I can see that most of what was going wrong for me was based on my own mistakes and a failure to read the fine print. I did terribly in my first year of university (terrible = D average) and was put on probation at the UofM. In my frustration I simply packed up and took my business down the road to the University of Winnipeg. (Which also happened to be much closer to where I was working and living)

    Ahh… I remember being so excited about this fresh start, getting away from the inept and massive machinations at the UofM and getting a much more familiar and friendly experience with the UofW (which was about 1/6 the size of UofM at that time). It only took registration to completely rid me of my naivety. I had gone from a large university with an annoying but efficient phone registration system to one where I was actually standing in lines and dealing with a slow human process full of uncertainty and questions. Worse, my crappy year of courses of course comes along with me; I’m still on probation and not every course I passed at UofM is even transferable to my new program.

    It wasn’t long before I was grumbling and complaining about the inept staff at UofW. I was a little more on top of things this time around though and was able to get through two solid years of course work having properly navigated the probationary process and meeting requirements from the transfer. It was just as I was settling in that I accepted a transfer with work and moved to Vancouver.




    By this time I was much better at being a student, having learned my lessons the hard way and I had a certain expectation that future navigation of the university bureaucracy would be much easier. Had I been starting over that might have been the case, but instead I was now dealing with inter-provincial transfer rules and a struggle to get credit for the years I had already put in. I messed around for a few months trying to get into UBC and finally had someone recommend that I try Langara college as it would give me a simpler route into the BC system and transferring from there to UBC or SFU would become much easier.

    Langara was great, and because I wasn’t seeking credit with Langara for past work it was basically just a matter of signing up and attending. It all might have worked but ultimately I could no longer afford the time involved in getting to and from school during the work day. And for reasons that are totally beyond me, computer science is still one of those subjects that just does not seem to offer consistent night time access, at least not the universities I’ve been attending at the times I was there.

    Which finally has led me to the wonderful world of distance education. For the last two years or so I’ve been attending Athabasca University which is based in Alberta and at the time of my starting was the only fully accredited post secondary institution in Canada to offer a computer science degree.

    I should say now that I have been pretty happy with my experience with this school for the last couple years. My transfer process was smooth, the course selection/planning process was easy thanks to some good help from an adviser via email and about my only concern right now is how much respect this degree will actually get once I’m done all this work.

    Of course anytime you want to do something just a little different then that’s when you run into the beuracracy and this school was no different. Here’s a timeline of what was involved in challenging a course for credit :

    • Feb 24 - Email to exam unit to get the professor’s contact info to gain permission to challenge
    • Feb 25 - Reply with professor name
    • Feb 26 - Email to professor with short summary and request
    • Mar 12 - Email the exam unit again asking for a different contact (still no reply)
    • Mar 13 - Reply requesting I try again and get back to the exam unit if no reply in 3 or 4 days
    • Mar 17 - Email to professor again
    • Mar 16 - Professor reply! (need more background for permission)
    • Mar 20 - Email professor with a customized resume
    • Mar 20 - Approval! Please contact the exam unit again to arrange
    • Mar 20 - Email to exam unit asking for next step
    • Mar 25 - Reply all from exam unit “can someone help Chris?"
    • Mar 31 - Still no reply from anyone so I submit what I assume is the right form and notify the exam unit that I didn’t want to continue waiting, let me know if I need to do anything else
    • Apr 5 - the request is approved! course materials are in the mail.
    Wow, 42 days from start to finish just to process my request to challenge an exam. That doesn’t include shipping time, or the time it will take to schedule and take the actual exam etc.



    I think the big difference between this experience and previous more frustrating challenges with getting things done was that on two separate occasions in this one transaction I had to reach out again in order to get the process moving again. At eighteen I probably would have just written this off as no longer on my plate and waited. If nothing happened it wasn’t my fault. I no longer have murderous thoughts at other’s ineptitude when deadlines pass and I’m stuck in the lurch, I think I just accept that when humans are involved things get slow and error prone. Treat your education like your job and always assume responsibility.

    Still, no one enjoys dealing with this kind of crap do they?

  • Mar 27 2008 - I have some reading to do! ...

    http://listverse.com/literature/top-15-science-fiction-book-series

    I came across this list of the best 15 science fiction series ever written. The reason I love seeing this is 1) it contains a bunch of science fiction series I’ve already read and thought very highly of and 2) contains some series I’ve never even heard of, which of course is exciting since it means I have some reading to do.

    For all I know the guy who wrote the list is totally unqualified and preying on people’s ego by throwing familiar items on a list with a bunch of obscure ones, but I’m gonna go with it.

    The series I’ve read so far :

    • Space Odyssey
      • I’ve only read 2001 so far, and only just recently. I had a total Aha! moment reading that book and finally getting bits of the movie that were totally nonsensical to me at the time. The book was great, the movie is overrated.
    • Rama series
      • My introduction to Arthur C. Clarke (RIP) and definitely my favorite work of his so far. I loved the matter of fact nature with which Clarke wrote, it helped make everything so believable. That and his respect for actual real science which is a total joy to read.
    • Hitch hikers guide to the galaxy
      • Douglas Adams is my hero. He is insanely brilliant in the same way George Bush aren’t.
    • Ender’s Game
      • Honestly I’ve lost track of all the Ender books, so I may not have read all of them, but I’ve read three or four and loved them all. For straight pure entertainment value I don’t know that I’ve ever enjoyed a sci-fi book as much as the original Ender’s game. I recently got Caitlin to read it and she loved it (she’s not exactly a hard core sci-fi fan)
    • Foundation Series
      • I got through all of these and I think all of the robot books as well. Very quick fun reads that had really nice tie in across books. I’m not sure these deserve the top ranking unless we’re just talking pure volume. They were enjoyable but not life changing enjoyable like Douglas Adams or Arthur C Clarke though.
    First books on the list I’ll go for will probably be ringworld. This is probably the third or fourth time in the last year where I thought to myself I should read it.