Entries Tagged 'Opinion' ↓

Anti-Follow Spam for Twitter

No Twitter Spam!
Wall of Spam courtesy of freezelight and enabled by Creative Commons

Damon Clinkscales blogged about Twitter Spam last month where he advocated proactively cleansing one follower’s list of "follow spammers" to help reduce the load on Twitter, improve Twitter’s reliability, and increase the value of the Twitter community in general.

I agree!

Still, I think Twitter could take a proactive step reasonably easy that would make it so we don’t have to. I think Twitter could reduce most of the type of Twitter follower spam I got today by applying two simple criteria (And I think Damon also got that same spam today. BTW, nice blog theme Damon! ;-)

I think a strong indication of Twitter follower spam is simply:

  1. Their following/follower ratio (or their ing/er ratio for short), and
  2. Their follow rate (i.e. how quickly they follow someone after that last time they followed someone.) 

This spammer I got today followed me with 4 different Twitter accounts within a few minutes and each account had around 2000 followings and just over 10 followers making their ing/er ratio about 20-to-1 and I’ll bet their followers were all auto-followed. It’s also clear from the fast & furious tweets that I was not their only mark.

I think it would be reasonable for Twitter to auto-block anyone with a ratio of greater than 15-to-1 ing/er ratio. Twitter could even remove the auto-followers from the calculation; those that follow within around 90 seconds of being followed wouldn’t count as a follower. Doing this Twitter would still give someone the ability to follow 15 people for every one that follows them, and heck they could give them their first 150 people[1] for "free" (i.e. not counting against the limit.) If someone really wants to follow 15,000 people they need to be interesting enough to have at least 1000 people follow them. Shouldn’t be that hard…

Also, Twitter could limit followings per day to, say, 75.  That should be enough for anyone, even the most hard-core twitter newbie (150 "free" + 75 more), and it’s not unreasonable to require a newbie to wait a few days to follow lots and lots of people. 

If I were in charge of setting these limits, I’d set the ing/er ratio to 5-to-1, give them only 25 "free" and then limit to 25 followings per 24 hour period, but I shot high because I was trying to be "reasonable." Of course, Twitter could allow for special cases by allowing people to request to have those limits manually raised if they provide a good justification for it.

What do you think?  Would this work to reduce most Twitter follow spam?  I think so.

Footnotes

Twitter URL = Uniform Person Locator (UPL)?

Uniform Person LocatorI tried Twitter a year ago and either couldn’t "get it" back then, or I was just mentally, philisophically or logicistically in the wrong place to appreciate it. But I recently started Tweeting and all of a sudden I am seeing real value in it and am also seeing how so many others who still are not using it could see value in it too!. And to slightly paraphrase an old saw, "There are none so evangelical as the recently converted…"   ;-)

But rather than blog my full thoughts on Twitter right now I just want to ponder the following; if a web page can have a URL a.k.a. Uniform Resource Locator (or for w3c purists, a URI), shouldn’t we establish a Uniform Person Locators, for people, or "UPLs" for short? 

I’ve actually pondered this question numerous times in the past as I contemplated one of my many web entrepreneurial ideas.  In one context I’m lucky; there are very, very few people in this world whose name is "Mike Schinkel", and the few I’m aware of are not at all active on the web so I pretty much "own" the "MikeSchinkel" as my uniform person identifier.  I’ve so blanked the use of "MikeSchinkel" on the web that there is little change of anyone else actually wanting to use it lest they be confused with me (that is, unless they wanted to create that confusion. But that is another subject.)

But what about my friend David Cohen?  From him I understand that he has the opposite situation.  For him there are hundreds if not thousands of other David Cohens (to link but a few.) Poor guy; how does he get his name known for being him? But I digress.

Yes we can all have our own domain names, like I have http://mikeschinkel.com and my friend has http://davidcohen.com (can you believe he got that domain, with all that competition?!?), but so many people don’t have their own domain and for some people it takes more knowledge or effort then they are willing or able to invest. On the other hand getting a Twitter account is free to create and free to maintain and only requires 5 minutes and then occasional access to an Internet-connected computer which in the USA and most non-3rd world countries can be had at the library or an Internet cafe. Once a twitter account is created, that’s it; no one else can stake that claim. 

Now, thanks to some rather saavy engineers at Twitter and the brilliance of the underlying technology of the web (i.e. the URL) we now have what could potentially become the Uniform Person Locator, at least within the subset of people are active on the web.  With someone’s Twitter URL you have a direct way to "locate" them. Minimally you can follow their updates, but for most Twitter users you can relatively easily contact them; just tweet them and most will reply. Just as importantly you can use someone’s Twitter user name and unambiguously refer to them by that unique identifier which behaves for people just like URLs behave for "resources" (i.e. web pages, PDF files, graphic files, .ZIP files, etc.)

