<?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:blogger='http://schemas.google.com/blogger/2008' 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-7251793589608325666</id><updated>2024-11-08T16:33:30.030+01:00</updated><category term="code"/><category term="c#"/><category term="c++"/><category term="java"/><category term="pascal"/><category term="patterns"/><category term="xml"/><category term="asm"/><category term="basic"/><category term="design"/><category term="learning"/><category term="lisp"/><category term="oracle"/><category term="scheme"/><category term="sql"/><category term="vista"/><category term="windows"/><category term="wpf"/><title type='text'>Whiny Coder</title><subtitle type='html'>In Which The Whiny Coder Rants About Any And Every Thing He Feels Like</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-8782418898178185996</id><published>2010-04-23T10:23:00.010+02:00</published><updated>2010-04-23T10:49:06.578+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asm"/><category scheme="http://www.blogger.com/atom/ns#" term="basic"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="learning"/><category scheme="http://www.blogger.com/atom/ns#" term="lisp"/><category scheme="http://www.blogger.com/atom/ns#" term="pascal"/><category scheme="http://www.blogger.com/atom/ns#" term="scheme"/><title type='text'>Scheme</title><content type='html'>So I read &lt;A HREF=&quot;http://www.trollope.org/scheme.html&quot; TARGET=_blank&gt;an article&lt;/A&gt; on learning to program. It annoyed me. Here&#39;s a quote:&lt;br /&gt;&lt;br /&gt;&quot;My first class in computer programming was an elective course in BASIC back in sixth grade.&quot;&lt;br /&gt;&lt;br /&gt;Wait what? A class? Why on earth take a class on programming? Just read a book like a normal child! I did.&lt;br /&gt;&lt;br /&gt;&quot;We were asked to [...] master the rules of syntax.&quot;&lt;br /&gt;&quot;I never wanted to take another computer course again.&quot;&lt;br /&gt;&lt;br /&gt;Learning the syntax is kind of necessary to enable actually doing anything with the language. Granted, you don&#39;t have to learn it all at once but I doubt the author was really as interested as she tries to let on.&lt;br /&gt;&lt;br /&gt;&quot;my junior year in high school [...] We jumped right into the syntax of Pascal&quot;&lt;br /&gt;&quot;Even after two years of studying Pascal, I still can&#39;t remember all the rules.&quot;&lt;br /&gt;&lt;br /&gt;Again, what&#39;s with the classes? I learned Pascal on my own. Now I&#39;m not calling the author dense, although I kind of want to. She apparently suffered from having terrible teachers which is not her fault. Try reading a book though!&lt;br /&gt;&lt;br /&gt;The author goes on to say, that as a senior she willingly learned Scheme on her own out of interest. Suddenly everything was made clear to her and at long last she understood recursion etc.&lt;br /&gt;&lt;br /&gt;In her opinion the differentiating factor was the amazing and awesome language Scheme. The way I see it, learning on her own out of interest, as opposed to rote memorization, finally enabled her to actually learn anything at all.&lt;br /&gt;&lt;br /&gt;So now let&#39;s recap my own experience:&lt;br /&gt;&lt;br /&gt;I learned BASIC and loved how it enabled me to create whatever I wanted. Then I learned Pascal and enjoyed the new found possibilities immensely. I then learned Assembly, again on my own, and it was like being handed a lightsaber.&lt;br /&gt;&lt;br /&gt;After that I finally took a class. It was on C++, and since I already had a good base in programming born out of a burning interest, I actually enjoyed that too and learned a lot. Also the teacher was enthusiastic and amusing, so I later took another of his classes, this time on Lisp/Scheme, but I found the language really awkward and pretty much useless.&lt;br /&gt;&lt;br /&gt;So which is it? Is Scheme awesome or awkward? Or is the real question whether you&#39;re better off learning on your own or at school? Yeah that&#39;s rhetorical, I don&#39;t really care what you think.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/8782418898178185996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2010/04/scheme.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/8782418898178185996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/8782418898178185996'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2010/04/scheme.html' title='Scheme'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-7042244859280783583</id><published>2009-05-18T10:20:00.008+02:00</published><updated>2010-04-23T10:48:46.601+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="wpf"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>WPF</title><content type='html'>I&#39;m having a closer look at Windows Presentation Foundation applications today. Below is some of the code automagically generated for you by the IDE. This code is hidden away in the obj directory, presumably because it&#39;s part of the build process.&lt;br /&gt;&lt;br /&gt;&lt;FONT FACE=&quot;Courier&quot;&gt;System.Uri resourceLocater;&lt;/FONT&gt;&lt;br /&gt;&lt;br /&gt;Ah, and so now we know the real reason this code is hidden. Dudes, if you&#39;re going to generate code, learn to spell first please. Go ahead, I dare you to google the word &quot;locater&quot;. Allow me to channel Mr. T as I deafeningly shout:&lt;br /&gt;&lt;br /&gt;&lt;B&gt;Did you mean: &lt;A HREF=&quot;http://www.google.com/search?q=locater&quot; TARGET=_BLANK&gt;locator&lt;/A&gt;, fools?&lt;/B&gt;&lt;br /&gt;&lt;br /&gt;So why am I nitpicking, you ask? Well, for one thing that&#39;s the entire point of this blog, but here&#39;s a a few friendly words of advice: Whenever you see a programmer misspelling variables, &lt;I&gt;fear the code&lt;/I&gt;. If they can&#39;t spell correctly, or even worse, can&#39;t be bothered to spell correctly, then what else might they have gotten wrong? My money says a whole lot, most likely.&lt;br /&gt;&lt;br /&gt;Also, it doesn&#39;t help anything that the properties window of the designer for WPF insists on using ClearType. Antialiasing is all well and fine for smoothing animated jaggies, but blurred fonts cause nothing but headaches. I already turned that bollocks off, so do me a favor and honor my system settings. And why is there a new properties window for WPF anyway? It positively reeks of summer intern.&lt;br /&gt;&lt;br /&gt;Renaming is a built in refactoring tool in Visual Studio these days, but oh boy does it ever break stuff when applied in a WPF project. I guess that&#39;s what happens when half the &quot;code&quot; is glorified XML. Stop me if I&#39;m wrong, but wasn&#39;t XML designed to be easy to traverse programmatically? How hard can it be to cascade the renaming of a variable? Maybe they haven&#39;t gotten around to it yet, or maybe developers at MS are perfectly satisfied with the automatic naming of their controls. I don&#39;t bother renaming &lt;FONT FACE=&quot;Courier&quot;&gt;Label1&lt;/FONT&gt; any more than the next guy, but &lt;FONT FACE=&quot;Courier&quot;&gt;Window1&lt;/FONT&gt; isn&#39;t exactly the model of readability.&lt;br /&gt;&lt;br /&gt;And another thing, what&#39;s the point of declaring window properties and such in XML when it AFAICT just gets compiled into the executable anyway? I&#39;d have thought avoiding a recompile was an attractive goal when splitting the code into declarative statements and binaries, but perhaps the main reason for this &quot;paradigm shift&quot; was luring the HTML-ers into application development. Poor souls.&lt;br /&gt;&lt;br /&gt;Seems WPF still has some way to go. In summary, it&#39;s apparent that what MS has created here is basically a graphic designer&#39;s tool, and so I gleefully observe that any proper coder&#39;s job is still completely safe from peril. The vector graphics are cool though.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/7042244859280783583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/05/wpf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/7042244859280783583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/7042244859280783583'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/05/wpf.html' title='WPF'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-5935584957541785050</id><published>2009-02-04T15:40:00.018+01:00</published><updated>2010-04-23T10:50:45.158+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="pascal"/><category scheme="http://www.blogger.com/atom/ns#" term="patterns"/><title type='text'>C#</title><content type='html'>Pascal was the first proper language I learned after BASIC, and my IDE of choice was Turbo Pascal, the creation of Anders Hejlsberg, the same man who has now brought us C#. I still rave nostalgically about the brilliant help system built into TP, but when it comes to C#, I have a slightly different view.&lt;br /&gt;&lt;br /&gt;I don&#39;t hate C#, but I don&#39;t love it either. However, that doesn&#39;t mean I have a love-hate relation with the language, those emotions are far too strong. Rather, I consider it to be more of a like-dislike relation. Naturally, I focus on the dislikes. Here&#39;s the list:&lt;br /&gt;&lt;br /&gt;Everything is classes, just like Java, and just like Java, it annoys me. What&#39;s wrong with the odd global helper procedure for those pointless-to-classify tasks? The same basic thing can obviously be accomplished by declaring public statics, but it&#39;s that much more bureaucratic framework code, just to please the OO fanatics who blindly believe that all globals are evil. The only thing that kind of design accomplishes is an abundance of classes called Library, Framework or System. Suggesting that I use a &lt;A HREF=&quot;http://whinycoder.blogspot.com/2009/01/design-patterns.html&quot;&gt;singleton&lt;/A&gt; instead won&#39;t improve my mood, either.&lt;br /&gt;&lt;br /&gt;Then there&#39;s the mollycoddling. Bounds checking? Garbage collection? No pointers? (That last one is a lie of course, but I&#39;ll get into that in a bit.) Apparently it&#39;s much too deviously difficult or at least much too time consuming for me, a pitiful dev, but I&#39;m pretty sure I can handle the memory management myself, thanks. In fact, I rather prefer to know what&#39;s going on under the hood, if I may.&lt;br /&gt;&lt;br /&gt;These days, pointers are one of the devil&#39;s temptations. Only the most hardened of veterans may use them, and even then only if they incantate the keyword equivalent of a contamination suit, &quot;unsafe&quot;. Much easier for the developer, indeed. But does that mean the language is void of pointers (pun not intended)? Au contraire!&lt;br /&gt;&lt;br /&gt;In fact, most variables transcending the complexity of an integer that you might want to declare in C# are pointers, or &quot;reference types&quot;, as it were. That is, they are pointers to objects. Have a look at this:&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;MyClass c = new MyClass();&lt;br /&gt;&amp;nbsp;&amp;nbsp;someObject.SomeMethod(c);&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;That method call looks like it takes pass-by-value parameter to me. It does, in fact. It&#39;s a pass-by-value of a pointer to the object c. Of course, that means the object can be altered by the called method:&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void SomeMethod(MyClass x) &lt;FONT COLOR=green&gt;//pass-by-value?&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x.ChangeObjectsInternalState(); &lt;FONT COLOR=green&gt;//oops&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;Can someone explain to me how this is more clear than waving the red flag of pointers in order to signal that what&#39;s happening is really a pass-by-reference? &lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void SomeMethod(MyClass * x); &lt;FONT COLOR=green&gt;//unmistakable&lt;/FONT&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;Also, boxing doesn&#39;t improve on any of this.&lt;br /&gt;&lt;br /&gt;Something that really has me gritting my teeth is the lack of support for variable shadowing. Googling the matter has informed me that shadowing &quot;is confusing&quot;. Huh? I suppose the concept of polymorphism is also confusing for a beginner, but they didn&#39;t take THAT out of C#, now did they? How hard can it be to understand that any given variable exists in a, likewise given, scope? Why not skip templates as well? Oh but wait, C# didn&#39;t even implement their templates variety &quot;generics&quot; until version 2.0! What was up with that?&lt;br /&gt;&lt;br /&gt;Speaking of stuff that&#39;s missing from C#, why won&#39;t optional parameters with default values be implemented until version 4.0? What is it they&#39;re so busy working on instead? Yeah I know, LINQ. As if anyone enjoys SQL so much that they actually want to be able to use it on arrays and linked lists. Get a grip.&lt;br /&gt;&lt;br /&gt;There are other things besides LINQ that I fail to appreciate. WCF, for example. Tell me, why is it that I need another layer on top of Berkeley sockets? Maybe &lt;FONT FACE=Courier&gt;connect()&lt;/FONT&gt; is too difficult a concept to grasp? But then again, I don&#39;t really care about WSDL or SOAP or anything remotely connected (pun scornfully intended) to &quot;web services&quot;.&lt;br /&gt;&lt;br /&gt;In the end, I just prefer executables that don&#39;t come with a lot of extra luggage. My PC is perfectly able to run software without an extra layer on top of the already installed extra layer that is Windows. In fact, I&#39;m one of those who longingly recall the days when each piece of software came on its own boot disk/tape/cartridge. Who in their right mind forces their users to download and install a virtual machine just to run their software? Sure, soon .NET will have insinuated its way into every Windows machine out there, but that won&#39;t stop me from despising the idea in the first place. Unfortunately, it&#39;s painfully obvious that bloat isn&#39;t exactly high on MS&#39;s priority list of concerns.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/5935584957541785050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/02/c.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/5935584957541785050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/5935584957541785050'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/02/c.html' title='C#'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-5851560318361723451</id><published>2009-02-03T22:07:00.030+01:00</published><updated>2010-04-23T10:52:16.481+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vista"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Vista Explorer</title><content type='html'>There is a single reason I will never install Vista at home (or anywhere, if I have any say about it), and that reason is the horribly disfigured excuse for a file manager the people at MS have decided to force feed us. While there are certainly many other valid reasons to hate Vista, it&#39;s really Explorer that takes the cake.&lt;br /&gt;&lt;br /&gt;Let me start by stating that Norton Commander for DOS was brilliant. Explorer for Windows 3, not so much. Windows 95 and upwards improved a little on the basic concept, but it seems that Explorer peaked in XP, because now it&#39;s not only declining in usability as well as stability, but actually free falling at high speed past their earlier versions, thus managing to render Vista completely useless.&lt;br /&gt;&lt;br /&gt;Everybody knows about this first gripe, but let&#39;s cross it off the list to begin with.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGcr0kN9H9iBkqSSeXlQZJVfLnWhBzg0LN4j5xI5OVVm7p0tFz66lZP_qBQ7rSTlEmVqH3ADVRfADibANhnDvfCMDIsXoOo7IlEeCWe4RwkRna5815lokRy9NgxRKalRd7O4oQ4JUKVRqg/s1600-h/vista-explorer-list-columns.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 182px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGcr0kN9H9iBkqSSeXlQZJVfLnWhBzg0LN4j5xI5OVVm7p0tFz66lZP_qBQ7rSTlEmVqH3ADVRfADibANhnDvfCMDIsXoOo7IlEeCWe4RwkRna5815lokRy9NgxRKalRd7O4oQ4JUKVRqg/s400/vista-explorer-list-columns.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5298684104789331970&quot; /&gt;&lt;/a&gt;&lt;br /&gt;What on earth were they thinking, when they decided that Explorer should repeatedly and stubbornly assume that every folder on every hard drive must surely be filled with media files that I will want to tag or rate in some addlebrained manner. Easily fixed, yes? Just change view once and apply it to every folder. But no, of course that doesn&#39;t work, because that would be too easy. Not only that, but somehow the columns apply even in tiled views. Explorer is out to hurt us.&lt;br /&gt;&lt;br /&gt;Have you noticed how sometimes, it&#39;s impossible to delete an entire directory structure? Explorer returns with an Access Denied, and you think to yourself, maybe one of the files in there is locked by an application. So you drill down and delete each child directory and their individual files manually, working your way up. At the end, you find the joke was on you - everything was perfectly possible to delete, and no files were locked. You deleted the whole thing, and you&#39;re left wondering why Explorer was somehow unable to.&lt;br /&gt;&lt;br /&gt;There should really be a switch in Windows. Two modes, selectable from somewhere in the Control Panel. What I want is a way to turn off The Stupid&amp;trade;. Oh please please let me select Advanced Mode, a mode where there is no ridiculous hand holding such as this next dialog, which some might claim to be an improvement over the one found in XP. Guess what - I beg to differ.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisUH56ZBjiHl_QNYEyJF_zpq1DeNtXBBJ-OfZBKKmr8oNeu3o1CnbI5vHXTNr2JtToX6GMAjAhBVtAK0C1LMUTDH_p0cZjVuzf3fbCqUqnPkbhAuSYcKKSRnvCvZajdYAU5np9QenoSGWQ/s1600-h/vista-file-copy-overwrite.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 392px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisUH56ZBjiHl_QNYEyJF_zpq1DeNtXBBJ-OfZBKKmr8oNeu3o1CnbI5vHXTNr2JtToX6GMAjAhBVtAK0C1LMUTDH_p0cZjVuzf3fbCqUqnPkbhAuSYcKKSRnvCvZajdYAU5np9QenoSGWQ/s400/vista-file-copy-overwrite.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5298684099677528050&quot; /&gt;&lt;/a&gt;&lt;br /&gt;If anything, this has just made it that much more difficult to copy files, because now I have to read all that text every time before I can figure out which option is which. More annoyingly, why is the &quot;All&quot; choice suddenly minimized into that check box at the bottom of such a humongous dialog? Let me just press A and be done with it!&lt;br /&gt;&lt;br /&gt;While we&#39;re on the topic of file moving, why is it that not only is Explorer still unable to properly calculate the time remaining for the operation to be completed, but now it takes that much longer to think it over, or &quot;prepare&quot; as it were, before even beginning to do any actual work. It boggles the mind.&lt;br /&gt;&lt;br /&gt;This next dialog is Explorer related, although it doesn&#39;t actually display in Explorer itself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuuT3XUNQFz_CjIc4RYzFWZ29mWeJealIhEYJRJSjmZwJU7aw21BJRDAncy3xk8H_YUWiGg-REa8fZTS_IpGt_9t_j5RxxjYyykznV7SD-iB8tSjFyygDshr679wJL301GiG7J_xuOU8_Q/s1600-h/vista-safe-to-remove-hardware.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 172px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuuT3XUNQFz_CjIc4RYzFWZ29mWeJealIhEYJRJSjmZwJU7aw21BJRDAncy3xk8H_YUWiGg-REa8fZTS_IpGt_9t_j5RxxjYyykznV7SD-iB8tSjFyygDshr679wJL301GiG7J_xuOU8_Q/s400/vista-safe-to-remove-hardware.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5298684099163037906&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Talk about a downward step in GUI design. This dialog pops up when disconnecting a USB memory or similar. In XP it was just an informative, non intrusive bubble above the system tray, but now it&#39;s a full blown dialog, forcing us to dismiss it with a pointless click on a useless OK button in a dialog presenting information I only slightly care about. Barf.&lt;br /&gt;&lt;br /&gt;Lastly, the real reason Vista&#39;s so called Explorer drives me up the walls. It doesn&#39;t synchronize the tree view and the file view properly. When selecting a folder in the tree view, one would expect the file view to display that folder&#39;s contents. This still works acceptably for mousers, unless you&#39;re used to clicking the little plus and minus icons next to the folders like I am, but apparently there are no keyboard cowboys at MS, because it&#39;s horribly broken for those of us, real devs that is, who tend to avoid the mouse when doing any real work. Try stepping around the tree view using the cursor keys, and nothing - NOTHING - happens. You have to press Enter for the folders to sync. Guess where that leaves Vista? &lt;A HREF=&quot;http://www.hrwiki.org/index.php/DELETED&quot;&gt;BALEETED!&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Oh, and it seems Explorer isn&#39;t fixed in Windows 7 either. For some mysterious reason MS has apparently and purposely chosen to drive their customers away. Suppose I&#39;ll have to start using Linux in earnest then.&lt;br /&gt;&lt;br /&gt;&lt;I&gt;(Screens with permission from &lt;A HREF=&quot;http://www.rubli.info/t-blog/2007/06/10/windows-vista-user-interface-part-1-the-good/&quot;&gt;Martin Rubli&#39;s Tech Blog&lt;/A&gt;.)&lt;/I&gt;</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/5851560318361723451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/02/vista-explorer.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/5851560318361723451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/5851560318361723451'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/02/vista-explorer.html' title='Vista Explorer'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGcr0kN9H9iBkqSSeXlQZJVfLnWhBzg0LN4j5xI5OVVm7p0tFz66lZP_qBQ7rSTlEmVqH3ADVRfADibANhnDvfCMDIsXoOo7IlEeCWe4RwkRna5815lokRy9NgxRKalRd7O4oQ4JUKVRqg/s72-c/vista-explorer-list-columns.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-3963014428520581484</id><published>2009-02-02T16:10:00.020+01:00</published><updated>2010-04-23T10:52:42.150+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="sql"/><title type='text'>Oracle</title><content type='html'>Ok, where do I begin?&lt;br /&gt;&lt;br /&gt;How about at the beginning? The Oracle installer for Windows is not an MSI. Put another way, the installer for Oracle is a Java application. Do I look like I wanted a JRE installed? This makes for a poor user experience indeed, with one of those really ugly GUI:s one has come to expect from Java. In fact, I have yet to see a pretty Java application. I guess nobody ever had the patience to figure out quite how to use the CrapBagLayout, but I&#39;m getting sidetracked from the rant at hand! Hilariously ill-designed installer in any case.&lt;br /&gt;&lt;br /&gt;Secondly, a web application for administration of the database(s). Dudes, how about a proper application? Whatever, I&#39;ll just let this one slide, because at least it&#39;s a slight improvement over the horrendous installation.&lt;br /&gt;&lt;br /&gt;Ah, services. Five of them have been registered at a cursory glance, but as of right now, only three of those are running. So WHY is it then, that my computer&#39;s boot time has been at least quadrupled? It&#39;s noticeably slower on shutdown as well. Brilliant Oracle, thanks.&lt;br /&gt;&lt;br /&gt;Also, and this is more important, why is Oracle continuously running short processes, starting and stopping all the time, in the background? That&#39;s not all either, have a look at this screenshot (courtesy Process Explorer) of a sample of the Oracle processes running on my system right now.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3a6bkbz9ssEuljV8Fv92z_3nuOEDmhj6y8BMHo4DY4uxmPINRxCnoKGwTj5ZKD-9sReOkqMg0ChgLOVLhSZR1vItjhvEverGkr1Ef5FWlEwIutTYpFrOM6bSghNO4SS-gvIYF5kTLmWsh/s1600-h/oraproc.gif&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 101px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3a6bkbz9ssEuljV8Fv92z_3nuOEDmhj6y8BMHo4DY4uxmPINRxCnoKGwTj5ZKD-9sReOkqMg0ChgLOVLhSZR1vItjhvEverGkr1Ef5FWlEwIutTYpFrOM6bSghNO4SS-gvIYF5kTLmWsh/s400/oraproc.gif&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5298222709277776482&quot; /&gt;&lt;/a&gt;&lt;br /&gt;What&#39;s that now? An exe running a shell command running Perl running a shell command running Java? Seriously? What could it possibly be doing? I shudder lest I were to find out.&lt;br /&gt;&lt;br /&gt;Oh, and then there&#39;s the database itself of course. No one in their right mind would ever EVER want to be a DBA, but as a dev there are unfortunately times when one has to bite the bullet, so let&#39;s create some tables. Oh I need a &quot;tablespace&quot; first? Fine, whatever. CREATE already!&lt;br /&gt;&lt;br /&gt;Wait what? There is no auto incrementing ID type? No you heard that right, but obviously there is a way around this, because otherwise the thing would be completely useless, so here&#39;s what you have to do: create a &quot;sequence&quot;. Meaning, you have to do something like this:&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;CREATE SEQUENCE supplier_seq&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MINVALUE 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MAXVALUE 999999999999999999999999999&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; START WITH 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INCREMENT BY 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CACHE 20;&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;Then, you finally get to do this:&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;INSERT INTO suppliers&lt;br /&gt;&amp;nbsp;&amp;nbsp; (supplier_id, supplier_name)&lt;br /&gt;VALUES&lt;br /&gt;&amp;nbsp;&amp;nbsp; (supplier_seq.nextval, &#39;Kraft Foods&#39;);&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;That, boys and girls, is LAME.&lt;br /&gt;&lt;br /&gt;And it doesn&#39;t end there. There seems to be no way of retrieving a set of records in response to a simple SELECT query, but instead we&#39;re forced to use, wait for it, a cursor? That feels like turtle graphics to me. Stone age tech, Lord please have mercy.&lt;br /&gt;&lt;br /&gt;I&#39;ll leave you with one more laugh. Now, we all know that a column that has not yet been assigned a value should be equal to NULL. If, for example, a string is assigned to a column, it&#39;s been assigned a value and should no longer be NULL. If, however, that string were to be the empty string &#39;&#39;, Oracle inexplicably inserts NULL, despite the assignment. According to ISO SQL, the non-value NULL is different from the value of an empty string. Oracle, however, stubbornly treats empty strings as NULL. Well done. Maybe zero should be NULL too? That would also be an ISO SQL violation, so why not? At least that would explain the length of an empty string, which in Oracle is NULL, not zero... Scrap UNKNOWN altogether, FALSE is enough to represent NULL, isn&#39;t it? Completely defying standardization of ternary logic would probably be the pinnacle of Oracle&#39;s achievements. Colour me impressed.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/3963014428520581484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/02/oracle.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/3963014428520581484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/3963014428520581484'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/02/oracle.html' title='Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3a6bkbz9ssEuljV8Fv92z_3nuOEDmhj6y8BMHo4DY4uxmPINRxCnoKGwTj5ZKD-9sReOkqMg0ChgLOVLhSZR1vItjhvEverGkr1Ef5FWlEwIutTYpFrOM6bSghNO4SS-gvIYF5kTLmWsh/s72-c/oraproc.gif" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-2699591714239135856</id><published>2009-01-28T14:47:00.020+01:00</published><updated>2010-04-23T10:47:39.054+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>XML</title><content type='html'>According to Wikipedia, &quot;XML&#39;s purpose is to aid information systems in sharing structured data, especially via the Internet, to encode documents, and to serialize data.&quot;&lt;br /&gt;&lt;br /&gt;*sigh*&lt;br /&gt;&lt;br /&gt;Yes, let&#39;s use a general text format to pass messages over TCP, that&#39;s not a waste of bandwidth at all. Seeing how bandwidth is not a limited resource these days, it doesn&#39;t really matter anyway. Packing data into bits and bytes is hardly important anymore.&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;&amp;lt;PLAYER&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;MOVEMENT&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;X_VELOCITY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VALUE TYPE=DECIMAL&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VALUE&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/X_VELOCITY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Y_VELOCITY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VALUE TYPE=DECIMAL&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VALUE&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Y_VELOCITY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Z_VELOCITY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VALUE TYPE=DECIMAL&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VALUE&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Z_VELOCITY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/MOVEMENT&amp;gt;&lt;br /&gt;&amp;lt;/PLAYER&amp;gt;&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;Yep, slimmed down to the max.&lt;br /&gt;&lt;br /&gt;A general text format for encoding documents saved from applications tailored to the particular needs of, let&#39;s say, the marketing department at a company in some specialized niche sounds really useful, because so many other applications will want in on that action, probably. At the very least, if any competing software is released in the future, it might be able to catch up more easily, and that&#39;s a good thing, in some way.&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;&amp;lt;DATA&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;DEPT_NO&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/DEPT_NO&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;PARTIAL_SRH&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76.45&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/PARTIAL_SRH&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;MBZ&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;active&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/MBZ&amp;gt;&lt;br /&gt;&amp;lt;/DATA&amp;gt;&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;Someone is sure to find a use for this fascinating data.&lt;br /&gt;&lt;br /&gt;Serializing data into human readable text for saving to file or passing to another application across a pipe of some sort before deserializing it back into binary again is surely great for something, I just can&#39;t quite think of what that might be yet, give me some time to mull it over... Perhaps it&#39;s good for security, yes? Packet sniffers must definitely appreciate it, and why let data remain machine readable only when humans might want to have a look eventually?&lt;br /&gt;&lt;FONT FACE=Courier&gt;&lt;br /&gt;&amp;lt;EMPLOYEE&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;SSN&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;19670918-1234&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/SSN&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;SALARY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;43000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/SALARY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ACCT&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5312-00004223&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/ACCT&amp;gt;&lt;br /&gt;&amp;lt;/EMPLOYEE&amp;gt;&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;This format now featured in &quot;Phreaking for Dummys&quot;, in a book store near you.&lt;br /&gt;&lt;br /&gt;&amp;lt;/SARCASM&amp;gt;&lt;br /&gt;&lt;br /&gt;Learn to handle binary formats. Text formats are for beginners learning VB. Don&#39;t tell me that parsing XML is so much easier than &lt;FONT FACE=Courier&gt;fread(&amp;data, sizeof data, 1, file)&lt;/FONT&gt; because that&#39;s just not true. There might, MIGHT, be a few times where XML is a good idea, but when you&#39;re the one implementing both the client application and the server application, it&#39;s just ridiculous.&lt;br /&gt;&lt;br /&gt;Oh, and one last thing - XML isn&#39;t a &quot;technology&quot; any more than INI files are the remedy for cancer.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/2699591714239135856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/01/xml.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/2699591714239135856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/2699591714239135856'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/01/xml.html' title='XML'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-7340732172576538066</id><published>2009-01-27T12:06:00.020+01:00</published><updated>2009-02-05T10:03:09.675+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="patterns"/><title type='text'>Design Patterns</title><content type='html'>You guessed it, I don&#39;t approve. Here we go!&lt;br /&gt;&lt;br /&gt;Communicating with other coders or teaching a youngling the skills of our trade obviously requires a specialized language, but why should such a language be needlessly convoluted? Acronyms are fine, I enjoy baffling civilians on the Information Highway as much as the next fellow, but I don&#39;t see why some of my peers apparently enjoy throwing around words that aren&#39;t in our common vocabulary.&lt;br /&gt;&lt;br /&gt;&quot;You ought to enlarge your vocabulary then,&quot; they proudly boast. Meaning, of course, that my base knowledge of the art of programming is not enough, and that I should strive to continue learning. I don&#39;t see anything wrong with that motive, besides perhaps the inevitable unveiling that there is no Santa. What makes my bile rise, however, is the suggestion that I should learn so-called &quot;patterns&quot;.&lt;br /&gt;&lt;br /&gt;Remember how someone once told you about the Singleton Pattern, and you thought to yourself, &quot;Yeah, I can see how that would be useful&quot;? Well, it&#39;s hard not to see how a global variable can be useful. Funny thing is, you already knew what that was, but you hadn&#39;t heard the fancy name before. In fact, what&#39;s hard to see is why such a simple concept as this needs to be given a name at all.&lt;br /&gt;&lt;br /&gt;Granted, the word &quot;singleton&quot; communicates a little bit more than just &quot;global variable&quot;. Fine. So how many times has the word &quot;singleton&quot; been bandied about in a useful context? A setting where the concept of a singleton actually made sense? Few, I wager. How often is it really necessary to enforce that a class be instanced only once? Dude, if you only support one graphics adapter, then simply create a single instance of your GraphicsAdapter class! Exactly who are you protecting your code from by turning it into a singleton? Code in your sleep a lot, do you? Moreover, rather than improving upon existing code, the singleton will more likely just add to code complexity.&lt;br /&gt;&lt;br /&gt;What&#39;s more, the singleton is just an example; it&#39;s definitely not the only design pattern to suffer from complexity. I daresay any pattern adds clutter and increases opacity. I base that statement on this simple observation: If your design needs to be explained, it is too complicated.&lt;br /&gt;&lt;br /&gt;As soon as you find yourself wading through code in order to find out what is really going on, something is amiss. Stepping through function calls into other function calls of class methods ridiculously and indecipherably abstracted to the extremes, with useful comments such as &lt;FONT FACE=Courier COLOR=green&gt;//I just learned the Utility pattern lol :)&lt;/FONT&gt; is enough to make a grown man cry. Naturally, this problem doesn&#39;t always stem from the use of patterns alone, but frivolous use of them will certainly lead downhill.&lt;br /&gt;&lt;br /&gt;I heard someone say this: &quot;I&#39;m not proud of this code, it isn&#39;t a very good pattern.&quot; I&#39;m sorry, what? Here&#39;s another quote: &quot;We need to think of a better pattern for this part.&quot; Woah, hold it - buzzword alert. Is code in any shape now equivalent to some sort of pattern? Is a for-loop a pattern then? Seemingly, it&#39;s not enough to just write code anymore, oh no, it has to be designed. It has to be architected. Cue Vader&#39;s theme.&lt;br /&gt;&lt;br /&gt;Architecting code doesn&#39;t imply creating dense structures that are difficult to navigate and understand. The use of patterns for the sole reason of using patterns, however, does. This is the main problem with patterns. Naive application of perceived superior dogmas by fanatics and bumbling fools who believe that &quot;refactoring&quot; is a new and revolutionizing concept. Sit down Java programmers, nobody cares about your &quot;humble opinion&quot; or otherwise.&lt;br /&gt;&lt;br /&gt;It all boils down to the definition of perfect code, the shimmering idea of a brilliantly logical construct that only exists in our mind&#39;s perfect world. Some seek to live by the rules of The One True Brace, while some pray in the Hungarian church of True Notation. Others again kneel at the chapel of Patterns. I propose that we all put ourselves above these mere tools, instead of bowing and scraping to them as our gods or demons. Less crusading for the causes would also be nice. But then again, so would world peace.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/7340732172576538066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/01/design-patterns.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/7340732172576538066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/7340732172576538066'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/01/design-patterns.html' title='Design Patterns'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7251793589608325666.post-6113296381360853005</id><published>2009-01-27T11:44:00.006+01:00</published><updated>2009-02-05T12:57:13.715+01:00</updated><title type='text'>First!</title><content type='html'>Oh no, Lord please protect and defend us from &quot;first&quot; posts.</content><link rel='replies' type='application/atom+xml' href='http://whinycoder.blogspot.com/feeds/6113296381360853005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whinycoder.blogspot.com/2009/01/first.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/6113296381360853005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7251793589608325666/posts/default/6113296381360853005'/><link rel='alternate' type='text/html' href='http://whinycoder.blogspot.com/2009/01/first.html' title='First!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>