I've long been a Microsoft enthusiast, heartily embracing the platform and the development tools.
My first real professional development job was with Visual C++ Professional v1.0 (after years doing less professional work with tools like DJGPP) -- a product that came in a giant 50lb box full of huge reference manuals, along with a giant stack of floppies -- and my work and home life have predominately relied upon various incarnations of Windows throughout the years, from 3.11 to Windows Server 2003R2. I've personally pursued various certifications from Microsoft, and will be completing another hopefully in a few days. I've been developing in C, and then C++, and then .NET since the first beta, on the Microsoft platform, along with some deviant Win32-targeting object Pascal Delphi work, relying upon great products like SQL Server, or subsystems like MSMQ, ActiveDirectory, and DCOM, to build amazing solutions.
I've been branded a Microsoft astroturfer/paid-shill countless times on sites like Slashdot for speaking out against some rampant anti-Microsoft mistruths, and for defending some of Microsoft's actions (though I still haven't received a cheque from Microsoft for my volunteer advocacy...).
I've even written for Microsoft's premiere development magazine.
Yet I have zero personal interest in Windows Internet Explorer 7*, beyond professional observation. Perhaps it'll have some yet unannounced amazing new innovation when it's eventually released, but as it is it's nothing more than an also-ran, finally bringing functionality that competitors such as Firefox and Opera have had for years. Other functionality, such as the sandbox model IE will have on Vista -- which they've built for the inevitable exploits that will follow -- rely upon operating system shims that only Microsoft has the privilege of adding. Presumably this same functionality will exist for alternate software products as well, so there's no reason -- beyond the type that the Justice Department would take interest in -- that Firefox and Opera won't gain the ability to utilize the functionality.
If users are waiting with baited breath, living with their half-a-decade old Internet Explorer 6 in anxious anticipation of Microsoft finally putting some care into their browser, they need to seriously ask themselves why they haven't considered or evaluated the superior alternatives that are freely available. IT departments that simply coast along with whatever their Microsoft rep has decreed as acceptable need to ask themselves the same thing, and blanket decrees such as a banning of Firefox on corporate machines need credible justifications, and not just some baseless fear-mongering by a group that doesn't want the bother.
Internet Explorer wasn't always such a boring product. The period of greatest innovation with Internet Explorer happened in the IE 4 and IE 5 timeframe, when we gained functionality such as XML, XML data islands, the foundation of AJAX (if you had the luxury of only targeting IE 5+, you could build web apps in 1999 that rival the most "innovative" Web 2.0 sites today), implementing advanced CSS and DOM functionality simultaneous with, or ahead of, competitors. This was when the team seemed to have free reign, and whose primary motivation appear to be creating a great browser, rather than the oft claimed conspiracy of building Microsoft tie-in -- in fact the product was cross-platform, bringing a great browser to the Mac, for instance.
Of course, then they were trying to win the browser wars, and the result was the quick decimation of Netscape's marketshare. Microsoft's best minds rapidly created a killer web browser to kill a competitor in the web browser market, and there is no doubt that they technically succeeded, evolving their browser much more rapidly than the quagmired Netscape browser.
Even with the first-rate team working on what was the premiere browser, the market still was still very slow to adapt: Microsoft had so thoroughly intertwined the browser in the operating system that it became a potentially dangerous operation upgrading. It's for this reason that old version of Internet Explorer lived on long past their presumed expiration date, with IT departments hesitant to upgrade. This system interweave yielded some advantages, such as embedded browsers in divergent applications such as Quickbooks, yet it came at the cost of greatly reduced agility of the foundation. Compare this to a product like Firefox that exists largely as a software island, where uptake of new, feature-enhanced versions happens at an extremely rapid pace. Taking advantage of the new functionality in Opera 9 or Firefox 2(*2) would be no more risky, for most users, than upgrading their copy of WinTetris.
Microsoft won the browser war, and seeing how this new platform could actually undermine their own business, and reduce dependency on the Windows platform, the team was dispersed far and wide. All work on Internet Explorer, outside of emergency security fixes, was stopped. The internet world that had now come to rely largely upon the rapidly evolving Internet Explorer now saw absolutely no progress, while inside Microsoft they strategized how best to build Windows-specific technologies to pull developers and users back (such as XAML and one-touch deployment), tying them once against specifically to the Microsoft platform.
Five years+ on, the tide is slowly shifting, and Firefox is rapidly gaining marketshare, and the capable Opera browser continues to idle at a low level. Among sites catering to the IT/software development market, Firefox use is dominant. Public websites that demand Internet Explorer are quickly going extinct, and cast considerable doubt on the prowess of their creators.
Even if Internet Explorer 7 were a much more exciting product than it has proven thus far, I would still advocate against it.
We saw previously how Microsoft used the browser market only while it was in her interest, and then promptly abandoned its users when it wasn't, and there is no reason to think the same won't continue. Having users rush to Internet Explorer 7, killing interest (and thus the speed of development for) competitors won't do the web any good when Microsoft promptly stops development again, enticing you to dump this crazy web thing and embrace the next evolution of fat apps. Given that the browser is largely contrary to Microsoft's business interests, it seems an outcome that is inevitable.
Indeed, Internet Explorer 7 was originally only slated to come out for Longhorn (now Vista), as a sort of carrot to interest users in the otherwise boring upgrade, however the endless slips of Vista, coupled with rumors of Google entering the browser fray (which they have indirectly through some healthy financial support of the Mozilla Foundation), led them to revise their plans. Yet it still remains that some of the most valuable improvements of IE 7 will only be available if you upgrade to Vista (so if you're running IE7 on XP, you're running a sort of IE7-lite). Compare this to Firefox, where the exact same browser, and largely the same set of superlative extensions, runs on a huge range of operating systems, from obsolete to cutting edge: Firefox has no agenda to get you to upgrade your operating system, so such a differentiation doesn't exist, and you can take advantage of advanced cavas elements and svg right now.
Why You Shouldn't Care About Internet Explorer 7
*- Based upon the great success they had with the .NET marketing wave, Microsoft is now widely branding their products and technologies with the prefix "Windows", so instead of Microsoft Internet Explorer (MSIE), it's Windows Internet Explorer (WIE? WinIE?), or perhaps Microsoft Windows Internet Explorer. This is to try to get the unrecognized name "Windows" out in the marketplace.
*2 - Apart from Firefox extensions, which are becoming a bit of a problem with each new version of Firefox. The break rate of extensions is so high that it's creating the sort of resistance to change that used to happen with Internet Explorer. The Firefox team really needs to solidify their API, allowing new extensions to take advantage of newer interfaces without breaking the existing extensions.
Some recently published statements regarding the Canadian Firearms Centre's online database, made by a former webmaster, have rightly earned a lot of attention: Mr. Hicks, an Orillia-area computer consultant, claims that he has identified several prior -- and possibly still remaining -- security gaps in the firearms registry. Gaps that allow(ed) very sensitive information to be queried by anyone with a home computer and an internet connection.
If this is true, it betrays tremendous negligence in the creation and maintenance of this system, and while a lot of the attention is coming from the politically motivated, using it to further a pre-existing agenda, it doesn't diminish the seriousness of this event occurring in the first place.
No specifics are given, however the likely vulnerability relates to SQL-injection vulnerabilities.
More importantly, do people still call themselves "webmasters"? Is that really still a title?
While Mr.Hicks refers to the system as a "$15 million dollar system" in the linked article, its history is convoluted, and much more expensive (perhaps a digit was lost in editing). After purportedly giving EDS $151 million dollars to make a working system, the government gave up and turned it over to a consortium of CGI, BDP, and Resolve Corp, giving them an estimated $100 million dollars thus far.
This is to create a system to register 1.9 million gun owners with a combined seven million guns.
Accounting for extensive security and auditing -- of course mandatory for a system of this nature -- eforms, correspondence, web services, feeds for police stations, integration with legacy systems, web reporting and secure access, and so on, it still doesn't strike me as an overly complex project. The scope and capacity of data I've heard could be handled on a modern four-way SQL Server box with a half decent SAN. Add in a cluster backup, and you're still talking about less than $200,000 (with all software licenses). The actual custom software itself should be straightforward, given that data entry, data reporting, and data security are some of the most known, proven design elements in this business.
This is largely wizard-type stuff, for which they've purportedly paid $251 million thus far.
If an article in the National Post today ("A one-stop shop for gun thieves") is to be believed, the system crashed 90 times on the first day of testing, requiring their hardware to be completely reset 30 times that day -- an event that is unseen with the reliable platform stack we have nowadays. They called off the test and sent it back to development, sending all of the expensively flown-in testers back home.
Of course we don't know all of the obscure details of this project, and it is a certainty that trying to build a system for a rapidly changing government, with enormous changes in the root requirements, is more difficult than an average project, but I find it hard to fathom that it's $251 million dollars different. I do appreciate that software developers often underestimate the tasks of other software developers and systems designers -- often with a foolish cowboy "I could do that on a weekend!" bravado -- but in this case I've designed and worked on systems of a similar scale, and I feel fairly confident in my assessment.
Given the very limited details that I've heard, I would have armchair estimated this as a less-than-$1 million dollar project, hardware in. I would never imagine that it would pass a quarter-of-a-billion dollars.
Before I go about possibly reinventing the wheel, I thought it worthwhile to ask: Could anyone point me to .NET / Windows server modules for SXIP 2.0 and/or OpenID? They're both fairly trivial identity solutions, so if I can't find one I'll implement one or both. Not only for personal needs, but because I can see some uses for them in client projects.
Thank you kindly.
Back on March 13th, I asked how the audience valued ideas in the [software development/product creation] process. This was a question I was spurred to ask after seeing yet another series of "Ideas are worthless!" proclamations on software development discussion boards. As has been the case many times in the past, the statements were quickly propped up by dozens of supporters, certain that it was the shovel in the dirt that makes the project, and not the guy sitting back thinking up grand visions.
Of course, threads on discussion boards have never been an equal representation of commonly held viewpoints: The people who are the most motivated to make their opinion known -- often only those who feel that their views will "fit in" without friction -- are the most likely to reply on such venues, so certain mindsets appear more prevalent than they actually are.
In contrast, over half of the answers to the poll on here (which received a surprizingly high 25 votes. I've found the lurker-to-active participant ratio to be huge on these sorts of things, so I was surprized that 25 people took a moment to express their view. The poll is still active, and will be until the end of the month, so values will of course change) valued ideas as somewhat or equally important as the implementation.
Of course, getting into a topic like this requires some clarification of what exactly is being discussed, otherwise both parties end up burning strawmen rather than actually debating the argument on merit.
"Let's make a better search engine than Google!" isn't an idea. It's a lofty goal. "Let's consider links on the web likes votes, and build a search engine that ranks pages based upon the number of votes" is an idea, and it's an idea that has the founders of Google jetting around in their personal 767.
Given the basic foundations of PageRank, backed by a patent (*), the Google founders could have farmed out the implementation to any of countless capable development team (of which there are tens or hundreds of thousands around the globe), though of course the implementation that Google did create is so extraordinary and cost-effective that it took a great basic idea, and gave it a fabulous implementation. I could have been a footnote in history if the wrong team implemented it, requiring another System z mainframe for every 10 simultaneous requests.
The result of the founder's great idea, coupled with a great implementation, was the winning, ultra-high speed search engine that cost-effecitvely scales, providing more computing services to search engine clients around the globe than competitors.
Google is now valued at $68 billion dollars.
Of course the perfect combination is a developer that brings creativity to their projects. One who doesn't need to be literally directed in every activity, but instead acts as a professional and less as a technician. Similarly, it is beneficial when a developer has respect enough for ideas and the creative process that they appreciate the contribution of peers and partners, understanding the value that it really does bring.
Countless vertical market products have succeeded despite terrible implementations because the founder had knowledge about an industry, and brought some original ideas about how to do it better (perhaps a better process flow, or some ideas about how data could be used more effectively). Given the hostile opinion many developers have of ideas, often these founders end up pulling up Visual Basic or some other RAD tool and developing it themselves, succeeding despite having what technically is a terrible product. How much better it would have been if a developer embraced the idea, and created a first rate technical solution to go with an original, valuable idea.
* - While I think software patents are, in common practice, a travesty, it is the implementation by the USPTO that is the problem -- they're granting ridiculous patents for, excuse the pun, patently obvious "ideas".
Nonetheless, there are many patents that have been granted to non-obvious ideas. This is difficult for many to believe, because in retrospect of course they seem obvious now.
There was once a time when mankind believed that the Earth was the center of the universe, and that our eyes projected light, and that eye-illumination was how we were able to see our surroundings. As ridiculous as those ancient beliefs sound now, it wasn't until someone did some "implementation" (research) based upon an idea (a hypothesis) that we became enlightened. What we know now seems obvious with this additional information.
A recurring argument on software development boards, often with a backstory involving a developer teaming up with an idea-man and then having second-thoughts about the equity split, debates the relative value of ideas versus implementation. Who is worth more to the team: The one who did the hard work of coding, or the guy who thought up the web app in the first place?
The predominate opinion is usually that the implementation is extraordinarily valuable, while the idea is close to worthless. "Ideas are cheap" the posters often claim. "There are an endless number of good ideas out there."
"Anyone can think up good ideas. Few can put them into practice."
So I ask you: What value are ideas? If you were a developer that teamed up with someone who had a clever idea for a web app, even perhaps just a couple of interesting twists that give it a potential competitive edge, how much value would you give their contribution?
This is a very contentious issue in the software development community, and it's one I plan on addressing in an upcoming entry.
P.S. This entry uses an inline IFRAME for a survey, and it may not appear in some aggregators or RSS readers. If that's the case, visit the entry directly.
Summary: Fake job listings, or real jobs backed by a selection process that filters out everyone, can earn your firm adversaries and detractors. They need to be identified for what they are -- a cheap, transparent gimmick.
Following a fairly typical business model in this niche, yafla is a small consulting and contract development shop in a mid-sized market, using that business income to support the development of derivative products and businesses (such as the soon-to-come www.360notes.com), along with licensed ISV technologies.
We love the consulting/development market. We're extremely good at it, we enjoy the diversity and challenge, and we have no plans of ever abandoning it (at least until the world's software and IT needs have been completely satisfied once and for all). Yet of course we'd also love to build the next great shrinkwrap or web app hit, and are working towards that goal as well.
One thing we haven't done, however, is to pretend that we're bigger, more important, or more exclusive than we really are through the cheap but common technique of bogus or never-ending job listings -- We haven't built a pompous careers section bulked up with imaginary roles. We haven't provided descriptions of how extraordinary yafla talent is that only walk-on-water technical magicians with PhDs should consider joining the ranks of Extraordinary Gentlepeople.
What I'm talking about, of course, is the sadly prevalent practice of many organizations, from tiny to huge, to endlessly list artificial positions that don't actually exist, or to advertise theoretical positions that no one short of a deity could actually fill. This is a technique utilized by a diverse range of companies, from the tiny start-up that immediately has a prominent "careers" section comprising one third of their web property, to the huge organization like Microsoft's Canada division that lists the same positions for a year on end.
In this case I was spurred to write after seeing yet another micro-web firm -- one which I know has less than half a dozen employees and hasn't grown in years -- with a comprehensive job listing section including endless exhortations for only the most extraordinarily gifted and rare to join this exclusive crew. I imagine the endless ranks of prospects wasting their time jockeying for positions that will never be filled and it saddens me a bit.
Advertising false or theoretical positions is a cheap way of conveying the illusion that the perpetrator is an elite company on the go, so in demand that human resources needs outweigh the need to acquire clients (sort of a social proof), providing lofty requirements in hopes that you'll believe that all of the existing staff achieves the same. It attempts to cow competitors into thinking that they're so successful that they're chomping at the bit for new employees, but are thwarted by a workforce that is incapable of meeting their amazing skill requirements.
In response to these ads, countless prospective applicants carefully craft cover letters and customized resumes. They eagerly apply, imagining their future with this fabulous organization.
Many times their application either times out and yield an automated rejection letter, or immediately gets rejected by a human resources department that is filtering applications by a wide range of criteria unstated in the job posting (the classic being the secret compensation cutoff -- ask for less and you'll get through and underpaid, but waste your time submitting for a job that doesn't fulfill your financial requirements and you'll get instantly rejected).
Not named Smith. Not named Singh. Too much corporate experience. Too little corporate experience. Too presumptuous in its use of the greeting "A very good day to you". The arbitrary and often ridiculous filtering criteria can effectively eliminate anyone.
Cheap and easy for HR, so everyone wins. Right?
Of course they don't.
On the other end of the equation is a real person that wasted their time and effort creating a submission for jobs that often don't even exist, or which they don't meet due to hidden requirements -- people who often already have jobs and are sacrificing their limited free time -- only for their efforts to sit stagnating in an inbox or database for years. If they're lucky they might get rashly rejected despite fulfilling all of the requirements, and then some, when some arbitrary time-out mechanism fires off a form rejection letter, or a haphazard HR rep blanket rejects all pending resumes.
The resentment builds. The goodwill of the organization suffers.
These rejectees often have decision making authority in their organization, and over the years they grow into more powerful roles. For years they nurse the wound that their perfect application for the big XZZ corp position was rejected out of hand, without as much as a phone call or personal contact allowing them to demonstrate their worth. Often it subconsciously colours their choices, be it as simple as supporting and advocating open source products in defiance of the careless Microsoft rep that canned their submission, or second guessing whether the firm should automatically move to .NET, or whether there should be a competitive showdown between it and J2EE. Even a minor antagonism can substantially change internal advocacy.
Of course choices should be made based upon empirical facts and unbiased analysis, but as human beings we are consciously and subconsciously affected by emotions and biasSmaller firms of course have less ramifications for partaking in this abuse.
Smaller firms often have no downside to printing such fake ads -- apart from killing a bit of your soul abusing people like that -- given that spurned suitors often have no business relationship with them outside of vying for a job. These firms use such ads in the theory that "no publicity is bad publicity". Compare this to Microsoft that relies upon the decisions of millions of people, and suffers from a million tiny wounds when an HR department gets sloppy.
I can personally relate to this problem to a degree.
Many years back, when I first moved to the greater Toronto area, I applied to a Microsoft Canada position that was pretty much a perfect match for my skills -- the ad seemed like it was written specifically with me in mind: I had what seemed to be a perfect mix of skills, experience, education and certification.
I had watched this job listing sit on the job site for many months, and figured I'd finally give it a try, so I wasted an hour of my time putting together a perfect resume, and then reformatting it for their absolutely terrible, archaic online resume building tool. I looked forward to the inevitable telephone interview when I would wow them more with my incredible communication skills and demonstrated intelligence.
A week later I got a form rejection letter informing me that I wasn't suitable for the position.
No phone call. No email questions. No follow-ups at all. Just a blanket, uncontestable (from a no-return bogus email address, which is a classy touch) rejection by the machine of HR at Microsoft.
The job listing stayed up for as long as I bothered watching. Every day that it sat there unfilled I stewed over the fact that I wasn't given even the courtesy of a brief phone interview.
I've never been a Microsoft zealot, and nor did that organization represent my dream job, but it admittingly did burn getting rejected in such a fashion (I'd much rather have bombed an interview and had myself to blame). My choices of Microsoft technology have always been driven by facts and pragmatism, so it wasn't like I was going to stomp my feet and embrace Linux to spite the Microsoft machine, but it did make me give alternatives a second look.
In all honesty it's probably made me a little more antagonistic towards Microsoft Canada employees, making me question "so what's so special about this guy? I don't get a phone call yet this idiot works there?"
For someone more emotionally invested, though, it probably could have made them an enemy. I have to wonder how many avowed Microsoft enemies, spreading the anti-Microsoft word far and wide, were molded when the human resources machine rashly stomped on their dreams.
The same question could be raised for other organizations with the same hiring practices, and for startups that build a facade of size by listing numerous positions that don't actually exist.
Of course many applicants aren't appropriate or optimal for the position they're seeking, so job seekers have to accept the fact that even getting past the initial filter is a remote possibility (especially given the one-click applications possible at many of the job sites: A single listing can yield tens of thousands of mechanically submitted applications, so even the best prospect can get lost in the noise, not to mention that listed positions are often internally filled, and listed only as a matter of process), and as always getting considered is often best achieved by network contacts and organizational insiders rather than cold resume submissions.
Nonetheless, fake job listings are quickly transparent to all, and unfilled roles that waste the applicant's time can earn an organization lifetime enemies.
On top of that, the practice of keeping some requirements secret wastes everyone's time. Apart from often unstated diversity staffing requirements, organizations often fail to publish the compensation band for a job. For prospects with financial needs beyond the position, it is an enormous waste of time and effort, and it fills HR inboxes with prospects that will never accept the position.
Mozilla has announced the winners of the previously mentioned extend Firefox contest, with the three grand-prize victors carrying home a beefy PC, along with a considerable amount of developer credibility. Category winners earned some decent prizes as well.
Congratulations to the winners on a job well done.
Having said that, I've tried out the winning extensions, and I have to confess that I'm underwhelmed. Not to take away from their accomplishments, but for a challenge of such magnitude, for a core product with millions of software developer fans, I expected some awe-inspiring, revolutionary products to emerge.
Firefox has an enormously robust and feature rich extension model, where almost anything is possible, yet the roster of available extensions is dominated by trivial tools with simplistic, archaic interfaces, too many of which seem like hack jobs (the exception being the extensions by big corporations -- Corporations that spit and polish their offering to reap the benefits of tracking your habits and encouraging you to use of their search).
Of course I'm complaining about something that is generally free, so as the old saying goes, you get what you pay for...In fact you get far more than you pay for, but it demonstrates that there are limits to the sacrifice and resources someone will commit to a product that they find difficult to monetize.
Not only is it close to impossible to achieve revenue from an extension unless you're pushing a different product (such as search), but the skills and technologies that you learn building extensions is hard to leverage for professional gain (e.g. knowing XUL and the Mozilla extension API is of marginal value outside of building extensions, where the C skills gained doing kernel hacking has tremendous professional value).
Nonetheless, at least the winners weren't gadget clocks. Gadget clocks and basic arithmetic web service examples always strike me as a sign of a technology or platform that is being oversold.