Will Twitter ever make it’s way to effectively being the "Uniform Person Locator."  Probably not for all people, but at least for the subset of people on Twitter, it is a really interesting piece of infrastructure to consider.  And if you don’t yet have a Twitter account, now’s the time to get one.

P.S. So can you guess my Twitter user name?  "MikeSchinkel", of course.   David Cohen’s Twitter user name?  "davidscohen"; Unlike with his domain name, "davidcohen" had already been taken on Twitter (by a duffus that’s not even using it!) before my friend David Cohen could grab it. Ah, such is life when resources are scarce.

ASPnix adds ISAPI Rewrite - Finally!

ASPnix Web Hosting Logo Back in July of 2006 someone asked on the forum for ASPnix, the web host that specializes in CommunityServer, to add ISAPI Rewrite to their servers so that customers can clean up their URLs. Seven people including myself chimed in asked for it. Over the past eight months, little was said by ASPnix except by a former staffer who implied it was harm the stablity of their servers and who really gave no indication that any real consideration was being made to offer a solution for URL Rewriting.

Well finally, on Feb 22nd, Roma confirmed that ASPnix has will finally be offering ISAPI Rewrite on ASPnix’s web servers. That’s yet another IIS-centric web host who has finally freed its customers from the shackles of poorly designed URL Hell! Hooray!

Now let’s just hope that Scott Watermasysk can be convinced to add URL Rewriting support in CommunityServer using ISAPI Rewrite to eliminate .ASPX extensions and more on CommunityServer, sooner than later.

OpenDNS to Force Improved DNS Standard?

OpenDNS

So I was reading Hanselman and came across his OpenDNS post. I’d not heard of it, but evidently it is a free service comprised of a network of ’smart’ DNS servers that can correct spelling errors (i.e. convert craigslist.ogr to craigslist.org) and provide warnings when users attempt to go to a phishing sites. Cool!

Reading Scott’s post also led me to a discussion on mrneutrongodeon’s LiveJournal about OpenDNS where dr_strych9 commented (emphasis mine):

Part of your problem here is that BIND just plain sucks. I would expect similar results from djbdns, for example.

I also don’t like that “spelling correction” or “anti-phishing” feature. That doesn’t belong in the cache; it belongs at the resolver. … OpenDNS is unsuitable for use as an enterprise DNS cache. It might be a good solution for people who want to run their own personal cache on a local node.

When challenged by someone who did not understand that the term “resolver” had a defined meaning, dr_strych9 clarified (emphasis mine):

The “resolver” in the DNS protocol is the agent that sends questions and receives answers. Contrast with the other two kinds of agents in the DNS protocol, i.e. the “server” and the “cache” agents. The “server” sends answers to recursive questions, and the “cache” sends answers to non-recursive questions.

I’m saying the “resolver” agents are where this name fiddling code belongs, not in the “cache” agents where OpenDNS is doing it. Technically, OpenDNS is running an alternative “public” DNS horizon for its users. I think more than one “public” DNS horizon is a very bad idea. We only need one: the global public DNS horizon.

Also, I really hate designs that try to make the network protect the nodes from one another, particularly designs that outsource security to somebody I have no reason to trust. A much more secure and sensible approach to this problem would be to be the spelling correction in the DNS content servers (by registering multiple spellings and redirecting) and optionally the resolvers (by making them ask the right questions), and put the anti-phishing protection into just the resolvers, i.e. your web browser should protect you, not your DNS server.

And what follows are both my response and my analysis of the situation:

I agree. And I disagree. :)

What OpenDNS has done is recognize a way to improve on the DNS protocol. This could be argued to be a limitation in the vision of the DNS protocol, and OpenDNS have offered a solution that is of interest to a reasonably significant segment of users. Unfortunately, that solution violates the spirit of the existing DNS protocol. You can say that it should be in the client, but the “cost” (in the technological sense) of requiring clients to be updated to get this functionality is unrealistic when you compare it with the cost of updating a well-defined set of servers.

And whenever the spirit of a protocol is violated it causes lots of hand-wringing among the standardistas [1]. That happened a lot during the browser wars, but it forced the standards bodies to address the needs people were having as opposed to pontificating on abstracts at a glacial pace which is the nature of standards bodies when there is no market pressure to drive them. This market pressure spurs standards bodies into action to as quickly as possible reign in fragmenting yet proven technologies and codify them into a standard instead of spending years debating a hypothetical envisioned use (can you say ‘Semantic Web?’)

