<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1659822473530077615</id><updated>2012-02-16T14:18:58.310+02:00</updated><category term='nostalgia'/><category term='venture'/><category term='social-networks'/><category term='tools'/><category term='courses'/><category term='venting'/><category term='web-development'/><category term='documentation'/><category term='web'/><category term='development'/><category term='soa'/><category term='funding'/><category term='strategy'/><category term='methodology'/><category term='projects'/><category term='brainstorm'/><category term='stupidity'/><category term='psychology'/><category term='travel'/><category term='kakistopoly'/><category term='css'/><category term='programmers'/><category term='hostile-it'/><category term='spam'/><category term='reliability'/><category term='sun'/><category term='web2'/><category term='email'/><category term='lies'/><category term='systemadmin'/><category term='rant'/><category term='rumination'/><category term='business'/><category term='workshop'/><category term='java'/><category term='schedule'/><category term='security'/><category term='hate'/><category term='ux'/><category term='ideas'/><category term='teams'/><category term='networking'/><category term='oracle'/><category term='prouddad'/><category term='hiring'/><category term='isp'/><category term='ui'/><category term='dev-mgmt'/><category term='android'/><category term='fubar'/><category term='coaching'/><category term='time-management'/><category term='interviewing'/><category term='software'/><category term='design'/><category term='skills-development'/><category term='thin-client'/><category term='testing'/><category term='scam'/><category term='architecture'/><category term='j2ee'/><category term='blogging'/><category term='love'/><category term='vcs'/><category term='notetoself'/><category term='noise'/><category term='subversion'/><category term='simplicity'/><category term='value'/><category term='wiki'/><category term='attention'/><category term='trust'/><category term='magic'/><category term='extreme-programming'/><category term='quote'/><category term='change'/><category term='advertising'/><category term='http'/><category term='unit-tests'/><category term='developers'/><category term='agile'/><category term='opensource'/><category term='cms'/><category term='metrics'/><category term='software-development'/><category term='retention'/><category term='course'/><category term='internet'/><category term='zen'/><category term='windows'/><category term='code'/><category term='productivity'/><category term='recruitment'/><category term='tell-me-how-you-measure-me'/><category term='usability'/><category term='teaching'/><category term='version-control'/><category term='linux'/><category term='flightwish'/><category term='p2p'/><category term='kubuntu'/><category term='howto'/><category term='politics'/><category term='programming'/><category term='random'/><category term='startup'/><category term='jsp'/><category term='eodsql'/><category term='fowl-code'/><category term='spof'/><category term='misdesign'/><category term='courseware'/><category term='cross-platform'/><category term='screwups'/><category term='netbeans'/><category term='time'/><category term='seo'/><category term='meta'/><category term='certification'/><category term='infrastructure'/><category term='rotfl'/><category term='servlets'/><category term='identity'/><category term='orm'/><category term='vpn'/><category term='standards'/><category term='management'/><category term='estimation'/><title type='text'>one mikro2nd</title><subtitle type='html'>programming, software architecture, design, user-experience</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default?start-index=101&amp;max-results=100'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>104</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5778847093370762036</id><published>2012-02-06T09:34:00.003+02:00</published><updated>2012-02-06T09:34:33.613+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Work Wanted</title><content type='html'>This is a small call for help. I am looking for work, and need your help.&lt;br /&gt;&lt;br /&gt;Contract or permanent. Preferably (but not exclusively or even at all) telecommute. I can code, design, architect software, consult in any of these (and dev process/team issues) and teach a variety of Java, OO Design and web development topics, and would be happy to do any/all of these. I additionally have some experience doing system administration work. I work in Linux/Unix environments and know next-to-nothing about Windows.&lt;br /&gt;&lt;br /&gt;I've done web stuff, and loads of backend "heavy lifting" coding where reliability, scalability, etc. are important. I am &lt;i&gt;not&lt;/i&gt;&amp;nbsp;good at quick'n'dirty. Skeptical of the value of buzzwords and big-arse frameworks.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://www.coco.co.za/"&gt;my "business" website&lt;/a&gt; for more details about me and what I've done in the past.&lt;br /&gt;&lt;br /&gt;R (as they say) "highly neg".&lt;br /&gt;&lt;br /&gt;If you have anything suitable, or know of anything that fits, please drop me a line.&lt;br /&gt;&lt;br /&gt;I will be in Cape Town and environs next week, so an ideal time to get together and chat about possibilities and opportunities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5778847093370762036?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5778847093370762036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2012/02/work-wanted.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5778847093370762036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5778847093370762036'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2012/02/work-wanted.html' title='Work Wanted'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5080504013176851778</id><published>2011-11-11T10:09:00.001+02:00</published><updated>2011-11-11T10:17:28.131+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android Nails Sandboxing</title><content type='html'>So I'm learning to programme the &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; platform. Despite&amp;nbsp;constantly&amp;nbsp;typing it as "Androind" finding programming fun again after many years of regarding it as somewhere between&amp;nbsp;&lt;i&gt;tiresome drudgery&lt;/i&gt;&amp;nbsp;and&amp;nbsp;only &lt;i&gt;mildly interesting in sporadic parts&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;It's early days, yet, but I do think that Android's architects had one flash of brilliant insight: Using Unix user and group permissions to sandbox applications. Brilliant! We've had this mechanism since forever, and let's be honest, it's never been all that useful except in the very early years of Unix when we actually did have to put&amp;nbsp;multiple&amp;nbsp;users on a single computer. And even then, most users didn't understand it. Questions about &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;umask&lt;/span&gt;&amp;nbsp;and file permissions are among&amp;nbsp;the&amp;nbsp;commonest of Unix confusions I've run across for the past 25-odd years.&lt;br /&gt;&lt;br /&gt;Warping the idea to mean that every application is a&amp;nbsp;unique&amp;nbsp;user is a flash of inspiration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5080504013176851778?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5080504013176851778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/11/android-nails-sandboxing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5080504013176851778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5080504013176851778'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/11/android-nails-sandboxing.html' title='Android Nails Sandboxing'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6206517059778091487</id><published>2011-11-09T20:06:00.000+02:00</published><updated>2011-12-11T14:34:54.942+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit-tests'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>QOTD</title><content type='html'>&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;'the idea of immediate compilation and "unit tests" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t. Otherwise, lots of time is wasted on activities that I simply never need to perform or even think about. Nothing needs to be "mocked up."'&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.informit.com/articles/printerfriendly.aspx?p=1193856"&gt;&lt;span style="font-size: x-small;"&gt;Donald Knuth 25 April 2008&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(Okay, so I'm late to the party. As always.)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6206517059778091487?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6206517059778091487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/11/qotd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6206517059778091487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6206517059778091487'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/11/qotd.html' title='QOTD'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4572971596421175154</id><published>2011-08-06T19:02:00.000+02:00</published><updated>2011-12-09T09:54:04.947+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='change'/><title type='text'>Design using Other Peoples' APIs</title><content type='html'>Where you are dependant upon somebody else's API, decouple from that API at the earliest possible opportunity so that the remainder of your system works in terms of your own abstractions rather than that somebody else's. This shields you from the random, spurious, and often unwarned changes they may make. It also enables you to place guards against the various stupidities they may likely perpetrate in the name of fashion or unthinkingness, and ensures that you are - as much as possible - forced to deal only with your own stupidities and unthinkingess.&lt;P&gt;This injunction includes decoupling from your own APIs where those are non-core to the subsystem under design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4572971596421175154?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4572971596421175154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/08/design-using-other-peoples-apis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4572971596421175154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4572971596421175154'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/08/design-using-other-peoples-apis.html' title='Design using Other Peoples&apos; APIs'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-70677746949760527</id><published>2011-06-05T23:41:00.000+02:00</published><updated>2011-12-01T12:30:58.728+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Housekeeping Note - Server Change</title><content type='html'>Explaining why I've been so quiet lately: Migrating data and upgrading the software that runs the blogs and farm site (plus a bunch of other stuff) to a new server.&amp;nbsp; Yay upgrade!&amp;nbsp; Boo problems!&amp;nbsp; Just in time, too, it would seem, since the old server started mysteriously and frequently rebooting for no good reason, so I'm pretty sure that its been down more than its been up for about ten days now. :-(&lt;br /&gt;&lt;br /&gt;Sorry if its all been very dodgy.&lt;br /&gt;&lt;br /&gt;If anybody notices anything noticably untoward, please let me know -- I think I've moved everything over successfully, but not yet 100% sure, but, with the old server dying, I just want everything off it as soon as possible, so haven't had time to test all my new configuration properly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-70677746949760527?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/70677746949760527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/06/housekeeping-note-server-change.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/70677746949760527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/70677746949760527'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/06/housekeeping-note-server-change.html' title='Housekeeping Note - Server Change'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4395909154440757863</id><published>2011-05-23T19:07:00.000+02:00</published><updated>2011-12-11T12:37:04.161+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='ui'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Web Site Passwords</title><content type='html'>"Signing up" for yet another something-social-facebook-wannabe website, I was struck by a random Thought Particle.&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Why do all these websites ask me to enter a password twice?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;No, seriously! I know the stock answers. Hell, I've written such web-signup forms myself, more times than I care to think about.&lt;br /&gt;&lt;br /&gt;Am I that likely to misspell a password? And who would care, when all I have to do is click a link that says something like, "I forgot my password!" to get a new password sent to me. Or a reminder. Or my original password. Or some other way of recovering from my "spelling error".&lt;br /&gt;&lt;br /&gt;So, tell me again, &lt;em&gt;why are we typing these things twice inthe first place?&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4395909154440757863?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4395909154440757863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/05/web-site-passwords.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4395909154440757863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4395909154440757863'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/05/web-site-passwords.html' title='Web Site Passwords'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-9192355783222333749</id><published>2011-05-11T23:51:00.000+02:00</published><updated>2011-12-11T12:15:16.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><category scheme='http://www.blogger.com/atom/ns#' term='programmers'/><category scheme='http://www.blogger.com/atom/ns#' term='interviewing'/><title type='text'>The Magic Key to Hiring Software Developers</title><content type='html'>Over the past several months and a half I seem to have run across a lot of Development Managers&lt;span style="font-size: xx-small;"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/span&gt; who repeatedly and quite consistently make poor-ranging-to-terrible hiring decisions about prospective developers.&lt;br /&gt;&lt;br /&gt;One company I know about has had such terrible luck in hiring developers that they're looking at outsourcing all their development needs. And they're a software house! But you can hardly blame them for feeling demoralised and dispirited after numerous bad hires. Or can you...?&lt;br /&gt;&lt;br /&gt;I recently met a programmer - let's call him Arthur&lt;span style="font-size: xx-small;"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/span&gt; - who was looking for some Java training. He has experience developing in C, and was looking for a basic Java foundation course, but he needs it to be spread out over evening and weekends. I found this to be admirable! A programmer investing in broadening his skills in his own time and at his own cost!&lt;br /&gt;&lt;br /&gt;I don't normally take on that sort of part-time training, but decided to try and assist a fellow Seeker In Pursuit Of Excellence, and engaged Arthur further on ways we might be able to work together. Especially challenging, since I am not even within 500km of the same city as Arthur.&lt;br /&gt;&lt;br /&gt;As the emails and telephone conversations flowed back and forth, I soon developed a sense the something was amiss. It took a while, but Arthur eventually told me that he needed the training "urgently and quickly". &lt;em&gt;The penny dropped&lt;/em&gt;...&lt;br /&gt;&lt;br /&gt;It took me back to a day some 8 or 10 months ago when, whilst helping a client with some recruitment interviews, I came across a candidate-programmer who clearly was unable to program at all. A fellow who allegedly held advanced degrees, and could certainly talk a good project, but who evaded and avoided any and all questions about actual programming. Asked anything about how he would design a programme for a variety of small and typical programming problems, he ducked and he dived, twisted, turned and blathered. Clearly he was unable to write code at all.&lt;br /&gt;&lt;br /&gt;It is my working hypothesis that Arthus has talked his way into a Java development position, but is unable to code in Java. By his own admission he knows nothing of object-oriented design. I further conjecture that he may be unable to programme &lt;em&gt;at all&lt;/em&gt;, and is not so much seeking a Teacher, but rather wants someone to whom he can effectively sub-contract his daytime work.&lt;br /&gt;&lt;br /&gt;There are two mysteries wrapped up in these incidences.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;How do such "developers" get hired in the first place?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Clearly the managers hiring them &lt;em&gt;never, ever ask them to write code&lt;/em&gt; at any point in the recruitment process.&lt;br /&gt;&lt;br /&gt;I have seen a good number of articles of late urging companies who are hiring software developers to make sure that candidates write code live, sometime during the interview process. Isn't this obvious? If you want to hire a bus driver, isn't it logical to put them behind the wheel of a bus and see how they handle the job? Why do we apply a different standard for testing the competence of software developers?&lt;br /&gt;&lt;br /&gt;The actual form of code, and the depth of testing can vary, and need not be done all at once. You might simply ask for a whiteboard sketch of a solution in initial interviews. It may not always be necessary to sit candidates down with an IDE and some of your senior developers. Even the most superficial competence checking will quickly revela any bullshit artistry, and I firmly maintain that all people are possessed of exquisitely sensitive bullshit recognition skills.&lt;br /&gt;&lt;br /&gt;In a sense, though - for me, anyway - there's a weirder question...&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;How does someone completely lacking competence in a skill have the chutzpah to talk their way into the job at all?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I can't imagine applying for a job as a Bus Driver. Sooner or later someone's going to expect me to actually drive an actual bus. And I can't. What makes people think they can get away with it just because the job ad says "Java Developer"?&lt;br /&gt;&lt;br /&gt;Moral of the story? Just repeating what so many others have already said, in the hope that we can get the word out better. And we do have to get more hiring managers to pay attention, because evidently a whole lot of them are not paying attention yet. If you're hiring a developer, have them write code in front of you. If you really don't have the skills to judge their comptence, and you're starting with a completely new technology so that you lack any already-hired developers who do have the necessary technical skills, then get an outside consultant in to help. Or something.&lt;br /&gt;&lt;br /&gt;But please stop hiring bullshit artists who claim to be software developers.&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;They're giving the rest of us a bad name.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Update&lt;/strong&gt;: Also beware of technical Trainers who are unable to show you any of their code. &lt;em&gt;Another smell of bullshit artistry!&lt;/em&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size: x-small;"&gt;[1] People acting in the role of Dev Manager, at any rate.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] I don't know anyone named Arthur, so I'm reasonably sure I'm not subconsciously picking on anyone.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-9192355783222333749?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/9192355783222333749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/05/magic-key-to-hiring-software-developers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/9192355783222333749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/9192355783222333749'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/05/magic-key-to-hiring-software-developers.html' title='The Magic Key to Hiring Software Developers'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7764750436694327400</id><published>2011-04-20T20:39:00.000+02:00</published><updated>2011-12-11T12:10:20.567+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web-development'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='software-development'/><title type='text'>shrtn: A URL-shortener</title><content type='html'>&lt;em&gt;Everyone should have their own personal URL shortener, shouldn't they?&lt;/em&gt;&lt;br /&gt;I figured that this wouldn't take more than a couple of hours to write. And, indeed, the core functionality didn't take much more time than that. But then we start designing our way round the shortcuts and quick-and-dirty hacks we've used to "get things going quickly", writing unit-tests and comments explaining our thinking, adding some JSP pages so that we can exercise the whole mess, brewing a couple of batches of beer in between times... let's just leave it at &lt;em&gt;a little bit longer&lt;/em&gt;!&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Indeed! Why would anybody want &lt;a href="http://1.mikro2nd.net/op0R"&gt;Their Very Own Personal URL Shortener&lt;/a&gt;?&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;First&lt;/em&gt;: I don't really trust all the "cloudy" hype going around right now. For a start, I have no good reason to trust &lt;a href="http://bit.ly/"&gt;bit.ly&lt;/a&gt;, &lt;a href="http://is.gd/"&gt;is.gd&lt;/a&gt;, &lt;a href="http://goo.gl/"&gt;goo.gl&lt;/a&gt; or any of the other several-dozen public shorteners. Not that I have much reason to &lt;em&gt;dis&lt;/em&gt;trust them, but really, I don't know them or the people behind them from a bar of soap. And why should I, like a sheep, participate in generating value&lt;sup&gt;[1]&lt;/sup&gt; for someone who gives me little or nothing in return aside from a shorter, opaque URL that requires an extra network round-trip? And let's not forget that these entities have a nasty tendency to vanish, sometimes rather abruptly. Companies get bought and the acquiring company borgs the product, or sees no value in it, or any of a thousand other corpthink accidents may happen.&lt;br /&gt;&lt;br /&gt;Then, too, what sort of assurance do I have that I'll ever be able to get my data (and if I shorten a reference, it's &lt;em&gt;my reference&lt;/em&gt;) out of their service ever again? Granted that Google does make &lt;a href="http://www.dataliberation.org/"&gt;some effort&lt;/a&gt; in that direction (or at least nods benignly while their engineers do it), but, like the actions of the &lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=Kakistopoly"&gt;kakistocracy&lt;/a&gt; throughout history, things are only good until a single bad apple rots the barrel.&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Second&lt;/em&gt;: I don't have PHP deployed on my servers and have no wish to add to the system-administration burden I already have to deal with, so I distinctly want something written in Java...&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Third&lt;/em&gt;: A whole lot of the URL-shortening services out there don't give any analytics. At least not of those that I can self-host. I think that the analytics angle is compelling. Conventional web analytics - like Google Analytics - are only accessible to the people who created and host the content under analysis. They know where their audience came from, when and how, but nobody else does. If I refer people to some web-stuff&lt;sup&gt;[2]&lt;/sup&gt; I'd like to get an idea of how many people I influenced - how many people followed my recommendation. It is a measure of my own reputation and influence, so highly personal&lt;sup&gt;[3]&lt;/sup&gt;. URL-shorteners give us a way to measure, with a reasonable degree of accuracy and assurance, the influence we have in persuading others to follow our webby blatherings.&lt;br /&gt;&lt;br /&gt;I will confess that &lt;a href="http://goo.gl/"&gt;Google's shortening service&lt;/a&gt; is pretty good, and has some nice-ish analytics, but I still think it's in our own best interest to keep at least some stuff out of Google's (or anybody's) mitts. Just on general principles.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;An Unexpected Bonus&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As it turns out, this is a really, really nice project to use for teaching a JSP/Servlet course, so I'll be reversing it into my &lt;a href="http://coco.co.za/wiki/JavaWebApplicationProgramming"&gt;Java web-dev course&lt;/a&gt;. It covers all the principles I like to get across, from container-managed security through session management and clever use of error-pages, to exploiting the underlying infrastructure properly (instead of hoping that some crapulatious web framework will substitute for your own lack of knowledge or understanding.)&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Where?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I'll be releasing the code under the &lt;a href="http://www.gnu.org/licenses/agpl.html"&gt;GNU Affero General Public License&lt;/a&gt;&amp;nbsp;(probably via Google Code). Just have some tidying-up to do first (like getting license notices in place.) The first deployment is &lt;em&gt;very&lt;/em&gt; feature incomplete - there's quite a bit I'd still like to add to the app - and some downright dodgy implementation details that need replacing in time, but for now its working for me.&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Drop me a line if you're desperate to have it work for you and can't wait...&lt;/em&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size: x-small;"&gt;[1] At least I assume they get some value out of hosting their shorteners, otherwise why would they do it?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] I despise the word "content", despite using it quite frequently.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[3] And, YES, ego-gratifying&lt;sup&gt;[4]&lt;/sup&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[4] Or ego-destroying, as the case may be.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7764750436694327400?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7764750436694327400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/04/shrtn-url-shortener.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7764750436694327400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7764750436694327400'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/04/shrtn-url-shortener.html' title='shrtn: A URL-shortener'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1650678231229864676</id><published>2011-04-15T00:19:00.000+02:00</published><updated>2011-12-11T14:04:35.297+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='web-development'/><title type='text'>SEO Fail</title><content type='html'>So. I've been working quite hard at getting course material together... mainly for &lt;a href="http://coco.co.za/wiki/ObjectOrientedSoftwareAnalysisAndDesign"&gt;OO Software Analysis Design&lt;/a&gt; courses and a &lt;a href="http://coco.co.za/wiki/PatternsOfOODesign"&gt;Design Patterns&lt;/a&gt; course. The motivation comes from years and years of teaching Other Peoples Courses and experience a deep and abiding dissatisfaction with the material I am handed to work with. I strongly suspect that my students sense this... &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Not Good!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So - after a very, very long time umming and aahing over it - I've put my own course materials together. Blatantly stealing tricks and tips from the &lt;a href="http://www.headfirstlabs.com/"&gt;HeadFirst&lt;/a&gt; books, plans include incorporating video and even music. Dare I say I've done a whole lot better than the usual run-of-the-mill courseware? Order of magnitude? But that would be presumptuous, wouldn't it?&lt;br /&gt;&lt;br /&gt;Along the way I realised that I needed to pay a whole lot of attention to my &lt;a href="http://coco.co.za/"&gt;(business) website&lt;/a&gt;. The &lt;a href="http://web.archive.org/web/*/http://coco.co.za"&gt;old one&lt;/a&gt; sucked. Bad! Not at all descriptive of what I'm now doing or trying to achieve in the OO design and architecture space. So I spent a little time reading up on the website of that &lt;a href="http://google.com/ncr" target="_blank"&gt;famous search engine&lt;/a&gt; about how best to structure my site and its content for searching. How to better market what it is I do. I read all about "not using Black Hat SEO" techniques. I paid strict attention to their advice! And I went forth and restructured... but only in a good way! What you see is what the googlebot gets. No tricks!&lt;br /&gt;&lt;br /&gt;The result?&lt;br /&gt;&lt;br /&gt;Falling from a page-rank of nearly fuck all, I now have a page rank of... &lt;b&gt;zero&lt;/b&gt;. Thanks, Google! I guess I'll take my advertising business over to Microsoft, now.&lt;br /&gt;&lt;br /&gt;I can only speculate what might have brought this on. Perhaps I got listed on some directory site that Google's software considers Bad News. That's the most likely thing I can think of... Or did I just use words like "software design and architecture" a time or two too many? Perhaps it was the word "Java"...&lt;br /&gt;&lt;br /&gt;Unfortunately - like The Borg - there's no Human Person one can contact at Google to say, "Hey! I'm really a Person. What went wrong here and how do I fix it?" Pretty much I'm screwed. Where my site was ranking very well for searches on stuff like "software design training", "Java training"&amp;nbsp; and "software architecture course" last week, this week I'm nowhere to be seen. Instead you'll see listing from schmucks offering the same-old same-old. The same tired, half-hearted training crap that led me to start developing my own course material in the first place!&lt;br /&gt;&lt;br /&gt;So what's a Real Human to do? I guess I'll just have to live with it. After all, my reputation amongst intelligent human beings is top-notch... not something I have to worry about. So do I need to get upset over how some software see me?&lt;br /&gt;&lt;br /&gt;Probably not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1650678231229864676?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1650678231229864676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/04/seo-fail.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1650678231229864676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1650678231229864676'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/04/seo-fail.html' title='SEO Fail'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-615562608928928967</id><published>2011-02-15T22:05:00.000+02:00</published><updated>2011-12-09T17:21:09.913+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Test-First for Mental Health</title><content type='html'>I've been thinking recently about how a Test-First approach to development is good for our &lt;span style="font-weight: bold;"&gt;emotional well-being&lt;/span&gt; and psychological balance, and I believe this may be the &lt;span style="font-weight: bold;"&gt;most important&lt;/span&gt; reason to adopt test-driven&amp;nbsp; development.&lt;br /&gt;&lt;br /&gt;Consider how we would traditionally develop software using a conventional Test-Last approach. We read our requirement spec (&lt;a href="http://mikro2nd.net/blog/mike/business/2008/06/18/Damager-or-Manager.html"&gt;whatever form that takes&lt;/a&gt;), perform &lt;a href="http://mikro2nd.net/blog/mike/business/2010/08/03/Measuring-Progress.html"&gt;some design&lt;/a&gt; work -- as much as we feel we need to go forward with some confidence, and we start cutting code. Time goes by. Our codebase grows. We're doing some informal testing as we go along to feel confident that the code under development does what we think it should be doing...&lt;br /&gt;&lt;br /&gt;And here's Important Point Number One: "the code does what &lt;span style="font-weight: bold;"&gt;we (the developers!)&lt;/span&gt;&lt;span style="font-style: italic;"&gt; think&lt;/span&gt; it &lt;span style="font-style: italic;"&gt;should&lt;/span&gt; be doing". Not what the &lt;span style="font-style: italic;"&gt;business&lt;/span&gt; thinks it ought to be doing. See? We're inherently unsure -- even if only subconsciously -- whether we're doing work that actually serves the business. And unsureness is insidious and destructive to our well-being. We feel much better about ourselves as developers when we know that we're producing useful stuff that really has value. So here's the first way that having tests defined up-front helps us preserve our mental balance: With a reasonable set of tests&lt;super&gt;1&lt;/super&gt;, defined together with our business partners, there's no bullshit involved; no trying to convince ourselves of the (probably shaky) value of our ever-growing codebase. We have an external, automated, objective, easily understood yardstick of value.&lt;br /&gt;&lt;br /&gt;But there is, I think, a deeper psychological value to the Test-First approach.&lt;br /&gt;&lt;br /&gt;So much of the time -- I will thumbsuck something like &lt;span style="font-weight: bold;"&gt;99%&lt;/span&gt; of the time -- our code is &lt;span style="font-weight: bold;"&gt;broken&lt;/span&gt;. The system we're working on &lt;span style="font-weight: bold;"&gt;doesn't work&lt;/span&gt;. This is inherent in the fact that it takes us &lt;span style="font-style: italic;"&gt;time&lt;/span&gt; to design and write software, and the continual not-workingness can be powerfully demoralising. Especially when we (finally, right towards the end of the project lifecycle) start formal testing, and our tester (often users) start coming back with bug after bug after bug after bug, and all that beautiful code we're so proud of is labelled "&lt;span style="font-weight: bold;"&gt;Less Than Satisfactory&lt;/span&gt;" -- usually in much stronger language than that.&lt;br /&gt;&lt;br /&gt;Herein lies the secret destructiveness of Test-Last. Our code is &lt;span style="font-weight: bold;"&gt;always broken&lt;/span&gt;, and we can never do more than run after the brokenness trying to patch it up, until, at last, demoralised and exhausted, we move on to the next job or project.&lt;br /&gt;&lt;br /&gt;Contrast this with a Test-First pattern.&lt;br /&gt;&lt;br /&gt;We first write a bunch of tests. Sure it takes some time, can often be pretty tedious, and is frequently little more than a first-pass best-guess at what the code is supposed to do. Almost certainly we will add more tests as our code grows and evolves and begins to tell us the shape it wants and needs to be. But at least we &lt;span style="font-style: italic;"&gt;start&lt;/span&gt; with a battery of (automated!) tests. And we start with the &lt;span style="font-style: italic;"&gt;expectation&lt;/span&gt; of them all failing. &lt;span style="font-style: italic;"&gt;This is by definition!&lt;/span&gt; We haven't written the necessary code, yet. A short time later we may have enough of the boilerplate in place that we can at least compile everything and actually run our tests, but we still expect them all to fail because our methods all read&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;throw new UnsupportedOperationExcetion( "TODO" );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So we run our tests, and they &lt;span style="font-weight: bold;"&gt;all&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;fail&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;And we're happy about that!&lt;/span&gt; Everything went as we predicted. &lt;span style="font-style: italic;"&gt;We feel in control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As we go along replacing those stubbed-out methods, some of our tests begin to go green. &lt;span style="font-style: italic;"&gt;We're making visible progress&lt;/span&gt; towards a well-defined end goal. We gain an &lt;span style="font-style: italic;"&gt;ever-increasing&lt;/span&gt; feeling of confidence and accomplishment. We have tangible, objective evidence that we're making progress. Even when we make some of the "test bar" revert somewhat to red -- because we add new tests, or because we do some large-scale refactoring that breaks stuff -- we still feel good about it, because we know that our self-built safety-net is &lt;span style="font-style: italic;"&gt;working&lt;/span&gt;! We've actually &lt;span style="font-style: italic;"&gt;decreased&lt;/span&gt; the likelihood of things going wrong, so we know we're &lt;span style="font-weight: bold;"&gt;enhancing the quality&lt;/span&gt; of our product. (And every good developer I've ever worked with has an inner Proud Craftsman lurking in their soul.)&lt;br /&gt;&lt;br /&gt;So it seems to me that Test-First builds our confidence and self-esteem as we go along, whereas Test-Last contains an inherently destructive, soul-sapping subversiveness to it.&lt;br /&gt;&lt;br /&gt;I think this value outweighs the sum of &lt;span style="font-style: italic;"&gt;all&lt;/span&gt; the other benefits (many though they are) of Test-First.&lt;br /&gt;&lt;hr align="left" width="33%" /&gt;&lt;span style="font-size: x-small;"&gt;[1] Note that I make no distinction, here, between Unit Tests, Functional Tests, or System Tests (which would probably involve real databases, external systems, and so forth, albeit serving test data to our system-under-test.) I don't really care what form of Test-First is most useful to your team and situation. It's the principle that counts!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-615562608928928967?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/615562608928928967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/02/test-first-for-mental-health.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/615562608928928967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/615562608928928967'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/02/test-first-for-mental-health.html' title='Test-First for Mental Health'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8446336808052911045</id><published>2011-02-08T21:17:00.000+02:00</published><updated>2011-12-11T12:24:26.850+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><title type='text'>Fusion Cuisine: Slicing and Dicing Courses to Suit Different Palates</title><content type='html'>Ever been faced with setting up training for some of your developers, but the courses offered by the usual suspects fail to cover the technologies your team uses? Or cover technologies that you don't use? &lt;span style="font-size: smaller;"&gt;Or lack the depth you're looking for in particular areas? &lt;span style="font-size: smaller;"&gt;Or too much depth...?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was recently faced with a request from a client who want to put some of their junior developers through an &lt;a href="http://coco.co.za/wiki/IntroductionToJavaPlatformProgramming" title="Intro to Java"&gt; Intro to Java course&lt;/a&gt;. The developers in question come from various other programming backgrounds, and already understand OO concepts and normal development disciplines. The "obvious" choice is the Sun/Oracle &lt;a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getCourseDesc?dc=D61748GC10&amp;amp;p_org_id=1001&amp;amp;lang=US" title="SL-275"&gt;SL-275&lt;/a&gt; mainstay course which I have been teaching (on and off) for something like 15 years, now.&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;But!&lt;/em&gt; A good part of SL-275 – and of my own &lt;a href="http://coco.co.za/wiki/IntroductionToJavaPlatformProgramming" title="Intro to Java course"&gt;Intro to Java course&lt;/a&gt; – delves into developing applications using the Swing GUI toolkit, used to construct desktop applications. This particular client is a company that only does web-applications, so learning a bunch of Swing concepts does them little good. I was happily able to propose that, instead of using Swing for that portion of the course, we could substitute some Servlet and JSP concepts and development. This arrangement serves them much better, as it also equips their developers with knowledge they will be able to immediately put to productive use. Fortunately I have lately put in a lot of work on a Servlet/JSP course, so I'm able to cycle some of that material into the Java Intro course.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;It's not as simple as it sounds, though!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Swing portion of "Intro to Java" also serves some other pedagogic purposes. It reinforces some of the OO groundwork covered earlier in the course by driving home the differences between inheritance, containment and usage. (At least it does the way I teach it!) Swing also provides a good platform for introducing listeners (Observer Pattern in the GoF book), Java's anonymous-inner class mechanism, and the exception-handling framework, along with a bunch of other bits-and-pieces that are useful for new-to-Java developers to learn, like converting between Strings and numbers.&lt;br /&gt;&lt;br /&gt;So the challenge, now, is to make sure that I can adequately cover the same territory, and serve the same purposes, using servlets and JSPs. &lt;em&gt;Not too hard, really&lt;/em&gt;, but it should make for a fun course where we can do a lot more hands-on, practical development work than the stock SL-275 allows.&lt;br /&gt;&lt;br /&gt;The other tricky bit to watch is making sure that the level of detail doesn't overwhelm new-to-Java developers with too many web-application specifics. It is important to keep the focus on "Introduction to Java", and not lose sight of the real objective in a welter of webapp configuration and deployment.&lt;br /&gt;&lt;br /&gt;Just a single, simple example of where and when customised courses can much better match the client's needs than any standardised, templatised training provided by a 4-week-per-month manual-pusher.&lt;br /&gt;&lt;a href="http://coco.co.za/wiki/ContactDetails"&gt;Contact me&lt;/a&gt; for a course customised to your organisation's needs!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8446336808052911045?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8446336808052911045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/02/fusion-cuisine-slicing-and-dicing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8446336808052911045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8446336808052911045'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/02/fusion-cuisine-slicing-and-dicing.html' title='Fusion Cuisine: Slicing and Dicing Courses to Suit Different Palates'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7540891526637724274</id><published>2011-01-18T19:35:00.000+02:00</published><updated>2011-12-11T12:19:45.354+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='schedule'/><title type='text'>2011 Course Planning</title><content type='html'>Whew! Looks like March is going to be a &lt;a href="http://www.google.com/calendar/embed?src=4ni6ga2v5a9194fftm7i3hkoc4%40group.calendar.google.com&amp;amp;ctz=Africa/Johannesburg"&gt;busy month&lt;/a&gt;. I've planned no less than 3 courses back to back, so hard work ahead...&lt;br /&gt;&lt;br /&gt;I'll be kicking off with the 5-day "&lt;a href="http://coco.co.za/wiki/IntroductionToJavaPlatformProgramming" style="font-weight: bold;"&gt;Intro to Java&lt;/a&gt;" course on &lt;span style="font-weight: bold;"&gt;7-11 March&lt;/span&gt;. It seems like Cape Town's demand for Java developers is insatiable. I've had requests from a couple of clients for this course simply because they just can't find good Java devs for their expanding teams, and they're going to be hiring developers with good OO experience from other (non-Java) environments and training them up for Java development as an alternative. Now, I know that any good developers loves learning new stuff, so I think these clients are doing a Good Thing by offering skills-development as part of their hiring process. My job is to give them the best possible Java Platform course, and I have great plans for delivering just that!&lt;br /&gt;&lt;br /&gt;Next up will be the newly developed 5-day "&lt;a href="http://coco.co.za/wiki/JavaWebApplicationProgramming" style="font-weight: bold;"&gt;Web Application Development with Servlets and JSP&lt;/a&gt;". If you've last looked at JSP technology a few years ago, possibly run away in terror at the sight of all the horrible in-page logic that made scriptlet-based JSPs such a nightmare for maintenance, then you really owe it to yourself to get up to speed with scriptlet-free, tag-based JSP development. The course includes topics on the new, new Servlet-3.0/JSP-2.2 enhancements that use annotation-based configuration.&lt;br /&gt;&lt;br /&gt;And last, but not least, will be my much-acclaimed 4-day "&lt;a href="http://coco.co.za/wiki/ObjectOrientedSoftwareAnalysisAndDesign" style="font-weight: bold;"&gt;OO Analysis and Design&lt;/a&gt;" course – thus fitting neatly into the 4 working days that remain after the Human Rights Day public-holiday.&lt;br /&gt;&lt;br /&gt;I'm planning to run all the courses in Cape Town. (still looking for a great venue, so please drop me a line of you know of something extraordinary.)&lt;br /&gt;&lt;br /&gt;Drop me a line if you're interested in any of these. Miss this opportunity at your own risk – I will probably not be scheduling courses in Cape Town again before August!&lt;br /&gt;&lt;br /&gt;I'm offering an Early Bird discount of 20% to anybody who confirms a reservation before the end of January!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7540891526637724274?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7540891526637724274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/01/2011-course-planning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7540891526637724274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7540891526637724274'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/01/2011-course-planning.html' title='2011 Course Planning'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3253904803680553694</id><published>2010-12-07T02:49:00.000+02:00</published><updated>2011-12-11T12:57:27.906+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trust'/><category scheme='http://www.blogger.com/atom/ns#' term='infrastructure'/><title type='text'>Amazon Route 53: Trustworthy?</title><content type='html'>As a "user" of &lt;a href="http://aws.amazon.com/"&gt;Amazon's Web Services&lt;/a&gt; (I've kicked the tyres on S3, but not much more than that) I received an email from Amazon punting their new DNS service, dubbed "Amazon Route 53".&lt;br /&gt;&lt;br /&gt;I wonder though, in the wake of their termination of &lt;a href="http://wikileaks.org/"&gt;WikiLeaks&lt;/a&gt;, whether I would trust any part of my DNS infrastructure to Amazon. Suppose I did something to piss off the US governement - hosted a DNS entry for WikiLeaks, perhaps? at, say, &lt;a href="http://wikileaks.mikro2nd.net/"&gt;http://wikileaks.mikro2nd.net/&lt;/a&gt; - and some US government official notices (pretty unlikely, I know, but...) and whispers into Amazon's ear, would I, too, lose use of this critical infrastructure without review, recourse or refund?&lt;br /&gt;&lt;br /&gt;So, no! I don't think I'll be using Amazon Route 53 much...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3253904803680553694?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3253904803680553694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/12/amazon-route-53-trustworthy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3253904803680553694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3253904803680553694'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/12/amazon-route-53-trustworthy.html' title='Amazon Route 53: Trustworthy?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2213754158887977148</id><published>2010-10-18T20:56:00.000+02:00</published><updated>2011-12-09T15:08:00.862+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='web-development'/><title type='text'>HTTP Response codes &amp; msgs as Java enum</title><content type='html'>Just in case it saves someone else the tedious typing... Capitalisation of messages duplicates the inconsistencies in &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html"&gt;RFC2616&lt;/a&gt;. Don't ask me...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public enum HttpResponse {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_100( 100, "HTTP/1.0 100 Continue\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_101( 101, "HTTP/1.0 101 Switching Protocols\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_200( 200, "HTTP/1.0 200 OK\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_201( 201, "HTTP/1.0 201 Created\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_202( 202, "HTTP/1.0 202 Accepted\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_203( 203, "HTTP/1.0 203 Non-Authoritative Information\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_204( 204, "HTTP/1.0 204 No Content\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_205( 205, "HTTP/1.0 205 Reset Content\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_206( 206, "HTTP/1.0 206 Partial Content\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_300( 300, "HTTP/1.0 300 Multiple Choices\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_301( 301, "HTTP/1.0 301 Moved Permanently\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_302( 302, "HTTP/1.0 302 Found\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_303( 303, "HTTP/1.0 303 See Other\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_304( 304, "HTTP/1.0 304 Not Modified\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_305( 305, "HTTP/1.0 305 Use Proxy\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_307( 307, "HTTP/1.0 307 Temporary Redirect\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_400( 400, "HTTP/1.0 400 Bad Request\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_401( 401, "HTTP/1.0 401 Unauthorized\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_402( 402, "HTTP/1.0 402 Payment Required\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_403( 403, "HTTP/1.0 403 Forbidden\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_404( 404, "HTTP/1.0 404 Not Found\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_405( 405, "HTTP/1.0 405 Method Not Allowed\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_406( 406, "HTTP/1.0 406 Not Acceptable\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_407( 407, "HTTP/1.0 407 Proxy Authentication Required\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_408( 408, "HTTP/1.0 408 Request Time-out\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_409( 409, "HTTP/1.0 409 Conflict\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_410( 410, "HTTP/1.0 410 Gone\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_411( 411, "HTTP/1.0 411 Length Required\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_412( 412, "HTTP/1.0 412 Precondition Failed\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_413( 413, "HTTP/1.0 413 Request Entity Too Large\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_414( 414, "HTTP/1.0 414 Request-URI Too Large\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_415( 415, "HTTP/1.0 415 Unsupported Media Type\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_416( 416, "HTTP/1.0 416 Requested range not satisfiable\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_417( 417, "HTTP/1.0 417 Expectation Failed\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_500( 500, "HTTP/1.0 500 Internal Server Error\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_501( 501, "HTTP/1.0 501 Not Implemented\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_502( 502, "HTTP/1.0 502 Bad Gateway\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_503( 503, "HTTP/1.0 503 Service Unavailable\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_504( 504, "HTTP/1.0 504 Gateway Time-out\r\n\r\n" ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_505( 505, "HTTP/1.0 505 HTTP Version not supported\r\n\r\n" );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private final int intValue;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private final String msg;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private HttpResponse( int intValue, final String msg ){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.intValue = intValue;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.msg = msg;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int intValue(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return intValue;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String responseString(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return msg;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static HttpResponse forResponseCode( int responseCode ){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( HttpResponse v : values() ){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( responseCode == v.intValue() ) return v;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new IllegalArgumentException();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2213754158887977148?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2213754158887977148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/10/http-response-codes-msgs-as-java-enum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2213754158887977148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2213754158887977148'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/10/http-response-codes-msgs-as-java-enum.html' title='HTTP Response codes &amp; msgs as Java enum'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8146874354403552319</id><published>2010-10-13T23:22:00.000+02:00</published><updated>2011-12-09T09:15:47.474+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='retention'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='skills-development'/><title type='text'>A Lesson from Vegetable Gardening for Hiring (and Keeping) Better Software Developers</title><content type='html'>Right now I'm in the midst of Busy Season in the Veggie Garden: Spring Planting Time. Even busier than harvest time. You see, you can almost always delay a harvest by a few days or a week without serious consequences. But &lt;span style="font-style: italic;"&gt;you can't delay sowing&lt;/span&gt; &lt;i&gt;seed&lt;/i&gt; without reaping serious consequences 4 to 6 months down the line. Veggie gardening is all about &lt;span style="font-weight: bold;"&gt;strategy&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Just the other day I heard about a successful and growing Cape Town company planning a hiring spree for Java developers. They'll be looking for quite a number of Java developers at all skill and experience levels.&lt;br /&gt;&lt;br /&gt;But they face &lt;span style="font-weight: bold;"&gt;two key problems&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;There is an &lt;span style="font-weight: bold;"&gt;extreme scarcity&lt;/span&gt; of Java developers at any and all levels in Cape Town and surrounds.&lt;/li&gt;&lt;li&gt;They'll be competing against a very &lt;span style="font-weight: bold;"&gt;large number of other employers&lt;/span&gt; looking for large numbers of Java developers. I have, over the past couple of months, heard of numerous companies searching for 10, 12 and more "skilled Java developers".&lt;/li&gt;&lt;/ol&gt;If you're in Cape Town you can probably take a reasonably accurate guess as to who those companies are. And they're not finding any developers, are they. Let alone really excellent developers...&lt;br /&gt;&lt;br /&gt;This is great news for Java devs: Salaries are pretty competitive, even if not quite up to Jo'burg levels just yet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Hell for employers, though.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;span style="font-weight: bold;"&gt;Strategy is about Time&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;&lt;br /&gt;My main problem this Planting Season is that I don't have any compost for the garden. The key to making great compost is adding plenty of water, and the key to great veggie crops is building the soil by adding compost, year after year after year. But we're (still) in a drought, so no water. Successful crops are going to be a serious challenge this Summer...&lt;br /&gt;&lt;br /&gt;CEOs, CTOs and Development Managers who get it know that &lt;span style="font-style: italic;"&gt;investing in their developers' skills, knowledge and experience&lt;/span&gt; is investing in their own success and the success of their business. And the secret is that it can't be done overnight. It takes long-term commitment to helping their developers build their skills. And intelligent developers reward real, honest commitment to skills- and career-development with loyalty.&lt;br /&gt;&lt;br /&gt;And developers talk to each other. In their mailing lists and user-group meetings, on Facebook and Twitter, word-of-mouth ensures that developers have a pretty good idea of who is doing the interesting software, who is providing a stimulating development environment. In short, who the &lt;span style="font-style: italic;"&gt;good&lt;/span&gt; employers are. (Especially in Cape Town! The software world in CT really is a very small village.)&lt;br /&gt;&lt;br /&gt;Compost making and soil-building is a strategic practise for farmers and gardeners everywhere, whether they are organic growers (like me) or not, soil-building is of vital strategic importance. Without healthy soil we have nothing.&lt;br /&gt;&lt;br /&gt;Likewise, CEOs, CTOs and Dev Managers of companies for whom software development is a &lt;span style="font-style: italic;"&gt;strategic business activity&lt;/span&gt; have a vital interest in developing their developers.&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;span style="font-weight: bold;"&gt;Planning to Hire Developers Any Time Soon?&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;&lt;br /&gt;If you are planning to attempt to hire developers (particularly Java developers; particularly in or around Cape Town) within the next 6 months, &lt;span style="font-weight: bold;"&gt;ask yourself&lt;/span&gt; the following &lt;span style="font-weight: bold;"&gt;3 questions&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How are you going to &lt;span style="font-weight: bold;"&gt;source&lt;/span&gt; the best and brightest devs when they're almost unreachable at any price?&lt;/li&gt;&lt;li&gt;How are you going to make your company more attractive to those devs than all the &lt;span style="font-weight: bold;"&gt;competition&lt;/span&gt; you face?&lt;/li&gt;&lt;li&gt;How are you going to keep developers from &lt;span style="font-weight: bold;"&gt;job-hopping&lt;/span&gt; when they get that email from a competing employer or headhunter offering them a huge raise?&lt;/li&gt;&lt;/ol&gt;If you have good answers to all of those, then please don't call me!&lt;br /&gt;&lt;br /&gt;If you'd like help creating fertile ground for interesting minds who can help drive your software development to greater successes, &lt;a href="http://coco.co.za/wiki/ContactDetails"&gt;&lt;span style="font-weight: bold;"&gt;call me&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;hr align="left" height="1px" width="20%" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8146874354403552319?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8146874354403552319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/10/lesson-from-vegetable-gardening-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8146874354403552319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8146874354403552319'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/10/lesson-from-vegetable-gardening-for.html' title='A Lesson from Vegetable Gardening for Hiring (and Keeping) Better Software Developers'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2793308381859911773</id><published>2010-10-05T21:33:00.000+02:00</published><updated>2011-12-09T14:58:07.367+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><category scheme='http://www.blogger.com/atom/ns#' term='fowl-code'/><category scheme='http://www.blogger.com/atom/ns#' term='developers'/><category scheme='http://www.blogger.com/atom/ns#' term='skills-development'/><title type='text'>Duck Typing Developer Styles: 4 Ducks</title><content type='html'>Developers can be categorised along two orthogonal dimensions: coding-skills and design-skills. This post explains how to locate a developer according to this scheme, and describes how best to manage each development-style.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i47.photobucket.com/albums/f197/mikro2nd/coco/4ducks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://i47.photobucket.com/albums/f197/mikro2nd/coco/4ducks.png" style="width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tame Ducks&lt;/span&gt; are easy to manage, get on with the job, etc. They produce decent working code, but won't come up with the most innovative solutions. Great maintenance coders.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wild Ducks&lt;/span&gt; are your innovators who will break new ground, but it's hard to get them to follow rules, comply with standards, etc. Give them the tough stuff to code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lame Ducks&lt;/span&gt;: deal with a Lame Duck by making Duck Sandwich. Sandwich the Lame Duck between a Wild Duck and a Tame Duck. They will either learn and gain competence, so becoming a Tame Duck in time, or they will Ship Out through fear of revealing their lack of knowledge.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;QUACKS&lt;/span&gt;: talk a good project; strong tendency to bullshit their way through design by resorting to TLAs like SOA. XML and xDD. Deal with them by - again - making Duck Sandwich. The Wild Duck has exquisitely sensitive bullshit-detection capacity which, combined with their cultivated lack of tact and intolerance for freeloaders, will leave the Quack with no place to hide. The Tame Duck is there to back up the Wild Duck's assertions as to the Quack's actual performance. The Quack will almost certainly soon move on.&lt;br /&gt;&lt;br /&gt;(Where do I fit in? ;-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Credit&lt;/span&gt;: I first heard this Duck-Typing Scheme from an important mentor in my career, Nat Lunn, sometime around 1990, and so I must credit the whole story to him. Thanks, Nat!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2793308381859911773?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2793308381859911773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/10/duck-typing-developer-styles-4-ducks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2793308381859911773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2793308381859911773'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/10/duck-typing-developer-styles-4-ducks.html' title='Duck Typing Developer Styles: 4 Ducks'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i47.photobucket.com/albums/f197/mikro2nd/coco/th_4ducks.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3807435982503919776</id><published>2010-09-13T22:58:00.000+02:00</published><updated>2011-12-11T15:09:36.737+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='notetoself'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='vpn'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Setting up a PPTP VPN with KDE NetworkManager</title><content type='html'>Filed under "Notes to Myself". If this helps someone else out there, Good!&lt;br /&gt;&lt;br /&gt;The problem: to &lt;span style="font-weight: bold;"&gt;VPN into a closed Microsoft-dominated network&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;After 6 weeks of hacking at it, the client's network administrator finally managed to get the VPN set up on their office server (some version of Windows is involved, so no wonder it is an opaque and difficult process taking weeks and involving numerous reboots. I am frequently moved to wonder whether people actually &lt;span style="font-style: italic;"&gt;enjoy&lt;/span&gt; the pain that results from using Microsoft software... &lt;span style="font-style: italic;"&gt;I can't think of any other reason to use it&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;So it helps to have the admin tell you:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the gateway address for the VPN&lt;/li&gt;&lt;li&gt;your username and password&lt;/li&gt;&lt;/ul&gt;More importantly for a n00b to VPNs (i.e. me) it help to get told that&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the VPN protocol is PPTP (MS proprietary AFAICT) and&lt;/li&gt;&lt;li&gt;that it requires some (MS peculiar) encrytion scheme (MPPE) to be used.&lt;/li&gt;&lt;/ul&gt;Surprise, surprise! Only took a day to figure these things out.&lt;br /&gt;&lt;br /&gt;The rest of the trouble comes from Kubuntu Linux insisting on using the fucked-up awful &lt;span style="font-weight: bold;"&gt;NetworkManager&lt;/span&gt;. I could not find reliable/working information on setting up the correct config by hand, so was forced to rely on NM. Also tried Kvpnc, but could not make it work for the client network configuration.&lt;br /&gt;&lt;br /&gt;NM insists on setting the default route for all network traffic to be via the VPN client network. Not what I want. I need on-going access to my own local network resources as well as the VPN resources (as well as my own internet connection) as I am developing stuff that relies on local resources to work. After starting the VPN, my machine's routing table looks like&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gateway&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Genmask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flags Metric Ref&amp;nbsp;&amp;nbsp;&amp;nbsp; Use Iface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;41.133.194.199&amp;nbsp; 192.168.1.254&amp;nbsp;&amp;nbsp; 255.255.255.255 UGH&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;41.133.194.199&amp;nbsp; 192.168.1.254&amp;nbsp;&amp;nbsp; 255.255.255.255 UGH&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;192.168.0.23&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.255.255 UH&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ppp0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;192.168.1.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.255.0&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;169.254.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1000&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ppp0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;(192.168.1.0/24 is my own local net; 192.168.0.0/24 is the client's network.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note that last line. There's the troublemaker. I don't want all traffic routed to the VPN by default. I tried every possible combination of settings in the KNetworkManager applet, especially those that claim to prevent the VPN from overriding the automatic routing. I tried manually setting all the VPN info (IP address, netmasks, etc.) but that fails to work either.&lt;br /&gt;&lt;br /&gt;Ultimately I resorted to a workaround. Accept the crappy routing that NM sets up for me, then fiddle with the routing tables by hand:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo route del -net 0.0.0.0 ppp0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.254 dev eth0&lt;/span&gt;&lt;br /&gt;These 2 lines get me a sensible default route outta here, and&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo route add -net 192.168.0.0 netmask 255.255.255.0 dev ppp0&lt;/span&gt;&lt;br /&gt;gets me a route to all the client-network resources (albeit without any DNS lookups for their subdomain; this I can live without, since there are only a small handful of machines I need access to.)&lt;br /&gt;&lt;br /&gt;The resulting routing table:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gateway&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Genmask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flags Metric Ref&amp;nbsp;&amp;nbsp;&amp;nbsp; Use Iface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;41.133.194.199&amp;nbsp; 192.168.1.254&amp;nbsp;&amp;nbsp; 255.255.255.255 UGH&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;41.133.194.199&amp;nbsp; 192.168.1.254&amp;nbsp;&amp;nbsp; 255.255.255.255 UGH&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;192.168.0.23&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.255.255 UH&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ppp0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;192.168.1.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.255.0&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;192.168.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.255.0&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ppp0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;169.254.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1000&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192.168.1.254&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UG&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 eth0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Can't say it's pretty, but it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3807435982503919776?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3807435982503919776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/09/setting-up-pptp-vpn-with-kde.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3807435982503919776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3807435982503919776'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/09/setting-up-pptp-vpn-with-kde.html' title='Setting up a PPTP VPN with KDE NetworkManager'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7885278245413132885</id><published>2010-08-03T19:49:00.000+02:00</published><updated>2011-12-09T10:17:14.054+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><category scheme='http://www.blogger.com/atom/ns#' term='metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='methodology'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='software-development'/><title type='text'>Measuring Progress in  Software Development</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am about to take on the leadership of a new, still-in-formation developer team, on a project - the first of several - of critical importance to the client. This means that everything is up for negotiation: team structure, development methodology, coding styles, frameworks to be used,... &lt;span style="font-style: italic;"&gt;everything&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Initially my role was confined to that of Consulting Architect, but, by force of circumstance, has evolved to Architect and Team Leader &lt;i&gt;p&lt;/i&gt;&lt;span style="font-style: italic;"&gt;ro tem&lt;/span&gt; for a few months while the client gets their dev team properly resourced and settled-in. Naturally I'm trying to help that along as best I can.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Methodology&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The client initially planned to use a BDUF (Big Design Up Front), waterfall approach to the project. The requirement is extremely well-known and quantified, in a very well understood business domain. &lt;br /&gt;&lt;br /&gt;I have never believed in my tummy that BDUF is in any sense realistically or practically achievable, though, even long before the Agile Movement tore the idea to shreds. It is impossible to foresee every detailed design element, no matter how hard you work at it. On the other hand, some Agile proponents seem to say that &lt;span style="font-weight: bold;"&gt;no&lt;/span&gt; up-front design is necessary... &lt;span style="font-style: italic;"&gt;Perhaps my hearing is playing tricks with me. &lt;/span&gt;I cannot agree with them, either.&lt;br /&gt;&lt;br /&gt;So call me a proponent of &lt;span style="font-weight: bold;"&gt;SDUF&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;Some&lt;/span&gt; Design Up Front.&lt;br /&gt;&lt;br /&gt;And on the Process front, I don't think there's a lot to argue about when we contrast a waterfall/sequential process with an agile/incremental process. For me the critical difference lies in how we report and feed-back progress and how frequently we do this. And what we do about the feedback we receive - how flexibly we accommodate direction changes from customers, business sponsors, unit-tests,... to change the still-in-the-pipeline development and requirements &lt;span style="font-style: italic;"&gt;without&lt;/span&gt; completely trashing the budget and time-to-market constraints. An also-essential aspect of agile development is "to reflect on what has gone before, and to adjust what we do to make &lt;br /&gt;things better." [&lt;a href="http://xprogramming.com/articles/beyond-agile-synthesis/"&gt;Ron Jeffries&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;Waterfall possibly still does have a place in some circumstances. I can't honestly say that I've ever actually been party to such circumstances, though I've certainly been on projects where some of our business partners thought they needed hard, contractual milestones with no going back. (In reality we always "went back" anyway, when necessary, after some amount of renegotiation.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Metrics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A very greenfield situation, this, which some people would immediately call a "wonderful opportunity", but which I very much see as a "two-edged weapon"...&lt;br /&gt;&lt;br /&gt;The question that has been most on my mind is, "&lt;span style="font-style: italic;"&gt;What should we measure?&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;I am a very firm believer in the old saw, "&lt;span style="font-style: italic;"&gt;Tell me how you Measure me, and I'll tell you how I Behave&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;Measure a sales-person by the number of sales, and you'll get a high order volume of the easiest-to-sell products, regardless of whether they represent the best margins or quality-of-business for the company. Measure the same sales-person by margin-value of product, and you'd best hope that your high-margin products are ones that lots of people &lt;span style="font-style: italic;"&gt;want&lt;/span&gt; to buy. Measure them by the number of sales calls they make and you'll have lots of calls that don't result in sales.&lt;br /&gt;&lt;br /&gt;Here is where I believe that some Scrum proponents are going wrong... We take Features and break them up into Tasks - the developers' unit-of-work. And they measure Task completions using a &lt;a href="http://en.wikipedia.org/wiki/Burn-down_chart"&gt;burn-down chart&lt;/a&gt; of Tasks completed versus time. This can easily result in a situation where many Tasks are being completed, but not so many Features. A situation where Features reach an 80%-complete state, and then get stuck, for any of a variety of reasons, all of which amount to "Nobody wants to complete those Tasks" because they're boring,... or they're "just" test Tasks,... or they're difficult (because not well understood), or...&lt;br /&gt;&lt;br /&gt;The solution is really simple. Just measure Feature completion instead of Task completion. Then the team only gets rewarded when Features or User Stories get completed. We only get beer and Pizza when the Business gets value.&lt;br /&gt;&lt;br /&gt;But is this enough? Can we go further? Is there a way to tie developer reward directly to delivered Business Value?&lt;br /&gt;&lt;br /&gt;In the situation I'm headed into, Business Value should be pretty easy to quantify: The product to be built is one that will directly generate revenue for the company, so we can very easily quantify how much Business Value the software is generating. (Successful completion of the product will also deliver a huge&amp;nbsp; strategic Business Value by enabling &lt;span style="font-style: italic;"&gt;new&lt;/span&gt; revenue streams, but that's also quite easy to quantify, and, indeed, is the prime reason the client is taking on this quite substantial investment in the first place...)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Are there ways to close the loop?&lt;/span&gt; To feed-back to the dev team on how much business-value their efforts are generating without making money too much of an up-front issue? Then, too, I have a reservation: Developers can have notoriously short memories, and the sort of value we're talking about here is only delivered on longer time-scales... Maybe it's good to have both long-time-loop feedbacks as long as we also have the short-timespan feedback in place &lt;span style="font-style: italic;"&gt;as well&lt;/span&gt;... Waterfall's failures are largely a result of too little feedback taking too much time for us to correct project course when we need to.&lt;br /&gt;&lt;br /&gt;My instinct is that moving towards a &lt;a href="http://www.threeriversinstitute.org/blog/?p=516"&gt;continuous deployment process&lt;/a&gt; (the step beyond continuous integration) might help to shorten this feedback loop, which is completely the point of "agile" thinking, but I'm still not really &lt;span style="font-style: italic;"&gt;clear&lt;/span&gt; on how we might implement it.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7885278245413132885?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7885278245413132885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/08/measuring-progress-in-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7885278245413132885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7885278245413132885'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/08/measuring-progress-in-software.html' title='Measuring Progress in  Software Development'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3578514817258682260</id><published>2010-07-29T02:14:00.000+02:00</published><updated>2011-12-11T12:31:15.453+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Refresher Training is Good, Too!</title><content type='html'>Some while ago I was teaching a course -- &lt;a href="http://coco.co.za/wiki/JavaWebApplicationProgramming"&gt;Java Web Application Programming&lt;/a&gt;, as it happens --&amp;nbsp; to a group of quite-experienced web developers working in a large corporate environment. Needless to say, we all thought that this was yet another case of the Training Department getting their act together waaaay too late...&lt;br /&gt;&lt;br /&gt;We soon discovered, however, that some of the core concepts and technologies of Java Web Application development were, at best, only poorly understood, even by the most experienced developers in the group. Many of the details of the HTTP protocol were unknown to them, as was the development of custom Tag Libraries -- a key component for developing clean, maintainable Java Web applications without in-page scripting. They had not thought much about the consequences of placing large (multi-megabyte) objects in the application Session... (this is in a clustered web-container environment!)&lt;br /&gt;&lt;br /&gt;This is not a criticism of those developers! They had, for years, been delivering absolutely critical business functionality. This is merely an observation that technologies move on; sometimes developers need a little help to catch up, since their management usually neglects to allow time for self-study catch-up on new evolutions in the technology.&lt;br /&gt;&lt;br /&gt;More important, it is an observation that Development Managers, Team Leaders and Project Managers shouldn't assume that their developers are completely up-to-date on the technologies they're using for day-to-day development.&lt;br /&gt;&lt;hr align="left" height="1px" width="25%" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: italic;"&gt;Replicated from &lt;/span&gt;&lt;a href="http://coco.co.za/wiki/KeyTechnologyTrainingStory" style="font-style: italic;"&gt;http://coco.co.za/wiki/KeyTechnologyTrainingStory&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3578514817258682260?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3578514817258682260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/07/refresher-training-is-good-too.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3578514817258682260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3578514817258682260'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/07/refresher-training-is-good-too.html' title='Refresher Training is Good, Too!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4604707529898856338</id><published>2010-06-21T19:44:00.000+02:00</published><updated>2011-12-11T12:06:04.803+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trust'/><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='kakistopoly'/><title type='text'>Nedbank Service Fail</title><content type='html'>&lt;br /&gt;&amp;lt;span style="font-style: italic;"&amp;gt;Rant ahead. Feel free to leave now.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;No, really! This is just whining in public about the unbelievably crapulatious service Nedbank dishes out to its customers.&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;A service I recurringly buy, and have repeatedly bought for... oh, probably more than 5 years, now... using the self-same &amp;lt;span style="font-weight: bold;"&amp;gt;Nedbank&amp;lt;/span&amp;gt; credit-card... came up for renewal yesterday. Mysteriously the transaction failed, so the vendor sent me an email to let me know. Very odd! As I say, it has worked fine for years. The card has not expired - the only reason transactions have failed before now.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Oh well, off to pay the invoice manually. Using the same card, naturally. (It's the Business card, you see, so simpler for tax and accounting than using a personal card.)&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Next thing, I find my browser redirected to some foreign website "bankserv.co.za" for "verification". &amp;lt;span style="font-style: italic;"&amp;gt;Oh yeah?!&amp;lt;/span&amp;gt; There's a crappy, pixelated copy of a Nedbank logo at the top. &amp;lt;span style="font-style: italic;"&amp;gt;That sure looks convincing!&amp;lt;/span&amp;gt; And they're asking me for all sorts of account details, including my CVV number, ID number, and some arbitrary and mysterious field labeled only "Personal".&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style="font-style: italic;"&amp;gt;What sort of phishing operation is this?&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Actually it turns out to be an alleged "Fraud Prevention" thing called 3-D Secure. I've only heard of it because I know people who have had the pain of implementing payment solutions that use it.&amp;lt;br /&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Question&amp;lt;/span&amp;gt;: Why did Nedbank not &amp;lt;span style="font-style: italic;"&amp;gt;bother&amp;lt;/span&amp;gt; to communicate to their customers that they would be requiring this much-changed payment process?&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Question&amp;lt;/span&amp;gt;: Why do Nedbank not do it on &amp;lt;span style="font-style: italic;"&amp;gt;their own website&amp;lt;/span&amp;gt;, instead sending me to some website who's identity is a complete unknown to me?&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Question&amp;lt;/span&amp;gt;: Is this not the most incredibly stupid thing to do in a web where phishing and identity theft is rife?&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;Later, a call to Nedbank's unbelievably crappy customer "service" centre illuminated a whole lot of these details. The bottom line is that:&amp;lt;br /&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Nedbank &amp;lt;span style="font-style: italic;"&amp;gt;absolutely require&amp;lt;/span&amp;gt; us to use this 3-D Secure thingie.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The shitty 3-D "secure" thingie absolutely requires that I enter my cellphone number to complete their process. Unfortunately, where I live, cellphone reception simply does not exist, so &amp;lt;span style="font-style: italic;"&amp;gt;not an option&amp;lt;/span&amp;gt;.&amp;lt;br /&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;So: I have no way to complete their crappy process, and&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Nedbank has no other process.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Fail!&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;The 3-D Secure form did not even have a field labeled "Cellphone number". How is anyone supposed to guess at this?&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Then, too, there is no way to opt out. They claim that the 3-D Secure process is to "verify my&lt;br /&gt;identity". This despite the fact that they have all my FICA docs on&lt;br /&gt;record. They have my other business account details on record (because&lt;br /&gt;that's how they get paid every month) and they manage to successfully&lt;br /&gt;send me statements every month, and a new card every couple of years.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;And the process &amp;lt;span style="font-style: italic;"&amp;gt;absolutely requires&amp;lt;/span&amp;gt; that I be reachable by cellphone. What if I don't have or want one? What if I have one but can't get reception? Has anybody pointed out to the shit-heads at Nedbank that &amp;lt;span style="font-weight: bold;"&amp;gt;SMS is not a secure nor reliable channel of communication&amp;lt;/span&amp;gt;?&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Question&amp;lt;/span&amp;gt;: Why would I &amp;lt;span style="font-style: italic;"&amp;gt;jump through all these hoops&amp;lt;/span&amp;gt;, put up with really shitty service and all this pain from Nedbank when Standard Bank (my other, other bank) have been trying to give me a business credit-card for years, only to be turned down (because why would I want &amp;lt;span style="font-style: italic;"&amp;gt;another&amp;lt;/span&amp;gt; credit card?)&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Question&amp;lt;/span&amp;gt;: &amp;lt;span style="font-style: italic;"&amp;gt;How quickly can I close this Nedbank account?&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;span style="font-weight: bold;"&amp;gt;Question&amp;lt;/span&amp;gt;: Did anybody at Nedbank &amp;lt;span style="font-style: italic;"&amp;gt;bother to turn their brains on&amp;lt;/span&amp;gt; when thinking about this process, or were they - as usual - operating with their heads stuck so far up their own arse that they could see out their own throat?&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;br /&amp;gt;Oh! I paid the invoice using my personal credit-card (Standard Bank.) Payment went through flawlessly, painlessly and instantly with no hoops to jump through.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4604707529898856338?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4604707529898856338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/06/nedbank-service-fail.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4604707529898856338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4604707529898856338'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/06/nedbank-service-fail.html' title='Nedbank Service Fail'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5956962454580332710</id><published>2010-06-09T02:35:00.000+02:00</published><updated>2011-12-11T11:57:34.170+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='time-management'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><title type='text'>About Email</title><content type='html'>A short note on &lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=EmailToMike"&gt;How I Handle Email&lt;/a&gt; communication.&lt;br /&gt;&lt;br /&gt;Lately I've had a few people express their unease over my handling of emails, so I thought I'd write - once and for all - about how I deal with email. One of these was phoning me, worried, because I had not responded to her email within 15 minutes of her sending it. Another was complaining because emails I have sent him have never appeared in his inbox. It turned out that his ESP (email service provider) was having a Bad-Config Day.&lt;br /&gt;&lt;br /&gt;Please remember that it is eMail. Not eInstantAnswer. Not eGuaranteedDelivery. Not eRegisteredMail. And humble though it is, I find it (still!) indispensable.&lt;br /&gt;&lt;br /&gt;Share and Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5956962454580332710?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5956962454580332710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/06/about-email.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5956962454580332710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5956962454580332710'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/06/about-email.html' title='About Email'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2350740026440543874</id><published>2010-05-20T18:03:00.000+02:00</published><updated>2011-12-09T15:06:19.668+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coaching'/><category scheme='http://www.blogger.com/atom/ns#' term='extreme-programming'/><title type='text'>Healthy Software Projects</title><content type='html'>Love this little gem on eXtreme Programming: &lt;a href="http://blog.extremepill.com/2010/05/increase-odds-of-lasting-healthy.html"&gt;eXtreme Pill: Increase the odds of a lasting, healthy software project&lt;/a&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;start your journey with a Lean coach that also happens to know intimately what software development is all about&lt;/blockquote&gt;Though it seems to come as a shock to some that such coaches actually want paying! ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2350740026440543874?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2350740026440543874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/05/healthy-software-projects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2350740026440543874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2350740026440543874'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/05/healthy-software-projects.html' title='Healthy Software Projects'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6792241971085858591</id><published>2010-05-18T21:38:00.000+02:00</published><updated>2011-12-11T11:51:51.146+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='vcs'/><category scheme='http://www.blogger.com/atom/ns#' term='version-control'/><title type='text'>The Way You (Probably) Use Subversion is Just Wrong</title><content type='html'>Trying to learn Hg (Take 2)&amp;nbsp; I learned something about Subversion: it seems that many people are using it all wrong!&lt;br /&gt;&lt;br /&gt;Prompted by a conversation last week with &lt;a href="http://blog.gamatam.com/"&gt;Brian&lt;/a&gt; which touched on Subversion and Git, I decided to have another go at grokking distributed version control. I confess that I'm probably hopelessly brain-damaged on this score; I can't help it: I started out with version control systems in the days of SCCS, graduated to RCS, was forced to deal with the abomination that was PVCS, migrated to CVS, and have largely been reasonably OK (though not ecstatically happy) with Subversion for the past several years and a half. So I can't really be blamed for my difficulties getting to grips with distributed version control, can I? I learned all I know about the subject back in the Dark Ages.&lt;br /&gt;&lt;br /&gt;But, hey! I'm a distributed worker kind of guy. I'm sure I can figure this out, even at my advanced age.&lt;br /&gt;&lt;br /&gt;Rather than tackle the Swiss Army Chainsaw that is Git, I thought I'd give Mercurial a second go. I lucked into Spolsky's &lt;a href="http://hginit.com/"&gt;HgInit&lt;/a&gt; tutorial which seems a lot more approachable than other tutorials I've seen to date, and a lot shorter than &lt;a href="http://hgbook.red-bean.com/read/"&gt;The Mercurial Book&lt;/a&gt;. Almost immediately I ran into a passage that stopped me short with the thought, "If &lt;span style="font-style: italic;"&gt;this&lt;/span&gt; is how people are using Subversion, &lt;span style="font-style: italic;"&gt;no wonder&lt;/span&gt; they want to move onto something better!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Joel on Subversion&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Now, here’s how Subversion works:&lt;br /&gt;&lt;br /&gt;    * When you check new code in, everybody else gets it.&lt;br /&gt;&lt;br /&gt;Since all new code that you write has bugs, you have a choice.&lt;br /&gt;&lt;br /&gt;    * You can check in buggy code and drive everyone else crazy, or&lt;br /&gt;    * You can avoid checking it in until it’s fully debugged.&lt;br /&gt;&lt;br /&gt;Subversion always gives you this horrible dilemma. Either the repository is full of bugs because it includes new code that was just written, or new code that was just written is not in the repository.&lt;br /&gt;&lt;br /&gt;As Subversion users, we are so used to this dilemma that it’s hard to imagine it not existing.&lt;br /&gt;&lt;br /&gt;Subversion team members often go days or weeks without checking anything in. In Subversion teams, newbies are terrified of checking any code in, for fear of breaking the build, or pissing off Mike, the senior developer, or whatever.&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;No, that's not me he's talking about; that's some other Mike&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wrong. All wrong!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As luck would have it I was discussing repository-management strategies just last week with a client's (new) development team, and suggesting that they use a much more aggressive strategy than they've ever seen before: Multiple checkins per day by every developer. Maybe go so far as to tie the "File-Save" key to "checkin". Anytime a developer does not make a checkin for 2 days in a row there's almost certainly a problem!&lt;br /&gt;&lt;br /&gt;How do we achieve this without the tears and craziness described by Spolsky? Simple! Have every developer working in their own private branch. Or even flipping between a variety of private branches as they switch between tasks. (Yes, I know its not the most productive way to work, but sometimes we have to respond to demands from the outside world, so we do have to take the hit of task-switching.)&lt;br /&gt;&lt;br /&gt;I suggested a structure where each developer simply gets a private piece of the repository to work in. Anything that's broken in there is your own problem, but doesn't affect anybody else on the team. When you're satisfied that your branch won't break the world you're ready to merge back to the main development line and integrate your work with your colleagues'. And yes, then you might have some merge conflicts, but I don't really see how any version control system can avoid this; you fix the conflicts and &lt;span style="font-style: italic;"&gt;'Lo!&lt;/span&gt; the build is intact. This does imply, though, that you want to merge quite frequently. At least every day or two. Or every time your private branch builds and tests clean. Or maybe just builds clean. All depends on your team - team size, maturity, process-maturity, personal temperaments,... &lt;span style="font-style: italic;"&gt;One must study this very hard.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I suppose that the hangups about branching and merging come from the days of CVS, where branching was really, really expensive, and merging really, really difficult. Admittedly, too, earlier versions of Subversion were also not too hot on the merge side of things. (Though I guess it is still work-in-progress and we may yet see some improvements there.)&lt;br /&gt;&lt;br /&gt;In recent times I have been using Subversion branches very aggressively. Frequently I'll find myself flipping between as many as 6 or 8 branches on related modules, merging them, abandoning them,... and this is on a one-man project! It means that I have to use branch-names that are pretty long and descriptive, otherwise I would soon lose myself in the forest of twisty little names.&lt;br /&gt;&lt;br /&gt;But really, I don't see the dilemma Joel talks about in the quote above. I'll readily agree that Subversion's merging still needs some work: It can be quite counterintuitive and error prone until you get the habits right. But this Big Hairy Deal about breaking the build? Doesn't exist if you just use Subversion right!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Go forth and branch!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maybe I'm making a mountain out of a molehill when it comes to Hg... Maybe I'll fall in love with it yet, if it makes this style of working easier for me. &lt;span style="font-style: italic;"&gt;There's hope for the old fart, yet&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6792241971085858591?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6792241971085858591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/05/way-you-probably-use-subversion-is-just.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6792241971085858591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6792241971085858591'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/05/way-you-probably-use-subversion-is-just.html' title='The Way You (Probably) Use Subversion is Just Wrong'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2889015318668565334</id><published>2010-04-12T21:38:00.000+02:00</published><updated>2011-12-09T09:52:14.795+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='simplicity'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='zen'/><title type='text'>Cogito Ergo Wiki</title><content type='html'>For your entertainment and delectation, I offer up &lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=WikiWondering"&gt;a small write-up&lt;/a&gt; in which I muse about complexity and simplicity in the tools we choose to inflict upon our project partners.&lt;br /&gt;&lt;br /&gt;A short excerpt:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;I think that WikiMedia is a relatively terrible thing to inflict upon unsuspecting project partners who are already stressed out by the weird idea that they should contribute documentation to your project, that they might actually be asked to actually write something&lt;/blockquote&gt;&lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=WikiWondering"&gt;Wiki Wondering&lt;/a&gt;: &lt;span style="font-style: italic;"&gt;Share and enjoy.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2889015318668565334?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2889015318668565334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/04/cogito-ergo-wiki.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2889015318668565334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2889015318668565334'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/04/cogito-ergo-wiki.html' title='Cogito Ergo Wiki'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7407255219105969745</id><published>2010-03-04T19:11:00.000+02:00</published><updated>2011-12-11T12:17:00.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thin-client'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='nostalgia'/><title type='text'>Those Damn JavaStations Just Won't Go Away</title><content type='html'>Actually, this thing - going by the dubious name of &lt;a href="http://www.theregister.co.uk/2010/03/03/dell_fx100_pc_over_ip/"&gt;'zero client'&lt;/a&gt; - looks to be something more like a &lt;a href="http://www.sun.com/desktop/sun-ray-clients.jsp"&gt;SunRay&lt;/a&gt; than a JavaStation NC.&lt;br /&gt;&lt;br /&gt;I have what is probably one of the only production JavaStations left in the world sitting downstairs - by the front door - waiting to get dumped for recycling. It is not one of those original concept JavaStations - youknow, the one that looked like the Heart Of Gold starship with Infinite Improbability Drive. Rather it was one that actually worked, looking more like a conventional PC, but with an odd (smart-card) slot in the front. It was part of a special production-run that Sun did for a client about 10 years ago which deal fell into disarray when the Left Hand of Marketing failed to talk to the Right Hand of Management at Sun, and they canned the entire JavaStation concept. As a result a couple of thousand of these JavaStations got dumped and the customer got the contract fulfilled by other means.&lt;br /&gt;&lt;br /&gt;Actually, it would make a nice X terminal when running Linux. You'd just have to reflash the BIOS.&lt;br /&gt;&lt;br /&gt;It occurs to me that there must be some JavaStation nostalgia buff out there that might want it. &lt;i&gt;Any offers?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7407255219105969745?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7407255219105969745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/03/those-damn-javastations-just-wont-go.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7407255219105969745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7407255219105969745'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/03/those-damn-javastations-just-wont-go.html' title='Those Damn JavaStations Just Won&apos;t Go Away'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3489085957070222124</id><published>2010-02-24T21:22:00.000+02:00</published><updated>2011-12-09T11:30:08.947+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><title type='text'>Invalid Field Feedback Failure</title><content type='html'>&lt;i&gt;&lt;b&gt;Random musing on UI misdesign&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A particular egregious error (seen in websites too numerous to list) is to validate a form, rejecting some field's value as invalid input, and then &lt;i&gt;not telling the user the correct or acceptable values/formats&lt;/i&gt;. In other words, leaving the poor user in the dark over what they did wrong. &lt;br /&gt;&lt;br /&gt;Only the most motivated and perseverant user will try more than once or twice before simply giving up and going away. And you will fail to capture some information/data the presumably would have been of some value. (Otherwise why would you have constructed a form in the first place?)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example&lt;/b&gt;: &lt;a href="http://www.dzone.com/"&gt;Dzone&lt;/a&gt; user-profile editing rejects phone numbers entered in a format identical with the example displayed below the phone-number input field, and never provides and explanation of why. Just "&lt;span style="color: #cc0000;"&gt;Invalid input&lt;/span&gt;" over and over again. Result: users do not (cannot) provide valid registration information.&lt;br /&gt;&lt;br /&gt;Somehow this failure is even worse when your form absolutely refuses to accept an entry that is perfectly valid in the user's world, but, through your own ignorance or provincialism, you reject as invalid in your own part of the world. A classic example of this crops up on websites requiring a postal-code (zip-code) as part of their input, but insist that postal codes contain exactly 5 or 9 digits. This might be a requirement for valid postal-codes in some parts of the world, but it is patently false for the vast majority of global users. Admittedly this problem has abated some over the past 10 years, but not enough, yet.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So&lt;/b&gt;: When you reject a user's input, please tell them how to provide something you &lt;i&gt;will&lt;/i&gt; accept. Even better, use input mechanisms that only produce valid values in the first place, and both you and your users will be happier. &lt;i&gt;e.g. Clicking on a map to indicate a position is inherently easier and more error-proof than typing in a latitude and longitude into a textbox.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;[Repost from &lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=UIDesign"&gt;http://mikro2nd.net/bits/Wiki.jsp?page=UIDesign&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3489085957070222124?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3489085957070222124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/invalid-field-feedback-failure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3489085957070222124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3489085957070222124'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/invalid-field-feedback-failure.html' title='Invalid Field Feedback Failure'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1135362302235519604</id><published>2010-02-18T18:26:00.000+02:00</published><updated>2011-12-11T13:45:18.942+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><title type='text'>MIA: Google News Upgrades</title><content type='html'>When is Google going to upgrade Google News?&lt;br /&gt;&lt;br /&gt;I don't mean anything too radical... I really, &lt;i&gt;really&lt;/i&gt; don't want people clicking news articles straight through to Buzz on the assumption that this somehow substitutes for real communication. I have enough noise in my life already!&lt;br /&gt;&lt;br /&gt;But I &lt;i&gt;would&lt;/i&gt; like to see a way to promote/demote articles that the News software decides to feed me. I'm sick to death of seeing articles for the latest car models released. Let's leave aside the fact that the articles are hideously misclassified... Helloooo, Google! It's over 100 years since cars were bleeding edge Sci/Tech! At least a promote/demote system would allow their software to learn over time that I'm never going to read articles about cars or cricket... that "How Green is Your Valentine", apart from being a bit dated at this point in time, is definitely &lt;i&gt;not&lt;/i&gt; climate-change news...&lt;br /&gt;&lt;br /&gt;Then, too, it would be so nice to have a way to say to Google News, "Please never show me news from source X ever again." Certain news sites are so tediously flashy that they're not worth the bother of clicking through. I'd rather just make them vanish - at least from my view of the world.&lt;br /&gt;&lt;br /&gt;Does this mean I would only get biased, half-arsed, partial news? Of course. But that's what any of us are seeing anyway!&lt;br /&gt;&lt;br /&gt;Ah well, its pretty unlikely that Google are paying any attention to this anyway. ;-) My real point is about software adapting to the way I work, play, communicate and view the world. I'll elaborate in another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1135362302235519604?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1135362302235519604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/mia-google-news-upgrades.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1135362302235519604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1135362302235519604'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/mia-google-news-upgrades.html' title='MIA: Google News Upgrades'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7899847352669358201</id><published>2010-02-11T20:15:00.000+02:00</published><updated>2011-12-09T14:33:17.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trust'/><category scheme='http://www.blogger.com/atom/ns#' term='simplicity'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>User Interface Redesigns</title><content type='html'>I love this quote by E. A. Vander Veer in "&lt;a href="http://radar.oreilly.com/2010/02/facebook-redesign.html"&gt;Why Does Facebook Keep Redesigning?&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;typically users aren't considered at all when it comes to software redesigns. I wouldn't have believed this if I hadn't seen it in action on countless projects in several different companies! The attitude is, "We're the experts, we know what you want and need, our redesign is making it better, and it won't take more than a few minutes for you to get up to speed."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This is more true than I care to think about! Case in point: the &lt;a href="http://www.weathersa.co.za/"&gt;SA Weather Service&lt;/a&gt;'s abomination of a website. They went from a site that, while it had its faults, was uncluttered, easy to navigate, and pretty useful to an astonishingly broad range of audiences whose weather-and-climate-information needs are wildly different: from farmers to firefighters, airline pilots to town-planners. The new site provoked such a backlash when it was first released that the Weather Service website developers were forced to put in links back to the old site in order to provide the vast swathes of information that was missing from the new one.&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Rather than ragging any further on the shitty Weather Service website, allow me to point out one fundamental driver of user-interface redesigns that E A Vander Veer seems to have missed... a reason that goes, in fact, far further than UI redesigns, but is all too often a well concealed motivation for many, many software rewrites and redesigns: We redesign and rewrite because the developers want to play around with a bunch of flavour-of-the-day, oooh-shiny-new-toy technologies.&lt;br /&gt;&lt;br /&gt;Not knocking E A's basic insight, though... The motivation seldom comes from the users (or their legitimate representatives) themselves, but almost always from the technical insiders who want change for change's sake.&lt;br /&gt;&lt;br /&gt;Like those who thought that adding autoboxing and varargs to the Java language was a value-add...&lt;br /&gt;&lt;hr width="25%" align="left" /&gt;&lt;br /&gt;[1] At the same time the SAWS web designers tried to do the whole "Social Weather 2.0" thing. Sadly they missed the point completely. Any negative comments on the forums regarding the new site were silently deleted. Way to build trust, guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7899847352669358201?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7899847352669358201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/user-interface-redesigns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7899847352669358201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7899847352669358201'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/user-interface-redesigns.html' title='User Interface Redesigns'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1957771820845237441</id><published>2010-02-04T22:11:00.000+02:00</published><updated>2011-12-09T13:32:03.784+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Software Design</title><content type='html'>&lt;blockquote&gt;"System Design, is one that as a profession we talk about less than I believe we should. It is, in many ways, the most important and most difﬁcult thing that we engineers attempt to do. I believe that we avoid talking about it because it is hard, and seems somehow “unscientiﬁc.” There are clearly some designs that are good and others that are not. But the judgment of how good a design is often seems subjective or based on aesthetic principles rather than on the cold hard facts that we are engineers who pride ourselves on forming the basis for all that we do. I hope that this essay convinces some readers that the dichotomy between science and art or engineering and aesthetics is not clear, required, or even desirable. What we do must be grounded in fact, but it also needs to be grounded in taste. We should revel in that rather than trying to cover it up. It makes what we do more difﬁcult, but also much more interesting."&lt;/blockquote&gt;-- &lt;a href="http://research.sun.com/techrep/Perspectives/PS-2006-6.pdf"&gt;Jim Waldo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've been thinking a lot again, lately, about software design and how to teach it... and about how little there is out there to guide the design of good software architecture...&lt;br /&gt;&lt;br /&gt;All part of my Quest After The Heart Of Design for the last 15 years. And maybe (just maybe!) I think I have a useful angle on it that might illuminate a path forward.&lt;br /&gt;&lt;br /&gt;I'll say more as I develop the concept.&lt;br /&gt;&lt;br /&gt;&lt;i&gt; (And, BTW, Jim Waldo is, in my humble opinion, one of the preeminent thinkers on design alive, and one of the most interesting people I've had the privilege to meet.)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1957771820845237441?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1957771820845237441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/software-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1957771820845237441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1957771820845237441'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/software-design.html' title='Software Design'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1680946897019451611</id><published>2010-02-03T07:01:00.000+02:00</published><updated>2011-12-11T12:03:12.022+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><title type='text'>Death</title><content type='html'>So &lt;a href="http://lemnik.wordpress.com/"&gt;Jason&lt;/a&gt; and I were discussing death, as we sometimes do. In particular, what to have engraved&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/small&gt; on our tombstones (assuming we get so lucky!)&lt;br /&gt;&lt;br /&gt;"I told you I was ill" -- &lt;i&gt;Spike Milligan&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This quickly degenerated to the OO software-designer specific:&lt;br /&gt;&lt;br /&gt;"I've been finalized..."&lt;br /&gt;&lt;br /&gt;"I've been Garbage Collected."&lt;br /&gt;&lt;br /&gt;"Finally, I've been taken up to the PermGen space!"&lt;br /&gt;&lt;br /&gt;...all depends on your spiritual views, I suppose...&lt;br /&gt;&lt;hr align="left" width="25%" /&gt;&lt;span style="font-size: x-small;"&gt;[1] I it just a coincidence that tombstones get en&lt;/span&gt;&lt;span style="font-size: x-small; font-style: italic;"&gt;graved&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;? Probably not.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1680946897019451611?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1680946897019451611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/death.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1680946897019451611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1680946897019451611'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/02/death.html' title='Death'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1930017636241346522</id><published>2010-01-23T20:41:00.000+02:00</published><updated>2011-12-09T14:55:48.559+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Boolean Illogic</title><content type='html'>Why do Java programmers hate the boolean XOR operator?&lt;br /&gt;&lt;br /&gt;Is it that they are just generally ignorant about the full-eval boolean operators in general? You know, the operators that look like &amp;amp;, | and ^. Perhaps its that most Java developers are under the impression that they only operate on bits, an are ignorant of the fact that they operate on booleans (and Booleans with that fucking horrible autoboxing/unboxing nonsense.)&lt;br /&gt;&lt;br /&gt;I know that 99 time out of 100 we prefer the early-out operators &amp;amp;&amp;amp; and || for their efficiency, but a simple ^ can save a hell of a lot of unreadable and less-understandable if-then-else logic. For example, I've just refactored (somebody else's code)&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;if( check ){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( !user.isAnonymousUser() ) doStuff();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}else{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( user.isAnonymousUser() ) doStuff();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;which I find nasty as hell to be sure is doing what it's supposed to, into&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;if( check ^ user.isAnonymouseUser() ) doStuff();&lt;/span&gt;&lt;/blockquote&gt;&lt;i&gt;Much easier to understand, no?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1930017636241346522?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1930017636241346522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/01/boolean-illogic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1930017636241346522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1930017636241346522'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/01/boolean-illogic.html' title='Boolean Illogic'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3409065042096495876</id><published>2010-01-10T23:35:00.000+02:00</published><updated>2011-12-09T10:17:32.048+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='software-development'/><title type='text'>How Do Development Managers Screw Up?</title><content type='html'>Here's a question, much on my mind:&lt;br /&gt;&lt;br /&gt;What is the &lt;b&gt;single&lt;/b&gt; most important thing that Development Managers do, or fail to do, or pay insufficient attention to, that create a friction in the delivery of working software?&lt;br /&gt;&lt;br /&gt;Answers in comments (or email if you don't want to publicly reveal details) please!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;By "Development Manager" I don't just mean those people who have those words in their job title, but I mean any person who is responsible for tasking development teams - large or small - and ensuring the delivery of software systems by their developers. Sometimes they are called Project Managers, sometimes - in small entrepreneurial startups - they are the Boss Of The Whole Gig. The point is that they are the interface between the business stakeholders and the technical people who do the development and implementation work.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3409065042096495876?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3409065042096495876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/01/how-do-development-managers-screw-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3409065042096495876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3409065042096495876'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/01/how-do-development-managers-screw-up.html' title='How Do Development Managers Screw Up?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2504829401857613540</id><published>2010-01-06T22:20:00.000+02:00</published><updated>2011-12-09T09:30:42.687+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='course'/><category scheme='http://www.blogger.com/atom/ns#' term='schedule'/><title type='text'>New Courses Scheduled</title><content type='html'>Courses newly scheduled:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://coco.co.za/wiki/PatternsOfOODesign"&gt;Patterns of OO Design&lt;/a&gt;, 17-19 Feb in Cape Town&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://coco.co.za/wiki/OOTechnologyForManagers"&gt;OO Technology Overview for Managers&lt;/a&gt;, 22 Feb, Cape Town.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Please &lt;a href="http://coco.co.za/wiki/ContactDetails"&gt;contact me&lt;/a&gt; directly if you're interested. Places are limited, especially for the Design Patterns course.&lt;br /&gt;&lt;br /&gt;More to come soon... if you're interested, I suggest that you keep track of my &lt;a href="http://coco.co.za/wiki/CourseSchedule"&gt;course schedule&lt;/a&gt; page feed (the feed-link is near the top-right), or &lt;a target="_blank" href="http://www.google.com/calendar/feeds/4ni6ga2v5a9194fftm7i3hkoc4%40group.calendar.google.com/public/basic"&gt;course-schedule calendar&lt;/a&gt; in your feed-reader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2504829401857613540?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2504829401857613540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2010/01/new-courses-scheduled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2504829401857613540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2504829401857613540'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2010/01/new-courses-scheduled.html' title='New Courses Scheduled'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7308404794921343083</id><published>2009-12-27T04:30:00.000+02:00</published><updated>2011-12-11T13:42:05.049+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='venture'/><category scheme='http://www.blogger.com/atom/ns#' term='web-development'/><category scheme='http://www.blogger.com/atom/ns#' term='social-networks'/><title type='text'>Flightwish Reboot</title><content type='html'>Restarted working on &lt;a href="http://flightwish.com/"&gt;Flightwish&lt;/a&gt; today. A lot of background stuff... seeing that the DNS is correctly set up for all the FW domains... getting Subversion properly configured on the dev server... restoring the old FW software trove... all the dirty little details of permissions, software configuration and setup that don't usually get mentioned in software development plans, but eat into your time in such a big way.&lt;br /&gt;&lt;br /&gt;I've installed the &lt;a href="http://pebble.sourceforge.net/"&gt;Pebble&lt;/a&gt; blog engine on the server, and I have to say it looks pretty nice. Far more impressive than the Blojsom engine that I'm still using for my personal blogs. Simpler to use and customise, and performance feels somehow snappier. The only real snag I hit is that Pebble is supposedly able to interpret &lt;a href="http://www.wikicreole.org/"&gt;WikiCreole&lt;/a&gt; - not my wiki syntax of choice, but better than no wiki syntax at all! - only it doesn't seem to work. At least I couldn't make it work. Well, it was pretty late in the day, so maybe my brain has simply had enough for the day.&lt;br /&gt;&lt;br /&gt;My idea is to first just get a Flightwish blog up and running so that I can get some content up on the site, and update it reasonably regularly so as to improve its pagerank. I was a bit surprised to see, though, that despite having only reactivated the flightwish.com site a few days ago, its pagerank is 3. Not bad for a dead site! I guess it must be because it has been a real site in the past, and also due to its age (several years.)&lt;br /&gt;&lt;br /&gt;After that my next priority will be to get a forum system up and running and looking reasonable so that people can start to sign up and chat. Yes, it would seem to be Yet Another Social Networking Website. Hopefully we'll have enough of a real focus to make it a bit different. The idea is (as it always has been) to do something in the travel space, with a strongly social slant.&lt;br /&gt;&lt;br /&gt;As soon as the forum is set up I'll focus on writing a bunch of content - to be released at several-day intervals - telling the stories that drive/drove the initial concept of Flightwish. Those stories (you'll have to subscribe to the &lt;a href="http://flightwish.com/blog/"&gt;Flightwish Blog&lt;/a&gt; and wait a few days if you're interested - there's no content there yet) will explain the shape of the Heart of Flightwish as it exists in my head. I'll probably also reminisce about some of the experiences we've had with this thing in years past... the long, long road we've travelled to get here.&lt;br /&gt;&lt;br /&gt;Lots of work for a one-man-band! But I think we can do something really interesting, different and meaningful in the travel space. Certainly I'd love to visit Bolivia, Peru, Guatemala, Mexico, Belgium (for the beer) and loads of other places, but I don't think I can do it without a bunch of help!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7308404794921343083?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7308404794921343083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/12/flightwish-reboot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7308404794921343083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7308404794921343083'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/12/flightwish-reboot.html' title='Flightwish Reboot'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2775340028379118104</id><published>2009-12-17T21:00:00.000+02:00</published><updated>2011-12-11T12:18:14.740+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='prouddad'/><title type='text'>Well done, Jason!</title><content type='html'>Congratulations to Jason on becoming the first family-member to get published:&lt;a href="http://www.developer.com/java/other/article.php/3853556/Implement-Automatic-Discovery-in-Your-Java-Code-with-Annotations.htm"&gt;Implement Automatic Discovery in Your Java Code with Annotations — Developer.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2775340028379118104?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2775340028379118104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/12/well-done-jason.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2775340028379118104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2775340028379118104'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/12/well-done-jason.html' title='Well done, Jason!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-769731919066089869</id><published>2009-09-10T01:24:00.000+02:00</published><updated>2011-12-11T13:51:37.717+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Network Disasters Happen in Threes Fours</title><content type='html'>Only 9 more sleeps to go...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Strike 1&lt;/span&gt;: Last week, disaster struck in the form of a 2-day DSL outage. &lt;a href="http://telkom.co.za/"&gt;Telkom&lt;/a&gt; -- my current DSL provider -- blithely went and cleared the fault ticket after 24hours -- without any consultation with me -- because their test centre said that my router was getting a connection to the local exchange. The ticket comment was, "Fault closed at customer request." &lt;span style="font-style: italic;"&gt;Liars&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Much wailing and gnashing of teeth later, they discovered that a whole lot of people in the area were experiencing the same problems: &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; sporadic connectivity with almost no traffic getting through. Turned out to be a fault on the exchange itself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Strike 2&lt;/span&gt;: On the same day that this problem started, my London-housed server went down for Reasons Unknown. Of course I was blissfully unaware of it until Friday. 2 days of server outage. Then my service provider there was terribly slow to rectify the problem (which -- as the universe will insist upon -- involved a fractal nesting of sub-problems with their own sub-sub-problems &lt;span style="font-style: italic;"&gt;ad mandelbrot&lt;/span&gt;.) As I write, the server is still only partially up. Apache service -- the one my paying customers rely on -- is up and working fine on one IP address, but Tomcat, hosting my personal and "corporate" sites, blogs and wikis still cannot talk through the other IP address. The service I get from VAServ is pretty kak, but not so kak as to be noteworthy -- they really are giving me a very low-cost package, and, as always, You Gets What You Pays For.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Strike 3&lt;/span&gt;: At the same time an FTP backup service I use for offsite backups refused to authenticate me, using the same credentials I've been using for years, with the result that I could not even ensure the safety of all the data! Be Still, My Twitching Ulcer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You're Out&lt;/span&gt;: Welcome to this morning, where we present -- for your entertainment and edification -- a reprise of last week's DSL outage. Telkom, predictably, and once again, are in complete denial that there is actually a problem. Their tests show a solid connection between my router and their exchange. No shit, Sherlock! Pity the bits can't squeeze through the tiny opening.&lt;br /&gt;&lt;br /&gt;I've always been very happy with the ISP service I've received from &lt;a href="http://webafrica.co.za/"&gt;WebAfrica&lt;/a&gt;, and have, over the years, put many friends and colleagues onto them, not one of whom has had anything less than Sterling service. I've asked WA to take over my DSL service&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/small&gt;, too, in light of recent events. The only bit of business Telkom will be getting from me for the foreseeable future will be POTS.&lt;br /&gt;&lt;br /&gt;Only 9 more sleeps to go...&lt;small&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/small&gt;&lt;br /&gt;&lt;hr align="left" width="33%" /&gt;I think this sorry whining actually has a point; it tends to back up my long-held belief that telcos are constitutionally incapable of competently running IP services. The cultures and philosophies that make end-to-end controlled networks are unable to comprehend -- in some weirdly deep, DNA-level way -- how to cope with IP networks which have almost no intelligence in the middle, but live, instead, with all the intelligence at the edges.&lt;br /&gt;&lt;br /&gt;People who run IP networks, on the other hand, are able to provide perfectly adequate voice services over IP, which is why they're going to eat the telcos' lunch over the long term.&lt;br /&gt;&lt;hr align="left" width="33%" /&gt;&lt;span style="font-size: x-small;"&gt;[1] There's no transfer/installation fee. Their monthly rates are at present the same as Telkom's, and as they roll out their own infrastructure, they anticipate reducing the charges. Their support desk is outstanding, staffed by people who actually know stuff, don't mind admitting mistakes and problems, treat customers like Real Humans instead of problem-id's, and follow through on promises and commitments and ensuring that things get fixed. &lt;span style="font-style: italic;"&gt;I can't see any downside, can you?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] Of course, it occurs to me a little late, that I'll only be able to actually &lt;span style="font-style: italic;"&gt;post&lt;/span&gt; this when I get the server working properly again. Which will only happen when I get some reasonable connectivity back. Which &lt;span style="font-style: italic;"&gt;might&lt;/span&gt; happen slightly after Lucifer goes skiing from his front doorstep.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-769731919066089869?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/769731919066089869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/09/network-disasters-happen-in-threes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/769731919066089869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/769731919066089869'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/09/network-disasters-happen-in-threes.html' title='Network Disasters Happen in &lt;strike&gt;Threes&lt;/strike&gt; Fours'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8481765770107576639</id><published>2009-05-27T11:50:00.000+02:00</published><updated>2011-12-09T14:40:04.015+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumination'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Word processors</title><content type='html'>If Word Processors are to Words as Food Processors are to Food.... &lt;span style="font-style: italic;"&gt;no wonder&lt;/span&gt; they're so bloody awful to use!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8481765770107576639?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8481765770107576639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/05/word-processors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8481765770107576639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8481765770107576639'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/05/word-processors.html' title='Word processors'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2509531249942708837</id><published>2009-05-15T18:28:00.000+02:00</published><updated>2011-12-11T11:58:42.198+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><title type='text'>Backups</title><content type='html'>Nice&lt;a href="http://it.slashdot.org/article.pl?sid=09/05/15/0138204"&gt; story on /.&lt;/a&gt; this morning about a faulty backup strategy gone wrong and its consequences. I'll bet a lot of smalltime operators are checking their backups this morning.&lt;br /&gt;&lt;br /&gt;I know I am ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2509531249942708837?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2509531249942708837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/05/backups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2509531249942708837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2509531249942708837'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/05/backups.html' title='Backups'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3581990326938097215</id><published>2009-05-14T23:51:00.000+02:00</published><updated>2011-12-11T13:49:01.373+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brainstorm'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>MikroBlog Brainstorm, Part One</title><content type='html'>&lt;span style="font-style: italic;"&gt;Part one of a wiki-essay on "Thinking about a new/different way of doing blogging... and about what blogging is all about..."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Original at: &lt;/span&gt;&lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=MikroBlog" style="font-style: italic;"&gt;http://mikro2nd.net/bits/Wiki.jsp?page=MikroBlog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Comments/constructive criticism welcome; be aware, though, that Part One is just painting background for a brainstorm, and not intended as a comprehensive, or even accurate, Recent History Of Blogging.&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Still very much a Work In Progress!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Past&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Blogging in the conventional manner -- having a blog at &lt;a href="http://www.blogger.com/"&gt;BlogSpot&lt;/a&gt; or &lt;a href="http://www/livejournal.com"&gt;LiveJournal&lt;/a&gt; or &lt;a href="http://wordpress.com/"&gt;WordPress&lt;/a&gt; or even at &lt;a href="http://blog.mikro2nd.net/"&gt;your own domain&lt;/a&gt; using some custom blog platform -- itall seems a bit passè, now, after the hype and frenzy of a couple ofyears ago.&lt;br /&gt;&lt;br /&gt;The format is very much that of a newspaper article, isn't it? &lt;span style="font-style: italic;"&gt;Headline, dateline, reporter, article.&lt;/span&gt; Even TV reporters follow the format. Oh, except for thecommenting, of course! And ratings. That's what was so exciting; &lt;span style="font-style: italic;"&gt;a newform of conversation&lt;/span&gt;. Two different kinds of conversation, really.&lt;br /&gt;&lt;br /&gt;The first is the __News Mode__ conversation. It's a ''broadcast''mode, primarily; News from me and my world to y'all out there who mightbe interested in following my drivel. Great for venting. Later thatmorphed into podcasts -- where did that all go to? -- and photoblogs,but it's all much the same thing. Think of &lt;a href="http://en.wikipedia.org/wiki/Life_magazine#The_photojournalism_magazine"&gt;Life Magazine&lt;/a&gt;in the 50's and 60's. That's why the mainstream news-media has managed,though it took them long enough, to successfully incorporate blogs andthe blog style of things into their websites and mainstream content:it's not so very different from what they were doing before blogs camealong. &lt;span style="font-style: italic;"&gt;Though let's note in passing that many of them are stillextremely uncomfortable with the free-and-easy, short-and-to-the-point,frequently vituperative style that commenters use.&lt;/span&gt; There's still awhole lot of this style of blogging going on, and I don't think it isgoing to disappear.&lt;br /&gt;&lt;br /&gt;[{Image src='http://www.adfreeblog.org/adfreebutton.jpg'width='150' height='56' align='right' style='' class='image' }] It canbe demanding, though, for the C-list bloggers like Yours Truly.Bloggers with, perhaps, a couple of dozen regular readers who sharesome niche common interests, read and comment regularly on each others'blogs, and, over time, become friends-at-a-distance. These are thebloggers who are &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; in it for the money. On their sites you'll see"&lt;a href="http://www.adfreeblog.org/"&gt;Proudly Ad-Free&lt;/a&gt;" badges. They tried &lt;a href="https://www.google.com/adsense/"&gt;AdSense&lt;/a&gt;, and made the grand sum of32 cents from it. The pressure from all those "How to be a SuccessfulBlogger" websites... the feelings of having let people down should youfail to blog three times a week on a regular schedule... keeping thatblogroll up to date... acknowledging all the comments... keeping thecomment-spam under control... It all becomes too much after a time, andwe see many of these C-listers give up their blogs after a couple ofyears. Sad, really, because many of them bring a fresh, interesting, ifslightly myopic, story to the world.&lt;br /&gt;&lt;br /&gt;The idea that bloggers were going to replace conventionaljournalism with news-from-the-streets... where did &lt;span style="font-style: italic;"&gt;that&lt;/span&gt; go? Sadlynot too many bloggers are keen to follow the Courts beat, nor to dragabout after boring political hacks looking for the stuff the mainstreammedia masticates into news.&lt;br /&gt;&lt;br /&gt;But! The conversation is &lt;span style="font-style: italic;"&gt;peculiarly stilted.&lt;/span&gt; You leave acomment on someone's blog. Perhaps they reply via another comment.Perhaps somebody else comments on your comment. &lt;span style="font-style: italic;"&gt;You probably neverget to see that&lt;/span&gt;. Did you bookmark that conversation? Unlikely! Andeven if you did, will you remember to go back and visit the bookmark?You might comment on half-a-dozen blogs on any given day. It's a hellof a lot of &lt;span style="font-style: italic;"&gt;work&lt;/span&gt; keeping up with all those conversations!&lt;br /&gt;&lt;br /&gt;There have been various technical fixes to the problem -- emailnotifications on comment follow-ups, websites that follow theconversation for you and attempt to centralise it -- but none of thesehave been particularly successful. So as a means of actual &lt;span style="font-style: italic;"&gt;conversation&lt;/span&gt;, conventional blogging comes up deficient.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;But it did get us started, didn't it?&lt;/span&gt; We're all writing and conversing much more than we were a decade ago when we were still mainly atelevision audience -- mere passive consumers of the torrent of crapdeemed by the Media Powers to be in our best interests -- and their wayof ramming crappy advertorial down our collective gullets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3581990326938097215?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3581990326938097215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/05/mikroblog-brainstorm-part-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3581990326938097215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3581990326938097215'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/05/mikroblog-brainstorm-part-one.html' title='MikroBlog Brainstorm, Part One'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3520215801709048134</id><published>2009-04-28T23:27:00.000+02:00</published><updated>2011-12-11T13:34:13.592+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Code as Exploration of Unknown Territory</title><content type='html'>I have come to view coding as the act of exploring and charting unknown territory -- the wilderness of our cognitive space.&lt;br /&gt;&lt;br /&gt;If we let it, as we go along, our code illuminates the crevices and crags of our understanding, and shapes as it goes, our ideas of where to go next.&lt;br /&gt;&lt;br /&gt;Version-control is the key mapping tool.&lt;br /&gt;&lt;hr align="left" noshade="noshade" style="width: 10em;" /&gt;I've just reached a point in the development of the mikroblogging tool where I (finally!) believe I understand what's needed; what might work as something new-ish and interesting-ish in the conversations we have over this Internet thingie...&lt;br /&gt;&lt;br /&gt;It's not a conventional website like Twitter or Blogger. It's not a standalone desktop/PC-installed system doing some sort of smart p2p stuff. It's not a conversation follower nor a search tool nor a Bayesian-interest-detector. More something hybrid from all of these. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Let's see where the code will take me next...&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3520215801709048134?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3520215801709048134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/04/code-as-exploration-of-unknown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3520215801709048134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3520215801709048134'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/04/code-as-exploration-of-unknown.html' title='Code as Exploration of Unknown Territory'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7649043704445842437</id><published>2009-04-21T20:36:00.000+02:00</published><updated>2011-12-09T09:36:46.834+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='venting'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Sun and Oracle</title><content type='html'>TL;DR: &lt;span style="font-style: italic;"&gt;A fucking disaster for everybody except Oracle and Sun's execs and (maybe) shareholders.&lt;/span&gt; i.e. The Kakistocracy wins and the rest of us get shafted. (As usual.)&lt;br /&gt;&lt;br /&gt;I think Oracle are getting an absolute &lt;span style="font-style: italic;"&gt;bargain&lt;/span&gt;. $7.4 billion is chump-change for the IP they're acquiring. The question is, Which pieces are they going to keep, and which are toast? Some of this is blatantly obvious, other bits are pure crystal-ball-gazing on my part.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt;: the no-brainer. Oracle are &lt;span style="font-style: italic;"&gt;heavily&lt;/span&gt; invested in Java for the Enterprise stack. Bad news for open-source Java? Maybe! Or maybe not... it all depends on whether Oracle were backing Apache simply as a tactic against Sun in the JCP. I've heard a number comments along the lines of "it's GPL -- the boat has sailed". They're forgetting that the &lt;span style="font-style: italic;"&gt;owner&lt;/span&gt; of the IP can do as they please, including closing the source completely in the next release. (Not that I think it very likely; just a possibility.) Yes, an open-source community might be able to follow, but I'm betting that there would be compatibility problems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MySQL&lt;/span&gt;: Toast. (Personally I never bought the logic behind Sun acquiring MySQL, and then they went and mishandled the whole thing badly.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Glassfish&lt;/span&gt;: More toast. What will this be... Oracles &lt;span style="font-style: italic;"&gt;fourth&lt;/span&gt; appserver? I lose count.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Netbeans&lt;/span&gt;: A cold shaft of ice pierces my gut. I love Netbeans. I just don't much like its competitor (just a personal preference; don't read too much into it!) But I fear that this might be the end of the road for NB... OTOH it can -- unlike so many of Sun's other open-source projects -- probably survive, nay flourish, as a standalone open-source IDE. After all, that where it came from in the first place.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OpenOffice.org&lt;/span&gt;: Makes &lt;span style="font-style: italic;"&gt;perfect&lt;/span&gt; sense for Oracle. I bet on them keeping this one going. In fact, this might be the Secret Weapon Acquisition... the knife with which Oracle goes seriously for Microsoft's jugular in the Enterprise space, together with Solaris and the Sun hardware.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solaris&lt;/span&gt;: I'm betting it stays. Oracle's strategy has been (to the limited extent I bother to keep track) to lock up the mission-critical, "hard-to-do" stuff in the Enterprise space. And there's still a whole lot of stuff that Solaris does way better than Linux.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VirtualBox&lt;/span&gt;: also plays well into the Enterprise/datacentre "integrated offering" strategy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JavaFX&lt;/span&gt;: not one I'm capable of guessing about... any offers?&lt;br /&gt;&lt;br /&gt;And the Sun &lt;span style="font-weight: bold;"&gt;hardware&lt;/span&gt;: makes pretty good sense for Oracle, in my limited understanding.&lt;br /&gt;&lt;hr style="color: rgb(153, 153, 153);" noshade="noshade" width="30%" align="center" /&gt;&lt;br /&gt;On a more personal note, &lt;span style="font-style: italic;"&gt;much closer to home&lt;/span&gt;: How likely is it that Oracle will retain Sun's training programs for Java? Methinks it unlikely, since they already have their own training programs. What does that mean for the &lt;a href="http://mikro2nd.net/bits/Wiki.jsp?page=HowIBecameAJavaTrainer"&gt;first Sun-authorised Java trainer in Africa&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Not good news at all, I'll bet!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All-in-all I think the acquisition is terrible news for Sun people, and probably not good news for their customers, either. I am finding it hard to see it in a good light for Java, either, and, having (literally) bet &lt;a href="http://mikro2nd.net/farm/"&gt;the farm&lt;/a&gt; on Java for the past 13 years, find the prospects quite discouraging. And for open-source in general it's a disaster. Despite the &lt;a href="http://slashdot.org/"&gt;Slashdot&lt;/a&gt; whiners, Sun has sunk an incredible amount of money and effort into open-source projects, and I simply don't believe that Oracle has the same largeness of vision.&lt;br /&gt;&lt;hr style="color: rgb(153, 153, 153);" noshade="noshade" width="30%" align="center" /&gt;&lt;br /&gt;Oh well. Shit happens. I suppose its still a step better than Sun going under completely... Best I get a move-on with further developing &lt;a href="http://coco.co.za/Wiki.jsp?page=CourseCatalogue"&gt;my own training material and courseware&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7649043704445842437?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7649043704445842437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/04/sun-and-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7649043704445842437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7649043704445842437'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/04/sun-and-oracle.html' title='Sun and Oracle'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8688095133012315863</id><published>2009-04-13T20:26:00.000+02:00</published><updated>2011-12-11T11:53:11.217+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Twitter</title><content type='html'>&lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; looks vaguely interesting. Not too much. Not enough for me to bother with it. I think it's very Flavour Of The Day.&lt;br /&gt;&lt;br /&gt;But it does suit one thing I've had in mind for a while... the idea of a "stream of consciousness" blog sort of thing. Essentially a blog where I can just post a line or two or three, without all the formality and palaver of Subject lines, Categories, Tags, etc. In a nutshell, Twitter,but without the 140 character limit, and hosted on my own server as part of my own infrastructure.&lt;br /&gt;&lt;br /&gt;Maybe I'll just write it....&lt;br /&gt;&lt;br /&gt;&amp;lt;i&amp;gt;I need another development project like I need more holes in my head. Only two major development projects on the go at the moment, and a couple of minor ones.&amp;lt;/i&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8688095133012315863?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8688095133012315863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/04/twitter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8688095133012315863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8688095133012315863'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/04/twitter.html' title='Twitter'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2756743396685646823</id><published>2009-03-26T01:47:00.000+02:00</published><updated>2011-12-11T12:32:37.486+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><title type='text'>SL-275 and Java Programmer Certification</title><content type='html'>Midweek; past the halfway mark (in time, anyway) of teaching Sun's &lt;a href="http://www.sun.com/training/catalog/courses/SL-275-SE6.xml"&gt;SL-275 "Java Programming Language"&lt;/a&gt; course. I wonder how many times I've taught this course over the past 12 years... I still love it! Even though its just the basics, there's something &lt;span style="font-style: italic;"&gt;just plain fun&lt;/span&gt; about introducing Java to new minds.&lt;br /&gt;&lt;br /&gt;This one is interesting; 5 of the students have flown from Stockholm, Sweden all the way to Cape Town, especially to attend this course! Wow! (Of course they might pick up some sunshine in the middle of the Northern Winter. I guess that may help. ;-)&lt;br /&gt;&lt;br /&gt;The trouble is that Java has grown so large over the years that there's a hard choice: cover (mostly) everything in a shallow way? or leave a lot out to get more depth?&lt;br /&gt;&lt;br /&gt;Add to that, Sun punt the course as "the" prerequisite for writing the &lt;a href="http://www.sun.com/training/catalog/courses/CX-310-065.xml"&gt;Java Programmer Certification Exam&lt;/a&gt;. Frankly, I shudder at the thought! Programmers would need a &lt;span style="font-style: italic;"&gt;lot&lt;/span&gt; more than just this course to be in a position to tackle the exam. And programmers who &lt;span style="font-style: italic;"&gt;are&lt;/span&gt; in a good position to tackle the exam don't really need this course!&lt;br /&gt;&lt;br /&gt;As it currently stands, the course is inadequate for students attending it in order to prepare for the Certification Exam. There's very little I can teach them and still remain reasonably close to the course materials. The course &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; pretty good as an intro to Java for experienced developers, but pressure from more experienced developers in the class -- especially when they are in a significant majority -- could, if I'm not careful and strong in controlling it, leave the less-well-versed-in-Java students stranded. (I assure you that I &lt;span style="font-style: italic;"&gt;don't&lt;/span&gt; let this happen.)&lt;br /&gt;&lt;br /&gt;The solution is to split the course in two. One would be a truly introductory course aimed at otherwise-experienced developers. And the second would avoid all basic material -- syntax of if statements, declaring classes and interfaces -- in favour of homing-in on the deeper, less well known details of Java execution that the Certification Exam aims to test.&lt;br /&gt;&lt;br /&gt;I sure wish Sun would do it soon! It would make life so much easier for us trainers, and would deliver a much better focussed value to customers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2756743396685646823?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2756743396685646823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/03/sl-275-and-java-programmer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2756743396685646823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2756743396685646823'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/03/sl-275-and-java-programmer.html' title='SL-275 and Java Programmer Certification'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1109396059047998559</id><published>2009-01-18T03:05:00.000+02:00</published><updated>2011-12-11T12:25:49.604+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='courseware'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Open Course Development</title><content type='html'>It strikes me that, whilst I am deep into the design of a number of programming-related courses, I am making &lt;span style="font-style: italic;"&gt;a terrible mistake&lt;/span&gt;. The mistake of not talking about what I'm up to. The mistake of assuming the entire burden of course development.&lt;br /&gt;&lt;br /&gt;Instead I ought to be employing Open Source development principles. At least some of them. Seems to me that (at least) the Thousand Eyeballs principle applies quite well, at least to the course structure, content and sequencing.&lt;br /&gt;&lt;br /&gt;Right now I'm in the thick of codesigning three courses that I (with good reason!) believe are served very poorly by the corporate training world, and I think I can design courses that deliver much, much better value for money. The three I'm busy with right now are "Elements of Object Oriented Programming", "OO Analysis and Design" and "Patterns of Software Design".&lt;br /&gt;&lt;br /&gt;"Elements" is intended as an introductory foundation course for programmers coming from a non-OO background who want/need to learn the OO concepts quite quickly. Nobody in their right minds would believe that a 3-day "Elements"-style course is going to turn any Natural programmer into an OO expert... we all know that the process of learning to Think Objects takes 9 months. But I do believe that it is possible to teach the foundation concepts really well.&lt;br /&gt;&lt;br /&gt;"OO A&amp;amp;D" seeks to demystify the analysis and design process -- to the degree that it is possible to demystify an essentially &lt;span style="font-style: italic;"&gt;creative&lt;/span&gt; process.&lt;br /&gt;&lt;br /&gt;And, finally, the "Design Patterns" course aims to teach something useful about... well... design patterns. I've taught variations on this one numerous times over the years, but never really been satisfied with the value I was able to deliver, so I've completely rethought the approach from the ground up, and -- I think -- come up with something Just a Bit Different. A whole lot of the Design Patterns courses I've seen offered seem to add up to nothing more than a whole lot of droning through the GoF patterns catalogue. I think there's a whole bunch more to the topic than that, and I plan to use the course to explore that.&lt;br /&gt;&lt;br /&gt;I've also outlined a whole bunch of other courses that I want to develop over the next year or so, but developing even these three is a daunting enough task for now.&lt;br /&gt;&lt;br /&gt;I'm openly stealing some of the concepts -- the approach to teaching -- exemplified by the &lt;a href="http://www.headfirstlabs.com/books.php"&gt;Head First&lt;/a&gt; books, and I'm really interested to see that &lt;a href="http://oreilly.com/"&gt;O'Reilly&lt;/a&gt; are themselves developing a bunch of courses -- I gather they'll be web-based courses -- under the Head First brand. &lt;span style="font-style: italic;"&gt;Good for them!&lt;/span&gt; It's about time we saw a better approach to teaching technical stuff.&lt;br /&gt;&lt;br /&gt;So I'm aiming to make the courses colourful, interactive and fun. I'm trying to build in lots of of pictures, music, video, games, practical exercises, movement. (Trying to figure out how to include flavours and smells... ;-)&lt;br /&gt;&lt;br /&gt;I've also been breaking away -- especially for the "Elements" course -- from linearity in the course sequencing. Essentially I'm developing using a Spiral Model. First introduce a concept, then go on to related concepts, etc., in time spiralling round to repeat the discussion of the topic in greater depth, and so on. I've long known that it is too easy to give too much detail all at once, so for my own course material, I'm explicitly shying away from that. I think it equates -- somewhat -- to the concept of Progressive Disclosure in user-interface design. As luck would have it, after several weeks working on this stuff, I tripped across &lt;a href="http://johnwlewis.wordpress.com/disclosure-sequence/"&gt;this article&lt;/a&gt; just today, and went "Aha! Somebody else who Gets It!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Right now I am stuck&lt;/span&gt;. Struggling to come up with &lt;span style="text-decoration: line-through;"&gt;good&lt;/span&gt; great practical ways of exploring the topic of "Encapsulation" in a way that doesn't stray too far from the way it's meant in OO programming, whilst remaining vaguely interesting.&lt;br /&gt;&lt;br /&gt;As soon as I get the relevant bits of machinery up and running, I'll post the course outlines. (Will take a while: I am unexpectedly and suddenly off to London for a week for a spot of consulting work.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1109396059047998559?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1109396059047998559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2009/01/open-course-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1109396059047998559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1109396059047998559'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2009/01/open-course-development.html' title='Open Course Development'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6601845628020278397</id><published>2008-12-30T03:22:00.000+02:00</published><updated>2011-12-11T12:34:05.184+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='servlets'/><title type='text'>Teaching Servlets and JSP</title><content type='html'>It's the end of a week teaching Sun's SL-314 course -- "Web Component Development with Servlets and JSP" in Cape Town. It's been challenging and demanding, but, above all, fun! I had a &lt;span style="font-style: italic;"&gt;great&lt;/span&gt; bunch of participants on the course, a couple of whom were old friends from an "Intro to Java" course (Sun's SL-275 course) some months ago.&lt;br /&gt;&lt;br /&gt;The course materials are pretty good, although with a couple of misfeatures -- in my ever-so-humble opinion, as always -- and one &lt;span style="font-style: italic;"&gt;glaring&lt;/span&gt; omission! (Never mind the details; I won't bite the hand that feeds me. This time. Rest assured that I've passed my thoughts on to the good people at Sun Education.) However, the whole sequencing and structure of the course has set me thinking, "How would &lt;span style="font-style: italic;"&gt;I&lt;/span&gt; go about structuring such a course? What examples and challenges would I use for lab work?"&lt;br /&gt;&lt;br /&gt;I take this teaching stuff pretty seriously&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/small&gt;. So I'm always looking for ways to add value above and beyond what is offered by the course materials. Of course, the most valuable thing a trainer can bring into these sorts of skills-oriented technical courses is one's own experience actually using the technology on real-world projects. But beyond that, a lot of value can be added (or subtracted) by the sequence, timing and manner in which the material is presented. In a 5-day course time is terribly limited, so practical examples and labwork are necessarily very constrained, so it is very hard to work-up really &lt;span style="font-style: italic;"&gt;good &lt;/span&gt;examples.&lt;br /&gt;&lt;br /&gt;Setting examples and lab-work for courses is actually a &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; hard problem. You don't want to restrict the work to toy problems -- students pick up on that very quickly, and, even more quickly, lose interest in the course material, and, more importantly and with longer-term consequences for the remainder of the course, they lose &lt;span style="font-style: italic;"&gt;respect&lt;/span&gt; for the course (and sometimes for the instructor, too.) On the other hand, time is very limited -- perhaps a couple of hours for any given issue, so extensive examples take too long to implement.&lt;br /&gt;&lt;br /&gt;Then, too, one is in the position of trying to illustrate and/or reinforce key points in the course material, and developing actual code always involves a measure of extraneous detail -- housekeeping code. It adds &lt;span style="font-style: italic;"&gt;nothing&lt;/span&gt; to the teaching purpose of the exercise, but it certainly chews into the time available!&lt;br /&gt;&lt;br /&gt;And -- not to be neglected -- I think it is important that examples be at least a little bit &lt;span style="font-style: italic;"&gt;entertaining&lt;/span&gt;. After all, we can do order-entry at work anytime... But there's a borderline across which "entertaining" becomes "irrelevant". (Much the same can be said of &lt;a href="http://lemnik.wordpress.com/2008/10/21/misleading-microbeanchmarks/"&gt;micro-benchmarks&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Relevance? You wanted relevance from a blog post? As opposed to &lt;span style="font-style: italic;"&gt;rambling&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;OK&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I'm starting to put together my own material for a number of courses, centring around the gaps in the corporate professional training space (OO and Java technical matters, of course.) that I've been seeing over the past decade.&lt;br /&gt;&lt;br /&gt;(Of course, &lt;span style="font-style: italic;"&gt;now&lt;/span&gt; is a brilliant time to be putting my own course-material together. In times of economic downturn, the very &lt;span style="font-style: italic;"&gt;first&lt;/span&gt; thing to get the axe is training! How short-sighted is that?)&lt;br /&gt;&lt;br /&gt;&lt;hr align="left" width="25%" /&gt;&lt;span style="font-size: x-small;"&gt;[1] As with most things, the more you put into it, the more you get out of it!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6601845628020278397?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6601845628020278397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/12/teaching-servlets-and-jsp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6601845628020278397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6601845628020278397'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/12/teaching-servlets-and-jsp.html' title='Teaching Servlets and JSP'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2294009141035855933</id><published>2008-11-15T20:58:00.000+02:00</published><updated>2011-12-11T12:01:47.875+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screwups'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Brain Delayed - In Transit</title><content type='html'>On my way down to Cape Town -- yet again -- for a Java Intro course -- yet again...&lt;br /&gt;&lt;br /&gt;On arrival at the checking-desk, get told that I'm not booked to go &lt;i&gt;to&lt;/i&gt; Cape Town, but am eventually found to be on my way to George &lt;i&gt;from&lt;/i&gt; Cape Town.  Returning to Cape Town on Friday.  &lt;i&gt;Wow!  What happened here?&lt;/i&gt;  OK, so off to the booking office where I have to fork out an extra R700 to cover the ticket change.  Fortunately the SAA staff at George and I know each other by first name.  (As a result I seldom have to produce ID to check in -- most of the staff can ID me by sight.  Beat &lt;i&gt;that&lt;/i&gt; for personal service! ;-)&lt;br /&gt;&lt;br /&gt;Sudden thought: Let's check the car rental reservation.  Sure enough! I'm booked to pick up a car in George.  Get that one changed.  Things are so screwed up at this point that I called the B&amp;amp;B where I'm allegedly booked to stay in CT.  Yes, indeed, they DO have a reservation for me.&lt;br /&gt;&lt;br /&gt;WTF was somebody at the travel agency thinking? This guy is going to fly from Cape Town to George, pick up a car there, and then stay 5 nights in Cape Town before reversing the journey?&lt;br /&gt;&lt;br /&gt;Now I only have to waste an extra hour-and-a-half in the airport.  &lt;i&gt;I just love hanging about in airports, don't you?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2294009141035855933?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2294009141035855933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/11/brain-delayed-in-transit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2294009141035855933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2294009141035855933'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/11/brain-delayed-in-transit.html' title='Brain Delayed - In Transit'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2401760778016830830</id><published>2008-09-25T20:56:00.000+02:00</published><updated>2011-12-11T12:20:54.749+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><title type='text'>Back in the Saddle: Java 101</title><content type='html'>Interesting to be back in the Training Game.  It is a Java 101 (Introduction to Java Programming for Programmers) course.  With some differences.&lt;br /&gt;&lt;br /&gt;Its all for one corporate client.  My God, its been a long time since I had to deal with Corporate IT Thinking.  There's some of it that exists for good reason.  And then there's a whole lot of crap.  Stuff that's more to do with politics, staking out of turf, ass-covering... The real downside for a Java 101 course is not so huge, but still...  everybody is from the same organisation, though they might well be from different planets, considering the departments they're drawn from...  But, there's still not a lot of cross-pollination of ideas.  The whiff of groupthink.&lt;br /&gt;&lt;br /&gt;I've taken the format of the "usual" 5-day course and adapted it somewhat to a 6-day format split over two 3-day sessions a couple of weeks apart, so there's a lot more breathing room, but, for any "Intro to X" course there is a certain body of knowledge that &lt;i&gt;has&lt;/i&gt; to be covered, and there's a certain Logic  to the order in which material has to be presented, so there's no escaping... There's just a bunch of stuff that &lt;i&gt;has&lt;/i&gt; to get taught before people can realistically handle a tutorial (a.k.a. "homework".)  All resulting in a pretty heavy First Three Days.  I've just finished Day 3 ("&lt;i&gt;Subscriber Trunk Dialing&lt;/i&gt;".)  I'm &lt;i&gt;exhausted&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Differences: In the usual "5-day" format I'd have to be really winding up my energy to stay the pace for Day 4.  This time around I get a week-long break, and get to start fresh.  Mmmmm... Gooooood!&lt;br /&gt;&lt;br /&gt;Happily I have a fairly bright bunch.  Quite a mix of backgrounds, all the way from a university graduates to "just-a-programmer-can-I-google-a-solution-and-cut-n-paste-the-code".  The usual chirpy heckler who borders, at times, on irritating, but helps keep things alive. The usual "deeply tech" who catches all my mistakes and omissions, and keeps me on my toes.&lt;br /&gt;&lt;br /&gt;I'll confess that I'm having a ball!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2401760778016830830?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2401760778016830830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/09/back-in-saddle-java-101.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2401760778016830830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2401760778016830830'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/09/back-in-saddle-java-101.html' title='Back in the Saddle: Java 101'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5087547891441116007</id><published>2008-09-11T02:05:00.000+02:00</published><updated>2011-12-11T12:05:05.208+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='noise'/><category scheme='http://www.blogger.com/atom/ns#' term='infrastructure'/><title type='text'>Infrastructure Fix</title><content type='html'>Finally!&amp;nbsp; Took a day off from preparing for the (Advanced Architecture and Design) course I'm hosting next week, and spent the time getting my local infrastructure back on its feet after a breakdown some weeks ago.&amp;nbsp; Basically the LAN server died... motherboard or CPU. Suddenly we realised just how much we've come to depend on that little machine!&amp;nbsp; DNS caching, plus names for all the machine on our farm-LAN&lt;sup&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sup&gt;, HTTP proxy, local &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; server, file-share, music streaming, and not to mention supplying the base-infrastructure for some &lt;a href="http://www.jini.org/"&gt;Jini&lt;/a&gt; services that come and go as we play around with Jini and JavaSpaces.&lt;br /&gt;&lt;br /&gt;So now that we've beefed-up the CPU and disk a bit, it was "just" a case of getting all the bits of server software installed and cleanly configured. Nothing difficult, but it all takes time! Especially when you're a bit.... fastidious?... about getting the config "right", as opposed to "just poking things until they work". I truly despise "voodoo config" where people don't really make the effort to understand the impact and effects of what they're doing, and fuck it up royally as a result.&amp;nbsp; "Oh, well, I'll install mod_disk_cache &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; mod_mem_cache... after all, two caches must be better than one, mustn't they?"&amp;nbsp; &lt;span style="font-style: italic;"&gt;Ding!&lt;/span&gt;&amp;nbsp; &lt;span style="font-style: italic;"&gt;You Do Not Win The Lounge Suite!&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Well, its been fun! And finally I can forget all about it again until the next hardware failure. The only thing I really would like to achieve is to get the server &lt;span style="font-style: italic;"&gt;quiet&lt;/span&gt;&lt;sup&gt;&lt;small&gt;2&lt;/small&gt;&lt;/sup&gt;, and get its power-consumption way, &lt;span style="font-style: italic;"&gt;way&lt;/span&gt; down!&amp;nbsp; And maybe have a few more tiny-little servers...&lt;br /&gt;&lt;hr align="left" class="jump" style="width: 25%;" /&gt;&lt;span style="font-size: x-small;"&gt;[1] The term "server farm" takes on a &lt;span style="font-style: italic;"&gt;whole&lt;/span&gt; new significance ;-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] Yeah, I'm a complete arsehole about noise. I really, &lt;span style="font-style: italic;"&gt;really&lt;/span&gt;, &lt;span style="font-style: italic; font-weight: bold;"&gt;really&lt;/span&gt; hate noise...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5087547891441116007?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5087547891441116007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/09/infrastructure-fix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5087547891441116007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5087547891441116007'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/09/infrastructure-fix.html' title='Infrastructure Fix'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-927061419886909698</id><published>2008-08-22T02:39:00.000+02:00</published><updated>2011-12-11T12:22:45.349+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><title type='text'>Courseware: The Next Step</title><content type='html'>Just received my Instructor's Manual (only a week late!) for Sun's &lt;a href="http://www.sun.com/training/catalog/courses/SL-425.xml"&gt;SL-425&lt;/a&gt; "&lt;span style="font-style: italic;"&gt;Architecting and Designing J2EE Applications&lt;/span&gt;"&lt;sup&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sup&gt; and I'm very happy to see that it is basically the same course as the old "Architecture and Design" course I taught several times lo' those many years ago when I was so frequently on my feet as "Herr Instructor".&lt;br /&gt;&lt;br /&gt;This is easily the best&lt;sup&gt;&lt;small&gt;2&lt;/small&gt;&lt;/sup&gt; course I ever "taught"! It is aimed a senior, experienced designers and developers&lt;sup&gt;&lt;small&gt;3&lt;/small&gt;&lt;/sup&gt;, and confronts head-on the sticky few-good-answers stuff, the ill-defined and the fuzzy grey areas. I have always run the course in a round-table "workshop" format. When you get 8 or 10 senior developers into a room, each with a decade or two of experience, you're not going to be their Teacher. And you sure as &lt;span style="font-style: italic;"&gt;hell&lt;/span&gt; better not have a tender ego. "I don't know" is a frequent answer. The job is much more one of facilitation: Keeping discussion on-track, drawing quieter participants into the discussion, acknowledging expertise and encouraging people to share their (often vast!) experience. I found it hugely enjoyable to engage with seriously expert people, and to facilitate drawing out their expertise. And I learned a lot!&lt;br /&gt;&lt;br /&gt;It has been a very long time that I have wanted to run this course again, so I'm looking forward to it hugely!&lt;br /&gt;&lt;br /&gt;So: I have a couple of weeks to catch-up on the changes since last it &lt;span style="text-decoration: line-through;"&gt;taught&lt;/span&gt; facilitated this course. Mainly the technology has caught up with the tech:  Where there was only CORBA or RMI a decade ago, there are now a host of J2EE technologies, and the course now includes them. Where a decade ago the whole idea of enterprise-architecture patterns was pretty new and unheard-of, now there's the &lt;a href="http://java.sun.com/reference/blueprints/"&gt;J2EE Blueprints Catalogue&lt;/a&gt; (even if those yanks can't spell "Catalogue"!)&lt;br /&gt;&lt;br /&gt;Of course I'll probably be unable to resist the temptation fo slipping in a few sly teasers about Jini and Javaspaces -- but Hey! Sun seem to encourage instructors to go beyond the boundaries of the course material, and encourage us to bring our own experience into the classroom.  Or workshop in this case.&lt;br /&gt;&lt;br /&gt;I am still thinking about floating my own version of this course, perhaps a little less attached to Java tech, so that more people might engage.  The absolutely &lt;span style="font-style: italic;"&gt;best&lt;/span&gt; runs of the course were when we had many people from different organisations and backgrounds. Cross-pollination really works.  Ask plants!&lt;br /&gt;----&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[1] Is there such a word as "Architecting"? My spelling-chequer doesn't seam to think sew.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] "Best" from my point of view, anyway. Though, I can honestly report that every participant I've ever had on this course reported exactly the same sentiment!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[3] I don't believe the term/job-title "Architect" had any currency back then. Whilst it had certainly been invented4 it was certainly not popular. In fact there still was no such Job Title as "Software Designer" back then. My boss had to invent it for me!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[4] I believe that I was one of the (probably many) inventors of "Software Architect"a s a job title. Certainly not unique in that, though! Back in 1989 a technical career-path looked much like "Junior Programmer - Programmer - SeniorProgramer - Junior Systems Analyst - Systems Analyst - Senior Systems Analyst - Business Analyst..." I rejected the whole deal&lt;sup&gt;&lt;small&gt;5&lt;/small&gt;&lt;/sup&gt; stating "Analysis is The Art of Taking Things Apart. I don't want to do &lt;span style="font-style: italic;"&gt;that&lt;/span&gt;. I want to put things together, and &lt;span style="font-style: italic;"&gt;that&lt;/span&gt;'s called Design (and, at the high-end, &lt;span style="font-style: italic;"&gt;Architecture&lt;/span&gt;)."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[5] ... in a bi-annual merit-assessment that became (in)famous as the one where I told my Manager, "If you want loyalty, get a dog! This is a business relationship; didn't you understand that?" Needless to say I got no increase that year. ;-)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-927061419886909698?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/927061419886909698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/08/courseware-next-step.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/927061419886909698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/927061419886909698'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/08/courseware-next-step.html' title='Courseware: The Next Step'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7913087645119413796</id><published>2008-07-19T21:51:00.000+02:00</published><updated>2011-12-11T13:40:00.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Datapro/Vox Spam Wrapup</title><content type='html'>Its been a long, long time... way too long... since I promised to report back on my complaint to the &lt;a href="http://www.ispa.org.za/"&gt;ISPA&lt;/a&gt; in which&lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom.html"&gt; I accused Datapro/Vox Telecom of being spammers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first part of the ISPA's complaint-handling procedure is to have the parties try and resolve matters between them. Datapro's attempt to brush me off was a laugh:&lt;a href="http://mikro2nd.net/blog/mike/the+web/2008/02/15/Taking-on-the-Spammers-Datapro-Vox-Telecom-Part-1.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom.html"&gt;Part 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_15.html"&gt;Pahttp://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.htmlrt 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_6975.html"&gt;Pahttp://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.htmlrt 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.html"&gt;Part 4http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;So eventually, somewhere around March, the event wound its way to the ISPA's Complaints Committee who deliberated, and some weeks later, sent me a formal Ruling:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Datapro/Vox Telecom were found guilty of spamming, and fined R100 000&lt;/span&gt; (about EUR10 000 at the time.)&lt;br /&gt;&lt;br /&gt;Naturally Datapro appealed this decision, as was their right. Unfortunately the appeals process is quite a slow one, so it was only about 9 June that I was informed of the outcome of the appeals process:&lt;br /&gt;&lt;br /&gt;On appeal it was found that &lt;span style="font-weight: bold;"&gt;Datapro/Vox Telecom were confirmed as being guilty of spamming&lt;/span&gt; (through address repurposing.) The fines were, however, reduced to R45 000, most of which has been suspended for 12 months, provided that Datapro/Vox do not spam again within that period of time. Effectively Datapro/Vox have had to pay a paltry R7 500 in fines. &lt;span style="font-weight: bold;"&gt;Their guilt remains undisputed&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This strikes me as the ISPA having no balls.&lt;br /&gt;&lt;br /&gt;The Appeals Committee recomended that Datapro/Vox&lt;br /&gt;&lt;blockquote&gt;...ensure that a working opt-out facility is provided on all marketing emails and to report back to the ISPA complaints administrator within 1 (one) calendar month of receipt of this report on remedial action taken by it. The Appeals Panel recommended (which recommendation is not binding) that such remedial action should also include cleaning its email marketing lists to avoid a repetition of this complaint. This could be achieved by way of a reminder email requesting recipients to confirm their desire to continue receiving such emails (opt in), which is preferable, or by requesting them to indicate their preference not to receive such communications (opt out), which is adequate and then abiding by the indicated preference.&lt;/blockquote&gt;To my knowledge none of this has happened. I have received neither an opt-in request, nor any opportunity to op-out.&lt;br /&gt;&lt;br /&gt;The only communication I &lt;span style="font-style: italic;"&gt;have&lt;/span&gt; had was on &lt;span style="font-weight: bold;"&gt;3 June&lt;/span&gt; -- 8 days &lt;span style="font-style: italic;"&gt;after&lt;/span&gt;the Appeal Ruling -- I received yet another marketing spam fromDatapro/Vox... still no opt-out link, still no confirmed opt-in. I justhave not had the time or energy to follow-up with another complaint of this violation of the suspension conditions imposed by the ISPA on Datapro/Vox.&lt;br /&gt;&lt;br /&gt;Further, the ISPA's documentation carries a notice stating&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;PRIVATE AND CONFIDENTIAL:&lt;br /&gt;All communication is confidential and may not be distributed.&lt;br /&gt;See http://www.ispa.org.za/commsrules for more info.&lt;/blockquote&gt;&lt;/div&gt;so I am effectively barred from making the original PDFs available, despite (or perhaps because of) my having made it clear to the ISPA that it was my firm intention to publish the course of events and all documents.&lt;br /&gt;&lt;br /&gt;I am also unable to find any notice, link or reference to this ruling on the &lt;a href="http://www.ispa.co.za/"&gt;ISPA website&lt;/a&gt;. Are they too afraid of the potential income-loss should one of their largest &lt;span style="text-decoration: line-through;"&gt;spammers&lt;/span&gt; members get pissed-off enough to depart the Association?&lt;br /&gt;&lt;br /&gt;A pretty sorry indication of the general state of the local ISP industry, I'm afraid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7913087645119413796?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7913087645119413796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/07/dataprovox-spam-wrapup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7913087645119413796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7913087645119413796'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/07/dataprovox-spam-wrapup.html' title='Datapro/Vox Spam Wrapup'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5937328896391558439</id><published>2008-07-03T23:29:00.000+02:00</published><updated>2011-12-11T13:54:08.645+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spof'/><category scheme='http://www.blogger.com/atom/ns#' term='infrastructure'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Power to the Purple</title><content type='html'>A week of power-supply problems. Not Eskom's fault, this time, but more localised failures.&lt;br /&gt;&lt;br /&gt;First the power-supply for the network server had a fan stop turning. I could have taken the chance on the unit working without cooling, since it is relatively lightly loaded -- no graphics cards, only a single disk -- but, since I had a spare power-supply unit handy it was a task of mere minutes to swap the faulty unit out and get the server back into action. It is a fairly key piece of our little home network, being a web-cache, local domain-name server and cache, Subversion repository and file-share space, so we miss it badly when it is down.&lt;br /&gt;&lt;br /&gt;Then the power supply on my desktop machine decided to follow suit. Also a fan failure. I &lt;i&gt;hate&lt;/i&gt; those crappy little fans! There's absolutely nothing wrong with the basic electronics of the power supply itself, but the ball bearings in the fan have died. Pricing for a new power-supply runs from a little over R100 if I were in Cape Town with easy access to wholesalers, through R200 from a web-shop, all the way to R300 from the local PC shops! This is for the most basic 350W PSU -- none of that fancy gaming-machine stuff for me. (Though I will confess to being tempted by a unit costing around R800, simply because it is alleged to be &lt;i&gt;completely quiet&lt;/i&gt;! I'm a self-confessed anti-noise-maniac.)&lt;br /&gt;&lt;br /&gt;My guess is I'm going to spend an hour messing about with the soldering iron, installing new fans (I have a couple just lying about) in the "faulty" power-supplies.&lt;br /&gt;&lt;br /&gt;At the same time, several warnings from my server-supplier in London telling the story of a week-long tail-of-woe about power-supply into the datacentre. Apparently a failover switch failed to work correctly during a power-outage last Sunday, causing the battery-based UPS to take the entire load for about 10 minutes before the batteries were totally drained. All servers in the DC went down &lt;i&gt;hard&lt;/i&gt;. It has taken them until Thursday to isolate the problem and replace the parts (electrical and mechanical) that were at fault.&lt;br /&gt;&lt;br /&gt;During the whole affair, all server owners have been kept fully informed via RSS feeds and emails at every step of the way, since there is a risk (however slight) that servers might go down if there is a power-grid outage again and the on-site staff -- now fully briefed on managing a manual switch from grid power to the backup generator -- should get taken-up at just the wrong moment.&lt;br /&gt;&lt;br /&gt;This is exactly the sort of thing I expect from server providers and datacentre operators. Everybody understand that, despite the best-laid plans, sometimes shit happens. It is how they respond, and how transparent and communicative they are in responding to the crisis that truly matters.&lt;br /&gt;&lt;br /&gt;This is in very sharp contrast to &lt;a href="http://www.verizonbusiness.com/za/products/itsolutions/datacenter/"&gt;Verizon's datacentre in Durban&lt;/a&gt;, where my &lt;a href="http://onemikro2nd.blogspot.com/2008/06/damager-or-manager.html"&gt;other client&lt;/a&gt;'s servers are housed. About 10 days ago they had some electrical work going on in the DC, which in turn made some server-moves necessary. They did all this &lt;i&gt;without warning their clients&lt;/i&gt; that there might be some risk to their operations. Needless to say, my client's servers went down without warning in the wee hours of Sunday morning. No heartbeat monitoring in place, so it was Monday before anybody knew that something was wrong. No peep from Verizon to their customers. Half-arsed, I call it.&lt;br /&gt;&lt;br /&gt;There's a lesson in all this about Single Points of Failure. I've been warning for over 8 months that having all the servers housed in a single DC, or even in a single city, is a risk. Maybe now the business will take some action, but, given the general lack of respect or attention to the fact that, like it or not, they are a technology business, I have my doubts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5937328896391558439?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5937328896391558439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/07/power-to-purple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5937328896391558439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5937328896391558439'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/07/power-to-purple.html' title='Power to the Purple'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2940674085200467063</id><published>2008-06-19T01:45:00.000+02:00</published><updated>2011-12-09T09:19:21.708+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='dev-mgmt'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Damager or Manager?</title><content type='html'>Since &lt;a href="http://developers.slashdot.org/article.pl?sid=08/06/17/1725205"&gt;Open Letters to Management&lt;/a&gt; seem so &lt;i&gt;flavour du jour&lt;/i&gt;, I thought I'd save the following fine rant from oblivion.  Names and project details changed to protect the guilty, of course.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;DumbTribe is a small startup in the mobile space.  They have started seeing some good traction for their product, but are completely chaotic in their "management" of the company.  The company is 100% reliant on IT, yet, whilst they're willing to spend an ordleplex of money on fancy new offices, they're astoundingly short of cash when it comes to things like buying another server to act as failover for their &lt;b&gt;single&lt;/b&gt; server. Said server is the &lt;b&gt;sole&lt;/b&gt; source of income for the business.&lt;br /&gt;&lt;/i&gt;&lt;i&gt;What [ManagerX] calls a "blogger tool" is really a form of Content Management system that ends up providing (among other things) Atom and RSS feeds...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;[ManagerX] wrote:&lt;br /&gt;&lt;br /&gt;&amp;gt; This has certainly taken longer than we initially thought it would. I&lt;br /&gt;&amp;gt; think it was over a few of months back that we were expecting a&lt;br /&gt;&amp;gt; finished blogger tool.&lt;br /&gt;&lt;br /&gt;You seem to have forgotten that there were other tasks that YOU prioritised ahead of the "blog" tool -- development of the feed aggregator and the [BigClient] pilot, not to mention system administration tasks more numerous than I can recall, design and coding assistance to my colleague, installation and maintenance of essential technical infrastructure indispensable to organised development (some of which runs on my own servers, at no additional charge to [DumbTribe], simply because that was the &lt;i&gt;fastest&lt;/i&gt; way to get the tools in place.)  I regret that I am unable to work on more than one thing at a time, but these are rather complex systems dealing with some very erratic, "dirty" data coming-in, and, like most men, I don't multitask well.&lt;br /&gt;&lt;br /&gt;&amp;gt; It is of zero use in it's present state(just like the blogger tool you&lt;br /&gt;&amp;gt; created was in it’s 'unskinned' state(to me the level of things that&lt;br /&gt;&amp;gt; fell under 'skinning' was surprising.&lt;br /&gt;&lt;br /&gt;First: I warned right from the start that installation of the necessary software was the quick and easy part, but that changing templates -- "skinning" as you call it -- would take at least several days for someone expert in the templating system.  I also made it clear that such templating was NOT in my sphere of competence.  Evidently nobody was listening to the bits they didn't want to hear.&lt;br /&gt;&lt;br /&gt;Second: I will not take responsibility for your inability to produce a coherent specification for the tool.  Lack of any technical specification underlies the several misdirections and false starts.  A powerpoint does not BEGIN to form a clear technical specification.&lt;br /&gt;&lt;br /&gt;Example:  I, at one stage, asked you how many "blogs" it is necessary for the system to support.  At that time I had in mind to use a particular piece of software as the foundation infrastructure.  Your answer to my question was "thousands!" which answer had a significant impact on my technical decision-making, since the tentatively-chosen solution is unsuited to such large volumes.  I certainly made it clear that I was unfamiliar with the more suitable tool, and, indeed, the "skinning" -- the writing of custom templates -- turned out to be more problematic than I anticipated.  I made a poor guess in the face of inadequate information, a misleading business requirement and insufficient time to evaluate alternative technical solutions.&lt;br /&gt;&lt;br /&gt;In the long run it turned out that a "blog" system is just what [DumbTribe] does NOT need.  What IS needed is an article/story management system for providing Atom/RSS feed output.  This is in the final stages of development.&lt;br /&gt;&lt;br /&gt;You seem to have forgotten that using a blog-system was initially mooted merely as a temporary stopgap solution to provide a mechanism for getting article content into feeds; it was never intended to be the "real" solution. What I have been developing is such solution. Assuming you don't sabotage delivery with yet another interruption.&lt;br /&gt;&lt;br /&gt;I would have been finished 10 days ago had [my colleague] had enough spare hours to assist me on areas where I do not have the deep knowledge of data structures and code she already has in place, and if the "specification" had not been changed on a number of occasions.  Unfortunately other more pressing issues have had to take precedence on her time, with resulting delays on the "blog" project.  Furthermore the assistance I have (gladly) given [said colleague] on other projects has also had the effect of taking several days from "blog" development.&lt;br /&gt;&lt;br /&gt;&amp;gt; I am sure you understand what this looks like from our end. It just&lt;br /&gt;&amp;gt; feels like you can’t give us what we need.&lt;br /&gt;&lt;br /&gt;Yes, I am pretty sure I DO understand.  It seems to me that you think one of two things; either:&lt;br /&gt;&lt;br /&gt;1.  That I am incompetent to produce working software, or&lt;br /&gt;&lt;br /&gt;2.  That I am dishonest and lie to you about my activities.&lt;br /&gt;&lt;br /&gt;I am neither, and find either accusation hurtful, denigrating, and completely unprofessional.  Software development, unlike so many other jobs, does not allow one to delude oneself about the limits of ones knowledge or abilities, so the charge of incompetence is easier for me to dismiss when I consider its source; I know exactly how good I am.&lt;br /&gt;&lt;br /&gt;Clearly you have absolutely no clue how software development works, nor what is a "normal" pace of production for software systems.  The fact that your most-recent experience of software development is exemplified by [colleague], who is prepared, for reasons I cannot comprehend, to endanger her health and wellbeing by working outrageous hours in order to meet ridiculous, unrealistic and arbitrary deadlines does not alter the truth of what I am saying.  Nor is it my place to attempt to teach you how software development works; for that sort of work I charge considerably more than you pay me.&lt;br /&gt;&lt;br /&gt;The fact that you have badly under-resourced this area of the business is hardly my fault.&lt;br /&gt;&lt;br /&gt;&amp;gt; I am so frustrated and feel if I have to explain what we need again I&lt;br /&gt;&amp;gt; will go mad.&lt;br /&gt;&lt;br /&gt;Unfortunately software is all about the detail.  If you do not tell a developer all the detail that they need, they will guess, and likely guess wrong.&lt;br /&gt;&lt;br /&gt;Therefore, where details are lacking I will ask again and again and again.  I have on occasion asked users to describe their requirement from beginning to end as many as 8 times in a single day in order to be sure I understood the requirement.  Then I asked them a couple more times the next day.  I am deeply sorry if my need to know what you want in full detail drives you mad -- I certainly do not wish to cause such mental anguish.&lt;br /&gt;&lt;br /&gt;&amp;gt; Please can you confirm that you understand and accept all the&lt;br /&gt;&amp;gt; functionality that we need&lt;br /&gt;&lt;br /&gt;No. I do not believe I understand what you need, particularly as you keep changing the requirements.  I am not a mind-reader, and you have not produced a comprehensive technical specification.&lt;br /&gt;&lt;br /&gt;Example:  Your comment on Monday, "Make sure we can direct the 'see original story' link to a site of our choosing (e.g. [ClientA] sites or [ClientB] sites)"  This directly CONTRADICTS the requirement laid out in your powerpoint that NO such link be present.  What am I supposed to do with that? I can put such a link in (though linking to what, I have no idea, nor do you say -- another missing detail) or I can leave it out (as is done at present.)  I am happy to do either, or to make any changes you require, since I understand that business requirements can and do change from time to time.  However, changing what is already implemented does unfortunately take some time and cannot simply be done with a wave of a magic wand.&lt;br /&gt;&lt;br /&gt;Example: The original requirement was for articles to have a single image attached.  Then an image or a URL.  Then multiple images or URLS.  Then it became "unusable unless we can upload video".  Then we didn't need video any longer.  Then we were back to one image/URL.  Currently I am informed that multiple images/URLS are a non-negotiable requirement.  Every time a change such as this is introduced it costs me hours or days in the attempt to comply.&lt;br /&gt;&lt;br /&gt;And you wonder why there have been delays.&lt;br /&gt;&lt;br /&gt;My current aim is to get the system in place with the capability to upload ONE image or attach ONE URL, either of which shall appear at the tail-end of the feed content (another detail not specified.)  It is my belief that it is better to get SOMETHING up and running, even though we all agree that it is NOT the end-product desired.  Then we evolve it to the state we desire.  After all, that is why it is called "soft"-ware.&lt;br /&gt;&lt;br /&gt;&amp;gt; and let me know what *date* we can expect a working tool to start&lt;br /&gt;&amp;gt; testing.&lt;br /&gt;&lt;br /&gt;In the absence of a full, clear, comprehensive specification, no such estimate can be made by anybody.  In effect you are waving your hands about, saying "build me a Tudor-style house over there" and then demanding that I tell you how long it is going to take without giving me the plans for the house, specifying the building materials, size of the house, number of bedrooms, etc.  When you supply me with a proper User Requirement Specification -- for which I will gladly supply a Word template outlining all the necessary information it should contain -- I may consider beginning to make estimates.&lt;br /&gt;&lt;br /&gt;&amp;gt; I don’t think it is unreasonable for me to ask you to commit to a&lt;br /&gt;&amp;gt; deadline, the brief is surely clear now after all these emails back&lt;br /&gt;&amp;gt; and forth and the very easily accessed example of blogger.com which I&lt;br /&gt;&amp;gt; asked you to use as a starting point.&lt;br /&gt;&lt;br /&gt;On the contrary I think it thoroughly &lt;b&gt;un&lt;/b&gt;reasonable to make such demands.  The "brief" (whatever THAT is) is non-existent.  To point to blogger.com and claim that that is what you want is ridiculous, since blogger.com is totally unsuited to your needs.  If it &lt;i&gt;were&lt;/i&gt; suitable there would have been no need to build anything else and we would not be having this conversation.&lt;br /&gt;&lt;br /&gt;I will remind you that I am contracted to deliver 40 to 80 hours per MONTH of work -- not per week.  This was deliberately and clearly negotiated up front.  Consequently I do not work full 8-hour days on DumbTribe activities, which, too has its effect on delivery schedules. The fact that I consistently seem to end up working more than the agreed number of hours per month seems to be taken for granted, or alternatively is regarded by you as an attempt to rip you off.  On the contrary, it is a good-faith attempt to come some way further than I strictly, am contractually obliged, in an attempt to help DumbTribe meet its goals.&lt;br /&gt;&lt;br /&gt;A lack of planning on your part does not constitute a crisis on my part.&lt;br /&gt;&lt;br /&gt;In the extremely unlikely event that I elect to extend/renew my contract, should DumbTribe wish to do so, please be assured that I will require a considerable tightening-up of the conditions relating to all of these issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2940674085200467063?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2940674085200467063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/06/damager-or-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2940674085200467063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2940674085200467063'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/06/damager-or-manager.html' title='Damager or Manager?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1311333122934889337</id><published>2008-06-13T01:50:00.000+02:00</published><updated>2011-12-11T12:29:40.083+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='courses'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><title type='text'>Otherwise Occupied</title><content type='html'>Spending my time preparing for a course -- "Introduction to Java Programming" -- for a Major Corp in CT next week. It's a course I must have presented dozens of time.  Perhaps hundreds.  But its been about 5 or 6 years.  Actually, I did teach it once a year or two ago... I'm sure the company I did the work for were satisfied. I'm pretty sure my students were mostly happy.  I wasn't.  The break from teaching had left me rusty.  God knows how many tiny but important details I left out by mistake.  Did I talk about &lt;span style="font-family: 'Courier New';"&gt;volatile&lt;/span&gt; variables?&lt;br /&gt;&lt;br /&gt;In a 5-day "intro" course, there's not much time to fuck about. There's a certain set of Java's features that you simply &lt;i&gt;have&lt;/i&gt; to talk about, at least in a simplified and superficial way, simply because your students are &lt;i&gt;guaranteed&lt;/i&gt; to trip across them &lt;i&gt;almost immediately&lt;/i&gt; they walk out of the classroom.&lt;br /&gt;&lt;br /&gt;On the other hand -- let's be honest -- there's a limit to what the human brain can absorb in 5 days!&lt;br /&gt;&lt;br /&gt;This time around its a little different. I'm teaching for a single company. The Program Manager's focus seems to be quite squarely on getting her people up-to-speed, and not on any other corporate ass-covering or thinly-veiled-reward-holiday-for-week sort of bullshit. Believe me, I've seen that crap all too often!&lt;br /&gt;&lt;br /&gt;I was able to stretch the course schedule to 6 days instead of 5 -- a huge relief and I can take things at a slightly less frantic pace. I frankly don't quite know how I would fit the basics into a 5-day course anymore, given that one &lt;i&gt;has&lt;/i&gt; to cover (at least at a shallow level) enums, annotations and generics. I guess that maybe the modules on threading and concurrency would have to fall away, but how the hell do you justify doing that when you &lt;i&gt;absolutely know&lt;/i&gt; that your students are -- willingly or un- -- going to confronted with those as soon as you can say "Boo"?&lt;br /&gt;&lt;br /&gt;Well, I've been working hard at getting my teach up to scratch, updating the (Day 2) OO module to include enums, and the (Day 4) module on the Collections API to teach generics, etc., etc.  Of course my (development) contract customer is a little miffed that I'm not putting in 18 hour days for them... Tough Tittie -- their time is worth about 1/4 what I'll earn from teaching, and they've hardly made any effort to improve the &lt;a href="http://onemikro2nd.blogspot.com/2008/04/software-estimation-considered-harmful.html"&gt;disgusting working conditions&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;I think it will be a killer course.  I'm certainly aiming to make it so!&lt;br /&gt;&lt;br /&gt;Along the way, Jason and I have been having some very entertaining discussion about the deeper, occult details of Java concurrency and system design. Something clicked last night; we both reached the conclusion that it would be fun (and probably educational for all concerned) to get more people in on that conversation, so we've revived my idea-of-many-years-standing -- a workshop/seminar format gathering, aimed at top-level, ten-years-plus-experience OO designers, architects and senior developers: A general framework to guide and channel discussion, aiming for an honest sharing experiences and learning.  No fluff!&lt;br /&gt;&lt;br /&gt;I facilitated (I would hardly dare claim "taught") one such many years ago, and, in my own humble opinion, it was &lt;i&gt;the best course I ever led&lt;/i&gt;!  I think that quite a few of the participants would agree with me.  Certainly a majority of them kept in touch with me for an otherwise inexcusable number of years afterwards!  After all this time, there still exists a huge gap in the professional-education space... beyond a certain level, expert practitioners (and I think it is true of any field, not just software design) have nobody to talk to -- nobody around them who is at a level where they can meaningfully push back on ideas -- nobody to brainstorm with.  Or at least, far too few.  The Advanced Practitioner Workshops would aim to try and (partially) fill that vacuum.&lt;br /&gt;&lt;br /&gt;So maybe its back to teaching again for a while!  It could be fun to focus on actually delivering actual deep learning for a change instead of just aiming to be Brilliant Clown For A Week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1311333122934889337?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1311333122934889337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/06/otherwise-occupied.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1311333122934889337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1311333122934889337'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/06/otherwise-occupied.html' title='Otherwise Occupied'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5671406401123831357</id><published>2008-06-03T00:11:00.000+02:00</published><updated>2011-12-09T13:36:20.209+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misdesign'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><title type='text'>UI Design Encourages Mistakes, Boosts Profits</title><content type='html'>Having just finished my banking and tax admin for the month, I fire up the bank's online system to fork the money over to the various landsharks, &lt;a href="http://iafrica.com/news/sa/351499.htm"&gt;fatcats&lt;/a&gt; and &lt;a href="http://www.sars.gov.za/"&gt;leeches&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img alt="Bank payment UI" class="left" src="http://i47.photobucket.com/albums/f197/mikro2nd/bankingui.png" /&gt;To make the various tax payments I first have to select which of my accounts to use for paying.&amp;nbsp; Then I select who I want to pay.&amp;nbsp; (For some value of "want".) The system insists that you click the "Search" button to check that you have entered the corect payee account details, but, of course, it only tells you this &lt;span style="font-weight: bold;"&gt;after you navigate away&lt;/span&gt; to the next page, and, when you return to the payment details form, it &lt;span style="font-weight: bold;"&gt;throws away all the details&lt;/span&gt; you have already captured.&lt;br /&gt;&lt;br /&gt;I also have to enter a 19-digit reference number and, guess what, if I get it wrong (as I am likely to do with such a long number) it only tells me on the next page, and, again, throws away all the work I have done to fill in the form, forcing me to redo it from scratch.&amp;nbsp; Including forcing me to redo the payee "Search", despite the fact that my browser has captured the field details perfectly.&lt;br /&gt;&lt;br /&gt;The real kicker is that it also ditches the account-number from which I want to make payment, substituting the "default" account (which happens to be my personal account and not the business account)&amp;nbsp; Of course, the account number is metres away up at the top of the web-page, so I don't notice that I'm making payment from the wrong account.&lt;br /&gt;&lt;br /&gt;As a result I pay business taxes out of my personal account.&amp;nbsp; When I eventually discover my mistake, I have to transfer the money over from my business account to fix things.&amp;nbsp; And I am going to &lt;span style="font-weight: bold;"&gt;get hit with the withdrawal fees again&lt;/span&gt;.&amp;nbsp; To add insult to injury, the payment pushes my personal account into overdraft.&amp;nbsp; &lt;span style="font-weight: bold;"&gt;Bam&lt;/span&gt;!&amp;nbsp; Overdraft fees!&lt;br /&gt;&lt;br /&gt;This UI is so wrong, in so many way, you would think that the bank&amp;nbsp; would have "inspired" and "motivated" to fix this monstrosity years ago.&amp;nbsp; Do you wonder why &lt;a href="http://www.standardbank.co.za/"&gt;Standard Bank&lt;/a&gt; can't be "bothered" to fix their broken user-interface?&amp;nbsp; Do you wonder why they make incredible &lt;a href="http://www.standardbank.co.za/site/investor/ann2005_overview.html"&gt;profits&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Did you think the two facts are &lt;span style="font-weight: bold;"&gt;unrelated&lt;/span&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5671406401123831357?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5671406401123831357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/06/ui-design-encourages-mistakes-boosts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5671406401123831357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5671406401123831357'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/06/ui-design-encourages-mistakes-boosts.html' title='UI Design Encourages Mistakes, Boosts Profits'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7657047804322130484</id><published>2008-05-20T19:46:00.000+02:00</published><updated>2011-12-09T11:34:05.532+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='tell-me-how-you-measure-me'/><title type='text'>Invisible Work</title><content type='html'>Here's a great quote from &lt;a href="http://research.sun.com/people/mybio.php?c=444"&gt;Jim Waldo&lt;/a&gt;, courtesy of &lt;a href="http://www.dancres.org/blitzblog/"&gt;Dan Creswell's Blitz blog&lt;/a&gt;:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;…Even worse than not being visible to the customer, work done on&amp;nbsp;designing the system is not visible to the management of the company&amp;nbsp;that is developing the system. Even though managers will pay lip&amp;nbsp;service to the teaching of &lt;a href="http://www.pearsonhighered.com/academic/product/0,,0201835959,00%2Ben-USS_01DBC.html"&gt;The Mythical Man Month&lt;/a&gt;,&amp;nbsp;there is still the worry that engineers who aren’t producing code are&amp;nbsp;not doing anything useful. While there are few companies that&amp;nbsp;explicitly measure productivity in lines-of-code per week, there is&amp;nbsp;still pressure to produce something that can be seen. The notion that&amp;nbsp;design can take weeks or months and that during that time little or no&amp;nbsp;code will be written is hard to sell to managers. Harder still is&amp;nbsp;selling the notion that any code that does get written will be thrown&amp;nbsp;away, which often appears to be regression rather than progress.&lt;/blockquote&gt;&lt;i&gt;Never a truer word!&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7657047804322130484?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7657047804322130484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/05/invisible-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7657047804322130484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7657047804322130484'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/05/invisible-work.html' title='Invisible Work'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6270722422127483201</id><published>2008-05-08T17:12:00.000+02:00</published><updated>2011-12-09T09:34:39.588+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='venture'/><category scheme='http://www.blogger.com/atom/ns#' term='social-networks'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Reprise</title><content type='html'>My week for being haunted by old ghosts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;A bit more than a week, actually...&lt;/i&gt;  It all started last Thursday with a call from a lady working with a lot of organisations that support HIV counselling, treatment and management.  A &lt;i&gt;lot&lt;/i&gt; of organisations.  She had tripped (&lt;i&gt;how?&lt;/i&gt;) across a product/project that a few of us put together some years ago that we called &lt;a href="http://www.coco.co.za/"&gt;Projectory&lt;/a&gt;.  Projectory is a collaboration and communication platform, specifically aimed at software-development organisations and teams.  Think of &lt;a href="http://www.collab.net/products/cee/"&gt;CollabNet.&lt;/a&gt;  But better, of course! ;-)  Certainly quite different in some key ways!  Except we never got the business off the ground, mostly through an unlucky turn of events that resulted in us losing key sales people at a most critical time.&lt;br /&gt;&lt;br /&gt;My caller was wondering whether the Projectory platform could be adapted to help them to communicate, collaborate and coordinate better with a couple of hundred other organisations.  Well, we've set up a meeting for next week, and we'll see...  What a blast from the past, though!  I had all-but-forgotten about Projectory...  Thankfully I have the code archived away somewhere safe.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;And then it happened again.&lt;/i&gt;  A call from an ex-colleague a couple of days ago:  Could we put together a rough estimate and proposal for a social-networking platform for &lt;a href="http://www.fifa.com/worldcup/index.html"&gt;World Cup 2010&lt;/a&gt;.  In case you're living in a cave (or the USA where "football" means something completely weird) South Africa will be hosting the 2010 Soccer World Cup, and, for South Africans, it is a very big deal.  This is, after all, the second biggest sport event in the world after the Olympics.  (China get the hell out of Tibet!)  The weird bit is that what's being asked for is very, &lt;i&gt;very&lt;/i&gt; close to the project we called &lt;a href="http://flightwish.com/"&gt;Flightwish&lt;/a&gt; -- a social-networking platform centred around group travel opportunities and concepts.  We failed to get funding for Flightwish, though we tried hard.  Normally I would favour a small-start, organic-growth, little-or-no-funding startup model, but that path is clearly a very poor fit for a Grow-Big-Fast webalicious venture.  Since then, a few others have started playing in that space, but I have yet to see any of them put together the exact combination of ingredients we planned.  Would we have done better?  Who knows?&lt;br /&gt;&lt;br /&gt;But now we may just get a chance to try it again.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Key takeaways&lt;/b&gt;&lt;/i&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I suck at Sales and driving Sales, therefore I am a poor fit for CEO of a startup.&lt;/li&gt;&lt;li&gt;Flightwish taught me a deep hostility to the idea of a single "window of opportunity"; it's rubbish.&lt;/li&gt;&lt;li&gt;Beware the Websites Of Yesteryear!  You put up a website.  It's out there.  You forget about it.  &lt;i&gt;Google doesn't!&lt;/i&gt; Fix them up or shut them down.&lt;/li&gt;&lt;li&gt;The "social" potential -- the ways that the web opens-up for collaboration and group communication -- we've barely scratched the surface of what's possible.&lt;/li&gt;&lt;li&gt;VC people in SA are mostly bankers with fancier job titles.  &lt;i&gt;And we all know the collective noun for bankers, don't we...&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6270722422127483201?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6270722422127483201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/05/reprise.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6270722422127483201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6270722422127483201'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/05/reprise.html' title='Reprise'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3628162790923314187</id><published>2008-04-30T23:46:00.000+02:00</published><updated>2011-12-11T12:12:32.737+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='lies'/><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='estimation'/><title type='text'>Software Estimation Considered Harmful</title><content type='html'>&lt;span style="font-weight: bold;"&gt;problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;So how long do you think it's going to take?&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;We've all been asked the question a thousand times and more.  Project Managers, Client Liaison, Salespeople, Marketing Managers,... they all want to know.  And we, like sheep, like the suckers we are, because we try to please (you try, too, please!) suck hard on our spacebar-calloused thumbs, and guess.&lt;br /&gt;&lt;br /&gt;"I guess a couple of days."&lt;br /&gt;&lt;br /&gt;"A week."&lt;br /&gt;&lt;br /&gt;"Three months."&lt;br /&gt;&lt;br /&gt;"A year; maybe 14 months."&lt;br /&gt;&lt;br /&gt;Nobody really trusts those really long guesses, though, so that's where the project management experts get involved, break the task down into itty, tiny bitty little bits, parallelise them, ALAP, ASAP, lead and lag.  And then we all sit down around a table, and for each and every one of the itty tiny bitty bits the project manager asks the dreaded question.&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;So how long do you think that one's going to take?&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;The Real Answer, the Truest Truth, is, "I don't know."  Perhaps a tiny voice deep inside our soul cries out, "I don't care! It is going to take as long as it takes."  But for mysterious reasons all tangled up in our wetware, all tied up in the social hierarchy dynamics of the human ape and those twisty strand of ribonucleic acid in our hardware, "I don't know" marks me as less-than-competent.  And "I don't care" is career limiting; "Not a team player. Fails to identify with the organisations goals and ethos."&lt;br /&gt;&lt;br /&gt;So we guess, and we guess, and we guess again.  &lt;span style="font-style: italic;"&gt;And we're (almost) always wrong&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;For 50 years we, as a craft, as an industry, have been guessing wrong.  For 50 years our projects have mostly finished "late", and we keep wondering "Why?"  Books have been written, Methodologies developed, PhDs awarded, Management Disciplines imposed and entire Consulting Industries built on the premise that it is ''possible'' to estimate software effort better than we presently do.  Or, if we can't estimate better, then we can manage the estimation risk better.  Or the process.  Or those pesky damn programmers.&lt;br /&gt;&lt;br /&gt;All in vain.  The projects keep coming in late.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;where it all comes from&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How did this abysmal state come about?&lt;br /&gt;&lt;br /&gt;I think it is rooted back in the 1950's, when the first Big Software projects were undertaken, most notably by the US military.  Quite naturally they applied the project management strategies that have worked for them since time beyond time.  Strategies that have successfully built forts, dug moats, laid siege to cities and moved large numbers of soldiers across continents and seas.  The trouble is that those are extremely well understood problems that have been solved thousands -- millions -- of times, ever since Akkad invaded Ur.  For such classes of problems, estimates of time and effort are pretty reliable.  If you're a logistics planner, an army engineer, you know, from loads of practice and handbooks distilling five thousand years of experience, just how long it takes for a boatload of soldiers to move a given distance, and just how much food, water and fuel they need along the way.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Where there are in the field a thousand swift chariots, ten thousand heavy chariots, and a hundred thousand mail-clad soldiers, with provisions enough to carry them a thousand ''li'', the expenditure at home, including entertainment of guests, small items such as glue and paint, and sums spent on chariots and armour, will reach the total of a thousand ounces of silver per day."&lt;br /&gt;&lt;div style="text-align: right;"&gt;-- Sun Tzu, ''&lt;span style="font-style: italic;"&gt;The Art of War&lt;/span&gt;''&lt;/div&gt;&lt;/blockquote&gt;It is an &lt;i&gt;extremely&lt;/i&gt; well understood problem domain!&lt;br /&gt;&lt;br /&gt;Software development is a different sort of beast.  It's &lt;span style="font-style: italic;"&gt;all&lt;/span&gt; new to us.  Amost every problem has &lt;span style="font-style: italic;"&gt;never&lt;/span&gt; been tackled in its entirety before.  I don't claim that software development is unique in this; I am pretty sure that developers of new aircraft, ship engines, new forms of bridges, all face the same problems as software development.  What -- perhaps -- distinguishes software development is that it's all new &lt;span style="font-style: italic;"&gt;every time&lt;/span&gt;!  We &lt;span style="font-style: italic;"&gt;never&lt;/span&gt; get to repeat our past developments.  If we were repeating -- exactly -- repeat-developing a requirement -- in every detail -- we would already have the code and we'd have no need to write anything!  And if there's one thing I've learned about developers, its that we -- most of us -- &lt;span style="font-style: italic;"&gt;hate&lt;/span&gt; doing the same thing twice!  It's probably a function of our predisposition towards ADD/ADHD.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;all change&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But, no!  In truth there are always differences between the Systems That Have Gone Before, and the Systems We're Developing Now.  Even if you've developed interface to a dozen payment gateways, 100 gets you 1 that the next payment gateway has some unique characteristics all its own.  Or perhaps some key technology has undergone a significant change in the last few years.  Or some new tech has crept into the picture.  "Our service is provided through a RESTful API"...  &lt;br /&gt;&lt;br /&gt;Then, too, how do you account for the Buggerance Factor. Murphy's Law. The simple fact that even the simplest piece of software depends on a ''huge'' number of other bits'n'pieces being in exactly the right places, configured exactly right, at exactly the right time?&lt;br /&gt;&lt;br /&gt;I should &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; have had to spend an hour this morning tracking down the fact that a key library -- a jarfile that &lt;span style="font-style: italic;"&gt;should&lt;/span&gt; always exist in a standard, accessible place -- had mysteriously been Taken Up.  Vaporised.  Gone.  Perhaps my disk is going flaky?  It shouldn't have happened.  I should &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; have wasted an hour figuring out why the application wouldn't run.  But I did.&lt;br /&gt;&lt;br /&gt;I should &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; have spent a morning last week discovering that, despite the Vendor's persuasive assurances to the contrary, the version 8.2 driver does emphatically &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; work properly with the version 8.1 server. Let us not even ask the question, "Who installed the 8.2 driver?" A fruitless waste of time, energy and stress hormones.&lt;br /&gt;&lt;br /&gt;How the hell do you predict that particular morning and figure it into your time and effort estimate?  Or the half-day spent figuring out that there's a bug in a key data-access library you're using (and it's not your choice that mandated its use, but some arbitrary "policy".)  And then another hour figuring out a way to work around the bug.  Just how exactly, when you're Project Planning some 4 months ahead of a frustrating and unproductive morning, do you predict those?&lt;br /&gt;&lt;br /&gt;You just blew your estimate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;managing estimation risk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am well aware of various approaches to software development that try to futz around the problem -- some of them with some marginal success -- by giving up the idea of a project being "finished".  But nobody seems willing to confront the central problem head-on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Estimating "How Long It Will Take" is a Broken Idea.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Like the drunk looking for his spectacles under the streetlight "Because that's where I can see to look for them" we keep searching for ways to make estimation more accurate, more reliable, more amenable to conventional management thinking.  What we really need to do is screw our courage to the sticking point, and accept that there is, really, honestly, truly, no alternative:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;We must completely abandon the whole concept that software effort is amenable to estimation at all.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;call to arms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Give up the crutch!&lt;br /&gt;&lt;br /&gt;The next time -- and every time after that -- that someone asks you "So how long do you figure that's going to take?" -- "So when do you think we can go live?" -- Just Say No!&lt;br /&gt;&lt;br /&gt;Just say, "It will take as long as it takes."&lt;br /&gt;&lt;br /&gt;I guarantee you some excitement in the short minutes immediately following, but let go of your fear! Immediately you will find yourself skulling in the calm pond of assurance and truth that lies beyond the fear. Live and enjoy this Truth, for it will set you free. If other people want and need to make deadline commitments, let &lt;i&gt;them&lt;/i&gt; be the ones to suck their thumbs, making up fantasies and lies. Do not allow them to push that responsibility onto you. Don't allow them to turn you into the liar.  Just tell them,&lt;br /&gt;&lt;br /&gt;It takes as long as it takes.  &lt;span style="font-style: italic;"&gt;It always does, anyway!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3628162790923314187?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3628162790923314187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/software-estimation-considered-harmful.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3628162790923314187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3628162790923314187'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/software-estimation-considered-harmful.html' title='Software Estimation Considered Harmful'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5115195290590946349</id><published>2008-04-25T18:51:00.000+02:00</published><updated>2011-12-09T11:36:37.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Quotable</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="color: #cc0066;"&gt;&lt;b&gt;&lt;i&gt;"The Ark was built by one man.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: #cc0066;"&gt;&lt;b&gt;&lt;i&gt;The Titanic was built by a team of professionals."&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5115195290590946349?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5115195290590946349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/quotable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5115195290590946349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5115195290590946349'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/quotable.html' title='Quotable'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-787734128082580460</id><published>2008-04-20T02:56:00.000+02:00</published><updated>2011-12-11T11:55:20.427+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='magic'/><title type='text'>Wizzards</title><content type='html'>Programming software is Magic.&lt;br /&gt;&lt;br /&gt;I don't mean that there's something mystical about it, nor that it is intrinsically inaccessible to ordinary people. Nor (I emphatically add) do mean that it is &lt;i&gt;like&lt;/i&gt; Magic.  In every aspect I can think of, the act of Programming software meets all the criteria for performing Magic.  Magic in the Swords and Sorcerers or &lt;a href="http://en.wikipedia.org/wiki/Unseen_University"&gt;Unseen University&lt;/a&gt; sense. "Alakazam!" and the Prince turns into a Frog. "Shazam!" and you're whisked away to a far, far place at high speed.&lt;br /&gt;&lt;br /&gt;Just look at the facts: We (programmers) write programmes -- spells -- in arcane and cryptic symbol languages unknown to the common mob.&amp;nbsp; Get the slightest part of the spell wrong, and, at best, it fails utterly to do anything.&amp;nbsp; At worst it runs amok and fearful consequences ensue -- fires, floods, loss of money and even life!&amp;nbsp; Get it just right, in every teensy, tiny, ball-aching, nit-picking detail&lt;sup&gt;&lt;small&gt;2&lt;/small&gt;&lt;/sup&gt;, and Lo! out of nothing, stuff happens in the real world.&amp;nbsp; Gold changes hands.&amp;nbsp; Trains run on schedule.&amp;nbsp; Music plays and Feyries dance&lt;sup&gt;&lt;small&gt;1&lt;/small&gt;&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;Where nothing was before the spell was cast, something comes about solely because of the spell.&amp;nbsp; That's Magic.&lt;br /&gt;&lt;br /&gt;And, just like in the fantasies where Wizards keep pet Dragons and dribbly candles set atop skulls are the acme of interior decoration, programmers frequently work at odd hours, with intense, monomanic concentration bordering on the inhuman.&amp;nbsp; And, like the traditional Wizardly Schools, programmers are admitted to different schools of various arts and degrees.&amp;nbsp; So we have Clerics -- programmers content to churn out the boilerplate code needed to keep the wheels of commerce (and most web applications) running, but lacking any true proficiency with martial weapons of higher degree; Monks -- who eschew the use of particular weaponry but, ninja-style, willingly embrace whatever comes to hand as combat fodder; Wizards -- capable of serious Magic, but forget their spells once cast, capable of wonderful stuff, but doomed to repeat it -- with minor variations -- time after time; and then there are the Sourcerers -- Masters of The Source&lt;sup&gt;&lt;small&gt;3&lt;/small&gt;&lt;/sup&gt; whose code is so elegant and expressive, so parsimonious and pretty as to make brave Programmers weep with envy and admiration.&lt;br /&gt;&lt;br /&gt;No, you can not deny.&amp;nbsp; Programming really is the realisation of the ancient idea of Magic.&amp;nbsp; Say the Magic Spell and Change Reality.&lt;br /&gt;&lt;hr align="left" width="20%" /&gt;&lt;span style="font-size: x-small;"&gt;[1] Well, anybody who wants to dance, I suppose, really.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] ...and My God, there's an inordinate amount of crappy detail that all has to be Just So!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[3] Waves to Ken, Doug, Dave, Jason, Paul, Johan, Bob, Brian, John and several dozen others...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-787734128082580460?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/787734128082580460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/wizzards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/787734128082580460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/787734128082580460'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/wizzards.html' title='Wizzards'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1696088711200488350</id><published>2008-04-15T18:02:00.000+02:00</published><updated>2011-12-11T12:00:31.628+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><title type='text'>Bad. Punctuation,</title><content type='html'>Tripped across this little quote on /. this morning:&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;A Linux machine!  Because a 486 is a terrible thing to waste!&lt;/small&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;small&gt;-- Joe Sloan, jjs@wintermute.ucr.edu&lt;/small&gt;&lt;/blockquote&gt;&lt;small&gt;Alas, I can clearly see that somebody screwed-up the punctuation.&amp;nbsp; Surely that should read&lt;/small&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;A Linux machine!  Because a 486 is a terrible thing. To waste!&lt;/small&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1696088711200488350?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1696088711200488350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/bad-punctuation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1696088711200488350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1696088711200488350'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/04/bad-punctuation.html' title='Bad. Punctuation,'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2429376032474511675</id><published>2008-03-26T18:38:00.000+02:00</published><updated>2011-12-11T13:58:06.354+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cross-platform'/><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><title type='text'>SABC's website sucks</title><content type='html'>Email to info@&lt;a href="http://www.sabc.co.za/"&gt;SABC&lt;/a&gt;.co.za:&lt;br /&gt;&lt;blockquote&gt;"Why does SABC's website suck so badly when viewed in Firefox?  &lt;br /&gt;&lt;br /&gt;"Not to mention that it is &lt;i&gt;completely&lt;/i&gt; unusable with Javascript  disabled, which renders it inaccessible to people using Braille readers  or text-based browsers of any kind; this violates the constitutions  provisions against discrimination."&lt;/blockquote&gt;BTW: if you leave off the "www." prefix, you get to see exaclty what software they're using to drive their (very b0rked) portal.&amp;nbsp; Now I'm not suggesting that this might render them susceptible to getting the portal cracked, but anybody who has set up a portal server&lt;i&gt; that&lt;/i&gt; incompetently has quite possibly left some default logins/passwords in place.&amp;nbsp; Maybe?&lt;br /&gt;&lt;br /&gt;Not that I'm &lt;i&gt;suggesting&lt;/i&gt; anything, mind...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2429376032474511675?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2429376032474511675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/03/sabcs-website-sucks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2429376032474511675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2429376032474511675'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/03/sabcs-website-sucks.html' title='SABC&apos;s website sucks'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-5863757400786713433</id><published>2008-03-01T06:50:00.000+02:00</published><updated>2011-12-09T14:31:17.883+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='hostile-it'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='ui'/><title type='text'>User-interface Reboot</title><content type='html'>This article by Mr Mirchandani gets it exactly right: &lt;a href="http://dealarchitect.typepad.com/deal_architect/2007/12/ui-again-dont-p.html"&gt;UI again ...don't pretty up, destroy!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have never forgotten the experience of early last year. Our car had been stolen, and we were jumping through the licensing department's hoops to get the old car de-registered, and our new car registered.&amp;nbsp; Well, 10-year-old, 2nd-hand car, since that's all we could afford with what the insurance company deigned to pay out -- another saga for another day.&lt;br /&gt;&lt;br /&gt;First we could not de-register the old car, because it was flagged on the licensing system as "stolen", so no changes to its details are permitted.&amp;nbsp; WTF?&amp;nbsp; We could not unflag it, since that would require the police to mark the car as recovered, complete with verification of engine, chassis, VIN and registration numbers.&amp;nbsp; Eventually we left the matter in the hands of one supervisor who took pity on us as I crumpled in the face of this actively-hostile "information" system.&amp;nbsp; She solved the impasse by going outside the system: phone calls to a special contact in Pretoria -- "high friends in low places."&lt;br /&gt;&lt;br /&gt;Then we had to register the new car.&amp;nbsp; The details had to get captured no less than 5 times!&amp;nbsp; Twice, manually by myself, the remainder by the clerk punching a terminal.&amp;nbsp; And two of those instance involved &lt;i&gt;recapturing the vehicle details from a form still-hot from their system's laser printer&lt;/i&gt;.&amp;nbsp; The system already had the details, yet they still had to be manually recaptured.&amp;nbsp; This is insane!&amp;nbsp; Weren't computers supposed to save us work?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-5863757400786713433?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/5863757400786713433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/user-interface-reboot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5863757400786713433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/5863757400786713433'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/user-interface-reboot.html' title='User-interface Reboot'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6272164001044856569</id><published>2008-02-23T04:37:00.000+02:00</published><updated>2011-12-11T13:32:15.040+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='isp'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>As BAD as Some can be, Others can be GREAT</title><content type='html'>We interrupt the &lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.html"&gt;on-going diatribe&lt;/a&gt; between my self and Datapro/Vox Telecom&lt;small&gt;&lt;sup&gt;[1]&lt;/sup&gt;&lt;/small&gt; to bring you &lt;b&gt;Good News for Modern Persons&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;In the supermortal words of Hubert Farnsworth, "Good News, Everyone!".&lt;br /&gt;&lt;br /&gt;Last eve some mishap caused my DSL model/router to disconnect.&amp;nbsp; For some while it failed to reconnect: &lt;b&gt;AUTH_FAIL&lt;/b&gt;, it said.&lt;br /&gt;&lt;br /&gt;Now, my ISP, &lt;a href="http://www.webafrica.co.za/"&gt;WebAfrica&lt;/a&gt;, whom I hold in &lt;i&gt;very&lt;/i&gt; high regard, has been having an occasional little trouble in recent times with their authentication servers.&amp;nbsp; &lt;i&gt;So&lt;/i&gt;: patience is the order of the day.&amp;nbsp; It was quite late in the day, so my bed called, nothing in my little local network really &lt;i&gt;needed&lt;/i&gt; Internet access overnight, so I left matters until the morning, in the hopes that the problems would be resolved without any input on my part.&lt;br /&gt;&lt;br /&gt;They were not.&lt;br /&gt;&lt;br /&gt;So... Onto the phone this morning.&amp;nbsp; &lt;i&gt;Less than two rings!&lt;/i&gt;&amp;nbsp; (Contrast this with giving up after an &lt;i&gt;hour&lt;/i&gt; on hold last week with &lt;a href="http://www.telkom.co.za/"&gt;Telkom&lt;/a&gt;!)&amp;nbsp; Spoke to a chap who was remarkably candid: "Yes, we have had a problem, and a few accounts seem (for reasons we don't fully understand, yet) to have been stuck in an "inactive" queue.&amp;nbsp; We're terribly sorry.&amp;nbsp; I am sorting it out right now [clickety clickety clickety click]; would you like to hold?"&lt;br /&gt;&lt;br /&gt;I declined to hold.&amp;nbsp; The pain of being on hold to Telkom being too fresh in my psyche, I suppose.&amp;nbsp; After suitable pleasantries I hung up.&lt;br /&gt;&lt;br /&gt;A couple minutes later the phone rang.&amp;nbsp; Same chap from WebAfrica.&amp;nbsp; " I see that your modem seems to be having some trouble connecting.&amp;nbsp; Could we please confirm the password it is using to connect...?"&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Well, Bugger Me Sideways With A Spoon!&lt;/i&gt;&amp;nbsp; Not only did WebAfrica's support guy sort the problem out &lt;i&gt;instantly&lt;/i&gt;, with an ordinary, human-to-human acknowledgment that something had, indeed, gone wrong, but, after I had explicitly said "Ticket closed; I'll call you if there is any further problem." had monitored the situation to make sure that I -- The Lowly Customer -- had been properly sorted out, and called me back to make sure of it!&lt;br /&gt;&lt;br /&gt;What am I saying, here?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I could have raved about not being kept on hold in some support-queue for an hour or longer.&lt;/li&gt;&lt;li&gt;I could have raved about the great service I received during the handling of my support call.&lt;/li&gt;&lt;li&gt;I could have raved all night in San Fransisco with the hot chick on her way to Hawaii (but that's another story!)&lt;/li&gt;&lt;/ul&gt;This guy -- unasked for -- &lt;i&gt;stayed attentive to my little problem&lt;/i&gt; until he was as sure as he could be, that it had been solved to &lt;i&gt;my&lt;/i&gt; satisfaction.&amp;nbsp; Not his.&amp;nbsp; Not Webafrica's.&amp;nbsp; Mine.&lt;br /&gt;&lt;br /&gt;Here's a &lt;i&gt;significant point&lt;/i&gt;: None of us (modulo the Absolutely Bloody Minded) is so stupid as to believe that everything Works Flawlessly All the Time.&amp;nbsp; Shit Happens.&amp;nbsp; We know this.&amp;nbsp; When it does, please don't lie to us and use phrasing designed to imply that we, the Customer, are Stupid, Insane and/or Lying!&amp;nbsp; Please don't pretend that it is Somebody Else's Fault or an Act Of (somebody's) God. &lt;i&gt; (Hello, Telkom!)&amp;nbsp;&lt;/i&gt; If you've fucked up, admit it, apologise, and move on. Nobody will hold it against you.&amp;nbsp; In fact, given the current climate of Assumed Corporate Infalibilty, we'll sympathise and likely offer to help you fix it!&lt;br /&gt;&lt;br /&gt;Just say "Yes.&amp;nbsp; We Had a problem.&amp;nbsp; We've fixed it. (OR: Here's what we're busy doing to Fix It.)&amp;nbsp; We're sorry."&lt;br /&gt;&lt;br /&gt;If it is a significant proportion of the working day, offer a credit for the lost service time.&amp;nbsp; Not difficult, is it?&amp;nbsp; Not &lt;i&gt;Rocket Science&lt;/i&gt;!&lt;br /&gt;I cannot think of a way to praise this enough!&lt;br /&gt;&lt;br /&gt;This most recent incident is the perfect exemplar of the sort of brilliant, attentive, honest service&amp;nbsp; I have &lt;i&gt;unfailingly&lt;/i&gt; received from WebAfrica!&amp;nbsp; I have had a friend&lt;small&gt;&lt;sup&gt;[2]&lt;/sup&gt;&lt;/small&gt; phone me up especially to say, "Thank you for putting me on to WebAfrica as a service provider!&amp;nbsp; I've since recommended them to at least 15 other people!".&lt;br /&gt;&lt;br /&gt;I kid you not!&lt;br /&gt;&lt;br /&gt;If anyone in South Africa wants or needs ADSL service, Internet access or web-hosting, &lt;b&gt;do yourself a favour&lt;/b&gt;: &lt;a href="http://www.webafrica.co.za/"&gt;www.webafrica.co.za&lt;/a&gt;.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Their rates are amongst the lowest around.&amp;nbsp; Their service is out of all proportion to what you pay!&amp;nbsp; (i.e. &lt;b&gt;It's brilliant!&lt;/b&gt;)  If they ever get bought out by Vox Telecom I shall probably have to leave the country -- and even then I won't find an ISP as good!&lt;br /&gt;&lt;hr align="left" width="33%" /&gt;&lt;div class="footnotes"&gt;&lt;span style="font-size: x-small;"&gt;[1] A "keyboard/finger" interaction nearly made that "Pox Telecom", whIch would have been appropriate...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[2] We've known each other over 35 years, now... I think that qualifies as friendship, no?&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6272164001044856569?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6272164001044856569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/as-bad-as-some-can-be-others-can-be.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6272164001044856569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6272164001044856569'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/as-bad-as-some-can-be-others-can-be.html' title='As BAD as Some can be, Others can be GREAT'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7261075182756583409</id><published>2008-02-22T08:50:00.000+02:00</published><updated>2011-12-11T12:47:31.969+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='kakistopoly'/><title type='text'>Taking on the Spammers: Datapro/Vox Telecom - Part 4</title><content type='html'>Mr Douglas Reed, CEO of Vox Spamacom Telecom, parent company to Datapro, replies:&lt;br /&gt;&lt;blockquote&gt;We run an ISP with over 18,000 corporate customers and 180,000 SME's and&lt;br /&gt;we have customers who utilise various services. &amp;nbsp;These include list&lt;br /&gt;servers where customers use their own databases and we don't have full&lt;br /&gt;control. &amp;nbsp;The DataPro and Vox databases are within our control and&lt;br /&gt;consist of individuals and organisations who have provided their details&lt;br /&gt;to us. The reason we have you on our Company database is because you are&lt;br /&gt;obviously listed as a technical contact for some of our customers. &amp;nbsp;We&lt;br /&gt;cannot offer opt in opt out facilities for our communication to our base&lt;br /&gt;because the news letters communicate important information that the&lt;br /&gt;technical contacts need to be aware of. &amp;nbsp;However if you want to be&lt;br /&gt;excluded please give us the details and provide us with new technical&lt;br /&gt;contact details.&lt;br /&gt;&lt;br /&gt;The other choice is do what the rest of us do and add the user to your&lt;br /&gt;junk mail list.&lt;br /&gt;&lt;br /&gt;Interestingly enough this mail ended up in my junk mail folder which&lt;br /&gt;basically means that I received unsolicited mail from this in the past&lt;br /&gt;or you cc'd thousands of people.&lt;/blockquote&gt;&lt;br /&gt;Is it just me, or does this sound just a tad arrogant?&amp;nbsp; What I am hearing: "We're big; that means we can spam with impunity, since we're too big to get blocked." and "Shut up and eat your spam!"&lt;br /&gt;&lt;br /&gt;My response:&lt;br /&gt;&lt;br /&gt;&lt;div style="direction: ltr;"&gt;&lt;/div&gt;&lt;blockquote&gt;Dear Mr Reed,On 18/02/2008, Douglas Reed &amp;lt;douglasr@datapro.co.za&amp;gt; wrote:&lt;br /&gt;&lt;br /&gt;&amp;gt; The DataPro and Vox databases are within our control and&lt;br /&gt;&amp;gt; &amp;nbsp;consist of individuals and organisations who have provided their details&lt;br /&gt;&amp;gt; &amp;nbsp;to us. The reason we have you on our Company database is because you are&lt;br /&gt;&amp;gt; &amp;nbsp;obviously listed as a technical contact for some of our customers.&lt;br /&gt;&lt;br /&gt;The (many) spam emails that form the basis of my complaint to ISPA aredirectly from Datapro and Vox Telecom; this is not about spam fromyour customers. &amp;nbsp;One spam message bears your name as "signatory".&lt;br /&gt;&lt;br /&gt;You will note from my earlier correspondence with Maggie Cubitt that Ihave tried &lt;i&gt;repeatedly&lt;/i&gt;, using &lt;i&gt;numerous&lt;/i&gt; channels, to "opt out" of thesemailing lists, without any success.&lt;br /&gt;&lt;br /&gt;Why don't your opt-out procedures work? (As required by the ECT Act.)&lt;br /&gt;&lt;br /&gt;Although some of your technical staff are certainly in possession ofmy email address as "technical contact" for some of our mutualcustomers, this does NOT extend a license to your companies to send meunsolicited bulk email on ANY subject.&lt;br /&gt;&lt;br /&gt;Further, I will note that I have never -- not even once -- receive abulk message on any technical subject. &amp;nbsp;The emails forming the basisof my complaint have ALL been of a nature that can only becharacterised as "marketing crap". &amp;nbsp;I did not, ever, &amp;nbsp;at any stage,give any person or system representing your companies, permission tosend me marketing crap. &amp;nbsp;The fact the your companies have done so isknown in the email management industry as "address repurposing" and isconsidered a sure sign of "spam spoor".&lt;br /&gt;&lt;br /&gt;&amp;gt; &amp;nbsp;The other choice is do what the rest of us do and add the user to your&lt;br /&gt;&amp;gt; &amp;nbsp;junk mail list.I will repeat what I wrote to Ms Cubbit:&lt;br /&gt;&lt;br /&gt;&amp;lt;quote&amp;gt;&lt;br /&gt;having my own email address removed from yourmailing lists is of only limited interest to me in this matter. &amp;nbsp;Thelarger issue, which it is my main purpose to tackle, is that of Dataproand Vox Telecom blithely spamming, over an extended period of time,continuing in the face of numerous good-faith attempts to unsubscribe,and in direct violation of &lt;br /&gt;&lt;br /&gt;1) their own Terms of Service, &lt;br /&gt;&lt;br /&gt;2) the email provisions of the ECT Act, and &lt;br /&gt;&lt;br /&gt;3) the ISPA's Code of Conduct.&lt;br /&gt;&amp;lt;/quote&amp;gt;&lt;br /&gt;&lt;br /&gt;The point this: "adding Datapro/Vox Telecom" to my "junk mail list,"as you suggest, fails to eliminate or mitigate the primary complaintagainst spam: the receiver has to pay for it.Putting Datapro/Vox Telecom into my "junk mail list" does not meanthat Datapro/Vox Telecom cease being spammers.&lt;br /&gt;&lt;br /&gt;To (attempt to) be completely clear on this: since you seem to haveoverlooked the point:&lt;br /&gt;&lt;br /&gt;* This is not about Datapro and Vox Telecom spamming ME.&lt;br /&gt;&lt;br /&gt;* This IS about Datapro/Vox Telecom spamming AT ALL.&lt;br /&gt;&lt;br /&gt;&amp;gt; &amp;nbsp;Interestingly enough this mail ended up in my junk mail folder which&lt;br /&gt;&amp;gt; &amp;nbsp;basically means that I received unsolicited mail from this in the past&lt;br /&gt;&amp;gt; &amp;nbsp;or you cc'd thousands of people.&lt;br /&gt;&lt;br /&gt;Nonsense.&lt;br /&gt;&lt;br /&gt;No such conclusion can be inferred.&lt;br /&gt;&lt;br /&gt;Having personally administeredemail and spam-filtering &amp;nbsp;systems, I can tell you that you cannot drawany such conclusion; thogh it /may/ call into question the competenceof the people managing your spam-filtering systems.&lt;br /&gt;&lt;br /&gt;&amp;gt; &amp;nbsp;We run an ISP with over 18,000 corporate customers and 180,000 SME's and&lt;br /&gt;&amp;gt; &amp;nbsp;we have customers who utilise various services. &amp;nbsp;These include list&lt;br /&gt;&amp;gt; &amp;nbsp;servers where customers use their own databases and we don't have full&lt;br /&gt;&amp;gt; &amp;nbsp;control.&lt;br /&gt;&lt;br /&gt;What I read into this is that you believe that your organisations are"too large for the rules to apply". &amp;nbsp;I have some bad news... There areother organisations far, FAR larger that manage to adequately, and tothe full satisfaction &amp;nbsp;of the anti-spam community, police theircustomers' mailing lists and email activities. &amp;nbsp;I am pretty sure thatboth Outblaze and AOL are larger than your operations; both manage tomaintain an impeccable reputation for managing the spam problem andspeedily terminating spammy customers.&lt;br /&gt;&lt;br /&gt;Of course, neither one spams their customers directly, as yourorganisations have done.&lt;br /&gt;&lt;br /&gt;Part of your (companies') responsibility to the Internet community isto police your customers and their mailing lists. &amp;nbsp;Ways to do thisinclude monitoring their behaviour, and maintaining and ENFORCINGuncompromising Terms of Service. &amp;nbsp;Your response suggest anunwillingness to do so. &amp;nbsp;This is a slippery slope. &amp;nbsp;Next yoursales-staff will be writing "pink contracts". (Google for it!) &amp;nbsp;Shouldyou require access to better expertise than your organisationsevidently possess, I shall be glad to forward my consulting rates.&lt;br /&gt;&lt;br /&gt;All of this remains (largely) irrelevant. &amp;nbsp;The numerous spam messagesI have received are from your organisations; not from your customers.Your unwillingness to eliminate spam from /within/ is, perhaps,indicative of your willingness to tolerate/profit-from spammycustomers from without.&lt;br /&gt;&lt;br /&gt;Here is the response I expect: As I see it (prove me wrong?), you havetwo choices:&lt;br /&gt;&lt;br /&gt;1. &amp;nbsp;Throw away all mailing lists under your control, and start fromscratch to build new mailing lists. &amp;nbsp;Of course you WILL followestablished Internet procedures for building permission-base emaillists.(Somehow, I doubt this one...)&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;2. &amp;nbsp;Send a ONE TIME email to all addresses on your mailing lists,explaining (in full) the situation, expressing your companies' regretthat such an unacceptable and untenable situation has come aboutthrough the action of a few misguided individuals, and asking therecipients to confirm that they WISH to be subscribed to the relevantmailing list. &amp;nbsp;Should recipients so confirm their desire toparticipate, your staff should proceed in the full confidence thatthose persons have positively opted-IN. &amp;nbsp;Any email address that failsto reply, or that expresses a desire to opt-OUT must be removed fromyour databases.&lt;br /&gt;&lt;br /&gt;This (second) option should be followed-up with a comprehensiveon-going (so that new-hi[r]es get the message, too) educational messagefrom the organisation: "We don't tolerate spam in any shape, manner orform." (together with a detailed explanation of just what that means.)&amp;nbsp;Your marketing and sales staff may require particularly persistenteducation.&lt;br /&gt;&lt;br /&gt;Forgive my lack of optimism.&lt;br /&gt;&lt;br /&gt;Since you (read: your organisations) do not know the email address(es)being spammed, you may be sure that I am in a position to monitor yourorganisations' actions on this, and will report accordingly.&lt;br /&gt;&lt;br /&gt;PS: &amp;nbsp;You, Mr Reed, might wish to consider that a small one-manconsultancy such as myself, may frequently be in a position to makerecommendations to customers concerning their choice &amp;nbsp;of serviceproviders in the Internet Services industry. &amp;nbsp;Either to recommendproviders, or, alternatively, to discourage use of any particularprovider. &amp;nbsp;Your call...&lt;/blockquote&gt;&lt;br /&gt;If &lt;i&gt;anybody&lt;/i&gt; out there thinks I am being irresponsible or unreasonable (obviously with the exception of any Datapro or Vox Telecom employees or agents!) please, please say so by leaving a comment on this blog.&amp;nbsp; I &lt;i&gt;promise&lt;/i&gt; not to delete  any relevant comments...&lt;br /&gt;&lt;br /&gt;Let's just note for the record that he failed, &lt;em&gt;completely&lt;/em&gt;, to address &lt;em&gt;any&lt;/em&gt; single point of substance or question in my response...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7261075182756583409?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7261075182756583409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7261075182756583409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7261075182756583409'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_21.html' title='Taking on the Spammers: Datapro/Vox Telecom - Part 4'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1009157441487634999</id><published>2008-02-16T01:49:00.000+02:00</published><updated>2011-12-11T12:46:08.758+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Taking on the Spammers: Datapro/Vox Telecom - Part 3 - email Ping Pong</title><content type='html'>Obviously the spammers thought they could just listwash me and be done. &amp;nbsp;Here's Datapro's latest response:&lt;br /&gt;&lt;blockquote&gt;&lt;pre id="line1" wrap=""&gt;Subject: RE: Response to ISPA complaint&lt;br /&gt;Date: Fri, 15 Feb 2008 12:55:45 +0200&lt;br /&gt;From: "Maggie Cubitt" &amp;lt;maggiec@voxtelecom.co.za&amp;gt;&lt;br /&gt;To: "Mike Morris" &amp;lt;me&amp;gt;&lt;br /&gt;&lt;br /&gt;Hi Mike Apologies, as I can fully understand your frustration, which is why I am attempting to resolve it comprehensively and finally. I am unable to find the e-mail address mikro2nd@gmail.com on the Contacts database from the DataPro CRM.. and you have extracted the delivery address from your notepad doc. Can I please just confirm that the Newsletter was delivered to the e-mail address mikro2nd@gmail.com?&lt;/pre&gt;&lt;/blockquote&gt;My response to them:&lt;br /&gt;&lt;blockquote&gt;&lt;pre wrap=""&gt;Maggie Cubitt wrote:&lt;br /&gt;&lt;br /&gt;&amp;gt; Apologies, as I can fully understand your frustration, which is why I&lt;br /&gt;&amp;gt; am attempting to resolve it comprehensively and finally.&lt;br /&gt;&lt;br /&gt;Please understand that having my own email address removed from your mailing lists is of only limited interest to me in this matter. &amp;nbsp;The larger issue, which it is my main purpose to tackle, is that of Datapro and Vox Telecom blithely spamming, over an extended period of time, continuing in the face of numerous good-faith attempts to unsubscribe, and in direct violation of&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 1) their own Terms of Service,&lt;br /&gt;&amp;nbsp; 2) the email provisions of the ECT Act, and&lt;br /&gt;&amp;nbsp; 3) the ISPA's Code of Conduct.&lt;br /&gt;&lt;br /&gt;&amp;gt; I am unable to find the e-mail address mikro2nd@gmail.com on the&lt;br /&gt;&amp;gt; Contacts database from the DataPro CRM.. and you have extracted the&lt;br /&gt;&amp;gt; delivery address from your notepad doc. Can I please just confirm that&lt;br /&gt;&amp;gt; the Newsletter was delivered to the e-mail address mikro2nd@gmail.com?&lt;br /&gt;&lt;br /&gt;The spam was not delivered to that email address, but another one.&lt;br /&gt;&lt;br /&gt;I am not willing to assist you in listwashing -- the much-loathed practise whereby spammers remove the addresses of the whiners, but continue to blast their unwanted spew out to the Silent Majority Who Just Hit Delete.&lt;br /&gt;&lt;br /&gt;I never opted-in to any mailing list belonging to Datapro or Vox Telecom, but was placed on it without my knowledge or consent via person(s) with whom I had contact for purely technical purposes on behalf of my own clients.  This, in turn, means that my email address was repurposed for marketing spam.  In turn Datapro's mailing list was repurposed by Vox Telecom, a company with which I have certainly never had any business relationship.  (Yes, I do understand the relationship between the companies.  No explanation needed.)  Please take note that this is NOT the only list from which I get spammed by Datapro, so your problems are deeper and wider than listwashing a single whiny anti-spam "activist" from a single ill-constructed mailing list or database.&lt;br /&gt;&lt;br /&gt;If your lists are NOT fully confirmed-opt-in (and clearly they are not,otherwise I wouldn't be bothering you), then they're spammy lists until you can verify, with a full audit trail, that each and every recipient has positively confirmed their wish to opt in.  Any addresses that cannot be so confirmed must be removed from your databases.  All databases.&lt;br /&gt;&lt;br /&gt;The procedure for confirming mailing-list opt-in has been well-established, well-understood, standard practise in legitimate email management for at least the last 30 years, and is correctly implemented by every respectable mailing-list management system. &amp;nbsp;I would expect an ISP as large as Datapro to be conversant with such established, accepted, and widely-implemented industry-standard, and to have the resources to ensure compliance.  I realise that these practices are somewhat more stringent than required by SA law, but will point out that the ISPA Code of Conduct (para 28) mandates that "ISPA members must operate with due regard for established Internet best practices, as set out in the various request for comment (RFC) documents and as mandated from time to time by established and respected Internet governance structures."  That reads: "established Internet best practices", not "ineffective South African law".  I believe that mailing list operation is covered by RFC-3098 among other resources.&lt;br /&gt;&lt;br /&gt;Furthermore, you will, no doubt, have noted that the sample email sent to you is in violation of even the very modest requirements of the ECT Act.  Not to mention the long-term on-going failure to heed good-faith removal instructions as required by the Act.&lt;br /&gt;&lt;br /&gt;I trust that Datapro's forthcoming response to this will measure up to the full scope of the organisation's evident ignorance of, or unwillingness to implement, Internet standards and best practise.&lt;/pre&gt;&lt;/blockquote&gt;Forgive me my skepticism... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1009157441487634999?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1009157441487634999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_6975.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1009157441487634999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1009157441487634999'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_6975.html' title='Taking on the Spammers: Datapro/Vox Telecom - Part 3 - email Ping Pong'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2929164094167539477</id><published>2008-02-16T01:27:00.000+02:00</published><updated>2011-12-11T12:43:28.156+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Taking on the Spammers: Datapro/Vox Telecom - Part 2</title><content type='html'>Yesterday, 14 Feb, the following response to &lt;a href="http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom.html"&gt;my complaint&lt;/a&gt; to the Internet Service Providers' Association about one of their member's spamming activities:&lt;br /&gt;&lt;br /&gt;FYI: Mr Reed is the CEO of &lt;a href="http://www.voxtelecom.co.za/"&gt;Vox Telecom&lt;/a&gt; (the parent company), so hopefully we've got the attention of a Big Shot.&lt;br /&gt;&lt;pre wrap=""&gt;&lt;blockquote&gt;&lt;br /&gt;From: "Maggie Cubitt" &amp;lt;maggiec@voxtelecom.co.za&amp;gt;&lt;br /&gt;&lt;br /&gt;To: &amp;lt;me&amp;gt;&lt;br /&gt;&lt;br /&gt;Cc: "Douglas Reed" &amp;lt;douglasr@datapro.co.za&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hi Mike As a listed Telecommunications Company we do take any reports of this&lt;br /&gt;&lt;br /&gt;nature extremely seriously. We were very concerned to receive the&lt;br /&gt;&lt;br /&gt;notification of your complaint to ISPA, and are obviously anxious to get&lt;br /&gt;&lt;br /&gt;this resolved as a matter of urgency.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As there are many companies in the Vox Telecom Group and as DataPro, as&lt;br /&gt;&lt;br /&gt;an ISP, does provide a bulk mailing service to customers as well, there&lt;br /&gt;&lt;br /&gt;is a possibility that you are on one of our customer's databases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In order to investigate this properly I would really appreciate if you&lt;br /&gt;&lt;br /&gt;could forward me the "February newletter" to which you refer so that I&lt;br /&gt;&lt;br /&gt;can investigate this thoroughly for you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I look forward to your response.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Maggie&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I have forwarded the most-recent offending email -- "signed" at the bottom by a Mr Gary Sweidan, Datapro's Managing Director, I am sure he is blissfully unaware of the content, or that it is being blasted to a who-knows-how-large list of unwilling , unconfirmed, not-opted-in recipients.&lt;br /&gt;&lt;br /&gt;Sadly for them, I redacted out all the recipient email address details and message UUIDS that might server to identify the address it was sent to ;-)&lt;br /&gt;&lt;br /&gt;One of the few spammer activities more loathsome than "address repurposing" is &lt;span style="font-weight: bold;"&gt;listwashing&lt;/span&gt; -- removing the whiners from your list whilst blithely continuing to spam the quite ones who Just Hit Delete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2929164094167539477?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2929164094167539477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2929164094167539477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2929164094167539477'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom_15.html' title='Taking on the Spammers: Datapro/Vox Telecom - Part 2'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2505836022728020617</id><published>2008-02-15T23:16:00.000+02:00</published><updated>2011-12-11T12:41:05.152+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Taking on the Spammers: Datapro/Vox Telecom - Part 1</title><content type='html'>For well over a year now I've been getting spammed by &lt;a href="http://www.datapro.co.za/"&gt;Datapro&lt;/a&gt; (a &lt;a href="http://www.voxtelecom.co.za/"&gt;Vox Telecom&lt;/a&gt; subsidiary) with sundry Friendly Newsletters, Product Offers and Special Crap We're Sure Will Interest You.&amp;nbsp; Now we're in a &lt;span style="text-decoration: line-through;"&gt;fight&lt;/span&gt; &lt;span style="text-decoration: line-through;"&gt;argument&lt;/span&gt; complaint-resolution discussion.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Datapro is a fairly large supplier in SA of web and email hosting, ISP services, and all the myriad little bitty services around that.&amp;nbsp; They're also &lt;a href="http://www.ispa.org.za/about/memberlist.shtml"&gt;one of only 15 "Large" members&lt;/a&gt; of the Internet Service Providers' Association -- the industry's self-regulation watchdog in SA -- and hence a signatory to ISPA's &lt;a href="http://www.ispa.org.za/code/index.shtml"&gt;Code of Conduct&lt;/a&gt;, which includes a clause saying, in effect, "members won't support spam or spamming."&lt;br /&gt;&lt;br /&gt;I have never been one of Datapro's customers because I think their technical standards are... &lt;span style="font-style: italic;"&gt;dodgy...&lt;/span&gt; to say the least.&amp;nbsp; But, I &lt;span style="font-style: italic;"&gt;have&lt;/span&gt; had contact with some of their technical staff in the course making changes to email, web-hosting and DNS on behalf of some of my clients who do use Datapro as their service provider.&amp;nbsp; For whatever misguided reasons.&amp;nbsp; Evidently, some of Datapro's tech staff have had their email address-books "harvested" by The Marketroid Department.&amp;nbsp; &lt;span style="font-style: italic;"&gt;Or Something.&lt;/span&gt;&amp;nbsp; How ever it happened, my email address got repurposed &lt;span style="font-style: italic;"&gt;without my knowledge or prior consent&lt;/span&gt;.&amp;nbsp; A major point, here, is that I have never been in a business relationship with this company.&lt;br /&gt;&lt;br /&gt;In the anti-spam world "&lt;span style="font-style: italic;"&gt;repurposing&lt;/span&gt;" is considered a Very Bad Thing, and will result in instant and permanent blacklisting on some &lt;span style="text-decoration: line-through;"&gt;aggressively&lt;/span&gt; well-run mail servers.&lt;br /&gt;&lt;br /&gt;I've lost count of the number of times I have emailed the sender asking, demanding, pleading or threatening legal action, in the interests of getting off their mailing lists.&amp;nbsp; Countless times I've clicked on the (rarely present) "unsubscribe" links and jumped through web-page hoops to get unsubscribed.&amp;nbsp; Nary a confirmation have I received.&amp;nbsp; Nor has any of this actually diminished the volume of crap I get from them.&lt;br /&gt;&lt;br /&gt;To add insult to injury, Vox Telecom, the parent company, have in turn taken to spamming their subsidiary's lists.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A Lightbulb Moment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A short while ago, a contact on one of the local Internet-industry mailing lists I haunt, suggested that I lodge a complaint with ISPA.&amp;nbsp; I must confess that I had never seriously thought about it, but maybe worth a try...&lt;br /&gt;&lt;br /&gt;I waited.&amp;nbsp; Made sure I gathered and archived the evidence.&amp;nbsp; Then, last Tuesday, I struck: lodged a complaint via the ISPA's webform:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Action The First: The Complaint&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre wrap=""&gt;NameISP: Datapro/Vox Telecom&lt;br /&gt;name: &amp;lt;redacted&amp;gt;&lt;br /&gt;email: &amp;lt;redacted&amp;gt;&lt;br /&gt;Address: &amp;lt;redacted&amp;gt;&lt;br /&gt;Telephone: &amp;lt;redacted&amp;gt;&lt;br /&gt;Cellphone: &amp;lt;redacted&amp;gt;&lt;br /&gt;SectionCoC: E. Unsolicited bulk mail (spam)&lt;br /&gt;Details:&lt;br /&gt;&lt;br /&gt;I have never been a customer of Datapro.  My only interactions with them have been on behalf of my clients, in the course of managing clients' DNS, email, hosting, etc. technical requirements where those services have been provided (at the clients' choice) by Datapro.  As such my interactions have been with technical service personnel only.&lt;br /&gt;&lt;br /&gt;During the course of such interactions Datapro staff have, without my consent or prior knowledge, added my email address to various mailing lists that they use to send marketing "newsletters" and advertisements (a.k.a. address repurposing.)&lt;br /&gt;&lt;br /&gt;I have on numerous occasions requested that my details be removed from all mailing lists and databases under Datapro's control to no avail.  I have made such requests telphonically, by email, and by clicking through the (rare) unsubscribe links that some of this spam contains.&lt;br /&gt;&lt;br /&gt;Finally I have records good enough to prove my point.  Their latest "February newletter", sent in duplicate today, 9 February 2008, is in clear violation of&lt;br /&gt;&lt;br /&gt;1) my past instruction to them of 2 August 2007 (and subsequent, evidence-free removal-link-clicking)&lt;br /&gt;&lt;br /&gt;2) the ECT Act itself, in failing to meet the information provision and opt-out requirements of the Act, and&lt;br /&gt;&lt;br /&gt;3) the ISPA Code of ConductCopies of all relevant emails are available from myself.&lt;/pre&gt;&lt;/blockquote&gt;Let's see what results...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2505836022728020617?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2505836022728020617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2505836022728020617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2505836022728020617'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2008/02/taking-on-spammers-dataprovox-telecom.html' title='Taking on the Spammers: Datapro/Vox Telecom - Part 1'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6583887010677150573</id><published>2007-12-15T01:34:00.000+02:00</published><updated>2011-12-09T17:17:41.323+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='infrastructure'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Quartz Crystal</title><content type='html'>A very trying couple of days...&amp;nbsp; Faced with a job that cries out for a decent scheduler (polling feeds), I turned to &lt;a href="http://www.opensymphony.com/quartz/"&gt;OpenSymphony's Quartz&lt;/a&gt;.&amp;nbsp; I mean, the ads look so good: Robustness, recoverability, scalability, blah, blah.&lt;br /&gt;&lt;br /&gt;First hint of warning I should have paid attention to was a couple of developers' names that I long associate with Doomed Pieces of Shit.&amp;nbsp; But it all still looked so good.&amp;nbsp; Until I got closer to the code.&amp;nbsp; Quartz?&amp;nbsp; Quartz Crystals for accuracy?&amp;nbsp; More like Crystal Meth!&amp;nbsp; Documented methods that mysterious fail to exist.&amp;nbsp; Examples that aren't.&amp;nbsp; I thought the JavaDoc got generated from the source, no?&amp;nbsp; I guess we have here the penetrating stench of Configuration Mismanagement.&lt;br /&gt;&lt;br /&gt;Then you enter a twisty little maze of undocumented dependencies.&amp;nbsp; You will use Commons Logging.&amp;nbsp; You &lt;i&gt;will&lt;/i&gt; use a bunch of J2EE stuff, even though you application is a simple standalone with no hint of J2EE awfulness in sight.&lt;br /&gt;&lt;br /&gt;No.&amp;nbsp; After a day or so of hacking at this steaming turdpile my brain feels like so much oatmeal porridge that I can't even work even work up enough bile for a decently vitriolic blog post.&amp;nbsp; For me, one of the surest signs of a dying opensource project is when their wikis and forums are filled with spam because nobody can be bothered to disallow Guest users from posting; when the version-control system shows six checkins in the past six weeks.&lt;br /&gt;&lt;br /&gt;I'm outa here in favour of Doug Lea's concurrency stuff. What a pleasure by contrast.&amp;nbsp; I'll live without clustering for now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6583887010677150573?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6583887010677150573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/12/quartz-crystal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6583887010677150573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6583887010677150573'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/12/quartz-crystal.html' title='Quartz Crystal'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6391730586158513327</id><published>2007-11-29T18:01:00.000+02:00</published><updated>2011-12-11T12:54:54.672+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>3 Apps I Really Want (Open Source Only!)</title><content type='html'>I'm full of ideas.&amp;nbsp; Aren't we all?&amp;nbsp; Eventually, when you reach a hairy old age like me, you realise that &lt;i&gt;There Ain't No Way In The World&lt;/i&gt; you'll ever be able to do them all.&amp;nbsp; This is what makes ideas &lt;i&gt;cheap&lt;/i&gt;.&amp;nbsp; Let me say it again.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ideas Are Cheap. Implementation Is Everything!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Just occasionally, though, we have ideas that are so good that we really, &lt;i&gt;really&lt;/i&gt; want to see them implemented.&amp;nbsp; But we know, deep down inside our souls, deep down in our secret heart, that we're never, ever going to have the time, energy and stick-with-it-ness to pull the thing off.&lt;br /&gt;&lt;br /&gt;Here are three of my ideas:&lt;br /&gt;&lt;br /&gt;1. I want a ToDo manager that works like this: Keep my top five ToDo items only. Don't even allow me to put more in.&amp;nbsp; I must be able to prioritize them.&amp;nbsp; And they should display at all times as my computer's desktop image.&lt;br /&gt;&lt;br /&gt;2. A decent word-processor.&amp;nbsp; One that fails almost completely to concern itself with formatting.&amp;nbsp; Perhaps bold, italic and lists -- that's all that's really needed.&amp;nbsp; On the flipside, though, it should really understand document structure -- sentences, phrases, paragraphs and sections.&amp;nbsp; And allow me to collapse them.&amp;nbsp; If I move a heading, move all its subheadings and associated text, too.&amp;nbsp; In other words, focus me purely on prose, editing prose, tightening up my phrasing, reordering my own words.&amp;nbsp; Please don't make me fuck around with margins, fonts or colours.&amp;nbsp; I know that Lyx does something pretty close to this, but its far from pretty, and, frankly, TeX is dead.&amp;nbsp; Get over it.&lt;br /&gt;&lt;br /&gt;3. A social-networky, Web2ish, Ajaxy, &amp;lt;insert-own-buzzword-here&amp;gt; website where people can list their ideas for systems they don't have time to write, and everybody else can vote on the ideas, comment, add/edit the spec (wiki style). Perhaps, just perhaps, some people might choose to pick up those projects and start implementing them.&amp;nbsp; No bounties.&amp;nbsp; Sorry, but I'm more broke than you!&lt;br /&gt;&lt;br /&gt;Come to think of it, maybe I &lt;i&gt;will&lt;/i&gt; implement that last one!&amp;nbsp; After all, don't the VC pundits all say "Get the simplest thing that functions out the door, and then listen to your user-base."&amp;nbsp; Here's a way of listening before you even get version 0.0 written!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6391730586158513327?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6391730586158513327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/11/3-apps-i-really-want-open-source-only.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6391730586158513327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6391730586158513327'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/11/3-apps-i-really-want-open-source-only.html' title='3 Apps I Really Want (Open Source Only!)'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-204108662401157020</id><published>2007-11-19T19:15:00.000+02:00</published><updated>2011-12-09T17:12:29.788+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='extreme-programming'/><category scheme='http://www.blogger.com/atom/ns#' term='eodsql'/><title type='text'>Object-Relational Event</title><content type='html'>At long last &lt;a href="http://lemnik.wordpress.com/2007/11/18/eod-sql-10-is-finally-here/"&gt;EoD SQL 1.0 is out&lt;/a&gt;! Congrats to &lt;a href="http://lemnik.wordpress.com/about-me/"&gt;Lemnik&lt;/a&gt; on this achievement. &lt;i&gt;But what &lt;b&gt;is&lt;/b&gt; lurgy?&lt;/i&gt;&lt;br /&gt;&lt;a href="https://eodsql.dev.java.net/"&gt;&lt;br /&gt;EoDSQL&lt;/a&gt; is an Object-Relational bridge -- an small library for getting (Java) objects in and out of relational databases. It is &lt;em&gt;not&lt;/em&gt; an OR Mapper; that task is left to the developer. You get to specify how (Java) data elements correspond to which database columns handraulically, using annotations&lt;sup&gt;[1]&lt;/sup&gt;.&amp;nbsp; Not only that, but, as developer, you get to write all the SQL, too!&amp;nbsp; Good!&amp;nbsp; For me this is one of the best features of EoDSQL.&amp;nbsp; EoDSQL will never mess with your highly tuned SQL, will never get between you and your database.&amp;nbsp; I confess to finding myself far more comfortable with this sort of lightweight approach to the much-lamented "OR impedance mismatch" problem than other approaches I've seen to date.&lt;br /&gt;&lt;br /&gt;The upshot of all this lightweight deliciousness is that it is screamingly fast!&amp;nbsp; &lt;i&gt;Way&lt;/i&gt; faster than any of the heavyweight OR tools I've seen. And Lemnik is talking about implementing a compile-time tool to make it faster yet.&lt;br /&gt;&lt;br /&gt;I have to confess to some bias, though: I was so impressed with the thing that I ended-up writing the tutorial for EoDSQL, so I'd welcome feedback on it, either here, or on the project's mailing list.&lt;br /&gt;&lt;br /&gt;&lt;hr align="left" width="20%" /&gt;&lt;div class="footnote"&gt;&lt;span style="font-size: x-small;"&gt;[1] So, yes, it is Java &amp;gt;=1.5 only.  Anybody who is not already running 1.5 or better (production environments included!) has lost the plot (or has serious, perhaps fatal, legacy issues!)&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-204108662401157020?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/204108662401157020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/11/object-relational-event.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/204108662401157020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/204108662401157020'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/11/object-relational-event.html' title='Object-Relational Event'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-932829862781644344</id><published>2007-11-06T04:25:00.000+02:00</published><updated>2011-12-11T14:00:54.814+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scam'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='rotfl'/><title type='text'>Scam, scam, scam, scam, scam!</title><content type='html'>You must have heard it before: "Is this Mike?  You have won a Holiday In Florida!"&lt;br /&gt;&lt;br /&gt;We've all had the emails.  This evening was, I admit, The first time I got the Phone Call.  Very American accented young lady.  Fortunately my highly tuned sense of paranoia kicked in, &lt;i&gt;perhaps aided by the fact that they quoted my using an email address not used in over ten years&lt;/i&gt;, and I simply put the young lady on hold for several minutes while pouring myself a small drop of a certain Scottish libation.&amp;nbsp; After a couple of minutes I asked her to hold while I considered the situation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; How did these scammers get my phone number?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The thing is, my phone number is unlisted, and I am &lt;i&gt;certain&lt;/i&gt; I have never, &lt;i&gt;ever&lt;/i&gt; typed it into any web form.&amp;nbsp; Ever.&amp;nbsp; Trust me on this.&amp;nbsp; I treat all forms with the abuse, hostility and contempt they deserve (thanks to a old boss I had, John Merry, who taught me The Fine Art of Form Contempt.)&lt;br /&gt;&lt;br /&gt;A fairly obvious &lt;a href="http://en.wikipedia.org/wiki/Advance_fee_fraud"&gt;advance-fee fraud&lt;/a&gt;.&amp;nbsp; But how many people would fall for it?&amp;nbsp; A few weeks ago, an acquaintance called me, filled with jubilation:&amp;nbsp; He had Won The Lottery!&amp;nbsp; An email said so!&lt;br /&gt;&lt;br /&gt;I sadly had to puncture his bubble, and enlightened him as to how these things work.&amp;nbsp; This is a man who worked in the IT industry as a senior manager for many years.&amp;nbsp; He is far from a fool; indeed he is a highly talented and intelligent individual.&amp;nbsp; But he fell for the scam and was about to (snail-)mail them a cheque!&amp;nbsp; I can only shudder at the thought of the outcome if they had called my Dear Old Dad with the same line of bullshit.&lt;br /&gt;&lt;br /&gt;After about ten minutes of playing silly-buggers with the caller - mainly to cost them money - I asked the lady where they had obtained my phone number.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;*click*&lt;/i&gt;&amp;nbsp; (The sound of the phone being put down.)&lt;br /&gt;&lt;br /&gt;A couple of minutes later, the phone goes again.&amp;nbsp; This time a (very American accented) man, with the same line of bullshit.&amp;nbsp; "&lt;i&gt;You filled in a form on the computer.&amp;nbsp; The Com-Pu-Ter!&lt;/i&gt;" (Like we Africans have never seen a computer before.) "&lt;i&gt;Using the &lt;/i&gt;&lt;same-obsolete-email-address&gt;.&lt;i&gt;&amp;nbsp; You've won a Holiday In Florida.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;I repeated my question: "Where did you get this phone numer?"&lt;br /&gt;&lt;br /&gt;"Off the Web Form you filled in."&lt;br /&gt;&lt;br /&gt;"No. Really, where did you get this &lt;i&gt;unlisted&lt;/i&gt; phone number never before typed into a web form in any shape manner or form?"&lt;br /&gt;&lt;br /&gt;&lt;i&gt;*click*&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The only company who have somehow managed to get my unlisted phone number into a database somewhere were &lt;b&gt;Standard Chartered Bank&lt;/b&gt;, with &lt;i&gt;their&lt;/i&gt; spam phone calls.&amp;nbsp; Perhaps they're exacting a revenge now for all the pain I caused them over that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Unterste Schurrer (Non-Yiddish Readers: "The Bottom Line")&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;Who the fuck would want to holiday in Florida, anyway?&lt;/same-obsolete-email-address&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-932829862781644344?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/932829862781644344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/11/scam-scam-scam-scam-scam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/932829862781644344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/932829862781644344'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/11/scam-scam-scam-scam-scam.html' title='Scam, scam, scam, scam, scam!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8566786070920739567</id><published>2007-10-25T17:56:00.000+02:00</published><updated>2011-12-01T12:28:52.685+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Geraldine Fraser-Moloketi for President</title><content type='html'>Yay! &lt;a href="http://www.tectonic.co.za/view.php?src=rss&amp;amp;id=1838"&gt;Tectonic: Tectonic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At least /one/ of our cabinet ministers can think for herself.&amp;nbsp; Geraldine for Pres!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8566786070920739567?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8566786070920739567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/10/geraldine-fraser-moloketi-for-president.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8566786070920739567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8566786070920739567'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/10/geraldine-fraser-moloketi-for-president.html' title='Geraldine Fraser-Moloketi for President'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7373676175522423382</id><published>2007-05-31T20:34:00.000+02:00</published><updated>2011-12-01T12:36:15.720+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Kubuntu 7.04 Feisty Fawn</title><content type='html'>&lt;i&gt;Hooray!&lt;/i&gt;&amp;nbsp; My free (in both senses) &lt;a href="https://shipit.kubuntu.org/"&gt;Kubuntu 7.04 CD&lt;/a&gt; has arrived.&amp;nbsp; Only a couple of weeks since I requested it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A Thousand Thanks&lt;/b&gt; to &lt;a href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt; and all who sponsor this stuff!&amp;nbsp; I'm in a space right now where the cost of the download really is significant for me, and I would probably have had quite a lot of hassle inobtaining the latest Kubuntu update if not for their free shipping program.&lt;br /&gt;&lt;br /&gt;I've been using Kubuntu on my (HP) laptop ever since I got it, and it mostly "just works".&amp;nbsp; The &lt;i&gt;only&lt;/i&gt; hassle I've had was over non-free video drivers, and that was quite easily solved.&amp;nbsp; I'll probably load Kubuntu onto my desktop machine, too, in the interests of reducing clutter in my life.&amp;nbsp; For about 5 or 6 years, now I have had Mandriva on my desktop machine. I have &lt;i&gt;no&lt;/i&gt; complaints about Mandriva. It has served me extremely well through the years, but it is &lt;i&gt;one more distro&lt;/i&gt; to obtain, update, download bits of, and maintain and I'm into extreme simplification right now.&amp;nbsp; If I do move the desktop box over to Kubuntu I'll have things about right: down to two distros -- Gentoo for servers (where I want complete control over everything that goes onto the box) and Kubuntu for desktop/office work (where I want everything to "just work" without having to think about things).&lt;br /&gt;&lt;br /&gt;Anybody in the South Cape who wants a copy of the Kubuntu 7.04 (Feisty Fawn) CD, please drop me a line and we'll arrange something!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7373676175522423382?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7373676175522423382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/05/kubuntu-704-feisty-fawn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7373676175522423382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7373676175522423382'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/05/kubuntu-704-feisty-fawn.html' title='Kubuntu 7.04 Feisty Fawn'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-431282868626829396</id><published>2007-04-29T19:56:00.000+02:00</published><updated>2011-12-09T10:14:57.228+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trust'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>5 Trust Points for Website Usability</title><content type='html'>&lt;b&gt;For a while now&lt;/b&gt; I've been working (slowly) on a new web application; the details are unimportant; I'll talk about the specifics in a couple of months when I'm ready to show something.&amp;nbsp; I have about 60% of the backend written, and am just starting in on the web frontend.&lt;br /&gt;&lt;br /&gt;I am far from being a good "web designer", having the graphic-design and artistic skills of a newt.&amp;nbsp; The best I can hope for is creative imitation.&amp;nbsp; &lt;i&gt;It worked for the Japanese car manufacturers, didn't it?&lt;/i&gt;&amp;nbsp; Consequently, I am paying close attention to &lt;i&gt;what works and what irks&lt;/i&gt; on other websites, particularly the flow around initial engagement and user sign-up.&amp;nbsp; Here are the most irritating and unnecessary five things I've figured out.&amp;nbsp; These are all prompted by stuff I see over, and over, and over again on website after website.&amp;nbsp; It's getting old.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Don't Make Me Jump Through Premature Hoops&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Allow me to explore the website. I am &lt;i&gt;entitled&lt;/i&gt; to poke about and get some reasonable idea of what the site does, the why and how, before you ask me (or require me) to create an account.&lt;br /&gt;&lt;br /&gt;I grant its really not a big deal creating an account, especially since most/all of the details I'll give you initially will be bogus because I have no reason to trust you at first. &lt;i&gt;IBM still, about ten years after filling in a webform on their site, send junk mail (the paper kind) to "Lord Mike" :-)&lt;/i&gt;&amp;nbsp; But there's still some small effort involved in entering a Login-ID, email address and whatever other bits and pieces you require me to fabricate before you allow me into your walled garden.&lt;br /&gt;&lt;br /&gt;If I cannot fathom enough detail about the site, if it does not help me to figure out the value proposition it offers &lt;i&gt;me&lt;/i&gt;, I will just walk (well, click) away to somewhere else.&amp;nbsp; The Web is, for all intents and purposes, infinite.&amp;nbsp; For me to have stumbled across your tiny patch of virtuality was nearly a miracle in the first instance.&amp;nbsp; Don't block me from finding out whether I &lt;i&gt;want&lt;/i&gt; to actually give you my time and attention.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp; Don't Assume a Trust You Haven't Earned Yet&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When I actually do sign up for an account, don't ask me for my whole life history, food preferences, sexual orientation and DNA samples.&amp;nbsp; &lt;i&gt;I'll just lie, anyway.&lt;/i&gt;&amp;nbsp; I don't really trust you yet.&amp;nbsp; I only &lt;i&gt;think&lt;/i&gt; that your site &lt;i&gt;may&lt;/i&gt; have something I want.&amp;nbsp; This ties into the previous point: The more information I am able to glean before signing-up, the less likely I am to lie to you about myself, the more trust you will have created between us.&lt;br /&gt;&lt;br /&gt;For the site I am building, I will be asking for:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Your choice of Login ID&lt;/li&gt;&lt;li&gt;Your email address.&lt;/li&gt;&lt;/ol&gt;&lt;i&gt;Nothing else.&lt;/i&gt;&amp;nbsp; I don't &lt;i&gt;need&lt;/i&gt; to know anything more about you yet; why would I assume that you're willing to give me any more?&amp;nbsp; I will &lt;i&gt;generate&lt;/i&gt; a password and send it to you; I need to confirm that your email address works anyway, and, since I want to be able to send you email, I need you to confirm that you're OK with that, so I may as well send you a password at the same time.&amp;nbsp; You can always change it to that standard password you use everywhere later, if your browser doesn't remember it for you, anyway.&lt;br /&gt;&lt;br /&gt;Incidentally, I just made the sign-up process as quick and painless as it can possibly get, didn't I?&amp;nbsp; There's only one way to make the process shorter.&amp;nbsp; Do you really, &lt;i&gt;really&lt;/i&gt; need people to sign-up?&amp;nbsp; I know its an attractive proposition to a certain mindset, but is it really, truly necessary?&lt;br /&gt;&lt;br /&gt;As I gain confidence in the site, I may go back to my profile page and fill in missing details, and correct some of the more egregious inventions.&amp;nbsp; This may take months or even years.&amp;nbsp; This brings me to my next point:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. I Am Human, Ergo I Forget.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;OK, so you don't burden me by asking for too many personal preferences and details early on.&amp;nbsp; &lt;i&gt;Well done!&lt;/i&gt;&amp;nbsp; On the downside of that, I will repay your consideration by &lt;i&gt;almost instantly forgetting&lt;/i&gt; that I left out details, lied about my birthdate or typed &lt;i&gt;jarblewarblefarble&lt;/i&gt; into that form-field.&amp;nbsp; I know that you can actually make your site more useful and usable to me if I do give you those details, I just was not ready &lt;i&gt;yet&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;I suggest that you remind me occasionally.&amp;nbsp; Perhaps every second or third time I sign in, put a little reminder message on my landing-page, and ask me to fill in &lt;i&gt;one&lt;/i&gt; specific piece of missing data.&amp;nbsp; And make it &lt;i&gt;dead easy&lt;/i&gt; for me to do so, either by linking to my profile-management page, or by placing a relevant edit-field right there on the page.&amp;nbsp; Don't get tiresome by nagging me every time.&lt;br /&gt;&lt;br /&gt;And while we're talking about reminders, if you're running any kind of email service, do remind me that I am subscribed, together with my subscription details and your unsub-algorithm periodically -- not more than once a month, but not less than quarterly.&amp;nbsp; Perhaps in the form of a newsletter.&amp;nbsp; (You did &lt;i&gt;get my explicit permission&lt;/i&gt; to send me email, didn't you?)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&amp;nbsp; Don't Make Me Sign In Again&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'm talking about the phase immediately after initial-sign-up.&amp;nbsp; I've made the emotional commitment (however small!) to sign-up with your site.&amp;nbsp; &lt;i&gt;Don't&lt;/i&gt; immediately demand that I do more work by signing-in.&amp;nbsp; I've just told you all that stuff -- login-id, password (twice, no doubt) -- don't make me type it all in again.&amp;nbsp; You're just being tiresome.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;What?&amp;nbsp; Did you think somebody may have hijacked my IP address in the intervening two second?&amp;nbsp; That some malware may have sucked your session cookie out of my browser for nefarious unpredictable purposes?&amp;nbsp; Get over it: you already know who I am (for some value of "know".)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;And then, once I am "signed in", don't forget it. (Hello, &lt;a href="http://feedburner.com/"&gt;Feedburner&lt;/a&gt;!)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Reciprocate My Trust&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Having&lt;br /&gt;&lt;ol&gt;&lt;li&gt;signed-up for an account, possibly&lt;/li&gt;&lt;li&gt;jumping through the confirmation email hoop, and then&lt;/li&gt;&lt;li&gt;signed-in to that new account&lt;/li&gt;&lt;/ol&gt;&lt;i&gt;Don't pretend you don't know me!&lt;/i&gt;&amp;nbsp; Don't present me with a page that says&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="background-color: #cccccc; border: thin solid rgb(136, 136, 136); padding: 1ex;"&gt;&lt;strong&gt;Get an Account with Us!&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Here is how:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Step #1&lt;/strong&gt;: Create an account at Flibertigibbet.com &lt;br /&gt;&lt;strong&gt;Step #2:&lt;/strong&gt; Blah, blah, blah.&lt;br /&gt;&lt;strong&gt;Step #3:&lt;/strong&gt; Blah, blah, blah.&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;That's it!!&lt;/strong&gt; What are you waiting for? Get major benefits, make money, win friends, influence millions! Create your account now!&lt;/blockquote&gt;Didn't I just do this?&amp;nbsp; Who are these idiots?&lt;br /&gt;You just trashed my tentative trust in you.&amp;nbsp; Goodbye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-431282868626829396?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/431282868626829396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/04/5-trust-points-for-website-usability.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/431282868626829396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/431282868626829396'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/04/5-trust-points-for-website-usability.html' title='5 Trust Points for Website Usability'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4469939608550593056</id><published>2007-04-26T00:18:00.000+02:00</published><updated>2011-12-09T16:50:04.762+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Netbeans Collab Modules</title><content type='html'>Installed the &lt;a href="http://netbeans.org/"&gt;Netbeans&lt;/a&gt; &lt;a href="http://collab.netbeans.org/"&gt;Developer-Collaboration Module&lt;/a&gt; yesterday, and gave it a trial-run together with Jason.&amp;nbsp; &lt;b&gt;Wow!&lt;/b&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The chat-client is pretty standard; not much to say there.&amp;nbsp; The only thing we both disliked was that you have to use "Control-Enter" (or "Alt-N") to send your text rather than plain "Enter".&amp;nbsp; Probably we could reconfigure the keybindings somewhere...&lt;br /&gt;&lt;br /&gt;But!&amp;nbsp; The ability to drag a file, folder, Java package or, indeed, entire project into the collab area, and then have &lt;i&gt;both&lt;/i&gt; people (and presumably everybody in the chat session) simultaneously able to edit the same files, &lt;i&gt;seeing each other's edits live&lt;/i&gt;,... pretty cool.&lt;br /&gt;&lt;br /&gt;The real OhMiGod Factor was when Jason hit "compile" on the shared file, to have it compile on my PC (since the original file came from there,) with both of us seeing the compile output.&amp;nbsp; Very, &lt;i&gt;very&lt;/i&gt; cool!&lt;br /&gt;&lt;br /&gt;We were speculating about some alternative form of development setup where all the code (and docs, web-pages, and other project components) get stored in a wiki-like (auto-versioned, of course) system so that its not just one developer's PC that gets to do the work...&amp;nbsp; Just daydreaming, really.&amp;nbsp; For now.&lt;br /&gt;&lt;br /&gt;If you're working in Java, C/C++ or Ruby, and you work with other faraway developers (even occasionally -- the dowload is only a couple of meg) you owe it to yourself to explore the Netbeans Collab stuff.&amp;nbsp; I am pretty sure that what we're seeing now is only the start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4469939608550593056?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4469939608550593056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/04/netbeans-collab-modules.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4469939608550593056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4469939608550593056'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/04/netbeans-collab-modules.html' title='Netbeans Collab Modules'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1808501102157624963</id><published>2007-03-10T06:27:00.000+02:00</published><updated>2011-12-09T09:58:49.839+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Great Tools, Great Times</title><content type='html'>Just as much as &lt;a href="http://onemikro2nd.blogspot.com/2007/03/software-that-makes-you-angry.html"&gt;some software is a pain in the arse&lt;/a&gt; to work with (even though it may be totally essential) on the other side of the coin we discover things like the CSS editor in the Firefox/&lt;a href="https://addons.mozilla.org/firefox/60/"&gt;Web-Developer Toolbar&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Working on a significant look&amp;amp;feel upgrade for the &lt;a href="http://mikro2nd.net/farm/"&gt;farm website&lt;/a&gt;, I tripped across this thing today.&amp;nbsp; "Oh!" says &lt;a href="http://lemnik.wordpress.com/"&gt;Jason&lt;/a&gt;, "I've known about it for ages -- can't work without it.&amp;nbsp; I thought you knew..."&amp;nbsp; Well, call me &lt;a href="http://www.last.fm/music/Rick+Wakeman/Return+to+the+Centre+of+the+Earth"&gt;Mr Slow&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Despite its few quirks and oddities, the ability to fiddle with CSS -- especially the &lt;a href="http://jspwiki.org/wiki/BrushedTemplate"&gt;somewhat complex CSS&lt;/a&gt; I'm working with, where there is a cascade of CSS files, each one overriding another -- and &lt;i&gt;see the results as you type&lt;/i&gt;...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;That rocks!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1808501102157624963?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1808501102157624963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/03/great-tools-great-times.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1808501102157624963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1808501102157624963'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/03/great-tools-great-times.html' title='Great Tools, Great Times'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7014187332730949040</id><published>2007-03-06T03:44:00.000+02:00</published><updated>2011-12-09T09:58:03.827+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><category scheme='http://www.blogger.com/atom/ns#' term='hate'/><category scheme='http://www.blogger.com/atom/ns#' term='love'/><title type='text'>Software That Makes You Angry</title><content type='html'>Isn't it peculiar?&amp;nbsp; Some pieces of software are actually an almost physical pleasure to use.&amp;nbsp; Others make one actively &lt;span style="font-style: italic;"&gt;angry&lt;/span&gt;.&amp;nbsp; Or is that just me?&lt;br /&gt;&lt;br /&gt;I will refrain from mentioning a specific piece of software, here -- it would just be a distraction.&amp;nbsp; The software in question has been pissing me off the whole afternoon.&amp;nbsp; All I want is to make a simple change to some templates.&amp;nbsp; But it turns into a huge bloody performance: hoop jumping, contortions, hystrionics and hysterics, all resulting in a Resort to Strong Drink.&lt;br /&gt;&lt;br /&gt;The software itself is not such a terrible piece of work.&amp;nbsp; In some places it is excellent, and the rest of it certainly gets the job done.&amp;nbsp; But the thing taken as a whole just makes me &lt;span style="font-style: italic;"&gt;angry&lt;/span&gt;.&amp;nbsp; Microsoft Windows has much the same effect on me.&lt;br /&gt;&lt;br /&gt;On the other side of the fence are pieces of software that just slide effortlessly into your life.&amp;nbsp; When you stop and bother to notice them, they're just... effortlessly there for you.&amp;nbsp; No muss, no fuss.&amp;nbsp; They just get out of your way and &lt;span style="font-style: italic;"&gt;work&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So what's the key?&amp;nbsp; I would certainly only like to write the latter kind of software and avoid foisting the former on the world.&amp;nbsp; I think it boils down to "Do things my way or else" vs. "Let me serve you; here's what I do... I'll stay out of your face, now."&lt;br /&gt;&lt;br /&gt;What software pisses &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; off?&amp;nbsp; What software do you &lt;span style="font-style: italic;"&gt;love&lt;/span&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7014187332730949040?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7014187332730949040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/03/software-that-makes-you-angry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7014187332730949040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7014187332730949040'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/03/software-that-makes-you-angry.html' title='Software That Makes You Angry'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1553587744621879230</id><published>2007-02-27T04:21:00.000+02:00</published><updated>2011-12-11T11:50:24.051+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='teams'/><title type='text'>The last 10% takes 90% of the Time</title><content type='html'>I guess its easy when it's a larger project.&amp;nbsp; There's a Project Manager, there are Account Managers, there are User Representatives.&amp;nbsp; They may or may not be actually &lt;i&gt;doing&lt;/i&gt; much.&amp;nbsp; But they're &lt;i&gt;there&lt;/i&gt;, pushing for completion.&lt;br /&gt;&lt;br /&gt;When it's only two developers working together, it's hard!&amp;nbsp; How do you keep the focus, keep the energy going, especially on a short-term project that you have zero interest in...?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1553587744621879230?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1553587744621879230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/02/last-10-takes-90-of-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1553587744621879230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1553587744621879230'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/02/last-10-takes-90-of-time.html' title='The last 10% takes 90% of the Time'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6248749656881368803</id><published>2007-02-23T19:49:00.000+02:00</published><updated>2011-12-09T17:19:02.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Software Testing</title><content type='html'>OK, I confess: I'm a crap software tester.&amp;nbsp; I totally lack the nit-picky, step-by-step, over-and-over, document-each-step patience and discipline needed for the task.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lemnik.wordpress.com/"&gt;Jason&lt;/a&gt; and I are just trying to finish-off the last 3% of a project.&amp;nbsp; You know!&amp;nbsp; The 3% that takes 50% of the time.&amp;nbsp; We're bored with the project, sour on the whole concept, and have &lt;a href="http://flightwish.com/"&gt;much more exciting ideas&lt;/a&gt; we would rather be getting on with.&amp;nbsp; My job is to drive the testing, and I'm having a rough time knuckling down to it.&amp;nbsp; How I wish we had a good tester on the team!&lt;br /&gt;&lt;br /&gt;Good testers are worth their weight in gold.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6248749656881368803?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6248749656881368803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/02/software-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6248749656881368803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6248749656881368803'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/02/software-testing.html' title='Software Testing'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2419675023910092998</id><published>2007-02-23T02:15:00.000+02:00</published><updated>2011-12-09T09:32:17.059+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='social-networks'/><category scheme='http://www.blogger.com/atom/ns#' term='flightwish'/><title type='text'>Old New Venture</title><content type='html'>Sometimes you just plain run out of energy.&lt;br /&gt;&lt;br /&gt;That's what happened to us last year.&amp;nbsp; Bruised and sore from the sheer amount of energy we put into &lt;a href="http://flightwish.com/"&gt;Flightwish&lt;/a&gt;, only to be repeatedly &lt;a href="http://mikro2nd.net/blog/mike/business/2006/07/19/When-Funding-Falls-Through.html"&gt;turned down&lt;/a&gt;, we gave up.&amp;nbsp; I even contemplated selling our domain names – a nice block of four closely-related names – on &lt;a href="http://ebay.com/"&gt;eBay&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But, as renewal date for the domains approaches, we have decided to give it a go once more.&amp;nbsp; After all, before we got involved with business plans, venture capital companies, bullshit artists, prototypes and minds-games, the idea really was cool, and targets a real need.&amp;nbsp; After all, the concept originated with my Dad -- a total non-techie, which gives it a lot more credibility than most of the web startups out there.&lt;br /&gt;&lt;br /&gt;So we've started kicking the tyres again, and lo and behold! The fun is creeping back into it!&amp;nbsp; We've no idea whether we can make any money out of this, now or ever.&amp;nbsp; We don't care, right now.&amp;nbsp; We have a cool idea for a web community that we want to put together with some help from our friends, and we're going to have some fun doing it for as long as we can keep the lights on.&amp;nbsp; &lt;a href="mailto:flightwish@gmail.com"&gt;Drop me a line&lt;/a&gt; if you're at all interested...&lt;br /&gt;&lt;br /&gt;We've put up a fun &lt;a href="http://flightwish.net/"&gt;front-page&lt;/a&gt; so far, where we can drop a few hints as we work on the software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2419675023910092998?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2419675023910092998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2007/02/old-new-venture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2419675023910092998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2419675023910092998'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2007/02/old-new-venture.html' title='Old New Venture'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4797301990118604044</id><published>2006-12-16T03:39:00.000+02:00</published><updated>2011-12-11T12:38:51.570+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Technorati STILL sucks (and blows!)</title><content type='html'>In response to "&lt;a href="http://padawan.info/weblog/the_technorati_prism_vs_reality.html"&gt;&lt;b&gt;The Technorati prism vs reality&lt;/b&gt;&lt;/a&gt;":&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/"&gt;Technorati&lt;/a&gt; is a joke - a complete fucking waste of time.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As a &lt;b&gt;source of statistics&lt;/b&gt; it is meaningless, inconsistent within their its own presentation, and takes forever to catch up with reality - sometimes months.&lt;br /&gt;&lt;br /&gt;As a &lt;b&gt;search engine&lt;/b&gt; it sucks.&amp;nbsp; Google's blogsearch is way, &lt;i&gt;way&lt;/i&gt; better at finding relevant blogs and articles.&lt;br /&gt;&lt;br /&gt;And then Technorati have the gall to present &lt;a href="http://alexa.com/"&gt;Alexa&lt;/a&gt; stats on blogs, too, as if Alexa's stats were any better.&lt;br /&gt;&lt;br /&gt;This has all been covered before.&amp;nbsp; &lt;i&gt;Ad nauseam&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Frankly, I'm not sure why we all keep using this piece of crap. Perhaps its time to build something that actually works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4797301990118604044?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4797301990118604044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/12/technorati-still-sucks-and-blows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4797301990118604044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4797301990118604044'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/12/technorati-still-sucks-and-blows.html' title='Technorati STILL sucks (and blows!)'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6772390670048382686</id><published>2006-11-01T03:19:00.000+02:00</published><updated>2011-12-11T12:51:52.435+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Spam, Spam, Spam, Spam, Spam!</title><content type='html'>Far too long away from this blog, but its Spring, and &lt;a href="http://blog.mikro2nd.net/"&gt;matters non-technical &lt;/a&gt;have had my attention for some time.&lt;br /&gt;&lt;br /&gt;Received a spam this morning (not unusual, in itself) from Computicket (no link, google for it - fuck them - why should I help spammers gain pagerank?) - a local company who do movie, theatre and event bookings.&amp;nbsp; I didn't even really look at what they were advertising.&amp;nbsp; Besides, most of it was in images, blocked by my mail client.&lt;br /&gt;&lt;br /&gt;In response I dropped a &lt;b&gt;BLOCK&lt;/b&gt; message onto the Spam-L mailing list - one of the most respected anti-spam resources in the 'net (also all relevant abuse addresses):&lt;br /&gt;&lt;blockquote&gt;Spam from &lt;strong&gt;computicket.com&lt;/strong&gt; to an address never given to them. &amp;nbsp;Spam is&lt;br /&gt;also in violation of locally applicable spam law (ECT Act&amp;nbsp;requirements) (such as it is):&lt;br /&gt;&lt;br /&gt;(Notice the "Urgent" priority on what is really "Bulk")&lt;br /&gt;Delivered-To: &amp;lt;x&amp;gt;&lt;br /&gt;Received: by 10.67.26.19 with SMTP id d19cs590002ugj;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Mon, 30 Oct 2006 09:22:35 -0800 (PST)&lt;br /&gt;Received: by 10.66.242.20 with SMTP id p20mr4513321ugh;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Mon, 30 Oct 2006 09:22:35 -0800 (PST)&lt;br /&gt;Return-Path: &amp;lt;info@mcentre.computicket.com&amp;gt;&lt;br /&gt;Received: from smtp.mcentre.co.za (pdpapp3.mwebhosting.net1[96.2.145.115])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;by mx.google.com with ESMTP id 53si3074470ugd.2006.10.30.09.22.31;&lt;br /&gt;&lt;div style="direction: ltr;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Mon, 30 Oct 2006 09:22:35 -0800 (PST)&lt;br /&gt;Received-SPF: neutral (google.com: 196.2.145.115 is neither permitted&lt;br /&gt;nor denied by best guess record for domain of&lt;br /&gt;&lt;script&gt;&lt;!-- D(["mb","&lt;a onclick\u003d\"return top.js.OpenExtLink(window,event,this)\" href\u003d\"mailto:info@mcentre.computicket.com\"&gt;info@mcentre.computicket.com&lt;/a&gt;)&lt;br/&gt;Received: from mail pickup service by &lt;a onclick\u003d\"return top.js.OpenExtLink(window,event,this)\" href\u003d\"http://smtp.mcentre.co.za\" target\u003d_blank&gt;smtp.mcentre.co.za&lt;/a&gt; with Microsoft SMTPSVC;&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mon, 30 Oct 2006 19:16:49 +0200&lt;br/&gt;X-Abuse-Contact-Mail: &lt;a onclick\u003d\"return top.js.OpenExtLink(window,event,this)\" href\u003d\"mailto:abuse@mcentre.co.za\"&gt;abuse@mcentre.co.za&lt;/a&gt;&lt;br/&gt;X-Abuse-Contact-Tel: 27860 200 121&lt;br/&gt;MWEB-Business-BatchID: 59867&lt;br/&gt;MWEB-Business-ClientID: 177&lt;br/&gt;MWEB-Business-MessageType: H&lt;br/&gt;MWEB-Business-MessageID: &amp;lt;x&amp;gt;&lt;br/&gt;MWEB-Business-SequenceNo: 26946&lt;br/&gt;From: Computicket &amp;lt;&lt;a onclick\u003d\"return top.js.OpenExtLink(window,event,this)\" href\u003d\"mailto:info@mcentre.computicket.com\"&gt;info@mcentre.computicket.com&lt;/a&gt;&amp;gt;&lt;br/&gt;Reply-To: &lt;a onclick\u003d\"return top.js.OpenExtLink(window,event,this)\" href\u003d\"mailto:info@computicket.com\"&gt;info@computicket.com&lt;/a&gt;&lt;br/&gt;To: &amp;lt;x&amp;gt;&lt;br/&gt;Date: Mon, 30 Oct 2006 16:11:37 GMT&lt;br/&gt;Message-ID: &amp;lt;097d7f778a1a479e9b0730afdb3fa4&lt;wbr /&gt;52@pdpapp3&amp;gt;&lt;br/&gt;Subject: Special Newsflash&lt;br/&gt;MIME-Version: 1.0&lt;br/&gt;X-Mailer: devMail.Net (3.0.1854.22234-6)&lt;br/&gt;Content-Transfer-Encoding: quoted-printable&lt;br/&gt;Priority: Urgent&lt;br/&gt;X-Priority: 1&lt;br/&gt;Content-Type: text/html; charset\u003d&amp;quot;iso-8859-1&amp;quot;&lt;br/&gt;X-OriginalArrivalTime: 30 Oct 2006 17:16:49.0333 (UTC)&lt;br/&gt;FILETIME\u003d[2F50A650:01C6FC47]&lt;br/&gt;&lt;br/&gt;&amp;lt;html&amp;gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp;&amp;lt;head&amp;gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp;&amp;lt;/head&amp;gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp;&amp;lt;body style\u003d3D&amp;quot;BACKGROUND-COLOR: #ffffff&amp;quot;&amp;gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;table style\u003d3D&amp;quot;BORDER-RIGHT: medium none; BORDER-TOP: medium\u003d&lt;br/&gt;&amp;nbsp;none; BORDER-LEFT: medium none&amp;quot; cellSpacing\u003d3D0 cellPadding\u003d3D3 bgColor\u003d&lt;br/&gt;\u003d3D#231f20 border\u003d3D0&amp;gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;tr&amp;gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;td style\u003d3D&amp;quot;FONT-SIZE: 12pt; COLOR: #ffcc00; FONT-F\u003d&lt;br/&gt;",1] );  //--&gt;&lt;/script&gt;&lt;a href="mailto:info@mcentre.computicket.com"&gt;info@mcentre.computicket.com&lt;/a&gt;)&lt;br /&gt;Received: from mail pickup service by &lt;a href="http://smtp.mcentre.co.za/" target="_blank"&gt;smtp.mcentre.co.za&lt;/a&gt; with Microsoft SMTPSVC;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mon, 30 Oct 2006 19:16:49 +0200&lt;br /&gt;X-Abuse-Contact-Mail: &lt;a href="mailto:abuse@mcentre.co.za"&gt;abuse@mcentre.co.za&lt;/a&gt;&lt;br /&gt;X-Abuse-Contact-Tel: 27860 200 121&lt;br /&gt;MWEB-Business-BatchID: 59867&lt;br /&gt;MWEB-Business-ClientID: 177&lt;br /&gt;MWEB-Business-MessageType: H&lt;br /&gt;MWEB-Business-MessageID: &amp;lt;x&amp;gt;&lt;br /&gt;MWEB-Business-SequenceNo: 26946&lt;br /&gt;From: Computicket &amp;lt;&lt;a href="mailto:info@mcentre.computicket.com"&gt;info@mcentre.computicket.com&lt;/a&gt;&amp;gt;&lt;br /&gt;Reply-To: &lt;a href="mailto:info@computicket.com"&gt;info@computicket.com&lt;/a&gt;&lt;br /&gt;To: &amp;lt;x&amp;gt;&lt;br /&gt;Date: Mon, 30 Oct 2006 16:11:37 GMT&lt;br /&gt;Subject: Special Newsflash&lt;br /&gt;Priority: Urgent&lt;/div&gt;&lt;/blockquote&gt;Recevied a reply from an MWeb droid.&amp;nbsp; MWeb are the spamhaus who actually did the wetwork on behalf of Computicket.&amp;nbsp; I won't bore you with the full (lengthy) reply.&amp;nbsp; The summary reads:&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;Dear Mike Morris,&lt;br /&gt;&lt;br /&gt;Thank you for making use of the MWEB Business Technical support mail service.&lt;br /&gt;&lt;br /&gt;You received this mail sent as a solicited mail from Computicket, in accordance with The Electronic Communications and Transactions Act. 2002 Chapter VII - Consumer Protection&lt;/small&gt;&lt;/blockquote&gt;[ i.e. Fuck you.&amp;nbsp; It's legal.]&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;Disclaimer: This email is considered a business record and is therefore property of MWEB. This email, and any files transmitted with it are confidential and are intended solely for the use of the individual or entity to whom they are addressed. This communication represents the originator's personal views and opinions, which do not necessarily reflect those of MWEB. If you are not the original recipient or the person responsible for delivering the email to the intended recipient, be advised that you have this email in error, and that any use, dissemination, forwarding, printing, or copying of this email is strictly prohibited. If you received this email in error, please immediately notify &lt;a href="mailto:asptac@mweb.com"&gt;asptac@mweb.com&lt;/a&gt;&lt;/small&gt;&lt;/blockquote&gt;Included were lengthy quotes of semi-relevant sections of the Electronic Commerce and Transactions Act.&amp;nbsp; Sections I could probably recite by heart.&lt;br /&gt;&lt;br /&gt;On principle, and basically because of their crass "legal disclaimer", here is my reply to them in full.&amp;nbsp; We'll see how this one plays out...&amp;nbsp; But for now, &lt;i&gt;caveat emptor:&lt;/i&gt; MWeb have taken a business decision to become a spamhaus. If you run a mail server, please add the following domains to your blacklists:&lt;br /&gt;&lt;br /&gt;mweb.com&lt;br /&gt;mweb.co.za&lt;br /&gt;mwehosting.co.za&lt;br /&gt;mcentre.co.za&lt;br /&gt;&lt;br /&gt;My reply to them (spelling errors and all, in the interests of full disclosure):&lt;br /&gt;&lt;blockquote&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;Dear Phillip Bresler&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;&lt;span class="q"&gt;&lt;br /&gt;On 31/10/06, MWEB &amp;lt;&lt;a href="mailto:asptac@mweb.com"&gt;asptac@mweb.com&lt;/a&gt;&amp;gt; wrote:&lt;br /&gt;&lt;br /&gt;&amp;gt; You received this mail sent as a solicited mail from Computicket, in accordance with The Electronic Communications and Transactions Act. 2002 Chapter VII - Consumer Protection&lt;br /&gt;&lt;/span&gt;&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;You may wish to fool yourself that it was solicited. Given the dismal&lt;br /&gt;state of SA email legislation and regulation you may even be able to&lt;br /&gt;claim that it was "legally" solicited in some narrow legalistic sense.&lt;br /&gt;&lt;br /&gt;However, as an employee of a large ISP and email service provider, you&lt;br /&gt;surely cannot be so ignorant of universally-accepted Internet "best&lt;br /&gt;practise" with regard to email solicitation, mailing lists and bulk&lt;br /&gt;email. &amp;nbsp;If this is, indeed, the case, I will be happy to assist you in&lt;br /&gt;this matter. &amp;nbsp;My normal consulting rates will apply. &amp;nbsp;As an Internet&lt;br /&gt;user and mail system administrator since 1989, I can assure you that,&lt;br /&gt;though you might not, I DO understand best practice and how to&lt;br /&gt;implement it. &amp;nbsp;This spam from Computicket, spewed directly from MWeb's&lt;br /&gt;servers, using a wholly inappropriate routing priority, follows&lt;br /&gt;anything BUT best practice. &amp;nbsp;Its was:&lt;br /&gt; &amp;nbsp;1. Unsolicited. &amp;nbsp;I have never given permission to Computicket or&lt;br /&gt;MWeb to contact me with marketing email.&lt;br /&gt; &amp;nbsp;2. Bulk.&lt;br /&gt; &amp;nbsp;3. Email.&lt;br /&gt;&lt;br /&gt;In short: UBE, or spam.&lt;br /&gt;&lt;br /&gt;Furthermore your usage of the word "solicited" falls so far outside&lt;br /&gt;the dictionary definition, as well as the common person's&lt;br /&gt;understanding of the term, as to be laughable.&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;&lt;span class="q"&gt;&lt;br /&gt;&amp;gt; The act states:&lt;br /&gt;&amp;gt; Electronic Communications and Transactions Act. 2002 Chapter VII - Consumer Protection 45. Unsolicited goods, services or communications&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;gt; 1) Any person who sends unsolicited commercial communications to&lt;br /&gt;&amp;gt; consumers, must provide the consumer&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;gt; a) with the option to cancel his or her subscription to the mailing&lt;br /&gt;&amp;gt; list of that person; and&lt;br /&gt;&lt;/span&gt;&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;No such option was supplied, which is precisely why I mentioned that&lt;br /&gt;it is not in compliance with the ECT Act. &amp;nbsp;Strike one.&lt;br /&gt;&lt;br /&gt;Perhaps the "opt out" details were in a picture - blocked in my email&lt;br /&gt;client and unavailable to visually-impaired users, and hence&lt;br /&gt;discriminatory in terms of the constitution.&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;&lt;span class="q"&gt;&lt;br /&gt;&amp;gt; b) with the identifying particulars of the source from which that&lt;br /&gt;&amp;gt; person obtained the consumer's personal information, on request of the consumer.&lt;br /&gt;&lt;/span&gt;&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;No such particulars were provided. &amp;nbsp;Strike two.&lt;/small&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;small&gt;&lt;span class="q"&gt;&lt;br /&gt;&amp;gt; 4) Any person who sends unsolicited commercial communications to a&lt;br /&gt;&amp;gt; person who has advised the sender that such communications are unwelcome, is guilty of an offence and liable, on conviction, to the penalties prescribed in section 89(1).&lt;br /&gt;&lt;/span&gt;&lt;/small&gt;&lt;/div&gt;&lt;small&gt;You are hereby advised that ALL commercial communications from MWeb's&lt;br /&gt;servers to me are unwelcome, whether originating from MWeb or any&lt;br /&gt;other party using MWeb as a spam service. &amp;nbsp;All such communications&lt;br /&gt;will, without exception be listed on various anti-spam activism sites.&lt;br /&gt;Hopefully in time this will lead to the widespread blacklisting of&lt;br /&gt;MWeb's mail servers, since it is obvious that MWeb has decided to&lt;br /&gt;become a spamhaus.&lt;br /&gt;&lt;/small&gt;&lt;/blockquote&gt;&lt;script&gt;&lt;!-- D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;&lt;span class\u003dq&gt;&lt;br/&gt;On 31/10/06, MWEB &amp;lt;&lt;a onclick\u003d\"return top.js.OpenExtLink(window,event,this)\" href\u003d\"mailto:asptac@mweb.com\"&gt;asptac@mweb.com&lt;/a&gt;&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; You received this mail sent as a solicited mail from Computicket, in accordance with The Electronic Communications and Transactions Act. 2002 Chapter VII - Consumer Protection&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;",1] );  //--&gt;&lt;/script&gt;&lt;script&gt;&lt;!-- D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;You may wish to fool yourself that it was solicited. Given the dismal&lt;br/&gt;state of SA email legislation and regulation you may even be able to&lt;br/&gt;claim that it was &amp;quot;legally&amp;quot; solicited in some narrow legalistic sense.&lt;br/&gt;&lt;br/&gt;However, as an employee of a large ISP and email service provider, you&lt;br/&gt;surely cannot be so ignorant of universally-accepted Internet &amp;quot;best&lt;br/&gt;practise&amp;quot; with regard to email solicitation, mailing lists and bulk&lt;br/&gt;email. &amp;nbsp;If this is, indeed, the case, I will be happy to assist you in&lt;br/&gt;this matter. &amp;nbsp;My normal consulting rates will apply. &amp;nbsp;As an Internet&lt;br/&gt;user and mail system administrator since 1989, I can assure you that,&lt;br/&gt;though you might not, I DO understand best practice and how to&lt;br/&gt;implement it. &amp;nbsp;This spam from Computicket, spewed directly from MWeb\'s&lt;br/&gt;servers, using a wholly inappropriate routing priority, follows&lt;br/&gt;anything BUT best practice. &amp;nbsp;Its was:&lt;br/&gt; &amp;nbsp;1. Unsolicited. &amp;nbsp;I have never given permission to Computicket or&lt;br/&gt;MWeb to contact me with marketing email.&lt;br/&gt; &amp;nbsp;2. Bulk.&lt;br/&gt; &amp;nbsp;3. Email.&lt;br/&gt;&lt;br/&gt;In short: UBE, or spam.&lt;br/&gt;&lt;br/&gt;Furthermore your usage of the word &amp;quot;solicited&amp;quot; falls so far outside&lt;br/&gt;the dictionary definition, as well as the common person\'s&lt;br/&gt;understanding of the term, as to be laughable.&lt;br/&gt;&lt;/div&gt;",1] );  //--&gt;&lt;/script&gt;&lt;script&gt;&lt;!-- D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;&lt;span class\u003dq&gt;&lt;br/&gt;&amp;gt; The act states:&lt;br/&gt;&amp;gt; Electronic Communications and Transactions Act. 2002 Chapter VII - Consumer Protection 45. Unsolicited goods, services or communications&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) Any person who sends unsolicited commercial communications to&lt;br/&gt;&amp;gt; consumers, must provide the consumer&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; a) with the option to cancel his or her subscription to the mailing&lt;br/&gt;&amp;gt; list of that person; and&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;",1] ); D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;No such option was supplied, which is precisely why I mentioned that&lt;br/&gt;it is not in compliance with the ECT Act. &amp;nbsp;Strike one.&lt;br/&gt;&lt;br/&gt;Perhaps the &amp;quot;opt out&amp;quot; details were in a picture - blocked in my email&lt;br/&gt;client and unavailable to visually-impaired users, and hence&lt;br/&gt;discriminatory in terms of the constitution.&lt;br/&gt;&lt;/div&gt;",1] ); D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;&lt;span class\u003dq&gt;&lt;br/&gt;&amp;gt; b) with the identifying particulars of the source from which that&lt;br/&gt;&amp;gt; person obtained the consumer\'s personal information, on request of the consumer.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;",1] ); D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;No such particulars were provided. &amp;nbsp;Strike two.&lt;br/&gt;&lt;/div&gt;",1] );  //--&gt;&lt;/script&gt;&lt;script&gt;&lt;!-- D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;&lt;span class\u003dq&gt;&lt;br/&gt;&amp;gt; 4) Any person who sends unsolicited commercial communications to a&lt;br/&gt;&amp;gt; person who has advised the sender that such communications are unwelcome, is guilty of an offence and liable, on conviction, to the penalties prescribed in section 89(1).&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;",1] ); D(["mb","&lt;div style\u003d\"direction:ltr\"&gt;You are hereby advised that ALL commercial communications from MWeb\'s&lt;br/&gt;servers to me are unwelcome, whether originating from MWeb or any&lt;br/&gt;other party using MWeb as a spam service. &amp;nbsp;All such communications&lt;br/&gt;will, without exception be listed on various anti-spam activism sites.&lt;br/&gt;&amp;nbsp;Hopefully in time this will lead to the widespread blacklisting of&lt;br/&gt;MWeb\'s mail servers, since it is obvious that MWeb has decided to&lt;br/&gt;become a spamhaus.&lt;br/&gt;&lt;/div&gt;",1] )&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6772390670048382686?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6772390670048382686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/10/spam-spam-spam-spam-spam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6772390670048382686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6772390670048382686'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/10/spam-spam-spam-spam-spam.html' title='Spam, Spam, Spam, Spam, Spam!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1739480422465950820</id><published>2006-10-01T08:24:00.000+02:00</published><updated>2011-12-09T10:36:41.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Guy Kawasaki Finally Catching-up with Me?</title><content type='html'>In &lt;a href="http://blog.guykawasaki.com/2006/09/is_advertising_.html"&gt;“&lt;b&gt;Is Advertising Dead?&lt;/b&gt;&lt;/a&gt;” Guy Kawasaki finally reaches the place I was at in "&lt;b&gt;&lt;a href="http://onemikro2nd.blogspot.com/2006/07/why-advertising-is-broken.html"&gt;Why Advertising is Broken&lt;/a&gt;&lt;/b&gt;", posted back in July.&lt;br /&gt;&lt;br /&gt;Welcome, Guy!&amp;nbsp; Its going to be &lt;i&gt;very&lt;/i&gt; interesting to see how this story plays out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1739480422465950820?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1739480422465950820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2011/12/guy-kawasaki-finally-catching-up-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1739480422465950820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1739480422465950820'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2011/12/guy-kawasaki-finally-catching-up-with.html' title='Guy Kawasaki Finally Catching-up with Me?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2525811282141274108</id><published>2006-09-28T20:59:00.000+02:00</published><updated>2011-12-01T13:03:32.169+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reliability'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Small Server Outage</title><content type='html'>Small outage of this server yesterday.&amp;nbsp; Just one of those mysterious crashes, and then the networking fails to come back up.&amp;nbsp; Very frustrating and mysterious, because, as far as I can see, all the correct scripts are being run.&lt;br /&gt;&lt;br /&gt;Not going to be the highest priority in my life, because I am planning to move the blogs and wikis to another hosting setup within the next few weeks, anyway, in an attempt to reduce costs.&amp;nbsp; Right no my main focus is on &lt;a href="http://mikro2nd.net/blog/planb/"&gt;the garden&lt;/a&gt; and getting enough &lt;a href="http://mikro2nd.net/blog/planb/braamekraal/2006/09/01/Sproing.html"&gt;garden beds&lt;/a&gt; prepared for the Summer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2525811282141274108?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2525811282141274108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/09/small-server-outage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2525811282141274108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2525811282141274108'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/09/small-server-outage.html' title='Small Server Outage'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-6090154682165190934</id><published>2006-08-26T20:22:00.000+02:00</published><updated>2011-12-09T14:34:46.956+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hostile-it'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Vista Sound</title><content type='html'>Zoli has an &lt;a href="http://www.zoliblog.com/blog/_archives/2006/8/24/2262317.html"&gt;entertaining little anecdote&lt;/a&gt; over on his blog about how users cannot disable the startup sound in the current (beta) release of Microsoft's Vista OS.&lt;br /&gt;&lt;br /&gt;Funny, back in the days when I still had a Windows machine (around 5 years ago), I never could be bothered to figure my way through their twisty-little-maze of configuration dialogues-for-the-brain-dead to switch off the startup noise.&amp;nbsp; I used to just jump in and &lt;i&gt;delete the damn media file&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;So I guess there &lt;i&gt;is&lt;/i&gt; a way to turn it off after all...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-6090154682165190934?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/6090154682165190934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/08/vista-sound.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6090154682165190934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/6090154682165190934'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/08/vista-sound.html' title='Vista Sound'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-240539278797344499</id><published>2006-08-15T23:50:00.000+02:00</published><updated>2011-12-11T14:06:18.266+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social-networks'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Social Networking 2.0?</title><content type='html'>A thing that really, really irritates me about the whole "social networking" hoopla is how it takes such a short view of history.&amp;nbsp; &lt;a href="http://blogs.salon.com/0002007/2006/08/14.html#a1612"&gt;Dave Pollard&lt;/a&gt; has a very nice, very useful writeup about social networking (2.0-style).&amp;nbsp; (Sidebar: Was that mindmap done using &lt;a href="http://freemind.sourceforge.net/"&gt;Freemind&lt;/a&gt;, Dave?&amp;nbsp; Great piece of software!)&lt;br /&gt;&lt;br /&gt;But let's not forget that we humans have been "social networking" since before we fell out the trees.&amp;nbsp; The fact that we're now trying to do so over the 'net, through a much-lower-bandwidth interface than we're geared for (nothing beats face-to-face!) just means that we've set ourselves some obstacles to overcome.&lt;br /&gt;&lt;br /&gt;Perhaps the only significant contribution that the 'net brings is the ability to communicate anonymously.&amp;nbsp; Some might argue that this is also the handicap that the 'net brings to our conversations, too, since it is what enables spam, wiki defacements, etc.&amp;nbsp; But I think that anonymity is also exactly what allows us to express a lot more of our true nature, our inner self.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-240539278797344499?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/240539278797344499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/08/social-networking-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/240539278797344499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/240539278797344499'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/08/social-networking-20.html' title='Social Networking 2.0?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1363838978353898624</id><published>2006-08-01T22:52:00.000+02:00</published><updated>2011-12-09T10:38:51.141+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>How to Screw-Up Your Web2 Application</title><content type='html'>If I were a marketing guy, I would keep you in suspense right up to the end of this post.&amp;nbsp; I would waffle on for ages about how and why I'm going to tell you "the secret," and what a super guy I am for letting you in on this.&lt;br /&gt;&lt;br /&gt;But I'm a programmer, and time is precious.&amp;nbsp; All over the web I see this particular piece of egregious stupidity:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Apps that use email addresses as user-ids&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I strongly advise against the use of email addresses as login ids.&amp;nbsp; Consider the following 2 common cases:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The user changes their email address (due to changing provider or whatever).&amp;nbsp; &lt;/li&gt;&lt;li&gt;A user leaves the community.&amp;nbsp; Months/years later another user joins; they have the same email address as the old user, but are not the same person.&amp;nbsp; Are you going to refuse them entry?&lt;/li&gt;&lt;/ol&gt;In the former case, if you allow them to change their login to correspond to their new email address, you lose the trail of what they've done over time, since you've essentially changed their identity.&lt;br /&gt;&lt;br /&gt;Worse, yet, if you're doing any kind of app that allows the user to build up a history, karma points, reputation, whatever, since you force them to throw away their entire investment in your site.&amp;nbsp; They may as well go elsewhere.&amp;nbsp; That history took the user time, energy and effort to build, and constitutes your only real barrier to entry against competitors who want to eat your userbase.&lt;br /&gt;&lt;br /&gt;In Summary:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A login-id is an identity.&amp;nbsp; An email address is not an identity.&amp;nbsp; It is an address.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1363838978353898624?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1363838978353898624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/08/how-to-screw-up-your-web2-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1363838978353898624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1363838978353898624'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/08/how-to-screw-up-your-web2-application.html' title='How to Screw-Up Your Web2 Application'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-2167541030426518473</id><published>2006-07-30T19:11:00.000+02:00</published><updated>2011-12-11T13:46:47.646+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Microsoft playing catchup to Jini?</title><content type='html'>I just saw &lt;a href="http://www.readwriteweb.com/archives/the_ray_ozzie_e.php"&gt;The Ray Ozzie Experience&lt;/a&gt; and almost ROTFL.&lt;br /&gt;&lt;blockquote&gt;"A world of many devices, all connected and managed by the Web".&lt;/blockquote&gt;Isn't this what &lt;a href="http://www.sun.com/aboutsun/media/ceo/mgt_mcnealy.html"&gt;Scott McNealy&lt;/a&gt; was telling us like &lt;span style="font-weight: bold;"&gt;eight years ago&lt;/span&gt;?  Remember "WebTone"?  Welcome to the party, Ray Ozzie.&amp;nbsp; Sorry that you're so late! M'afraid the beer's justabout finished...&lt;br /&gt;&lt;br /&gt;Isn't this exactly what &lt;a href="http://jini.org/" style="font-weight: bold;"&gt;Jini&lt;/a&gt; was designed for?  (And I'd infinitely sooner bet my life on technology as mature and carefully designed as Jini than on anything MS is ever likely to come up with.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-2167541030426518473?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/2167541030426518473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/microsoft-playing-catchup-to-jini.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2167541030426518473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/2167541030426518473'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/microsoft-playing-catchup-to-jini.html' title='Microsoft playing catchup to Jini?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3508133140928675069</id><published>2006-07-27T02:38:00.000+02:00</published><updated>2011-12-09T14:38:35.854+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Why is CSS so damn HARD?</title><content type='html'>Seems to me that the whole CSS model is pretty poorly designed.&amp;nbsp; It shouldn't be so damn &lt;span style="font-weight: bold;"&gt;hard&lt;/span&gt; to implement a website design.&amp;nbsp; I'm not talking about bleeding-edge Zen Garden stuff; I'm talking about very simple layouts.&lt;br /&gt;&lt;br /&gt;For a start I prefer liquid layouts: That graphic designers coming from more traditional media hate fear and loath the concept, I understand.&amp;nbsp; Its a mindset - the user has partial control over how a thing looks - and many graphic designers have trouble dealing with their inability to guarantee pixel-perfect alignments.&amp;nbsp; Perhaps the user wears hectic prescription glasses, so 18pt fonts are a reasonable default for them.&amp;nbsp; Get over it.&lt;br /&gt;&lt;br /&gt;Secondly, I'm no n00b at CSS.&amp;nbsp; Whilst I'm hardly a professional CSS designer, I think I understand the concepts and details pretty well, and I've fumbled my way around a fair number of web designs using CSS with results that have attracted fair compliment from people who do that stuff professionally. (No, this blog is not currently an example! That's what I'm working on.)&lt;br /&gt;&lt;br /&gt;But its still so damn hard!&lt;br /&gt;&lt;br /&gt;One of two thing I think are needed: either&lt;br /&gt;&lt;ol&gt;&lt;li&gt;a redesign of CSS that works to a "springs 'n' struts" layout model, or alternatively a "springs 'n' struts" model that can get compiled to CSS2 (possibly on the fly as a filter), or&lt;/li&gt;&lt;li&gt;the additional of another "position" mode in CSS - "absolute-relative" positioning - absolute positioning of an element, but relative to the containing box.&lt;/li&gt;&lt;/ol&gt;Number one is unlikely (except maybe as a translated/compiled language), but number 2 is possible without breaking existing CSS-based layouts.&lt;br /&gt;&lt;br /&gt;It would sure make simple layouts a hell of a lot simpler to implement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3508133140928675069?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3508133140928675069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/why-is-css-so-damn-hard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3508133140928675069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3508133140928675069'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/why-is-css-so-damn-hard.html' title='Why is CSS so damn HARD?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4661415707696615949</id><published>2006-07-24T02:14:00.000+02:00</published><updated>2011-12-11T13:56:26.365+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social-networks'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Reports of the Death of Email Greatly Exagerated</title><content type='html'>So there have been a couple of surveys among college students indicating that the surveyed population mostly uses IM to keep in touch with their social circle.&amp;nbsp; They only ever use email to contact companies and "old people" like their parents, and view email as "old fashioned".&amp;nbsp; This has led some commentators to pronounce the &lt;span style="font-weight: bold;"&gt;Imminent Demise of Email&lt;/span&gt; as communication channel in the Internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Horseshit&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bokardo.com/archives/social-networks-are-killing-email/"&gt;Social Networks are Killing Email&lt;/a&gt;? - I think not! What we are seeing here is the confluence of two things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Younger people have more time on their hands, and so are more inclined to spend some or much of that time in online communities, or social networks. (&lt;i&gt;Newsflash&lt;/i&gt;: Social networks are nothing new.&amp;nbsp; We've been doing social networks since before we fell out the trees!)&amp;nbsp; As a result they tend not to use email, preferring IM, as email lacks an immediacy - we're seeing the impatience of youth.&lt;/li&gt;&lt;li&gt;As one ages, one's priorities, as well as the demands on one's time, change.&amp;nbsp; Therefore, the preferred modes and channels of communication one favours are likely to change with age.&amp;nbsp; Duh.&amp;nbsp; Why do I love my cellphone more than my landline?&amp;nbsp; It does voicemail.&amp;nbsp; I can disconnect without missing anything.&amp;nbsp; There are times - many times - when I prefer to disconnect.&amp;nbsp; I truly won't miss anything important in the endless torrent of attention-grabbing shit, and I need time to myself.&amp;nbsp; Time to stop and think. Time to reflect.&amp;nbsp; And I'm not insecure about it.&lt;/li&gt;&lt;/ol&gt;So, in a nutshell, we see 1) the impatience of being young, and 2) the insecurity of being young, reflected in some surveys that say that young people don't much use email.&lt;br /&gt;&lt;br /&gt;And from this, people are extrapolating &lt;span style="font-weight: bold;"&gt;Email is Dead&lt;/span&gt;?&amp;nbsp; Let's see the same surveys done on the same populations 5, 10, 20 years from now, and lets see how their channels of communication have changed then.&amp;nbsp; Perhaps then we can begin to draw some conclusions, instead of this bogus pseudo-science.&lt;br /&gt;&lt;br /&gt;Otherwise I will stick to my premise: Death of Email Greatly Exagerated.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;span style="font-style: italic;"&gt;Disclaimer: I am in my mid-40's and have two sons who fall into the "youth" category, one at &lt;/span&gt;&lt;a href="http://www.ru.ac.za/" style="font-style: italic;"&gt;Rhodes University&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, the other a hotshot Software Developer.&amp;nbsp; As such, my views may be biased.&lt;/span&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4661415707696615949?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4661415707696615949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/reports-of-death-of-email-greatly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4661415707696615949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4661415707696615949'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/reports-of-death-of-email-greatly.html' title='Reports of the Death of Email Greatly Exagerated'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-301448810236964542</id><published>2006-07-21T02:59:00.000+02:00</published><updated>2011-12-09T09:21:57.018+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='value'/><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='attention'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Why Advertising is Broken</title><content type='html'>&lt;a href="http://www.feld.com/"&gt;Brad Feld&lt;/a&gt; started it with his &lt;a href="http://www.feld.com/blog/archives/001833.html"&gt;Three Constituencies &lt;/a&gt;post.&amp;nbsp; &lt;a href="http://wanderingstan.com/"&gt;Stan James&lt;/a&gt; followed up with some &lt;a href="http://wanderingstan.com/2006-07-17/attention_to_dollars_and_other_exchanges"&gt;very interesting insights&lt;/a&gt; on the model set-up by Brad.&amp;nbsp; Go! Read them; I'll wait here.&lt;br /&gt;&lt;br /&gt;In thinking about this model and all it implies, I started drawing a diagram to keep the value-flows straight in my head, and suddenly something I've been mulling over for some time popped clear in my mind:&amp;nbsp; &lt;span style="font-weight: bold;"&gt;Why Interruptive Advertising is Dead&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;For awhile, now I have held it as an article of faith that interruptive advertising is dead, just the body hasn't stopped moving yet.&amp;nbsp; (And if you think the Death Throes of the RIAA/MPAA business model has been messy and ugly, you probably ain't seen nothin' yet!)&amp;nbsp; For example, I never see popups (very interruptive stuff!) because &lt;a href="http://www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt; blocks them with the preferences I have set.&amp;nbsp; The Adblock/AdblockPlus plugins block most other advertising that might reach me, and the recently-installed Flashblock plugin catches the remainder.&amp;nbsp; Do I hate adverts?&amp;nbsp; You bet!&amp;nbsp; I find them consistently irritating, irrelevant to my purposes, intrusive and obnoxious.&amp;nbsp; I've yet to find any exceptions.&lt;br /&gt;&lt;br /&gt;Ya, ya!&amp;nbsp; We've all heard the bullshit: "Advertising informs you about products and product choices..."&lt;br /&gt;&lt;br /&gt;Well, if there's something I want - a new house, a new car, some food, a holiday, a PC - I go out and shop for it.&amp;nbsp; Then I'm still not interested in adverts because they lack the substance I need to make a buy decision.&lt;br /&gt;&lt;br /&gt;With the recent availability of Explorer 7beta3 (if you are so hooked into MS products that you simply can't give them up) &lt;span style="font-weight: bold;"&gt;every major browser now has ad-blocking&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;What about TV?&lt;br /&gt;&lt;br /&gt;Yes.&amp;nbsp; What about TV?&amp;nbsp; Its mostly boring and irrelevant.&amp;nbsp; The programming is mostly apalling, the news banal.&amp;nbsp; I doubt whether I watch an hour of TV a week any more.&amp;nbsp; I'm getting the content I want elsewhere.&amp;nbsp; If there is the occasional show I want to watch, chances are I'll timeshift it anyway and skip the ads there, too.&lt;br /&gt;&lt;br /&gt;I truly believe that &lt;span style="font-weight: bold;"&gt;interruptive advertising is dead&lt;/span&gt;.&amp;nbsp; Permission-based advertising, and something I'll call Entertainment-based advertising, though is a whole new bundle of opportunities!&lt;br /&gt;&lt;br /&gt;My diagram, based completely on Stan's blog explains why:&lt;br /&gt;&lt;img style="width: 400px; height: 500px;" src="http://i47.photobucket.com/albums/f197/mikro2nd/ThreeConstituencies.gif" /&gt;&lt;br /&gt;See the problem?&amp;nbsp; All around the value chain there is a fair exchange of value given and received (or something like it.)&amp;nbsp; Except when we come to the advertiser's relationship with the consumer.&amp;nbsp; One way only.&amp;nbsp; No wonder most of us resent and loath ads.&lt;br /&gt;&lt;br /&gt;Thank you Brad and Stan for paving the way to this understanding of precisely why &lt;span style="font-weight: bold;"&gt;Interruptive Advertising is Broken&lt;/span&gt;.&amp;nbsp; The fact is that your interrupting me is a form of force: you believe you have to force your content onto me since I probably wouldn't want it otherwise.&amp;nbsp; And you're right!&amp;nbsp; I wouldn't.&amp;nbsp; I don't.&amp;nbsp; You give me nothing in return.&lt;br /&gt;&lt;br /&gt;The truth is that interruptive marketing has always has been broken.&amp;nbsp; It's only recently that we consumers are in a position to do something about it, and we're doing so with a vengeance!&lt;br /&gt;&lt;blockquote&gt;"There is no such thing as a problem without a gift for you in its hands"&lt;br /&gt;  &lt;span style="font-style: italic;"&gt;- Richard Bach, "Illusions: The Adventures of a Reluctant Messiah"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;There's a hell of a lot of opportunity in getting beyond the "need to interrupt", too, and it hinges on the advertiser giving back fair-value to the consumer in turn, but this post is already too long.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-301448810236964542?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/301448810236964542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/why-advertising-is-broken.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/301448810236964542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/301448810236964542'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/why-advertising-is-broken.html' title='Why Advertising is Broken'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-7489200009027399929</id><published>2006-07-19T21:37:00.000+02:00</published><updated>2011-12-09T09:38:26.371+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2'/><category scheme='http://www.blogger.com/atom/ns#' term='venture'/><category scheme='http://www.blogger.com/atom/ns#' term='social-networks'/><category scheme='http://www.blogger.com/atom/ns#' term='funding'/><category scheme='http://www.blogger.com/atom/ns#' term='flightwish'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>When Funding Falls Through</title><content type='html'>Just received email to the effect that the funding deal we were hoping for has fallen through.&amp;nbsp; Again.&lt;br /&gt;&lt;br /&gt;I confess I'm rapidly losing faith - not to mention running out of money to keep the roof overhead.&lt;br /&gt;&lt;br /&gt;We've been trying to get funded for about six months now, with a conspicuous lack of success.&amp;nbsp; I freely admit that for part of the time we were simply not trying very hard: the deal on the table was too tempting for us.&amp;nbsp; We were close enough to the investor that we had no need to draw up a very formal business plan for pitching (though we certainly did have an internal operational/development business plan) so we were pretty lackadaisical about the whole thing.&lt;br /&gt;&lt;br /&gt;A couple of months into the negotiation it became apparent that the amount of money we were negotiating would be insufficient to get the business as far as "revenue generating", and the amount we would really require was more than the angel-group were willing to invest; "Too rich for our blood!"&amp;nbsp; Fair and reasonable; indeed the right decision for all concerned, since we would otherwise be throwing money at a venture doomed before it started.&lt;br /&gt;&lt;br /&gt;So we then had to spend considerable time working up a reasonable (I think!) "pitch" business plan for another angel investor.&amp;nbsp; They're the ones who have turned us down this morning, and I can understand and sympathise with their reasons - essentially they feel that the market we wish to tackle is just too tough, and we are neophytes in the space.&amp;nbsp; We agree.&amp;nbsp; We've known it all along, and addressed those problems in our business plan, but evidently it wasn't enough to convince them to part with (about) USD 1million.&amp;nbsp; That amount will get us about to public-Beta in a timespan of about 4 months.&lt;br /&gt;&lt;br /&gt;So.&amp;nbsp; Anybody know of an angel/venture group wanting to get into the social-web space in a venture that has real-world revenue streams (i.e. We're not planning on ad-revenue) in a USD45billion/year industry? (And Yes, that's a "b", not an "m".)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-7489200009027399929?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/7489200009027399929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/when-funding-falls-through.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7489200009027399929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/7489200009027399929'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/when-funding-falls-through.html' title='When Funding Falls Through'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4668789740699992614</id><published>2006-07-17T19:52:00.000+02:00</published><updated>2011-12-09T10:40:47.531+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Anything New Takes Time</title><content type='html'>I recently added "&lt;a href="http://evelynrodriguez.typepad.com/crossroads_dispatches/"&gt;Crossroads Dispatches&lt;/a&gt;" to the ever-growing list of blogs I keep an eye on.&amp;nbsp; I liked the fusion of touchy-feely and hard-nosed reality.&amp;nbsp; Something like my lifestyle that attempts to fuse web entrepreneurship with self-sufficient living and growing my own food.&amp;nbsp; Something like Sushi - the blandness of Rice with the Bland/Salty fish and the BITE of Wasabi.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://evelynrodriguez.typepad.com/crossroads_dispatches/2006/07/living_takes_ti.html"&gt;Crossroads Dispatches: Living Takes Time, Thinking Big Takes Time&lt;/a&gt;, Ms Rodriguez writes about how many fast-paced people discover that going more slowly really enables them to go faster, but only after some (often severe) personal crisis.&lt;br /&gt;&lt;br /&gt;This brings to mind the oft-touted common wisdom of Internet startups: "&lt;span style="font-style: italic;"&gt;If you can't get something up and running within a couple of (days|weeks|months) you probably don't have anything.  You probably don't understand what it is you're wanting to build.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;What horse-shit.&amp;nbsp; Frequently this comes from people who are not programmers, and who have no clue of all the intricacies and complexities involved in designing, building, debugging, deploying, managing and enhancing an application; least of all a distributed application.&amp;nbsp; Now try this all by yourself.  You get to do &lt;em&gt;everything&lt;/em&gt; yourself.&amp;nbsp; There's nobody else to lean on to put together the graphics or to install the database or to spot the stupid mistake that's going to take you half a day to figure out by yourself.&amp;nbsp; There's no-one who will listen to your ideas and tell you when you're spouting crap or just in love with the smell of your own shit.&lt;br /&gt;&lt;br /&gt;Its hard work, and it takes time.&amp;nbsp; Lots of time.&amp;nbsp; &lt;span style="font-weight: bold;"&gt;And you're better off going slowly than trying to meet the bullshit expectations of some alleged common wisdom.&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As you may gather, I have been working on a new New Venture for some weeks now (which also accounts for the sporadic and irregular blog posting) and am about halfway through the development cycle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4668789740699992614?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4668789740699992614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/anything-new-takes-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4668789740699992614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4668789740699992614'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/anything-new-takes-time.html' title='Anything New Takes Time'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-1648347678057669670</id><published>2006-07-15T20:38:00.000+02:00</published><updated>2011-12-11T13:44:08.613+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='ux'/><title type='text'>Goodbye (again!) to Flash</title><content type='html'>Finally I got pissed-off enough to remove Flash from all my PCs.&amp;nbsp; For a long, long time I resisted installing Flash, because all I had ever seen was annoying animated ads that bypassed my Adblock and Image-download restrictions through the use of Flash.&amp;nbsp; Then, along came broadband, and a few things worth watching on YouTube and a couple of other places.&lt;br /&gt;&lt;br /&gt;So having had Flash installed and enabled in my browsers for a couple of months, now, I have come full circle back to my original position: It is just not worth it.&amp;nbsp; For the one or two worthwhile videos or whatever that I want to watch I can manually re-enable Flash.&amp;nbsp; For the rest I say , "Away with You, Worthless Rubbish."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-1648347678057669670?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/1648347678057669670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/goodbye-again-to-flash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1648347678057669670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/1648347678057669670'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/goodbye-again-to-flash.html' title='Goodbye (again!) to Flash'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-867548680391295347</id><published>2006-07-13T03:37:00.000+02:00</published><updated>2011-12-09T14:36:36.026+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>What I Really Want In a BlogSystem</title><content type='html'>Now that I'm getting the hang of this "blogging" thing (humour me in my misguided belief :-), I find myself writing more than I ever did - and that's great!&amp;nbsp; But for a couple of misguided influences and accidents as a kid I might have ended up as a writer, so perhaps this is my way of playing catchup.&lt;br /&gt;&lt;br /&gt;Prompted by the provocative "&lt;a href="http://www.problogger.net/archives/2006/07/11/what-would-i-do-different-if-i-had-to-start-my-blog-over-merlin-mann/"&gt;What would I do different if I had to start my blog over?&lt;/a&gt;" I started to mull over what I would really like to see in a blogging system.&amp;nbsp; In fact I was discussing this just the other day with "&lt;a href="http://lemnik.wordpress.com/" style="font-weight: bold;"&gt;Lemnik&lt;/a&gt;" who tells me he is thinking of writing a new (probably Open Source) blogging system. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Tags vs. Categories&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Firstly I want every post to have a set of tags associated with it, rather than having to pigeon-hole posts into categories.&amp;nbsp; Categories may work for some people, but not well for me, and tags can certainly fulfil the same function.&amp;nbsp; They also allow you to put a single post into multiple "categories". So away with Categories, and in with the Tags.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Multiple Authors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many blogsystems do this.&amp;nbsp; Just not &lt;a href="http://www.blojsom.org/"&gt;&lt;span style="font-weight: bold;"&gt;Blojsom&lt;/span&gt;&lt;/a&gt;.&amp;nbsp; There are a number of good reasons why Blojsom is the software that suits me best, not least are its awesome integration capabilites.&amp;nbsp; It sports just about every kind of API for blogging, but the one serious shortcoming is that it pretty-much assumes&amp;nbsp; "One Man, One Blog".&amp;nbsp; "Person" if you're feeling particularly politically sensitive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; All the Right Pinginess&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Blojsom really scores here.&amp;nbsp; It will ping any blog aggregation service or search engine whenever you update your blog, and its as easy as entering the notification URL of the site into the blog settings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Comments and Trackbacks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course. With spam-controls. Optional, too - some people want to turn them off, and with good reason.&amp;nbsp; On the other hand the comment setups could be a lot better - much more like forum systems.&amp;nbsp; Mostly its just a linear list of comments, and needs something much more "conversational".&amp;nbsp; And should include something from all those trackbacks, too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Built-in Ratings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, there are an ever-growing number of "rating" sites and tools out there, but how hard would it be for my blogsystem to have one built-in?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Easy Linkiness&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again, there are lots of services that do this.&amp;nbsp; I use a few of them to keep my various blogrolls, but its not difficult to provide an easy way to capture the URLs of blogs I want to list in a blogroll, and could easily include the sort of OPML/Atom feed capabilities that allow integration with the wider world.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;CSS and Templates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Open up the CSS.&amp;nbsp; Most blogsystems seem to hide it away.&amp;nbsp; Blogger is a good exception, where its right out there in the template.&amp;nbsp; But god help you if you screw it up!&amp;nbsp; No going back!&amp;nbsp; Good way to make not-too-confident-in-the-first-place users really, &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; nervous about hacking the look&amp;amp;feel of their site.&amp;nbsp; Some goes for templates.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Two themes, I think:&lt;br /&gt;&lt;br /&gt;1) Enable a much more open, multi-way conversation with my readers.&amp;nbsp; Enable them to help me articulate this stuff I'm blogging (whatever that ma be.)&lt;br /&gt;&lt;br /&gt;2) Give me more choices in how I structure the thing - make the structures flatter, more open to integration (if I want it.)&lt;br /&gt;&lt;br /&gt;No doubt I'll think of many more features the moment I press the "Publish" button...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-867548680391295347?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/867548680391295347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/what-i-really-want-in-blogsystem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/867548680391295347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/867548680391295347'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/what-i-really-want-in-blogsystem.html' title='What I Really Want In a BlogSystem'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-430076255973584759</id><published>2006-07-10T00:28:00.000+02:00</published><updated>2011-12-01T12:58:10.497+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cms'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>JSPWiki</title><content type='html'>I think &lt;a style="font-weight: bold;" href="http://www.jspwiki.org/"&gt;JSPWiki&lt;/a&gt; is one of the greatest pieces of open source software out there anywhere.&amp;nbsp; It might not be well suited to everytone running a small website on a shared host because it requires a &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt; &lt;a href="http://tomcat.apache.org/"&gt;servlet container&lt;/a&gt; for hosting, so demands a slightly higher level of expertise than the PHP junk that's out there.&lt;br /&gt;&lt;br /&gt;That said, it drops into place and "just works" for a fast tryout or evaluation.&amp;nbsp; At the same time most of the flexibility needed for large-scale, sysadmin-run deployments is easily available, and its not an "all in one big step" thing either: you can gradually add the finer-grained controls as you need them.&amp;nbsp; Any Java-capable sysadmin will have no difficulty.&lt;br /&gt;&lt;br /&gt;Furthermore, there is an active, healthy and, above all, friendly developer community.&lt;br /&gt;&lt;br /&gt;I am using JSPWiki to run the "static" content side of this website, with only myself allowed to create, delete and edit pages.&amp;nbsp; (Indeed, only I am allowed to log in!)&amp;nbsp; Its perfect for the task.&amp;nbsp; All I have to do now is hack the templates into something nicer to look at. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-430076255973584759?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/430076255973584759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/jspwiki.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/430076255973584759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/430076255973584759'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/jspwiki.html' title='JSPWiki'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8258231358403355202</id><published>2006-07-08T21:56:00.000+02:00</published><updated>2011-12-11T13:35:31.681+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Blogosphere Blues</title><content type='html'>I &lt;em&gt;hate&lt;/em&gt; the word "blogosphere".&amp;nbsp; It sucks.&amp;nbsp; Its just an ugly word.&amp;nbsp; The person who thought of it should be shot.&amp;nbsp; Come on!&amp;nbsp; Own up!&amp;nbsp; We know you're out there, and, Google willing, we'll find you eventually!&lt;br /&gt;&lt;br /&gt;So, not one to accept generalised wingeing, I propose a replacement: &lt;strong&gt;Blogsphere&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;There, see?&amp;nbsp; By dropping just one little letter, its a whole heap more palatable.&amp;nbsp; Although I confess it does remind me of "Vogsphere"...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8258231358403355202?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8258231358403355202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/blogosphere-blues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8258231358403355202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8258231358403355202'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/blogosphere-blues.html' title='Blogosphere Blues'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-4407420868431498862</id><published>2006-07-02T23:28:00.000+02:00</published><updated>2011-12-01T12:32:58.585+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='p2p'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Internet3.0</title><content type='html'>&lt;a href="http://www.pbs.org/cringely/pulpit/pulpit20060629.html"&gt;Robert Cringley&lt;/a&gt; makes an excellent point: &lt;span style="font-style: italic;"&gt;we should own the "last-mile" infrastructure ourselves&lt;/span&gt;. Instead of farming it out to that bunch of robber-bandits the phone and cable companies, we should build and own it ourselves, co-op style. He quotes Bob Frankston as proposing that this last-mile infrastructure be implemented as Fibre To The Home.&amp;nbsp; (Unfortunately the second half of his article meanders off into a meaningless rant about Microsoft that does nothing to further the discussion of community-provided infrastructure.)&lt;br /&gt;&lt;br /&gt;Now, self-built-and-maintained local-loop optic-fibre infrastructure may be feasible in the more densely populated parts of the USA, and possibly Europe, but no way here in Africa, least of all in a rural area such as I choose to live in.&amp;nbsp; Far more reasonable for us to look to WiFi for that answer.&amp;nbsp; Wireless makes a lot more sense in most locations, anyway, in that the maintenance burden is much smaller, being localised to the wireless nodes themselves.&amp;nbsp; &lt;a href="http://fon.com/"&gt;Fon&lt;/a&gt; is targetting precisely this space, and I wish them much success with the model.&lt;br /&gt;&lt;br /&gt;The fatal weakness in the scheme is still the backbone.&amp;nbsp; &lt;a href="http://fon.com/"&gt;Fon&lt;/a&gt;, in common with Frankston's idea, both assume that the local loop connects to some "large infrastructure backbone" provided by ISPs who will remain neutral bit-carriers.&amp;nbsp; Dream on!&lt;br /&gt;&lt;br /&gt;Furthermore, there is the interesting (to me) question of whether it is &lt;span style="font-style: italic;"&gt;at all &lt;/span&gt;possible to maintain a global internetwork during the disruptions likely headed our way as we descend from the &lt;a href="http://en.wikipedia.org/wiki/Olduvai_theory"&gt;cheap-oil plateau&lt;/a&gt;.&amp;nbsp; It takes serious amounts of energy, time, money and organisation to maintain a large-scale wired infrastructure such as existing telephone and cable networks.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Currently my 'net access is via the state-monopoly phone company, &lt;a href="http://www.telkom.co.za/"&gt;Telkom&lt;/a&gt;, who are either totally bent on network control and continuing access restriction (resulting in the most expensive network access in the world!) or they are simply total incompetents: they can/will not provide proper two-way network access.&amp;nbsp; It is impossible to run a server at my end of the 'net, due to the configuration of their firewalls and proxies.&amp;nbsp; This is not a network!&amp;nbsp; Something that telcos are constitutionally incapable of understanding due to the nature of the networks they have been running for decades.&lt;br /&gt;&lt;br /&gt;The whole discussion of community-provided infrastructure resonates with something I have been giving quite a bit of thought lately: &lt;span style="font-weight: bold;"&gt;Internet3.0 - The Community Provided Internet&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Drawing on the theme of Web2.0, characterised by much web content being generated and provided, edited, filtered, and rated by the community,&amp;nbsp; together with Frankston's idea of community-supplied last-mile wiring (whether fibre, WiFi, WiMax, laser or &lt;a href="http://www.faqs.org/rfcs/rfc1149.html"&gt;carrier pigeon&lt;/a&gt;) I believe we should be building community-owned-and-run long-haul networks - community-driven Internet backbones.&lt;br /&gt;&lt;br /&gt;I am well aware that there have already been some successful efforts to build trans-America wireless mesh networks, and this is precisely the model I think we should adopt.&amp;nbsp; I do &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; propose or expect that we would aim to replace existing wired infrastrucure.&amp;nbsp; Wired networks have distinct reliability and bandwidth advantages over wireless; this is inherent in the physics and operating environment.&amp;nbsp; We &lt;span style="font-style: italic;"&gt;can&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;should,&lt;/span&gt; however have alternative routes for IP traffic that reside &lt;span style="font-weight: bold;"&gt;outside the hands of corporate and government control&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This last issue is difficult. Many repressive regimes would and &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; restrict access to wireless spectrum, including South Africa where it is technically illegal to establish a wireless link to your neighbour without a license.&amp;nbsp; Licenses are unobtainable, and the charge for a license is prohibitive.&amp;nbsp; Fortunately we have a strong tradition if civil disobedience in such matters!&lt;br /&gt;&lt;br /&gt;The time to build a global wireless mesh of networks is &lt;span style="font-weight: bold;"&gt;now&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-4407420868431498862?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/4407420868431498862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/internet30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4407420868431498862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/4407420868431498862'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/07/internet30.html' title='Internet3.0'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-3870753855974763747</id><published>2006-06-27T00:00:00.000+02:00</published><updated>2011-12-01T13:01:50.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='cms'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>More website progress...</title><content type='html'>Finally managed to get the farm web content up and running under the new &lt;a href="http://www.jspwiki.org/"&gt;JSPWiki&lt;/a&gt; - now I just have to hack the templates to conform to the new scheme of things.&amp;nbsp; The advantage is that I'll be able to secure the content-editing using the new permissions system in JSPWiki, instead of my old scheme of having two different template sets.&amp;nbsp; Means I will only have to maintain one template set in future.&lt;br /&gt;&lt;br /&gt;JSPWiki is just such a great piece of software; the guys who develop it have a fine sense of "as simple as possible, but no simpler".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-3870753855974763747?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/3870753855974763747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/06/more-website-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3870753855974763747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/3870753855974763747'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/06/more-website-progress.html' title='More website progress...'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1659822473530077615.post-8202842772135295243</id><published>2006-06-23T18:40:00.000+02:00</published><updated>2011-12-01T13:07:05.765+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='venture'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>The Next Wave in the 'Net</title><content type='html'>A new idea is blowing around in the (cold!) wind: A &lt;span style="font-weight: bold;"&gt;community blog/newpaper for the South Cape region&lt;/span&gt;.&amp;nbsp; Do a quick search on any search-engine of your choice to see what is happening in the South Cape.&amp;nbsp; Good search terms might include "South Cape", "Garden Route", "Knysna" or "Outeniqua".&amp;nbsp; The overwhelming majority of links that come back are tourism-related, and almost all of the rest are real-estate advertising.&lt;br /&gt;&lt;br /&gt;Almost everything on the 'net about this region is outward-facing; there's next-to-nothing there for local people to find out what is happening where they live.&amp;nbsp; &lt;i&gt;Caveat&lt;/i&gt;: There is a small quantity of inward-facing content in the 'net for South Cap locals, but it is certainly not well placed in the search engines.&amp;nbsp; Perhaps I should try one of the local (South African) search engines, but they all suck.&lt;br /&gt;&lt;br /&gt;My initial concept is more like along the lines of a "community&amp;nbsp;blog" than a conventional newspaper.&amp;nbsp; It has everything along the&amp;nbsp;lines of bottom-up content, community-driven development and&amp;nbsp;community-managed editing, etc. that I think are good things to&amp;nbsp;foster.&amp;nbsp; Think along the lines of &lt;a href="http://slashdot.org/"&gt;Slashdot&lt;/a&gt; for ordinary people, and with a regional focus.&amp;nbsp; But, given how limited access is to most people in the area, it makes sense to me to try and find ways to tie the "bits" world (the 'net) back into the "bricks" world where most people live.&lt;br /&gt;&lt;br /&gt;It's also a fact that, even people who /do/ have some level of 'net access, also run Real Lives(TM) and don't spend a major amount of their time in the 'net.&amp;nbsp; Mostly those who do "live in the 'net" are hacker types like&amp;nbsp;me, or retired people with time on their hands (and the money to fund it,&amp;nbsp;and lower levels of real-world energy).&amp;nbsp; (Note: That's "mostly", not&amp;nbsp;"all".)&lt;br /&gt;&lt;br /&gt;I have come to believe that the &lt;span style="font-weight: bold;"&gt;next wave in the 'net&lt;/span&gt; (and most of&amp;nbsp;the real world, or "bricks" world, hasn't yet caught-up with the&amp;nbsp;&lt;span style="font-weight: bold;"&gt;current&lt;/span&gt; wave) will centre around tying the bitworld back into the&amp;nbsp;brick world, and an application of the same bottom-up notions to&amp;nbsp;brickworld.&amp;nbsp; My startup venture (if it ever flies! :-) is a direct application&amp;nbsp;to test the theory.&lt;br /&gt;&lt;br /&gt;The news thingie is a sharper application of the same question: &lt;span style="font-style: italic;"&gt;Can we&amp;nbsp;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;get the real news from ordinary people who "see stuff happen" instead&amp;nbsp;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;of an "ordained ministry who pre-chew our pap"?&lt;/span&gt;&amp;nbsp; Including those who&amp;nbsp;lack the advantages of decent 'net access!&lt;br /&gt;&lt;br /&gt;If we can be modestly successful at that, then, along the way, we will&amp;nbsp;surely make some money, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1659822473530077615-8202842772135295243?l=onemikro2nd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onemikro2nd.blogspot.com/feeds/8202842772135295243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://onemikro2nd.blogspot.com/2006/06/next-wave-in-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8202842772135295243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1659822473530077615/posts/default/8202842772135295243'/><link rel='alternate' type='text/html' href='http://onemikro2nd.blogspot.com/2006/06/next-wave-in-net.html' title='The Next Wave in the &apos;Net'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12196747651932497845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
