Development

  • 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.
  • Feb 14 2013 - How does vim keep sucking me in? ... I "grew up" on vim, which is to say my second professional programming job 15 years ago required me to spend vast quantities of time in a terminal to a Solaris machine on which I used vi exclusively to get work done. In those two years I got relatively proficient at navigation, search and replacing, using registers, and tweaking .vimrc with custom settings and macros. I did NOT get into folding, window management, syntax highlighting, or plugins.
  • Oct 7 2010 - lowering impedance of TDD with python mock ... So after my post about gaeunit a few weeks ago I’ve since completely thrown out what I was doing there and moved to vanilla python unit tests. I ended up making this move for a few reasons.  1. I was never running my tests. GAEUnit was nice, but slow. Even when running tests in parallel I still had to go through the process of opening the browser, navigating to the right place and letting the tests run.
  • Sep 21 2010 - Engineering Management (link) ... Great article(s) on some of the management principles in the engineering group at Facebook from Yishan Wong who was at Facebook through some very interesting growth times. I found reading this to be inspirational so posting for posterity… http://algeri-wong.com/yishan/engineering-management.html
  • 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.
  • Aug 20 2010 - Unicode woes and Python unit testing in GAE ... One of the really cool aspects of deploying to Google’s cloud offering (GAE) versus the more machine oriented Microsoft Azure and AmazonEC2 approaches are that you really are only dealing with computing resources. You deploy your app not to any particular server, but to the cloud itself. Despite the very real challenges in distributing work across data centers I am still filled with visions of automagical propagation and distribution and unlimited elastic computing.
  • 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.
  • 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.
  • Sep 2 2009 - hanselman tools 2009!! ... Saw this on reddit tonight, hanselman has updates his legendary tools list for 2009. So what was going to be an evening of actual coding is slowing turning into an evening of trying out cool new tools that have made his list.  (I’m writing this blog post in windows Live Writer after seeing it in the list) But what’s an hour or two of my time compared to the time that must go into compiling this list?
  • Sep 1 2009 - lessons learned from online gambling - predicting scalability ... I work with someone who has spent a few years working for an online poker company who shall remain nameless. This company was responsible for a poker platform that supported both their own branded poker offering as well as being an engine for other companies who would layer on their branding. My colleague played an important role in taking their fairly well built existing system from thousands of users to tens of thousands of users, and in the process exposing a large handful of very deep bugs, some of which were core design issues.
  • Sep 1 2009 - sometimes it's helpful to think about what NOT to do ... Came across this list of “anti-patterns” on wikipedia tonight. I’m tempted just to copy and paste the contents here but that would make me feel dirty. Definitely a good list though and something worth reminding ourselves of every once in a while when thinking about the systems we build. http://en.wikipedia.org/wiki/Anti-pattern
  • Jul 22 2009 - performance tuning to an insane level ... Ok, so I have to admit that I’ve been one to disregard figures around performance when arguing with co-workers over the merit of managed code vs C/C++. I’ve even used the argument that statically typed languages like Java and C# offer more hints to the compiler that allow for optimizations not possible in unmanaged code. I still have a fairly pragmatic view of the spectrum of cost to deliver (skill set/maintainability) vs performance gains… but regardless of all that….
  • May 8 2009 - Simple Extensibility in .NET ... I’ve used this approach a few times when I essentially need a really simple plugin / provider model within my applications so I thought I’d jot down the relevant details here for posterity using an old project for adding post commit hooks to subversion. Consider this a somewhat simplistic approach, not suitable for production code without a bit more plumbing. If you are going all out and need true add-in’s for your .
  • Apr 30 2009 - From test spy to Verify() with Moq ... Moq is now my favorite unit testing framework for .NET, and a great poster child for the power of the lambda expression support added to C#. If you are not doing unit tests or Test Driven Development you should, and if you already are and have not checked out Moq, you should. My tests previous to Moq were using NMock, a very handy tool that looks like a lot of other mock frameworks.
  • 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.
  • Jan 28 2009 - Silverlight controls ... Silverlight 2 may not have the control set that Flex developers are used to seeing out of the box but there are a significant number of control vendors who are stepping up to the plate to fill the void. It seems as though Microsoft’s strategy has been to get the Silverlight 2 runtime out as quickly as possible (and as lean as possible) always knowing that this type of extension to the framework would exist.
  • Dec 21 2008 - FlexBuilder 3 First Impressions ... Where we’re coming from So at the beginning of the year I was tasked with evaluating a number of technologies for RIA development for the next evolution of my company’s product. Up to this point we had been relying extensively on ASP.NET forms with a traditional post-back model that was responsible for a lot of wasted time and bandwidth. We’ve leveraged a lot of Ajax in the past few years, starting with simple fixes like trees and list based controls that use load on demand and going all the way up to full fledged single page applications that consumed purely services.
  • Dec 17 2008 - FlexBuilder 3 Controls ... Controls included with FlexBuilder 3 out of the box below… check out some third party components here . Notes will be updated as I actually get a chance to put some of these to use. FlexBuilder 3 Controls Control Name Notes AdvancedDataGrid  Professional version only + multi column sorting + grouping + tree view + printing support – Still no paging support out of the boxAlertControl  not sure how this gets grouped with these other controls as it is not an explicit control but a static method “show()” which can be used from where ever.
  • Dec 15 2008 - visual c++ lesson 0.0.0.0.1 precompiled headers ... I come from a background of managed memory and interpreted languages. I’m a big proponent of pragmatic approaches to problems and as little re-inventing of the wheel as humanly possible. I don’t think the world needs another text editor, and I personally don’t feel the need to write my own version of the stack I rely on for application development. (.NET Framework and IIS) This however gives me less credibility with all those “real” programmers out there.
  • Nov 28 2008 - C++ linking ... This is a post for myself, to basically bookmark the excellent work of someone else. My post is contributing practically nothing (maybe adding some context/weight for his article) but here it is anyway. ;-) http://blog.copton.net/articles/linker/index.html Despite not being an active user of C++ I really enjoyed this post. I actually feel a little smarter and better informed for having read it. Despite the mess in the C++  tool chain being described, this kind of reading actually makes me feel more inclined to dig into this stuff not less.
  • Nov 8 2008 - software fundamentals are exciting? ... I came across a nice list of fundamental axioms of development on reddit this morning that made me a little pumped. Pumped because I’m in the middle of a big transition at work that in a lot of respects has me starting over with a new team and a new mandate. I’ll be focusing on solutions, custom work and a view towards short term revenue vs long term research and development for products.
  • Aug 9 2008 - Regression Ratios ... Regression is a nasty issue. Ongoing regression from bug fixes can be a pretty clear indicator that there are some serious problems with your code base, your process, your team or all of the above. As an example case consider the effect of moving from 1 in 5 of all bug fixes causing an unrelated issue to crop up to 1 in 10. Given an imaginary scenario where 1000 bugs are found (a medium size project) and a team is closing 20 of those bugs a day then in an extremely simple model we have just added two weeks to our timeline simply from regression issues.
  • Jul 19 2008 - blogquotes prototype is working ... I’m supposed to be studying for a challenge exam I’m writing this week in “Advanced” Operating Systems. Instead I spend a good chunk of the day today working on blogquotes in between watching/playing with my daughter. I can justify this time spent because I did all of this work exclusively from a bash shell using vi to refresh myself on some of the content for the course. In this session I was able to use wget,grep,awk,vi,a shell script and some file permissions.
  • Jul 17 2008 - Microsoft's add-in framework and the need for diligence ... We’ve recently put Microsoft’s managed add-in framework (part of .NET 3.5) into very effective use building a plug-in system for a large asp.net application at work. Essentially the framework in place allows other developers (and our own team for out of stream releases) to develop new functionality for our platform that runs the entire life-cycle for a given widget. In our case for this particular widget we’re talking about plugins being responsible for up to 4 asp.
  • Jun 26 2008 - Enough rope to hang yourself (C# Extension Methods) ... So I ran into an interesting “gotchya” with C# extension methods tonight. And of course it happens at the 11th hour on a project that is being demoed at 9:00am tomorrow morning. Of course. Extension MethodsExtension methods are a really cool new feature of C# that were introduced in version 3.0 of the language. Essentially they are static methods that act like instance methods, allowing you to extend objects you don’t own.
  • Jun 21 2008 - here here - use var sparingly ... When I first read Jeff Atwood’s latest post on his love of C#’s new “var” keyword I was deeply bothered that my co-workers would find the article and latch on to the argument as a justification for laziness. While I do understand his point of view I was bothered by the idea of var statements littered throughout the code base making things more difficult to read for the next developer.
  • 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.
  • Jun 10 2008 - Google's changing the rules again (appspot) ... I am super excited about Google’s recent foray into cloud computing, the app engine. They are not first, I realize Amazon has been doing some pretty cool things with the S3 services and their computing services but the ability to simply and easily have an application that can leverage BigTable and GQL, google account authentication, image manipulation, memcache and having that all live within the seemingly infinite scalability of the google platform is extremely exciting for me.
  • 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.
  • May 13 2008 - Javascript session hacking ... I had to blog this, and yeah I'm going to be the billionth person to do so, but that's ok because no one reads my blog and it's basically just my personal public archive. (ppa?)  This guy http://www.thomasfrank.se/sessionvars.html has managed to find a very clever place to store data within the browser without resorting to cookies, flash or anything beyond basic cross browser javascript. Apparently "window.name" which lost it's usefulness when the spammers started making popups obsolete can contain arbitrarily long strings that persist as long as that window is open (equivalent to a session cookie)
  • May 11 2008 - ASP.NET Ajax Pendulum ... I’m currently working on moving a web application from using some ad-hoc javascript and iframes to a full fledged ASP.NET Ajax implementation based around Telerik’s RadControls and a suite of our own controls. This is the third application we’ve given the ajax treatment to and each time we’ve taken a slightly different approach. Approach 1 … “Javascript + Web Services” Full view manager/page controller implementation on the client side to handle events thrown by all the components on the pageHomegrown “ServiceManager” to handle brokering calls to the server Centralized error handling
  • May 5 2008 - I've forgotten how much I enjoy Unix ... I just finished reading “The Dream Machine” and getting a very cool look at some early history of computing including the birth of Multics and it’s spin off and almost more interesting the birth of tools like email and ftp as a way to actually do something with the ARPANET that was being built. A great read for anyone interested in how we collectively have arrived at where we are today in computing.
  • Apr 30 2008 - Patches on a centralized VCS in a small team ... My team is always looking for ways to improve on quality and one of the proposed ideas this year was to follow a model similar to large open source projects where basically every checkin is first proposed as a diff/patch and then vetted into the code base AFTER review. Our current setup is a single large subversion repository where our team (~14 developers) all checkout the entire mainline branch we're working on and make commits to mainline as desired.
  • Mar 30 2008 - On the need for re-architecting ... I have been grappling with the concept of a rewrite of a relatively successful software product that I’ve been involved with since start-up mode. In truth I was googling for compelling stories about why NOT to disappear for a year to do a complete re-engineering of your product (ala Netscape). Mostly because I’m concerned about the size of the effort and the resources we have to pull it off. Instead came across this article, espousing the need to fire all your developers!