Yes some negative can result when market pressure is applied to force standards but I also think negative can also result when a hypothetical is standardized without a lot of proven implementations. All-in-all, I believe the accelerated pace of standards development resulting from market pressure is almost always a net positive.

Given OpenDNS has identified a way to add value to the DNS protocol I think it would make sense for the standards bodies to extend the DNS protocol in a backward compatible way to incorporate this functionality. When up-level clients and servers are paired they can use the newer functionality but when a client attaches to or server where one is down-level, the transactions would work as it always has.

And if OpenDNS were to work to update the DNS standard, they could move from being a novelty for most web users and a rouge element to the standardistas to potentially gaining a huge market share and capitalization. At the same time this newer version of the DNS protocol could provide added value across the broader Internet and provide value-appropriate revenue opportunities for a large number of people and vendors to support companies who want to update to their DNS infrastructure.

JMTCW, anyway.

In closing, I just want to remind readers that I definitely do like the idea of OpenDNS, that is unless and until someone points out some aspect of it where it really should be considered harmful that I hadn’t really considered.

Footnotes

  1. NOTE: I don’t mean the term ’standardistas’ perjoratively; I actually consider myself to be one, albeit a little more pragmatic than most.

Camtasia Studio’s Huge Missed Opportunity

Jon Udel is a big fan of using screencasts to instruct, and I’m a big fan of watching them when I want to learn something. I’d like to start doing some of my own. However, reading his post on screencasting tips today, I was reminded of how I can’t help but think that TechSmith is really missing out on a huge opportunity because of their pricing for Camtasia Studio.

I’ve followed them for a while, and I know that they are pretty much the gold standard for screen recording software. However, their price of $299 is in no-man’s land. It is too low for the market it currently targets, the corporate market, and too high for a much, much larger market; the amateur and semi-pro blogger.

For those company’s who need the software, TechSmith could easily double the price and would probably still sell 90% as many units. But of course, the lost 10% would be well more than made up for by the increased price per unit.  And frankly, a higher price would motive resellers more (which, as a former reseller, I always hated that my business did better financially when I raised prices on customers.)

On the other hand, $299 is way past the threshold where an amateur bloggers would buy a copy. Frankly, I think that is the reason why we see so few screencasts on the web. In my 12+ years experience in selling software tools to developers, I’d say that $69 is probably about the right price for an amatuer to semi-pro blogger to say "Sure, what the heck, I’ll buy a copy and try this screencast thing.

TechSmith could easily cut feature features from this blogger version to differentiate from their professional version. For example, the blogger version could be limited to outputting only to Macromedia Flash, i.e. no AVI, Microsoft Windows Media, RealNetworks RealMedia and QuickTime. The could cut the output-to-EXE feature and the Create a CD-ROM feature. And probably a few more things. 

But TechSmith would need to be extremely careful NOT to cut the features that bloggers would really need. I ran into this over and over with components vendors while running VBxtras/Xtras.Net. I’d suggest a lower-priced version so they could reach a slightly different market, and the vendor would want to cut so many features of the product that it would have been crippled. Instead what’s needed it to look at the features that are needed only by the high end customers and cut those while leaving feature every users could benefit from. For example, if TechSmith were to cut any of the recording, pre-production, or editing features they could very well end of with an expensive demo and lots of frustrated customers badmouthing them on the blogs.

But what they could do, given this market, is to have the screencast on the blogger edition end with a splash-screen/advertisement for Camtasia. Imagine that, having the ability to get advertisements on a larger percentage of the blogs on the web and the only thing requires would be to restructure an existing product! Can you say "No Brainer?"

So, what would this look like?  I think if TechSmith were to offer two editions with the following prices they’d see a surge of new customers, the web would see an explosion of screencasts, and that would be great for (practically) everybody:

  • $69 - Camtasia Studio, Express Edition
  • $599 - Camtasia Studio, Professional Edition

So, if you are a blogger who thinks is a great idea and you’d be anxious to buy a copy of Camtasia Studio for $69 but wouldn’t even consider paying $299, why not go over to TechSmith’s website and send them some feedback on the subject. And be sure to point them to this URL so they can read my justification. Together, we can make a difference. :-)

