I bought a game recently called X Rebirth, a long-awaited sequel to a series of “X” games that have been released by Egosoft over the last decade. Fans of the “X” series have really been psyched about what the screenshots and videos promised from X Rebirth. A lot of people pre-ordered the game. I bought the collector’s edition because it came with the game soundtrack as well as a few other goodies.
Unfortunately the game launch in mid-November was a complete disaster. The game is so riddled with bugs that it has garnered a 34/100 rating on metacritic (that’s bad), and reviewers have not been kind. The devs have been working hard, releasing patches almost weekly. For the most recent update, this paragraph in the release notes really caught my eye (emphasis mine):
It turned out that the issues many of you are seeing with trade ships not working correctly is not one bug but a whole series of connected problems… I do not want to give silly excuses here. Of course you deserve a bug free game, but you may ask why these trade problems were not uncovered during testing: We had a group of testers dedicated to testing our economy over a long period of time. These guys used a special version of the game which allowed them to run the entire economy at a higher speed. It seems that most of these problems we now see did not happen with this time acceleration. Meanwhile these problems also do not happen early on in the game or if you (like most testers do) have to restart the game frequently.
Note that they made two fundamental testing errors that cost them big time:
- Their testers use a “special” version of the game, meaning a version that the end-user will not actually be playing. In their case it was necessary but still dangerous as it does not simulate the conditions under which a normal user will play.
- They did not take into account prolonged periods of play, where the state of the game can be compromised by small bugs compounding over time.
I wish I could say that I haven’t made these same mistakes in my own career, but that would be a lie.
I’ve learned the hard way, as the Egosoft devs have, that the best way to test software is to use it myself, as my customer will use it, under conditions that approximate, as close as possible, my customer’s environment and usage habits. It is especially easy as a web developer to “bounce the server”, or “clear browser cache”, or “fake a dependency” while running my application, but in production, when my app is serving my customers and their needs, they (likely) won’t be able to do these things. And even if they can they shouldn’t have to.
So even though Egosoft still owes me USD $60.00 worth of gaming, at least I have learned a good lesson: always wait for reviews before I buy, and deliver the software I actually did test to the customer.
Categories: Software Development.
December 7, 2013 at 8:46 pm
Conferences can be costly, especially when travel, lodging and food are considered. Many companies cover these expenses for attending employees, but many people still pay out-of-pocket. If you’re like me you have to make strategic decisions about which conferences you want to attend in a given year, and which tracks or sessions you want to attend while you’re there. Unfortunately I missed O’Reilly’s annual Fluent Conference this year, but my joy was palpable when I learned that all conference keynotes, sessions, and workshops were recorded. As a member of O’Reilly’s user group program, I was given a set of Fluent Conference videos to watch and review. The complete set includes over fifty-five hours of video that may be streamed or downloaded to a computer or mobile device. (I use a Roku player and a USB drive to watch Fluent Conference videos on my television.) Each video is professionally recorded, and the sessions are produced in split format so that you can see the speaker and their presentation slides or demos at the same time.
Presently I have viewed all keynote presentations and over a dozen individual sessions. Every speaker has been competent and articulate, and the topics have all been interesting, and some, surprisingly in-depth. I have not yet evaluated the workshop sessions, though if the tenor of the general sessions is any indication, I fully expect the workshops to share the same qualities.
These are the keynotes I found particularly interesting.
- Paul Irish (Google) talked about new Chrome web development tools, including developer workspaces that map browser assets to files on the file system and source maps that track changes between generated CSS and SASS files.
- Bill Scott (PayPal) relayed his experience porting portions of PayPal’s checkout process to node.js, specifically how he was able to integrate a node solution into an existing Java environment in a piecemeal way to combat regression.
- Breaking from technology and delving into practice, Kate Matsudaria (popforms) discussed how skill mastery requires an understanding of all abstractions involved in any activity, and why developers should understand the “magic” behind the tools that they love so much.
- Mike Hostetler (appendTo) encouraged audience members to re-think their definition of “work”. Mike runs a completely distributed company in which “work” relates to goals and activity, not location. This subtle but fundamental thought shift creates enormous benefits for companies, employees, and even the world at large.
- Lea Verou (W3C) walked the audience through the lifecycle of a web standard and discussed the different people and organizations involved in the standardization process.
These are some sessions I particularly enjoyed.
- Todd Kloots (Twitter) spoke about the power of HTML5 pushState and the challenges that his team had to overcome while simultaneously supporting modern and antiquated browsers, specifically reconciling URL hash changes with pushState routing.
- Trevor Burnham (Hubspot) deconstructed promises into their constituent parts and showed how they can be use to aggregate callbacks to fulfill async tasks.
- Ralph Whitbeck (appendTo) talked about the current state of the popular jQuery Mobile framework, how the jQuery Mobile release cycle works, and what users can expect from upcoming releases.
- Steven Sanderson (Microsoft) presented an overview of his MVVM UI library, knockout.js. Not to be outdone, Misko Hevery (Google) presented his popular alternative, angular.js. Both libraries specialize in view/logic segregation and provide bi-directional data binding mechanisms, though they differ in template implementation.
- Ben Vinegar (Disqus) warned about the dangers of cross-site scripting and demonstrated how the proposed Content-Security-Policy header can curtail XSS abuse by whitelisting scripts.
- Eric Bidelman (Google) demonstrated how the new HTML5 web component specification will help developers sandbox custom, reusable elements that have their own markup, styles, and scripts. He showed how much of the proposed (but yet unimplemented) web component behavior can be achieved with the Polymer library in modern browsers.
I’ve been to many conferences and plan to go to many more. Maybe I will even get to attend Fluent Conference 2014. But until then I can get the learning benefit from a world-class conference in my own home or a favorite coffee shop. The Fluent Conference videos are quality tools for developers and teams to keep skills current and ideas fresh.
July 10, 2013 at 8:06 am
I have published a blog post on the appendTo company blog about streams and middleware in strata.js. Strata is an HTTP server library for node.js that specializes in streaming content to and from the client.
June 25, 2013 at 8:53 am
I am happy to announce that book publisher InformIT has joined the growing list of STL ALT .NET sponsors!
Some of the most significant books in my software development library are InformIT imprints. Titles like Patterns of Enterprise Application Architecture, Refactoring to Patterns, and Design Patterns adorn the bookshelves posed strategically within sight during video chat meetings. Not only do these books make me look smart, they have actually contributed to my knowledge of programming and large-scale enterprise systems. Also, hardback books are just cool.
InformIT has graciously donated one hardback book and several e-books to raffle, and discount codes for all members at this month’s meetup.
InformIT publishes imprints from quality industry publishers like Addison Wesley, Sams, QUE, and Prentice Hall. You can learn more about InformIT and read quality development articles on the InformIT website.
Categories: STL ALT.NET.
June 13, 2013 at 7:35 am
I have written a short gist on how to create a bash function to filter out npm package dependencies when using `npm ls`. This function, when placed in .bash_profile can then be treated as a bash command. This is really helpful when you have lots npm packages installed, or those packages have lots of dependencies.
Categories: node.js, npm.
April 12, 2013 at 1:38 pm
My latest blog post, Encapsulate what varies, has been published on the appendTo blog this week. Feel free to leave comments there!
April 10, 2013 at 8:05 am
That unit tests have become a significant tool for modern programmers cannot be denied. Whole conferences, long books, and powerful tools have all been created to make the task of testing software a streamlined, painless process. ”Red, green, refactor” has become the mantra by which we code.
At last month’s STL ALT .NET meetup, Brian Schroer introduced members to the automated .NET testing tool, NCrunch. He demonstrated how NCrunch automatically conducted background builds and ran unit tests in real-time while he was actively making changes to his code. Not only would NCrunch report when unit tests failed, but it also visually tagged the lines of code that were covered by unit tests, clearly showing Brian which portions of his code tested and which were not. (I have it on good authority that Brian never writes untested code. Ever. So this feature is useless for him because he is a coverage ninja.) NCrunch also provides a host of other features, including inlined exception details (so that errors can be easily traced through code when tests fail), line-by-line performance metrics that help identify slow and inefficient code, parallel test execution, optimized, selective builds, and more.
I am happy to announce that, to compliment Brian’s lightning talk from last month, the generous folks at NCrunch have donated one NCrunch license to be raffled at the upcoming November STL ALT .NET meetup!
Categories: STL ALT.NET.
November 19, 2012 at 10:00 am
The consensus among most developers that I talk to who use Windows as their primary operating system is that Beyond Compare by Scooter Software is, hands down, the best diff/merge tool available. Not only does Beyond Compare offer powerful 3-way file merges, but it can perform directory diffs and synchronizations as well. For comparisons between CSV files, Excel spreadsheets, HTML tables, registry keys, images and other binary files, Beyond Compare also provides specialized viewers that enable developers to work with the data in each file without worrying about the storage format. (Someone seriously needs to write plugins for comparing Visual Studio project and solution files!) Beyond Compare is so universally praised that it has a standing mention on Scott Hanselman’s developer and power user tool list.
To support the St. Louis developer community, Scooter Software has kindly donated two Beyond Compare Professional licenses to be raffled at the upcoming November STL ALT .NET meetup (which is pretty much like having Christmas in November)!
On behalf of STL ALT .NET I thank Scooter Software for their generosity.
Categories: STL ALT.NET.
November 19, 2012 at 9:00 am
Last month I started working for an amazing software development company called appendTo. My co-workers are a tight, talented, distributed group of amazing individuals who inspire and motivate me with the awesome work they do.
Though a small company, appendTo plays a major league game. Our front-end developers recently worked with Time Magazine developers to launch a responsive redesign of Time.com, company founder Mike Hosteler presented at the MS Build 2012 conference last week on writing Windows Store apps with jQuery, and many of our team members are core contributors and/or owners of popular open source projects written in many different programming languages.
appendTo offers a wide variety of services, most of which center around web and mobile development. Because appendTo has a strong commitment to open source software, many of the core libraries that were developed internally have been released on Github.
As an addition to the appendTo Portfolio of Awesome™, appendTo has graciously offered to sponsor STL ALT .NET by covering the (non-trivial) cost of our meetup site. I am happy to welcome appendTo as a sponsor and want to personally thank the company for its investment in the St. Louis developer community!
Categories: STL ALT.NET.
November 13, 2012 at 9:00 am
I am pleased to announce that Infragistics, a leading .NET UI control vendor, has donated a number of free package licenses to STL ALT .NET to give away as raffle prizes during our monthly meetings:
We are glad to welcome Infragistics as a sponsor and thank them greatly for their generosity!
Categories: STL ALT.NET.
November 10, 2012 at 8:24 pm