<?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-26758186</id><updated>2012-02-16T22:08:38.548Z</updated><title type='text'>technicalcreative</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26758186.post-5387474648634282773</id><published>2009-11-08T22:43:00.001Z</published><updated>2009-11-08T22:43:13.948Z</updated><title type='text'>Ubuntu 9.10 +2 days</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;It's two days since I installed Karmic Koala Ubuntu 9.10.  Time for a progress report.&lt;br/&gt;&lt;br/&gt;The OS is now looking lovelier than ever.  A quick trawl through the graphics options reveal even more flourishes, which work happily with the nVidia Quadro FX 1500M nestling in my M90.  Windows have an elastic effect when minimizing or maximizing, literally bouncing into shape.  Dragging a window around the workspace sees the bottom of the window belatedly following the top, snapping back into place when the window move is complete.&lt;br/&gt;&lt;br/&gt;Apps-wise, I'm pretty much sorted.  The Ubuntu Software Centre ( as it is called in UK English ) is well-organised and pretty much foolproof.  Based off the dependency-aware apt-get, it'll go get whatever you need to make whatever app you're installing work first time.  True, you don't generally get installation problems on XP, but I have encountered the odd piece of software that needs a redistributable of some kind.  All dependencies are downloaded first here.&lt;br/&gt;&lt;br/&gt;Rhythmbox deals nicely with my love of podcasts.  Instead of going through the iTunes store, you simply give it the XML feed URL of the 'cast you want to subscribe to.  It sorts out the rest from there.  Some may miss the convenience of the browsing function available in iTunes, but it's a non-issue for me.  I've never rated the iTunes podcast directory that highly myself, plus there are plenty of other sites out there that'll allow you to browse based on interest.&lt;br/&gt;&lt;br/&gt;Transmission is the BitTorrent client that comes pre-installed with Ubuntu.  The mere fact that it's part of the default install speaks to Canonical's recognition of modern user activities.  Finger definitely on the pulse there. It's not as full-featured as Windows fave uTorrent.  If you're looking for graphs of who's providing which piece of which file, you're out of luck.  If you're simply after a quick download or two (million), Transmission is a good, functional client.&lt;br/&gt;&lt;br/&gt;Video is being handled by the ever reliable VLC, as permissive on Linux as it is on any of the platforms it runs on.&lt;br/&gt;&lt;br/&gt;I've had a quick look at Monodevelop, an IDE intended for developing .NET applications.  It looks good enough for what it is, but I'll probably still do all of my .NET dev inside a Windows environment.  Visual Studio may not be perfect, but I'm comfortable within it.&lt;br/&gt;&lt;br/&gt;The one thing I haven't got quite sorted yet is DVD playback.  To be honest, it's something of a non-issue for me.  I have numerous devices capable of playing DVDs.  Pretty sure I could solve the problem if I put the time into it if I was so inclined, but for those who deem DVD playback a must - a little work will be required.  It won't work out of the box.&lt;br/&gt;&lt;br/&gt;Another annoyance (although not Linux-related per se) is Zynga Poker on Facebook.  For some reason, some of the text won't display properly, making it difficult to pick specific sit 'n go games.  However, I think this is more of a Zynga issue than Linux issue.  I hope they sort it out.&lt;br/&gt;&lt;br/&gt;Despite the couple of niggles, the overriding factor in all of this is how bloody &lt;i&gt;fast &lt;/i&gt;it all is.  Switching between open applications is joyful, in stark contrast to XP, which acts like a man with a serious hangover trying to repaint the Sistine Chapel.  My machine is probably three years old at this point, and it runs beautifully.  First time in around 2.5 years I've been able to make such a claim.&lt;br/&gt;&lt;br/&gt;The only thing I'm actually missing about Windows is the ease of installing Windows games. I've got an XBox 360.  I have a PS3.  I can live with that for now.  When the time comes (i.e. when Blizzard get around to releasing the bulk of their stuff) I'll get something worthy of doing the deed.  But if you want a computer just to be a computer, Ubuntu 9.10 is tops.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=2b7a01d2-8c7a-854b-a847-6fc4025531ca' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-5387474648634282773?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/5387474648634282773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=5387474648634282773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/5387474648634282773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/5387474648634282773'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2009/11/ubuntu-910-2-days.html' title='Ubuntu 9.10 +2 days'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-402975971292260704</id><published>2009-11-06T17:23:00.001Z</published><updated>2009-11-06T17:23:55.135Z</updated><title type='text'>Karmic Koala Ubuntu</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I installed Ubuntu 9.10 (Karmic Koala) this morning.  No half measures.  No dual booting.  Following a backup of precious artefacts, its a complete install, usurping XP as the sole operating system on the Precision M90.  I considered Windows 7, but it's 180UKP for the upgrade I'm after.  If I'm going to spend that sort of money, I'd rather spend a bit more and get an entire new lappy. Windows 7 pre-installed, naturally.  Still, that's enough about Windows.  Let's talk Linux.&lt;br/&gt;&lt;br/&gt;Installation went very smoothly.  A console boot screen allows you to set your language and keymap before you even make the fateful decision to install.  These options are provided again when you hit the graphical part of the install process, along with a nifty time-zone selector.  Once you've decided how much of your hard drive you'd like to devote to Ubuntu, the installation proceeds accordingly.  In my case, I gave the entire drive - but this machine used to dual-boot Linux and XP just fine.&lt;br/&gt;&lt;br/&gt;The file copy process is the longest part of the install, with Ubuntu flashing OS features at you during the process.  It finished up in less than half an hour.  Very first impressions were ok, but not as flashy as I'd like.  However, Ubuntu tells me that I can get better graphical fidelity if I download a proprietary driver.  I'm ok with that, so a quick download, install and reboot later - we're back - and we're looking spanky.&lt;br/&gt;&lt;br/&gt;I never installed Vista, so the jump from XP to Ubuntu was something of a giant leap.  The taskbar is very functional, even compared to XP.  The rest of the OS shimmers.  Browsing is a delight due to some beautiful anti-aliasing, which I would actually rate above Mac OS X.  Just as smooth but not as heavy.  Gentle gradients seem to constitute most of the GUI's look and feel.&lt;br/&gt;&lt;br/&gt;I did have some initial problems with Wireless.  There was no indication that a card was present, and no auto-scanning for networks occurred.  I ended up having to manually enter the SSID, and even then I had to resort to setting all the IP4 settings manually.  No problem at all with a wired connection, which came in handy as I desperately Google'd for answers.&lt;br/&gt;&lt;br/&gt;Another immediate proprietary install was Adobe Flash player, which happily launched a game of Zynga Poker within Firefox.  Sound worked out of the box, although it doesn't seem to get the same quality of sound out of my laptop speakers as XP managed.  Sounds fine when connected to speakers, tho'.  I had to download quite a few plugins to get all of my formats to play, but this took less than ten minutes to accomplish.  Rhythmbox, the pre-installed music player, doesn't look as good as iTunes, but then, if you're spending your life &lt;i&gt;looking &lt;/i&gt;at iTunes, you probably need a new hobby anyway.&lt;br/&gt;&lt;br/&gt;Overall though, I'm genuinely excited to be playing around with a new OS, even if it is one I've encountered before.  Despite the initial problems, everything is running lovely now.  Desktop Linux has definitely come a long way.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=de47d103-28dd-83e1-88e8-3bdfc9b612fb' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-402975971292260704?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/402975971292260704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=402975971292260704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/402975971292260704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/402975971292260704'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2009/11/karmic-koala-ubuntu.html' title='Karmic Koala Ubuntu'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-8797282652134807035</id><published>2009-09-22T20:36:00.001+01:00</published><updated>2009-09-22T20:36:08.732+01:00</updated><title type='text'>The Great Laptop Swindle?</title><content type='html'>&lt;p&gt;Around 2 years ago, I was introduced to the wonders of the &lt;a href="http://www.dell.com/us/en/gen/notebooks/precn_m90/pd.aspx?refid=precn_m90&amp;amp;s=gen"&gt;Dell Precision M90&lt;/a&gt;.&amp;#160; Quite a famous machine in its day, largely because there was a much publicised story about &lt;a href="http://www.engadget.com/2007/04/20/michael-dell-using-ubuntu-on-his-personal-machine/"&gt;Michael Dell running Ubuntu&lt;/a&gt; on his own M90.&lt;/p&gt;  &lt;p&gt;Let me be the first to confirm.&amp;#160; It does run &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; very well, and for the most part, it’s no slouch on XP either.&amp;#160; The problem you were probably anticipating, is support for its graphics card – an &lt;a href="http://www.google.co.uk/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=http%3A%2F%2Fwww.notebookcheck.net%2FNVIDIA-Quadro-FX-1500M.2134.0.html&amp;amp;ei=TiW5SvLqGZHMjAfw9L35BQ&amp;amp;usg=AFQjCNH89EKiVyap2UOf69yqJMjKhqPb6g"&gt;nVidia Quadro FX 1500M&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To texture this emerging backdrop, the primary reason I bought the M90 was for solid, reliable development.&amp;#160; A laptop designed for engineering – it’s a sturdy box for any developer.&lt;/p&gt;  &lt;p&gt;Still, there are the evenings.&amp;#160; All work and no play makes Paul a dull and unhappy boy.&lt;/p&gt;  &lt;p&gt;I value graphics highly on any machine.&amp;#160; I don’t think that there is a PC I’ve yet owned that hasn’t been asked to play a demanding game at a demanding resolution.&amp;#160; That said, laptops are not ideal gaming machines. I knew this going in.&amp;#160; &lt;/p&gt;  &lt;p&gt;What I didn’t expect was a complete lack of driver support for the built-in nVidia Quadro FX 1500M after early 2007.&lt;/p&gt;  &lt;p&gt;&lt;a href="www.nvidia.com"&gt;nVidia&lt;/a&gt; have washed their hands of the card.&amp;#160; Goodness knows why, as it cannot be &lt;em&gt;that&lt;/em&gt; different from the Quadro FX 1500 ( note, no &lt;em&gt;M &lt;/em&gt;) or the Quadro FX 1600M ( it’s one hundred louder! ).&amp;#160; Any search on their site for a fresh driver redirects you to your OEM.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The manufacturer of this system requires that you download the driver for your GPU from their support site. &lt;/p&gt;    &lt;p&gt;The GeForce M series and GeForce Go series notebook GPUs use drivers that have been customized by the notebook manufacturers to support hot key functions, power management functions, lid close and suspend/resume behavior. NVIDIA has worked with some notebook manufacturers to provide notebook-specific driver updates, however, most notebook driver updates must come from the notebook manufacturer. Additionally, the desktop GeForce graphics drivers will not install on Geforce M series and Quadro M series notebook GPU's.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Back on Dell’s site, you’re told that your driver is “up-to-date”, even though two years have elapsed and &lt;a href="http://www.valvesoftware.com/"&gt;Valve&lt;/a&gt;’s &lt;a href="http://www.steampowered.com"&gt;Steam&lt;/a&gt; service is &lt;em&gt;imploring&lt;/em&gt; you to upgrade your graphics drivers.&lt;/p&gt;  &lt;p&gt;Desktop users buying laptops know the score.&amp;#160; We accept that we’re locked into relative solid-state hardware as soon as we splash the cash.&amp;#160; We know we’re probably not going to be able to run &lt;a href="http://www.ea.com/games/crysis"&gt;Crysis&lt;/a&gt;, and that we’ll be stung again in a few years.&amp;#160; &lt;/p&gt;  &lt;p&gt;Manufacturers know this too, but should at least commit to providing driver updates for hardware we cannot change.&amp;#160; You’ll get your money eventually, Michael Dell – but in the meantime – at least allow us to get full use out of your products.&lt;/p&gt;  &lt;p&gt;Fortunately, I am not the only one that thinks this.&amp;#160; Over at &lt;a href="http://www.laptopvideo2go.com/"&gt;LaptopVideo2Go&lt;/a&gt;, I managed to snaffle not only a spanky new set of drivers, but also a modified INF file to tell my computer that these drivers are ok to use.&lt;/p&gt;  &lt;p&gt;And guess what?&amp;#160; Everything’s working great, and I’ve seen a considerable jump in frame-rate on Counter-Strike Source.&lt;/p&gt;  &lt;p&gt;So tell me Dell and HP.&amp;#160; Is the 1500M really that different from the 1500 and 1600M, or are you just trying to cannibalise your existing market and whip up your sting cycle?&amp;#160; And nVidia?&amp;#160; Is this card so different that your unified driver package can’t handle it, or are you just rolling over in bed for the big boys?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-8797282652134807035?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/8797282652134807035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=8797282652134807035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/8797282652134807035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/8797282652134807035'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2009/09/great-laptop-swindle.html' title='The Great Laptop Swindle?'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-8741244679654017407</id><published>2008-01-21T14:38:00.000Z</published><updated>2008-01-21T14:40:52.188Z</updated><title type='text'>For anyone who misses my code...</title><content type='html'>&lt;span style="font-family:courier new;"&gt;protected void Select_Changed(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;  // Which checkbox dares to interrupt my slumber?&lt;br /&gt;  CheckBox myOriginator = (CheckBox)sender;&lt;br /&gt;  // Who's your daddy? It's a table row, here represented as a   HtmlControl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  HtmlControl myDaddy = (HtmlControl)myOriginator.Parent;&lt;br /&gt;  // Who's your daddy's daddy? Why, it's that fine fellow, Mr RepeaterItem.&lt;br /&gt;  RepeaterItem myGrandpa = (RepeaterItem)myDaddy.Parent;&lt;br /&gt;  foreach (RepeaterItem myItem in PeriodRepeater.Items)&lt;br /&gt;  {&lt;br /&gt;     CheckBox myBox = (CheckBox)myItem.FindControl("Select");&lt;br /&gt;     if (myOriginator.Checked)&lt;br /&gt;     {&lt;br /&gt;       // Your ancestry is weak, old man.&lt;br /&gt;       if (myItem.ItemIndex != myGrandpa.ItemIndex)&lt;br /&gt;       {&lt;br /&gt;          // Mwah!&lt;br /&gt;          myDaddy.Visible = false;&lt;br /&gt;       }&lt;br /&gt;     }&lt;br /&gt;     else&lt;br /&gt;     {&lt;br /&gt;        myDaddy.Visible = true;&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-8741244679654017407?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/8741244679654017407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=8741244679654017407' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/8741244679654017407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/8741244679654017407'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2008/01/for-anyone-who-misses-my-code.html' title='For anyone who misses my code...'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26758186.post-3896791866947863640</id><published>2008-01-03T21:43:00.001Z</published><updated>2008-02-15T21:21:37.615Z</updated><title type='text'>"That'll do" won't do</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Cheryl, and passing the bar&lt;/span&gt;&lt;br /&gt;Cheryl has been a profound influence on the way that I conduct my professional life.  She isn't a coder.  She isn't even someone who you'd say had a high-powered job.  She works at Liverpool University Guild of Students - in the shop during the day, and in the bar on weekend nights.  This is where we met.&lt;br /&gt;&lt;br /&gt;I worked at the Guild of Students for around six years.  I kept the job up long after I'd graduated and found proper employment.  Cheryl was my supervisor in the downstairs bars.  During my first year of working there, I was haphazard with certain tasks - putting beer bottles on the shelf, for instance.  The bars we worked on looked like a piece of shit.  The students were snapping them up in droves.  The average life expectancy of a bottle of the proto-alcopop Hooch was about three minutes.  My particular crime was failing to ensure that the labels on the bottles faced front.  The reprimand came swiftly.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;That'll do won't do.&lt;/blockquote&gt;&lt;br /&gt;Cheryl, said - before straightening all the bottles herself.&lt;br /&gt;&lt;br /&gt;I thought it pedantic at the time, but came to realise that the pursuit of excellence, in any field, is always worth striving for.  In a busy bar when you're grasping for things like an over-stressed octopus, the last thing you need is to have to twist several bottles just to fulfil an order.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Programming principles&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I was cured of such cavalier approaches very quickly, and have taken Cheryl's words into my software development career.  Some readers will have heard them come from my own mouth on more than one occasion.  My utterance of the phrase is not an attempt to pay something forward.  It's my solid belief that if you are capable of doing a job well, you should do it.&lt;br /&gt;&lt;br /&gt;You'd think that programmers, having trained for several years to do what they do, wouldn't need telling.  The reality is somewhat different.  Generally, there is a profound lack of love for the things that we do, and it needs to change.&lt;br /&gt;&lt;br /&gt;Let's cut to the chase.  Programmers are paid to come into work and &lt;span style="font-style: italic;"&gt;solve puzzles&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;It is a great job by default, a fantastic one if you're into it. If the solution of puzzles is not your thing, &lt;span style="font-style: italic;"&gt;do not apply&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Too many coders cut corners.  Too many coders bow to pressure and come up with a "quick fix".  Too many coders come up with a "quick fix" to fix the "quick fix".  Once you enter that domain, you're into a world of pain.&lt;br /&gt;&lt;br /&gt;Pressure is a bitch, but one we can tame.  Most of us have run into the situation where a client or stakeholder assumes that "just because we can conceive it, it must be possible", and you know what?&lt;br /&gt;&lt;br /&gt;It probably is.&lt;br /&gt;&lt;br /&gt;That doesn't mean you should sacrifice decent Software Engineering principles to achieve it.  If your "quick fix" will cause more trouble than relief, more maintenance than instant satiation or more workarounds than can be easily documented, fall upon Cheryl's  advice.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;That'll do wont do&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You won't go far wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-3896791866947863640?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/3896791866947863640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=3896791866947863640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/3896791866947863640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/3896791866947863640'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2008/01/thatll-do-wont-do.html' title='&quot;That&apos;ll do&quot; won&apos;t do'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-8052157076230163075</id><published>2007-12-12T21:27:00.000Z</published><updated>2007-12-13T21:36:14.455Z</updated><title type='text'>Moving toward the darkside</title><content type='html'>A salient characteristic of my career at design agencies was a precise cherry-picking of the Microsoft .NET Framework.  Mature assemblies, and the benefits they would afford, were totally pickable, therefore becoming a key part of any development strategy.  Enterprise Library, a mature collection of libraries for getting things done quickly, was also quickly absorbed.  The presentation layer was always the area of conflict.  When you're being fed beautiful CSS and markup from designers, the last thing you want to do is mess it up.  Hence, every server control apart from the Repeater and the Literal was out, ViewState was a no-no and postback was the devil himself aiming his pointy stick at your arse.&lt;br /&gt;&lt;br /&gt;Thankfully, I'm living in a decidedly more secular environment, and developing for a consistent platform that you know everyone will have.  Rapid project delivery is key, and a lapse back into MS Space on the presentation layer has been required.  Necessity may well be the mother of invention, but it also allows you to re-evaluate approaches that you have abandoned in the past.&lt;br /&gt;&lt;br /&gt;Intranet development is an odd thing.  It's easier, because you do not have to pander to every potential browser out there, but it's also harder, because the requirements you gather tend to be a lot more involved.  Pretty much every project I've been involved with is critical, in that if it does not work correctly, hundreds of  millions of dollars could be lost.  That's the size of our operation, and it is increasing every day.&lt;br /&gt;&lt;br /&gt;As a consequence, I've found myself using a number of MS's proprietary tools - with much success.  First up, the AJAX .NET implementation has been a key inclusion with my recent work.  Sure, it's a little bloaty, but when you've got an extremely fast internal network, it doesn't matter as much.  At it's simplest level, it's postback without the page refresh - on any controls you wrap inside an UpdatePanel.&lt;br /&gt;&lt;br /&gt;The other thing that I've been incredibly impressed with is SQL Server Reporting Services.  The Business Intelligence Studio that ships with &gt; Express versions of SQL Server allows you to create powerful reports that clients &lt;span style="font-style: italic;"&gt;love&lt;/span&gt;. I know for a fact that it'd fit every eCommerce site I've ever worked with before.  Producing useful reports is damned easy, while the subscriptions component is the icing on the cake.  Top, top stuff.&lt;br /&gt;&lt;br /&gt;I'm aware that with my puritanical adherence to web standards in the past, many of my former colleagues may have barrack-guns at the ready.  They would be wrong to pull the triggers at this point.  My new discoveries amount to little more than technical Darwinism.  If you're aiming for the entire Internet and therefore, implementing the tenets the W3 lay down and trying to maintain a respectable page weight, you can't go near .NET Server controls for client-facing software.  In an environment where you know what you're going to hit, know what you're going to hit it with, you'd be a fool to ignore the tools at your disposal.&lt;br /&gt;]&lt;br /&gt;Technical darwinism == Adapt and thrive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-8052157076230163075?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/8052157076230163075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=8052157076230163075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/8052157076230163075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/8052157076230163075'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/12/moving-toward-darkside.html' title='Moving toward the darkside'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-4086410835344887737</id><published>2007-07-09T20:10:00.000+01:00</published><updated>2007-07-09T20:58:18.636+01:00</updated><title type='text'>Dominion by stealth</title><content type='html'>Now that Safari has joined iTunes on the Windows platform, it's increasingly likely that Mac OS X is going to be available on most Intel machines, whether it sports an Apple logo or not.  Apple will (and indeed, have ) deny it strenously, but I'm left with little doubt.&lt;br /&gt;&lt;br /&gt;iTunes on Windows was all about pushing the sales of both the media player and the music store.  The port of Safari is a different matter.  Some analysts say it's all about getting extra market share, and crucially, revenues from the built-in search bar.  &lt;a href="http://www.ibtimes.com/columns/title/David%20Coursey%20Technology%20Column/windows-safari-key-to-iphone-success.htm"&gt;Others point to the iPhone&lt;/a&gt;, pointing out that Safari is a key part of the applications suite.&lt;br /&gt;&lt;br /&gt;I'm inclined to think a little bit bigger.&lt;br /&gt;&lt;br /&gt;Apple kit is nice, but it's not special, and &lt;a href="http://www.osx86project.org/" title="A community of users running Mac OS X on x86 hardware."&gt;it certainly isn't required to run OS X&lt;/a&gt;.  In fact, the most striking feature of Apple hardware is its relative uniformity.&lt;br /&gt;&lt;br /&gt;While not quite on the scale of a solid-state games hardware, OS crafters at Apple have long been able to target a relatively tiny collection of components, knowing that they will exist on the target machine.  Some might argue that this is a reason that OS X will stay on Apple hardware, but I disagree.  The transition from PowerPC to Intel has given Apple a great deal of experience with hitting diverse kit.  The company is still committed to providing PowerPC support, even though it is no longer producing PowerPC machines.&lt;br /&gt;&lt;br /&gt;On the PC side of the divide, hardware seems to be less diverse than it was a decade ago.  If you're out to buy a graphics card, chances are you'll go for nVidia or ATI.  While I'm reluctant to enumerate every component you could possibly have in your PC, it's a markedly less crowded market.  A lot of companies have gone under.  The few that are left occupy powerful positions, able to create money through iteration before the next revolution.&lt;br /&gt;&lt;br /&gt;It makes absolute sense from a financial perspective.  Mac operating systems have rightfully garnered excellent word-of-mouth at a time when many consumers are extremely wary about being blindly led into Vista.  Even if you don't own a Mac, you know someone who has a Mac, and you know this because they have told you.  Numerous times.&lt;br /&gt;&lt;br /&gt;I don't know what margin Apple makes on its hardware, but I do know that hardware costs a lot of money to develop, produce and distribute.  As a developer I do know that software costs money to develop, but production ( burning DVDs and printing manuals ) and distribution ( moving DVDs and manuals ) is a comparative cinch.  The bottom line is that software produces a better bottom line.  There's a reason Sony and Microsoft are selling their hardware at a loss, and it isn't because they've been consuming questionable mushrooms ( really Nintendo's thing ).  Real money is made on software.  Apple knows this.&lt;br /&gt;&lt;br /&gt;So, back to Safari on Windows.  When using Safari to browse the Web and listening to music through iTunes, you're looking at a desktop that looks remarkably like a Mac.  I think that's the point.    Safari on Windows may be about increasing ad revenues, it may be iPhone inspired, and it may be an attempt to acclimatise Windows users with Mac OS fundamentals at a time when many are least happy with Windows.  I suspect it is all three.&lt;br /&gt;&lt;br /&gt;Apple are about to take over the world.  You heard it here first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-4086410835344887737?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/4086410835344887737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=4086410835344887737' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/4086410835344887737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/4086410835344887737'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/07/dominion-by-stealth.html' title='Dominion by stealth'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26758186.post-133917882338215667</id><published>2007-04-05T13:37:00.000+01:00</published><updated>2007-04-05T13:39:27.933+01:00</updated><title type='text'>Custom configuration sections on ASP .NET 2.0</title><content type='html'>Every now and then, you find something that is a lifesaver.  The sort of excellent article that saves you days of searching.&lt;br /&gt;&lt;br /&gt;John Rista's excellent article on &lt;a href="http://www.codeproject.com/dotnet/mysteriesofconfiguration.asp#"&gt;Unravelling the Mysteries of .NET 2.0 Configuration&lt;/a&gt; falls just into that bracket.&lt;br /&gt;&lt;br /&gt;Excellent if you want to break out of the web.config.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-133917882338215667?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/133917882338215667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=133917882338215667' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/133917882338215667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/133917882338215667'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/04/custom-configuration-sections-on-asp.html' title='Custom configuration sections on ASP .NET 2.0'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26758186.post-1811868507588648546</id><published>2007-03-20T09:02:00.000Z</published><updated>2007-03-20T09:04:20.004Z</updated><title type='text'>Netvibes</title><content type='html'>Been having a look at &lt;a href="http://www.netvibes.com"&gt;NetVibes&lt;/a&gt;, a very impressive web desktop.  A web page chock-full of interesting stuff, that I can control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-1811868507588648546?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/1811868507588648546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=1811868507588648546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/1811868507588648546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/1811868507588648546'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/03/netvibes.html' title='Netvibes'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-2771325454349716855</id><published>2007-03-13T10:26:00.000Z</published><updated>2007-03-13T10:27:56.552Z</updated><title type='text'>Penultimate</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.synergymicrocaptive.co.uk/"&gt;This&lt;/a&gt; is the second to last site of mine to launch for Mando Group.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Not bad, but took ages to get going.  Didn't think I'd see it launch this side of my departure.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-2771325454349716855?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/2771325454349716855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=2771325454349716855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/2771325454349716855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/2771325454349716855'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/03/penultimate.html' title='Penultimate'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-6550105017513824246</id><published>2007-02-13T15:30:00.000Z</published><updated>2007-02-08T19:50:28.852Z</updated><title type='text'>Too helpful</title><content type='html'>Why does MS Visual Studio .NET 2003 think it's being helpful when it puts crappy default files into new projects?&lt;br /&gt;&lt;br /&gt;Who wants an aspx page called webform1.aspx?&lt;br /&gt;&lt;br /&gt;Or indeed a class called Class1.cs?&lt;br /&gt;&lt;br /&gt;Clown shoes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-6550105017513824246?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/6550105017513824246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=6550105017513824246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/6550105017513824246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/6550105017513824246'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/02/too-helpful.html' title='Too helpful'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-6231322211466811771</id><published>2007-02-08T19:24:00.000Z</published><updated>2007-02-05T19:42:00.488Z</updated><title type='text'>Firebug , Textmate and SciTE</title><content type='html'>&lt;h2&gt;Got the bug&lt;/h2&gt;&lt;br /&gt;Anyone with historical knowledge of this blog will know that I am fashionably late to this whole Javascript and DOM lark.  The excellent &lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt; has helped immeasurably.  A nifty little Firefox addon, it offers the sort of debugging facilities you only normally find in an app-based IDE.&lt;br /&gt;&lt;br /&gt;Breakpoints are one thing, but a console allowing you to echo anything in scope is the icing on the  client-side cake.  If you're at all serious about Javascript, you've probably got this installed already.  If, like me, you're new to the party, &lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt; will help you to get on that much better.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;TextMate&lt;/h2&gt;My iMac has been woefully underused recently, and it's a shame, because as a development machine, it absolutely rocks ( in that 500Mhz sorta way ).  Perl, Ruby and a bash shell all lie in wait for their master (relatively speaking) to return.  I've even got compilers for C and C++.  Woot!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; is a lovely text editor for the Mac that handles pretty much all of these languages.  It's helpful - it'll throw DOCTYPE declarations into markup and auto-close your parentheses and bracers for you.  It even caters for those coders that are determined to type them anyway.&lt;br /&gt;&lt;br /&gt;I'm a bit too sold on OO to be playing around with C like I used to, but I have been writing some C++ programs, and have loved it.  If you're at all serious about coding on a Mac and don't wanna go the whole XCode route, TextMate is the biz, and well worth the 24UKP you'll end up paying for it.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;SciTE&lt;/h2&gt;If you're away from a Mac or don't want to stump up the cash, SciTE is a wonder.  Those who've got experience with the Ruby on Rails framework will probably have seen it in passing ( some of the tutorial pages on the web use SciTE screenies ).  It's a great editor.  You can get it &lt;a href="http://scintilla.sourceforge.net/SciTEDownload.html"&gt;here&lt;/a&gt;.  If you're on Windows, I thoroughly recommend &lt;a href="http://gisdeveloper.tripod.com/scite.html"&gt;Bruce Dodson's installer with extensions&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-6231322211466811771?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/6231322211466811771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=6231322211466811771' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/6231322211466811771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/6231322211466811771'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/02/firebug-textmate-and-scite.html' title='Firebug , Textmate and SciTE'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26758186.post-6496836845854046798</id><published>2007-02-05T19:34:00.000Z</published><updated>2007-02-05T19:42:00.812Z</updated><title type='text'>Bovine economy</title><content type='html'>I've been playing with &lt;a href="http://www.mootools.net/"&gt;mootools&lt;/a&gt; recently.  I like it for two reasons. &lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It makes Javascript programming easy and economical.&lt;/li&gt;&lt;li&gt;It has moo in its title.&lt;/li&gt;&lt;/ol&gt;Sam Birch has been evangelising the tech for some time, and on today's evidence, it's hard to knock back his enthusiasm.&lt;br /&gt;&lt;br /&gt;I managed to trim a rather nasty set of Javascript functions into something resembling concise, lovely code.&lt;br /&gt;&lt;br /&gt;Of course, Sam's interest in the technology is purely based around graphics whoring, but that's okay.&lt;br /&gt;&lt;br /&gt;Only perceivable problems are that it's an extra library to download and interpret before processing actually begins, and that there is slightly more to learn.  Won't lose sleep over either setback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-6496836845854046798?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/6496836845854046798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=6496836845854046798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/6496836845854046798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/6496836845854046798'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/02/bovine-economy.html' title='Bovine economy'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-1551272148467273416</id><published>2007-01-26T11:31:00.000Z</published><updated>2007-01-26T12:40:37.850Z</updated><title type='text'>Liberating Constraints</title><content type='html'>&lt;div&gt;The recently released AmigaOS interests me.  It is almost impossible to  secure the AmigaOne hardware that will actually run it, its web browser cannot  handle CSS and the product has Amiga in the title.  Hardly a guarantee of  commercial success.&lt;br /&gt;&lt;br /&gt;Commodore may have mismanaged their brand to  extinction, but they presided over an interesting time in the computer  industry.  The IBM PC, as it was known back then, was finding its way into  offices but had no business in the home.  The late eighties and early nineties  belonged to the Amiga A500. &lt;br /&gt;&lt;br /&gt;Clocked at a paltry 7.14Mhz, the A500  shipped with 512K of RAM, sporting a single floppy disk drive using a 880K  proprietary disk format.  Expansion was possible; but many A500 owners just had  the basic model - leaving software manufacturers knowing exactly what they had  to work with if they wanted to reach the widest audience.&lt;br /&gt;&lt;br /&gt;The situation  today sharply contrasts.  PCs have invaded homes across the globe.  Modular in  design, modern PCs are an aggregation of components from an army of  manufacturers, replaceable at any time.  Too many implementations take this for  granted.&lt;br /&gt;&lt;br /&gt;Programmers have become used to the ever-expandable PC, and can  be lazier for it.  An operating system upgrade happens just before a hardware  upgrade, while PC games and applications are more demanding than  ever.&lt;br /&gt;&lt;br /&gt;Contrast that with the lifespan of the Amiga, when machines were  not routinely upgraded.  As the sun sank on the 16-bit era, the software was  better than ever.  Programmers devised new, leftfield ways to get the most of  the hardware - accessing undocumented features and thoroughly subverting the  stated intention of a chip to get the desired result.  Innovation flourished  despite the obvious constraints programmers had to work within. &lt;br /&gt;&lt;br /&gt;Thankfully, the practice lives on.  The Sony Playstation2 is currently  enjoying an impressive swansong, while successive releases of MacOSX actually  improve the performance of your kit.  I'm writing this blog on a 500Mhz iMac,  which can still do everything pretty well with the exception of video. &lt;br /&gt;&lt;br /&gt;That in mind, it's difficult to justify the self-perpetuating  software/hardware cycle on the PC platform, especially in light of the  environmental impact of discarded hardware.  Today's PCs are powerful,  incredible machines, with record household saturation.  Consumers have the right  to demand more from their hardware, and those that work in the industry are in a  position to deliver.&lt;br /&gt;&lt;br /&gt;Better hardware can be the dividing line between  realisation of an ambition or abject failure, but mostly, it isn't.  Those  responsible for software already operate within chronologically based  constraints.   It's time to add a few more.  By invoking the spirit of Amiga  developers, today's PC programmers can produce code that is performant, reliable  and personally satisfying.&lt;br /&gt;&lt;br /&gt;Constraints are not problems. They're an  opportunity for developers to liberate themselves from the bloated practices of  the past,&lt;span class="496351811-26012007"&gt; a chance to innovate and develop better  practices, and most importantly, deliver great experiences for customers,  regardless of the hardware they own.&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/26758186-1551272148467273416?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/1551272148467273416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=1551272148467273416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/1551272148467273416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/1551272148467273416'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2007/01/liberating-constraints.html' title='Liberating Constraints'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-269259175402127185</id><published>2006-11-29T13:42:00.000Z</published><updated>2006-11-29T13:45:22.279Z</updated><title type='text'>Words from the wise...</title><content type='html'>I've recently been asked to give some direction on what makes a good web programmer.  Here is my response, recorded for blogging prosperity.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="034363013-27112006"&gt;There are many things that I would consider  essential for someone to become proficient in the art of web programming, some  more obvious than others.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;First, the primary function of a web site is  to deliver content.  While it is perfectly possible to produce a site entirely  composed of static pages, maintenance of such sites becomes a big issue,  especially if changes need to be applied to several places at once.  Hence,  dynamic sites ( i.e. sites that make pages to order, using a back-end data  source )  gained primacy very quickly.  As a consequence, I think it is very  important that web programmers have a solid appreciation of database  technology.  There are plenty of open source relational database management  systems available.   MySQL is very popular, but I would recommend PostgreSQL, as  it has the longest history of supporting referential integrity.  This simply  allows database designers to make sure that you can't delete a row if other rows  depend on it.  It's an important concept that is worth learning  early.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;Object orientation is a key component of a  web programmer's skillset, and is another essential.  The practice allows  programmers to create objects that know how to look after themselves, and can be  combined to create much larger systems.  One of the things I try to instill in  the programmers at Mandogroup is that every single requirement we fulfil begins  its life in the real world, modelling a real life thing.  Object orientation  allows those requirements to be compartmentalised in a natural way that maps  neatly to those requirements.  Generally, it allows a programmer to create  something that models the exact thing that the requirement  specifies.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;This may seem obvious, but it's also  incredibly important for a web programmer to have a proper grasp of XHTML and a  decent knowledge of Web standards.  This is ultimately the final output to the  browser, and as such, deserves a great deal of consideration.  A basic knowledge  of CSS is also recommended.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;Javascript is an essential component of any  modern web page.  The number of people that use web browsers without the  technology involved is dwindling, although I would advocate a lot of focus being  put onto the concept of degradable implementation.  This simply means that the  site will still work if Javascript is not available, if only in a limited form.   It is also a key component of the AJAX framework, which essentially uses  Javascript to make background calls to a service, before rendering the content  on the page ( again using Javascript ).  Javascript can also be used to validate  form controls on the client, meaning that the web server has to do less work.   As such an important piece of enabling technology, I would consider it an  essential part of any curriculum aimed at producing solid web developers.&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;PHP, .NET and Java are all server-side  frameworks.  PHP is an easy language to get into, but encourages a lot of bad  practice, as it is very easy to hack stuff together.  Ruby on Rails is  a better starting point for beginners, as it introduces some solid  object-orientation and reinforces some of the lessons about good database  design.  It also has a great error reporting system that will teach students as  they go.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;Java and .NET are largely similar in nature,  both being enterprise level server-side solutions produced by large  corporations.  They are type-safe, meaning that they won't let programmers do  silly things like stuff letters into places which are only supposed to hold  numbers.&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;As they both perform similar functions, it  is not worth learning both of them, and choosing between the two, I would  recommend the .NET Framework over Java.  Java has the advantage of being a more  mature technology, but this is not without its share of problems.  Critics,  including myself, argue that Java has become too unwieldy over the years, making  it almost impossible for someone to learn the full extent of the language.&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;Java is also a language in its own right,  whereas .NET is a Framework for development in a number of languages.  You can  only write a Java app in the Java language, whereas you can write a .NET  application in a number of different languages, including C#, Visual Basic and  even older languages like COBOL.  This means that programmers can find the  language that suits them best, yet still get the benefit of the Framework, which  handles a lot of common tasks ( such as mail sending, network tasks, etc ) which  is available for all of them.  In terms of the implementation language I would  actually recommend for .NET, I would go for C#.  It is elegant, concise and  allows solutions to be coded very productively.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;The only caveat I would place on my  recommendation for .NET is the use of the Web Controls that come with ASP .NET.   We do not use them at Mandogroup, as they produce markup which is ugly, non-SEO  friendly and heavy ( meaning pages take longer to load ).  We prefer to use all  of the backend stuff, but come up with our own solutions for rendering.  The  only MS controls we use are the Repeater, the Literal and the Xml  control.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;To summarise, this would be the focus of a  curriculum for a web programmer, from my point of view :-&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="034363013-27112006"&gt;&lt;/span&gt; &lt;/div&gt; &lt;ul&gt;&lt;li&gt;&lt;span class="034363013-27112006"&gt;Database design&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span class="034363013-27112006"&gt;Object-orientation&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span class="034363013-27112006"&gt;Standards-based markup such as XHTML with use  of CSS&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span class="034363013-27112006"&gt;Javascript&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span class="034363013-27112006"&gt;Ruby on Rails ( beginner programming )&lt;/span&gt;   &lt;/li&gt;&lt;li&gt;&lt;span class="034363013-27112006"&gt;.NET with C# ( advanced )&lt;/span&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/26758186-269259175402127185?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/269259175402127185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=269259175402127185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/269259175402127185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/269259175402127185'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/11/words-from-wise.html' title='Words from the wise...'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-2620863677764474191</id><published>2006-11-29T13:38:00.000Z</published><updated>2006-11-29T13:42:25.896Z</updated><title type='text'>New stuff by me and Mando</title><content type='html'>Three sites all recently launched, with yours truly as lead programmer.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.pssst.org.uk/"&gt;Pssst&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.limepictures.com/"&gt;Lime Pictures&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.biennial.com/"&gt;Biennial&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;All very different.  All rather nice, in their own way.  A warm introduction to Col, our newest designer, who did a great job on Pssst and Biennial in particular.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-2620863677764474191?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/2620863677764474191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=2620863677764474191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/2620863677764474191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/2620863677764474191'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/11/new-stuff-by-me-and-mando.html' title='New stuff by me and Mando'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-116179762078287646</id><published>2006-10-25T18:24:00.000+01:00</published><updated>2006-11-20T19:30:08.530Z</updated><title type='text'>Continuance of a legacy....</title><content type='html'>Today's lesson was never, ever use :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT MAX(ID) FROM MyTable&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Unless you only expect to have about one visitor, who visits very very infrequently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-116179762078287646?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/116179762078287646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=116179762078287646' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/116179762078287646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/116179762078287646'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/10/continuance-of-legacy.html' title='Continuance of a legacy....'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26758186.post-116110977867441170</id><published>2006-10-17T19:07:00.000+01:00</published><updated>2006-10-17T19:29:38.706+01:00</updated><title type='text'>Persistent problems</title><content type='html'>It has been a relatively difficult week to get into, work-wise.  There's a lot of patchy development going on, but much of it has been client or software dependent, so I've spent most of the time dealing with some problem or other.  Problems are not like buses.  There is normally one at your door every day. Unfortunately, most of them arrive at most inconvenient times - usually when you have the least amount of time to address it.  This week, that hasn't been too much of an issue.  I've managed to sort quite a few issues for good, although I fully expect that comment to come back and bite me on the bottom rather harshly.&lt;br /&gt;&lt;br /&gt;One of the most difficult things for me personally is reconciling my natural nature ( talkative and social ) with the established discipline of a programmer ( solitary and focused ).  As a consequence, it's nice to have a bit of time to solve issues thoroughly and then get to tell people that'll most appreciate it that you have improved their day. &lt;br /&gt;&lt;br /&gt;The other theme of the week has been persistence.  We're currently looking to develop a .NET 2.0 version of our existing software platform.  As part of the initial analytical steps, I've been looking at other Object Persistence Frameworks with a view to cribbing good features or if one is good enough, adopting it entirely.&lt;br /&gt;&lt;br /&gt;It would seem that most people are having the same issues with making the generational leap that we are currently facing.  Many of the object persistence frameworks I have looked at have not yet made the leap to .NET 2.0 either, rendering them entirely unsuitable for adoption.  I've also been surprised at the large number of object persistence frameworks that employ XML mappers to tell the .NET layer about an underlying data object.  With a series of self-describing databases implementing the SQL 92 standard in some fashion or another, it amazes me that more people have not made use of readily available and completely up-to-date schema and relationship information that these databases have to offer.  Why bother creating the additional overhead of creating and maintaining an XML mapper when the database can give you a real-time account of what's what?  A schema change invariably means a mapping change, and even then, you're still missing a lot of that referential information that a self-describing database can provide.&lt;br /&gt;&lt;br /&gt;I came away from my investigations with the distinct impression that even though our .NET  1.1 Platform is not without its flaws, it is still head and shoulders above a lot of the stuff out there.  Better still, we know how it works, and are not at the mercy of developers when we discover bugs.&lt;br /&gt;&lt;br /&gt;Still, there are a couple of frameworks that have definitely caught my eye.  DomainObjects looks extremely promising, whilst I've admired the tenets of the Gentle .NET framework from afar for a long time,  a natural candidate for adoption if a .NET 2.0 version was available.  We've got a certain timeframe in which to accomplish some pretty big strategic stuff.  My general feeling at the moment is that it would take as much time to evaluate all of these frameworks as it would to get a couple of prototypes up showcasing our own approaches to the problem.&lt;br /&gt;&lt;br /&gt;It'd be great to be able to bring one of these babies in and spend more time playing around with the Business Objects, but I'm increasingly of the opinion that if you want something doing properly, i.e. in the way that best suits your own circumstances, you're best off doing it yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-116110977867441170?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/116110977867441170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=116110977867441170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/116110977867441170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/116110977867441170'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/10/persistent-problems.html' title='Persistent problems'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-115704195212839384</id><published>2006-08-31T17:29:00.000+01:00</published><updated>2006-08-31T17:32:32.146+01:00</updated><title type='text'>Another new site</title><content type='html'>The Mandogroup production line is rolling along very nicely indeed.  Another site has gone live.&lt;br /&gt;&lt;br /&gt;Big props to Ed, Rachel, Martin and the inimitable Mr Barnes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.brooksoncis.co.uk/"&gt;Brookson CIS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-115704195212839384?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/115704195212839384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=115704195212839384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/115704195212839384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/115704195212839384'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/08/another-new-site.html' title='Another new site'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-115652785048075569</id><published>2006-08-25T18:20:00.000+01:00</published><updated>2006-08-25T19:17:53.750+01:00</updated><title type='text'>Front side whore</title><content type='html'>We're in a busy period at the moment.  We're getting a lot of work in, which is good.   A lot of the work is subject to a rather strict delivery schedule, which is also good.&lt;br /&gt;&lt;br /&gt;Deadline work doesn't bother me anymore.  It used to, but I see each new "must be done by Thursday" ( never launch on a Friday :D )  effort as an opportunity for further refinement of the front-side craft.  Things get tightened up.  Potentially better approaches are explored, and normally, successfully implemented.   The continued rollout of successive developments feeds into that in a big way.  As a coder and web evangelist, I'm pretty much on an interminable mission to get quicker, better and more productive.&lt;br /&gt;&lt;br /&gt;Thing is, I'm hating developing new content management features right now.  We developed our CMS a year ago, and it has been used to launch shitloads of sites in the interim.  My boss loves it, the clients love it, but personally, I really can't stand it any more.&lt;br /&gt;&lt;br /&gt;The problem largely lies in the fact that I look around it, and see my current knowledge minus one year.  I can't really change too much about it, as it's pretty established and importantly, working.  For the moment, I'm stuck with it - but we've really got to get a new one in the bag - if only for my own sanity.&lt;br /&gt;&lt;br /&gt;As a consequence, I've started to see front-side development as my only outlet for true innovation and progression.  The two sites we launched last week have been performant, bug-free and vindication for the techniques we used to produce them.&lt;br /&gt;&lt;br /&gt;Content management is going to change.  &lt;span style="font-style: italic;"&gt;Has&lt;/span&gt; to change.  Yet I don't want to end up supporting legacy stuff any more than I really have to.   As such, we're going to need a unified approach that'll address past, present and future needs.  Sounds difficult, but solving the problem of everything is precisely the sort of challenge I need to make content management interesting again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-115652785048075569?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/115652785048075569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=115652785048075569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/115652785048075569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/115652785048075569'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/08/front-side-whore.html' title='Front side whore'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-115575156571113796</id><published>2006-08-16T18:58:00.000+01:00</published><updated>2006-08-16T19:06:05.720+01:00</updated><title type='text'>Two to go</title><content type='html'>A couple of new websites of mine have gone live.  It's always a bit nerve-wracking when things go live.  The environment shift is bad enough, but matters are complicated when you have to set an eCommerce payment gateway live at the same time.&lt;br /&gt;&lt;br /&gt;The absolute nightmare from a launch perspective is when you get to redevelop an existing commerce site that is currently hosted elsewhere.  It's the web design agency equivalent of cooking a roast dinner.  Things have to be started at different times - the commerce go-live normally requires 48 working hours, and the DNS transfer can be up to 24 hours, depending on who's looking.  If you don't get the timing right, your client will lose money.&lt;br /&gt;&lt;br /&gt;Fortunately, these two went largely without incident.  Here they are in all their glory.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.tachodisc.co.uk/"&gt;Tachodisc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.biennial.com/"&gt;Liverpool Biennial&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Don't get to do many projects from start to finish these days, so it was very nice to get these in the bag.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-115575156571113796?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/115575156571113796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=115575156571113796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/115575156571113796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/115575156571113796'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/08/two-to-go.html' title='Two to go'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-114850389552451295</id><published>2006-05-24T20:31:00.000+01:00</published><updated>2006-05-24T21:51:35.556+01:00</updated><title type='text'>Ditching web forms, learning Javascript</title><content type='html'>It's a shocking admission to make, but I'm currently learning Javascript.&lt;br /&gt;&lt;br /&gt;With eight years of post-Uni software development behind me, including four doing web, I've never seriously looked at the language.  I'd open the odd window or include the odd validation script; you know, pidgin Javascript. &lt;br /&gt;&lt;br /&gt;Difficult to believe, eh?  Hardly.  In the old days, we never bothered with Javascript.  You could never fully rely on it for validation, it got processed in different ways on different browsers and I started doing ASP .NET stuff soon after, which handily started generating Javascript at your behest.&lt;br /&gt;&lt;br /&gt;We've recently decided to abandon the extensive use of web forms on front-end work, the eventual aim being to free ourselves of the constraints of postback and form-based server controls.&lt;br /&gt;&lt;br /&gt;The case for learning Javascript starts there. Client-side validation &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; important.  You've still got to validate on the server, but a few choice validation functions can prevent your  servers from having to validate incorrect data from Javascript-enabled visitors.&lt;br /&gt;&lt;br /&gt;The most surprising thing I've learn't about Javascript is how much I already know.  The operators and syntax are very close to C# ( it's even got try..catch :D ) and I've managed to whip through the basic language in a couple of nights.  Still need to go through the libraries, but before I take myself through the DOM and get onto prototype and AJAX, but things are going well.&lt;br /&gt;&lt;br /&gt;I'm encouraging the junior members of the team to re-visit the language as well.  They too, have been spoiled on the sumptous banquet of ASP .NET Validation Controls.   We're all working from the concise, but decent tutorial over at &lt;a href="http://www.w3schools.com/js/default.asp"&gt;w3schools.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Been fun so far, but learning something new normally is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-114850389552451295?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/114850389552451295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=114850389552451295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/114850389552451295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/114850389552451295'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/05/ditching-web-forms-learning-javascript.html' title='Ditching web forms, learning Javascript'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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-26758186.post-114830486339604495</id><published>2006-05-22T12:16:00.000+01:00</published><updated>2006-05-22T17:54:11.113+01:00</updated><title type='text'>Programmer 101</title><content type='html'>Programmers have come a long way in thirty years.  Beards are no longer compulsory, science fiction is optional and punch-cards are just something mad old men mutter about in corners of forgotten ale-houses.  Most modern-day coders are 'daylight-capable'; some can even handle non-technical chatter for literally sentences at a time.&lt;br /&gt;&lt;br /&gt;Despite the unquestionable progress, we're still a misunderstood lot.  No longer.  Welcome to "Programmer 101".&lt;br /&gt;&lt;br /&gt;Let's get the big fella out of the way.  The first question a non-programmer might ask is :-&lt;br /&gt;&lt;br /&gt;Q "How did you ever get into these dire professional straits?"&lt;br /&gt;A : The short answer - mostly by accident.  Time for an expansion :-&lt;br /&gt;&lt;br /&gt;People are not born programmers - even in 2006 there is a universal lack of USB compatibility in human new-borns.&lt;br /&gt;&lt;br /&gt;Most of us were ensnared by the charms of some fetching little 8-bit number at an early age.  They were mysterious, infernal little contraptions requiring a lot of work to operate, and got bigger and better every year.  You had to read manuals, type commands in by hand and solve puzzles as you went.  Every computer user in the 1980s was a programmer, whether they knew it or not.&lt;br /&gt;&lt;br /&gt;Making the conscious decision to become a programmer is a surprisingly easy decision.  It gets you out of the house, and it’s not exactly difficult – especially since the first year of every computer degree involves hapless lecturers running courses like "Computer Monitor or TV? : Simple Ways To Tell the Difference".&lt;br /&gt;&lt;br /&gt;University, like actually getting paid for something you'd be doing anyway, is a bit of a no-brainer.&lt;br /&gt;&lt;br /&gt;Q : Science Fiction is optional.  Surely that's untrue?&lt;br /&gt;A : Coders can operate without Sci-Fi, but  without the fighting spirit of James T. Kirk, the grammatically-dislocated wisdom of Master Yoda or the time-travelling prowess of the Doctor  ( what do you think legacy code is? ) it is difficult to see how they could ever become truly successful.&lt;br /&gt;&lt;br /&gt;Q : At which stage in your careers do you have "people skills" removed?&lt;br /&gt;A : Many will think that the limited interpersonal capabilities of a programmer are the direct and tragic result of prolonged periods of time without human contact.  This may be true.&lt;br /&gt;&lt;br /&gt;Really though, programmers are control freaks by default. The job involves telling a computer exactly what to do, mostly with success.  People are a whole lot harder to work with by comparison. We’re trying, though.&lt;br /&gt;&lt;br /&gt;Q : What are the good things about the job?&lt;br /&gt;A :  It's fun to come to work to solve puzzles and create things.&lt;br /&gt;It's also a real buzz whenever your brain delivers the goods, rendering you a hero for the day.&lt;br /&gt;&lt;br /&gt;Q : And finally, the bad?&lt;br /&gt;The power of creation has its down-side.  Whenever you see one of us really ticked-off, it's normally because the thing we've created has become a mutated monster running rampant in a live environment.  These little worlds we create are reflections of ourselves, so it's a pretty personal experience to see one of them turn into a bomb-site by your own command.&lt;br /&gt;&lt;br /&gt;Finally, the worst thing about programmer is that normal people just don't know anything about being a programmer.  Hopefully, with "Programmer 101", you'll know us just a little bit better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-114830486339604495?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/114830486339604495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=114830486339604495' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/114830486339604495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/114830486339604495'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/05/programmer-101.html' title='Programmer 101'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26758186.post-114828375835394787</id><published>2006-05-22T08:21:00.000+01:00</published><updated>2006-05-22T17:54:52.000+01:00</updated><title type='text'>Cherry picking</title><content type='html'>One of the most challenging questions you'll ever answer on  Microsoft's .NET Framework is how much of it you're going to use.&lt;br /&gt;&lt;br /&gt;It is great for solving large architectural problems and C# is probably in the running for my favourite language ever.&lt;br /&gt;&lt;br /&gt;Thing is, you don't have to take all of it, and if you're developing for the web, you really shouldn't.  Microsoft offer a lot out of the box with ASP .NET, superficially neat controls that on the surface, save programmers a lot of time.  In my experience, they cause more problems than they are worth - and are probably responsible for innumerable spats between design and programming teams the world over.&lt;br /&gt;&lt;br /&gt;Postback is another area where Microsoft attempts to do you a favour.  Again, it saves time and again, it causes problems.  If you use postback or server controls, get used to hefty page weights (through auto-generated ID tags and Viewstate ) and a lot of Response.Redirects in your code.  It makes maintenance a pain and means that programmers end up doing more of it than designers ( "oh, can you just make it go here!" ).&lt;br /&gt;&lt;br /&gt;Microsoft have to be applauded for the platform as a whole, but their appreciation of the web leaves a lot to be desired.  Postback and ASP .NET Form-like server controls are time-saving antidotes to the stateless nature of the web, but you've got to ask whether the cure is worse than the disease.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26758186-114828375835394787?l=technicalcreative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalcreative.blogspot.com/feeds/114828375835394787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26758186&amp;postID=114828375835394787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/114828375835394787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26758186/posts/default/114828375835394787'/><link rel='alternate' type='text/html' href='http://technicalcreative.blogspot.com/2006/05/cherry-picking.html' title='Cherry picking'/><author><name>The Pap</name><uri>http://www.blogger.com/profile/12950164836297293035</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>