P.S. One thing the skeptics in the audience should know is that I have recently started playing with the free software called Wink from DebugMode (thanks to Ben Coffey for the recommendation.) While it is great, I’d prefer the polish of Camtasia Studio. However, at $299 they won’t be getting a dime from me. On the other hand, for $69 I’d happy spend the money for the time and frustration it could hopefully save me, and I bet lots of other bloggers feel the same.  So what will it be TechSmith: "$69 in revenue, or nothing?"

On the Hunt for a New Programming Language

When it comes to programming on the modern-day GUI (post-DOS) platform, the vast majority of my coding has been, in order of experience, using T-SQL, VBScript in ASP, and about equal parts classic VB (v3.0 to v6.0) and VB.NET. As you can see from my order of experience, I’m really a database guy, and since the beginning of the web I’ve always viewed the web as somewhat of a database publishing environment (anyone remember the DOS product dbPublisher Pro from Digital Composition Systems?) What’s more the web allows a potentially infinite number of people to use a developer’s database publishing apps without any extra effort to distribute them. Finally, the web provides ability to capture evidence the apps were run, how often, and by how many people. Is it any wonder I have more of inclination to develop for the web as opposed to desktop applications? Back during the period from 1994 to 2006 when I ran VBxtras/Xtras.Net where we where a reseller of ActiveX controls and then later .NET components, I never really thought about the cost of add-on components. Almost anything I wanted to play with I can get an NFR (not-for-resale) copy just by sending an email or picking up the phone. Although I still have many of those relationships from a decade+  in the business, I hesitate to ask for NFRs these days except from my really close friends simply because this business I’m in today has nothing to do with benefiting those people. So numerous facts have me giving up on my prior five year assumption that I would someday learn VB.NET at an advanced level and have me instead actively considering alternatives:

  1. As I just stated, the fact I now have to pay for third party components and tools means I’m paying more attention to cost of acquisition,
  2. My recent favorable impressions of open-source developer tools and components, on par with some of the best tools ever sold by Xtras.Net,
  3. My increasing frustration with the Microsoft developer division’s process and release cycle,
  4. All best web applications seem to target L.A.M.P. such as Mediawiki, WordPress, vBulletin, Subversion, Trac,  Ruby On Rails, Django, etc. and all but one of them are free to use
  5. Completely preconfigured stacks (including O/S) that are becoming available for download as a VMware appliance,
  6. Recognizing that Ubuntu’s has an approach strategic enough to result in Microsoft being profiled in a revised edition of Clayton Christensen’s Innovator’s Dilemma as yet another example of why great companies loose their leadership position,
  7. And lastly my rising disgust for ASP.NET (and I promise I will blog about those specific soon…)

By the way, even though I dislike ASP.NET, I do still really like the .NET Framework and programming model. Oh and a note about the first point; whereas there is good open-source tools available for .NET, the operative word is "tools" not components. When you compare what’s available to freely use for .NET compared to what’s available for any of the "P"s (Perl, Python, and PHP), .NET just can’t compare, at least not in depth or breadth. Of course being commercial products the .NET third party components are more polished and of course have commercial support available. However, unless you are big company that needs to CYA and have a throat to choke, those are often dubious benefits especially when you consider the benefits of open-source (i.e. source code, and the ability to fix something and contribute it back so you’ll know it stays fixed!) Anyway, I could write for hours on the pros and cons for open source vs. commercial developer components and tools but that’s not the subject of this post. The subject is about which language I will focus the majority of my future attentions on learning and using, and I’d love to get your input before I decide. Here are the current contenders:

