August 29, 2012
I’m not sure why the connection of REST to HTTP is so commonly misunderstood, but after hearing an architect say REST is implemented with HTTP, I’ve had just about enough.
HTTP is a transfer protocol that implements the four verbs in REST (under different names). HTTP is thus a convenient foundation for RESTful services. It is not the only possible foundation. Wanna implement REST over JMS? Over CORBA? Over carrier pigeon? Go nuts!
March 13, 2012
A quick refresher, if you’ve been living under a rock for the past few months. Microsoft recently dropped a consumer preview of their next operating system, Windows 8. In Windows 8, desktop applications that you’re used to will be second-class citizens. They will not be allowed in the app store. Their small non-interactive icons will pale next to larger self-updating badges. The start menu that kept them tidy and organized for almost two decades will be gone. Apps that conform to Microsoft’s new touch-favoring user experience framework, Metro, will rule the day. A change this fundamental has to reflect new and significant assumptions about who the users are and what the users want. Based on what I’ve seen and read of Metro, here is what I think those assumptions are:
- PC users really want a tablet. Oh, sure, you bought that big box with a monitor, a mouse, and a keyboard. But that’s not what you really want. You want a tablet. You want to touch that screen with your fingers, not use a precision pointing device. You bought that 32″ 2560×1440 monitor to have one app take up all of it. And typing? Who does that anymore? If God wanted you to type, he’d have given you twenty-six fingers, not ten!
- PC users can’t walk and chew gum. You want to switch the tune in your media player while playing solitare? Ooof… that Solitare will be so distracting! Better tuck it away, just to be safe. Oh, alright, fine, you can keep your media player docked in a sidebar. But if you wanna respond to that instant message, someone’s gotta go!
- PC users are content consumers, not content creators. All but the most simplistic content creation apps offer many tools that can be applied to the edited content non-linearly. These are often presented to the user via toolbar-like interfaces, dropdowns, and popup-menus. And since much tooling and information must be presented in a limited amount of space, it is impossible to provide the same breadth of tooling in a “touch-first experience” that Metro requires. Not to mention squeezing such an app into a sidebar – another Metro demand. So… whereas the competition comes with content creation apps for music, photos, and video out of the box, in Windows 8, these apps would not even be allowed in the app store.
Microsoft is neither the first nor the last platform vendor to limit the breadth of application possibilities in favor of a single, simple user experience. However, when users themselves are limited to being page-swiping badge-poking single-minded content-consuming couch potatoes, some resentment may occur. When a company treats its customers as simpletons, these customers may well turn around and walk away, mumbling “same to you”.
August 21, 2011
Today, this gem of an advertisement graced the sidebar of my Facebook page:
Really? I wonder what kind of engineer this company wants. The kind with the same skills, aptitudes, and background that Google wants? If so, they’ll get only the ones Google turns down. And if this company is looking for different assets than Google, then its ideal candidate(s) may not have been interested in working for Google in the first place. Either way, this ad will not bring in the candidates this company wants.
July 27, 2011
The word “and” in the name of a method or class. Discuss…
July 20, 2011
“There is no throwaway code, but there are throwaway coders”
March 27, 2011
Everyone has a favorite interview question. I have mine. I have never been asked this question on any software engineering job interview I have ever attended. However, I firmly believe this question tells more about a candidate than all the good old standbys (e.g. “reverse a linked list” and “write a thread-safe singleton”) do put together. So… ready?
Describe all the unit tests you would write for an implementation of java.util.List<E> or your platform’s equivalent. No need to write out the test code – just list the test cases.
That’s it! The interface being tested can vary from candidate to candidate. The important thing is that this question shows you how good the candidate is at proactively anticipating bad inputs, boundary conditions, and special cases. It is a truly universal and essential skill for all engineers, even those not fortunate enough to work in a test-driven environment.
February 21, 2011
Martin Fowler has written an excellent post on the fallacy that quality can be traded for expediency. A few days ago, I debated many of the points the article covers with an engineering manager at my company. Both of us are still convinced the other person is wrong. Except now, I have Martin Fowler on my side.