PHP
All the major web apps I mentioned above seem to be built using PHP and I’m currently running many of those apps, PHP is pretty similar to the ASP that I know so well, it’s web-specific, there is a huge support community, it runs on both Windows and Linux, and every Linux web host known to man seems to offer it preinstalled. However, there seems to be lots more crap PHP code examples littering websites than good PHP code examples making it harder to learn so it might be hard to seperate the wheat from the chafe, it is not easy to configure on Windows Servers (especially at a shared web host), and no one individual framework seems to have gotten the lion’s share of the market attention so picking one would be a crap shoot. Oh, and it uses those infernal semi-colons just like C#.
Ruby on Rails
Ruby and it’s framework Rails have gotten tons of attention and it seems all the cool kids are doing it, especially lots of the Web 2.0 startups, it is very database-centric, has very elegant URL mapping functionality, and it seems you can get web apps built really fast using it. And Ruby.NET is also on the horizon meaning I might be able keep my toe in .NET. However, the community comes across as just a little bit too religious and I’m generally alergic to that, AFAIK it doesn’t run on Windows, or at least not for shared hosting. Plus I’ve had people I respect tell me that Ruby doesn’t have nearly as many users as the "P" languages, that Rails it not nearly as mature as its purported to be, and that Rails makes simple thing simple but complex things extremely difficult. And the number of available web hosts that offer it is quite limited.
Python
Unlike PHP, it seems Python is well suited for both web and desktop apps, which might come in handy from time to time, and a shipping IronPython means that I definitely can keep my toe in .NET. The Django framework seems to be a little more mature and have a little less religion than RoR, and Django also has nice URL mapping functionality, albeit slightly less elegant than RoR. And it seems to run equally well on Linux and Windows. However, Django seems more document publishing-centric and less database-centric, there are very few web hosts that support DJango, and I’ve heard it is a real bitch to get working on a web host.
VB.NET+Castle/MonoRail(+Mono)
But then again, maybe I will stick with VB.NET. The Castle/Monorail project is supposed to be a lot like RoR, and I’d even have the option to use Mono on Linux. However, the third party tools are definitely wanting, most web hosts haven’t a clue what Mono is, and they coded Castle/MonRail in C#, so I’d always be dealing with semi-colons…
ASP+IIS+JScript
I could stick with ASP, which I still like, and learn JScript to replace VBScript, the latter of which just has too many limitations when compared with the other current options. This clearly also runs on Windows and any Windows web host will support it, and I already know Windows backwards and forwards. On the other hand, I’ll need to use ISAPI Rewrite for clean URLs, JScript on ASP it has no future and few code examples on the web, and what third party components and tools (to speak of…)?!?
ASP+IIS+VB.NET
I could also use develop VB.NET objects and call them from ASP; that’s what we last did at Xtras.Net (and I think that is what they are still doing, last I checked…) Of course, calling .NET objects as ActiveX controls just doesn’t feel right, and again there’s that third party component and tools problem…
PowerShell+IIS+???:
Of all the teams working on tools for developers over at Microsoft, the PowerShell team run by Jeffrey Snover is the only one that gets me excited anymore. And in an email from him (or was it a comment on my blog, I don’t remember exactly) he said that PowerShell can do web, and will be able to do it more easily in the future. On the other hand, it’s not here today, and what if webified PowerShell is just another way to do rubbish ASP.NET instead of what it should be, a url-based object-selector-and-invoker like Django or Rudy on Rails.  And what’s the chance it will ever run on Mono…?
Other:
Is there anything else do consider…?

At this point I should probably explain what I’m not considering, and why:

Java on Anything:
Although I was really impressed at a Sun Tech Days recently here in Atlanta , even the Sun people were all over dynamic languages with praise, like Jython and JRuby. And though I was impressed with NetBeans 5.5, all the other "enterprise" baggage like J2EE and Servlets and JSP Custom Tags gives me the feeling I’d be jumping out of the frying pan and into the fire.  Oh, and Java uses those infernal semi-colons too.
C# on Anything:
One word: semi-colons!  Sorry but if I’m going to go .NET, it’s going to be VB.NET (or IronPython). VB.NET is so much more natural to me than C#, and there are things you just can’t do in C# that you can do in VB.NET related to using "implements" on a method in an inherited class (I ran into that limitation of C# compared to VB.NET on a project several years ago where I was managing a pair of interns coding in C# and they hit a wall because of that limitation. I can dig it up if anyone cares, or better yet, can someone who knows the specifics explain it in comments?)
Perl on Apache:
Although my partner on Toolicious Ben Coffey who is a devoted disciple of Perl will cringe to hear this (yet again), I can’t quite get my head around Perl, and they tide, at least today, is away from Perl. Of course Ben claims that will all change with Perl 5.0, but to me that remains to be seen and I’d rather go with a bird in the hand (i.e. one with a lot more active current user base) than a bird in the bush.  But who knows, they say you should learn a new language every year; at any rate if he’s right maybe I’ll try and pick up Perl 5.0 in around 2012. :)

So there you have it: my potential choices and non-choices. Any thoughts I which I should choose?  Any and all input will be appreciated and considered seriously.

Another Missed Ball: No .NET Application Container

David Laribee just referenced my IIS 7.0: Too Little, Too Late? post and he made an interesting comment that I hadn’t previously pondered but that is very relevent:

It’s a major bummer that there’s no such thing as a virtualized “.NET Application Container” for the new scalable grid computing and provisioning services coming out (Amazon EC2, MediaTemple’s Grid-Server). Essentially .NET programmers can’t easily take advantage of new long tail models with easily-sourced infrastructure services. Going out on a limb, I’d suggest these limitations contribute to a lot of top/entrepreneurial developer talent moving over to various flavors of the LAMP stack, Ruby, etc.

I think this is yet another area where Microsoft is missing the ball. And it is related to the fact that people can’t build and distribute Windows-based stacks as appliances (i.e. because of licensing issues) in the same way people can build and distribute them for Linux. Mark my words, these two aspects are a significant achillie’s heel for Microsoft and will have significant import in the further decline of the Windows Server and .NET platform.

IIS 7.0: Too Little, Too Late?

March 2007 Cover of MSDN Magazine Back in January 2006, I blogged about how much I wanted an IIS 7.0 that handles extensionless URL rewriting. Well this week I just got my March 2007 copy of Microsoft’s MSDN Magazine in which they ran a detailed technical preview of the features and functionality of Internet Information Server 7.0. Reading through it, I found myself salivating over it’s capabilities that I’ve needed for literally a decade. Those who follow some of my other escapades know that the #1 feature I want it to provide over IIS 6.0 and prior is the ability to fully control the URL with our without an extension. Yet, something is different now. Five years ago I would metaphorically have killed for that functionality. Even a few years ago, I wanted it badly. But reading about all the great things in IIS 7.0 today for future availability on server hosting platforms next God-knows-when (i.e. after Longhorn ships *and* most Windows-offering web hosts upgrade) sadly comes across to me as just too little, too late.

Too Little

Too little because Microsoft won’t deliver IIS 7.0 to run on Windows 2003 Server necessitating a costly and in some cases problematic operating system upgrade. This will drastically limit the number of situations in which people can choose to switch to develop for the new features of IIS 7.0. For example, when the funds for operating system upgrades are not in the budget or simply because the developer doesn’t have the corporate clout to convince management of the need to upgrade.  And the only people who will even be able to experiment with IIS 7.0 will be those with Windows Vista. And since upgrading to Vista also requires funds and often new hardware, it is not a foregone conclusion. Consequently there will only be a small percentage of Microsoft-centric developers writing web apps that uses the functionality of IIS 7.0 over the next several years. Given the limitations of IIS 6.0, I just find this scenario to be unacceptable.

Too Late

Too late because Microsoft’s outdated process and slow release cycle, which I blogged about last month, has given rise to compelling alternatives on the Linux platform.  And Apache has has many of the key features that IIS 7.0 provides, most importantly via it’s mod_rewrite functionality, that by the time IIS 7.0 is ready for prime time, there’s a good chance only a tiny percentage of web developers will care. I for one need to develop web apps I can run on web hosts today, not wait around and dream for some yet-to-be-determined future brighter day. Microsoft, the rules have changed and you are not immune. You can no longer schedule product updates years out and expect people to wait to pay you for them years from now when free-to-use open-source alternatives addressing the same need exist today. I can no longer bring myself to design or run a web app on IIS 6.0[1] when the URL management functionality I crave is already available on Apache. And by the time IIS 7.0 is released I doubt I’ll even consider running an IIS server.

Unless…

However Microsoft, there is a solution if you will only listen, which I highly doubt. Microsoft You should know more than any other tech company that your key to success is getting developers to write programs for your platforms. Yet on the web developers are voting with their feet and most new web applications not sponsored by a "You don’t get fired for buying Microsoft" large company IT organization are choosing to build on Linux and Apache.  IIS was once the leading server on the web, but today it can barely eek out more than 1/3rd market share. If you don’t stem this time, things will only get worse. Much worse. Here’s what to do: Release IIS 7.0 as an update for Windows 2003 Server and Windows XP that gets installed automatically via Windows update. Offer it in parallel to IIS 6.0 so it must first be configured by an admin and IIS 6.0 disabled, if necessary. Feel free to restrict it in whatever ways you must given 2003/XP’s lack of Longhorn/Vista infrastructure, but don’t use that as an excuse to eliminate key features such as URL management and HTTP response filtering. Doing this won’t change the minds of those who have already given up on Windows, but it will certainly minimize the profuse bleeding.

Footnotes

  1. Given how much I dislike ASP.NET and how frustrated I am with IIS 6.0, I can’t wait till I find the time to move my blog to another program besides dasBlog.

Enthusiasm for Microformats Premature


Microformats, Out of Focus

Earlier this year I raved about Microformats here on my blog. When Tantek Çelik gave his presentation at the Future of Web Apps Conference I had numerous epiphanies. As I am want to do, I projected my ideas and envisioned how Microformats could solve several problems on the web and I came away completely enthused. On the strength of its topic alone, I felt it was the best presentation at the show.

I have since spent many hours on uf-discuss[1], and I’ve come to the conclusion that my enthusiasm for Microformats was unfortunately premature. But before explaining my concerns let me give a quick overview.

30 Second Overview of Microformats

Microformats are developed by a community process and they allow web developers to provide semantic information within an HTML 4.01 document using defined keywords in class attributes[2].  This allows software programs to extract the semantic information from the HTML much like a program could extract information out of an XML file. The following example, if included in a web page would indicate that the content on the page was licensed using Creative Commons license:

<a rel="license" href="http://creativecommons.org/licenses/by/2.0/">License</a>

This example marks up a description of the time and place for the Future of Web Apps conference I attended:

<span class="vevent">
   <a class="url" href="http://www.futureofwebapps.com/pastevents.html">
      <span class="summary">Carson Workshops' Future of Web Apps</span>
   </a> was held
   <abbr class="dtstart" title="2006-09-13">September 13</abbr>-
   <abbr class="dtend" title="2006-09-14">14</abbr>,
   at the
   <span class="location">
      The Presido's Palace of the Arts in San Francisco, California
   </span>.
</span>

The previous markup[3], would display as:

Carson Workshops’ Future of Web Apps was held September 13-14, 2006 at The Presido’s Palace of the Arts in San Francisco, California.

To learn more about Microformats, visit http://microformats.org.

Our Mismatched Vision

I had envisioned a community process defining specific Microformats for different vertical needs, and then web developers using these Microformats to expose extractable data in their web pages. Business partners and other interested parties could then simply scrape these structured pages to retrieve the information all without having to create a separate XML files and related navigation. This would give 80% of the benefit of the semantic web with 20% of the effort[4].

Unfortunately, the Microformat community’s vision didn’t align.

So where was the mismatch? Read on:

So, after many vision-limiting responses I’ve become both disheartened and disenchanted with Microformats, especially after I envisioned Microformats being able to solve so many real world problems.

After the letdown

After an extremely compelling vision, it’s hard to backtrack and just ignore it. But unfortunately, the Microformats community’s vision doesn’t sync with mine. Continuing to advocate for an alternate vision will likely just waste my time and certainly upset everyone on the list, so that’s not a viable option. Instead, I’ll ponder the issue, and will post again if an alternate solution presents itself.

Microformats good, just know what to expect

However, I do want to clarify that I didn’t write this to trash Microformats or Tantek or the community. I still think the Microformat concept is brilliant, even with its differing vision. I still respect Tantek and the others on the Microformat list and appreciate their efforts. And I’m still impressed by existing Microformats created by the community and would love to see them implemented on all applicable web pages.

No, I didn’t write this to trash Microformats. Instead I wrote it to inform people they should take great care in setting their expectations regarding Microformats. Otherwise they’ll go through the same cycle of elation, frustration, and then disappointment as me. And that won’t do good for anybody. And in fairness, I wrote it in small part to officially register my issues about the governance of the Microformat community.

  1. “u” is the symbol for “micro”, and “f” is the first character of “format, so “uf-discuss” if the mailing list to discuss Microformats. Get it? Uh, huh, too cute for words.
  2. The “class” attribute is the main one used by Microformats as they also use “rev” and “rel” and a few more, depending on the specific Microformat.
  3. Carson Workshops actually uses this Microformat called “hCalendar” to mark up their entire conference schedule for the next time this conference is run; you can see it here. As an aside, they had a link on their schedule page for the San Fran conference that would add the entire conference into a calendar such as Outlook. At this moment his current page doesn’t do that; why I don’t know.
  4. Please don’t debate the percentages; I was being convenient and the percentages are tangential to the point of the post. Thanks in advance for your support. :)

Will Microsoft Meet Occupational Programmer’s Needs?

Contents


Defining “Occupational Programmer

I made two posts recently that muddled serveral issues so I am creating a seperate post here to isolate them and provide a location for comments specific to this issue:

Microsoft is not meeting the needs of “Occupational Programmers.”

The first thing I should do is define the term “Occupational Programmer:

“An Occupational Programmer is one whose job is something besides programming. The programs they write are related to their main job such as streamlining tedious processes or automating labor intensive tasks. These people only spend a small percentage of their time programming.”

Professionals need Industrial Strength

Occupational programmers have significantly different needs than professional programmers or even hobbyists. Professional programmers need industrial strength developer tools. I could blather on forever defining that but I think most professional programmers know what they need as that’s what they focus all their time doing.

Hobbyists need to Learn

Hobbyist programmers main need is to learn. For them each learning experience grows on the past. Further, I would argue most hobbyist programmers are either younger (i.e. in elementary school, high school, or even college with a lot of free time on their hands) or older (i.e. retired and looking for something fun to exercise their brain.) I’m sure there are many hobbyists in between but I’d argue they are not the majority. Hobbyists goal is often to get better at programming, and I believe they are by definition both passionate about it and interested in learning in ways that occupational programmers simply are not.

Occupational Programmers need Productivity

Occupational programmers don’t have time to learn; they’ve got a real job to worry about. And occupational programmers often don’t care about learning the intricasies of programming at a professional level. Most importantly, occupational programmers don’t program frequently enough to transfer their learning from short to long term memory. Tellingly, Microsoft has a Coding4Fun website for hobbyists, but doesn’t have a Coding4Work website for occupational programmers!

Occupational Programmers need Discovery

Occupational programmers also need to be able to discover how to do things without lots of prerequisite knowledge. They need to be able to be highly productive every time the sit down to code. In that vein Microsoft’s “My” object is intuitive enough and addresses discovery.

Occupational Programmers need to Experiment

On the other hand, occupational programmers need to painlessly try things to see what works and not be distracted by lots of complexity. It is here where even Microsoft’s Express Editions fall short. They need a far simplier environment that allows them to type in a single line of code, highlight it, and then press a key to run it; no other prerequisites required. And if, for example, the code won’t run because of a missing reference the environment should pop up a suggestion based on an index of all available components on the user’s system, the occupational programmer should never be left trying to figure out where to go next to solve his problem.

In other words the occupational programmer needs a powerful interpreter but one that works more like SQL Query Analyzer than a command line interpreter. SQL Query Analyzer’s is it’s “canvas” that allows one to leave lots code lying around in various states of completion while it only executes the code that the user has currently highlighted.

Occupational Programmers need Progressive Disclosure

occupational programmers need Progressive Disclosure. They shouldn’t open up a development environment with numerous items competing for their attention. They shouldn’t have to worry about projects or properties or toolboxes, they should have a screen where they can start writing code and the equivalent of a (well designed) “Start” button and menu/wizard system.

Occupational Programmers need their Skills Grown

Additionally, the languages and tools used by occupational programmers should empower they to continually improve their skills without even trying, as they end up building significant systems over time. Some will even change careers to become full-time professional programmers eventually. If they are sandboxed with dead-end language and environment, think VBA or Visual Studio Tools for Applications, that’s no good either.

But Don’t Sandbox Occupational Programmers

And occupational programmers should be given the same languages professional developers use, but in a less-restrictive form; one potential example being a dynamic version of VB.NET with duck typing, etc. This is so professional developers can reuse and refactor the occupational programmer’s components and code. Occupational programmers have specialized knowledge that professional developers simply don’t have and putting them in two different sandboxes doesn’t make sense.

Focus on Languages and Frameworks, not GUI Tools

Further, the tool builders should focus on language and framework first, not the visual tools. Although this applies across the board for developer tools, it’s especially important to state related to occupational programmers because the tendancy is to just throw lots of GUI at less experienced developers, but that approach is fraught with peril (anyone remember Visual InterDev Design Time Controls?) I can acutally write a long post on this topic alone, and plan to, but suffice it to say that the focus should be on making it very easy to implement something in code using the language and the framework, and then create the visual tools to streamline this last.

Not Hard to Serve this HUGE Market

I believe there are tremendous number of occupational programmers out there whose needs are not being served and the irony is that I’m not proposing anything complex. On the contrary, Microsoft has partically all the technology it needs to build and ship the first version of what I’m envisioning within six months or less assuming a 3 to 5 person “SWAT team” that’s sheltered from politics (by 3 to 5 people I mean everyone; development, testing, documentation, marketing, etc.) It would be a tiny investment, and if it was released below the radar and sans Microsoft’s full hype machine it’s benefit to prospective users could be evaluated before they committing Microsoft to supporting any legacies it might create. And Microsoft could call this tool “Power Developer” (I chose that name because of PowerShell.)

There’s a lot more I could say on this issue (and I’ve said some of it in the past), but I’ll leave it at this and await your comments.

Other References

P.S. Here are some posts I made over 2.5 years ago on this and related subjects:

And these are some posts over people have made and/or posts with related comments, in no particular order:

I’m Available…

P.P.S. If any decision makers at Microsoft are listening but don’t currently have the right person on the inside to champion this idea, they should be aware that I am, at the time of this writing, available to help. :)