<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-7349107</id><updated>2007-04-23T13:58:39.856-05:00</updated><title type='text'>J Sharp Plus Plus</title><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/index.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default'></link><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sutlermb.freeshell.org/jspp/atom/atom.xml'></link><author><name>Komokuten</name></author><generator version='7.00' uri='http://www2.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><entry><id>tag:blogger.com,1999:blog-7349107.post-113264355659768059</id><published>2005-11-22T02:12:00.000-05:00</published><updated>2005-11-22T02:12:36.606-05:00</updated><title type='text'>How to Write Unmaintainable Code</title><content type='html'>&lt;a href="http://thc.org/root/phun/unmaintain.html"&gt;Link here&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2005/11/how-to-write-unmaintainable-code.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/113264355659768059'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/113264355659768059'></link><author><name>Rusty</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-110865667805967259</id><published>2005-02-17T10:32:00.000-05:00</published><updated>2005-02-17T11:11:18.063-05:00</updated><title type='text'>Java Reference Objects</title><content type='html'>I learned something cool about Java yesterday.  Java has the concept of Reference objects.  Now "reference" is an overloaded term, so stay with me here.  This isn't the concept of reference variables or reference parameters in C or C++.  In Java, there is an actual object called Reference in the java.lang.ref package.  It's an abstract class, so you can't directly instantiate them, but there are three direct subclasses: SoftReference, WeakReference, and PhantomReference.&lt;br /&gt;&lt;br /&gt;So I guess before I go any further, I should explain the concept of garbage collection in Java.  Garbage collection is more than the concept of not having to clean up after yourself as many C snobs out there might try to tell you.  Garbage collection is something that you need to manage or your application will grind to a stop.  In C or C++, you must explicitly free any allocated memory back into the heap when you're done with it.  In Java, the garbage collector watches all instantiated objects.  Every now and again, the garbage collector will wake up, check to see if there are any objects that aren't being used (garbage), and free the associated memory for later use.&lt;br /&gt;&lt;br /&gt;Reference objects are a way to better manage your garbage collector.  Basically, they're around for objects that you want to keep around, but are not too concerned about whether they are actually there when you need them.  Sounds funny, but I'll show you an example in a minute.  Basically, when you create a Reference object, you're telling the garbage collector that you don't care if this object gets reclaimed or not once you're done with it.  &lt;br /&gt;&lt;br /&gt;Here's an example of when this is useful.  Suppose you have to write a caching mechanism as part of a much larger application.  The cache is supposed to keep text documents in memory to speed up retrieval of frequently accessed documents.  Now, being inside a larger application, you can imagine that there is a lot going on within the Virtual Machine.  And since the VM has a limited amount of physical memory, you don't want to hog all the resources storing all these text documents.  What you can do is use Java's WeakHashMap, which employs WeakReference objects as its keys.  Here's a code snippit:&lt;blockquote&gt;&lt;pre&gt;private WeakHashMap cache = new WeakHashMap();&lt;br /&gt;public String getDocumentContents(File file)&lt;br /&gt;{&lt;br /&gt;    String fileContents = (String)cache.get(file);&lt;br /&gt;    if(fileContents == null)&lt;br /&gt;    {&lt;br /&gt;        // Cache miss -- go to disk (slower)&lt;br /&gt;        fileContents = readDiskForFileContents(file);&lt;br /&gt;        cache.put(file, fileContents);&lt;br /&gt;    }&lt;br /&gt;    return fileContents;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;So, as you can see, this very rudimentary function simply checks to see if the file is in the cache and if not, retrieves the file contents from disk.  Now, if we were using a regular HashMap, the filecontents would always be there once the file was read for the first time.  However, this would eventually lead to an OutOfMemoryException if this function were run repeatedly over time.  Instead, we have employed the use of a WeakHashMap, which allows the garbage collector to reclaim space if necessary.  When the WeakReference keys get reclaimed, it will appear that we never added the file contents to the cache and we will need to go back to disk.  Essentially, we have a very flexible cache that varies in size depending on the VM memory usage.&lt;br /&gt;&lt;br /&gt;As I said before, Java has three types of Reference objects: SoftReference, WeakReference, and PhantomReference.  Each has different associated algorithms that govern when they will be garbage collected.  One thing you can count on is that they will be collected in that order: Soft, Weak, Phantom.  &lt;br /&gt;&lt;br /&gt;So, I hope this has given you a little more insight into one of the more advanced Java concepts and maybe given you some ideas on how to better manage your memory within a virtual machine.  Feel free to comment should you have any questions.</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2005/02/java-reference-objects.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/110865667805967259'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/110865667805967259'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109544232919571199</id><published>2004-09-17T12:31:00.000-05:00</published><updated>2004-09-17T12:32:09.196-05:00</updated><title type='text'>Reviewing Performance</title><content type='html'>Ugh.  I just finished a grueling two+ hours of what my company terms "mid-year performance reviews."  I'm in the fortunate position of having five young, bright, and talented people working for my team.  I'm in the unfortunate position of being caught between upper management, which is waffling on everything from what technologies we're going to use in the next release to whether or not I will be managing these people any more, and a bunch of people who are bored with nothing to do and no idea where the company is headed.  It's not fun being here.  &lt;br /&gt;&lt;br /&gt;Actually, I am lucky in that I can relate more with my team members than my management.  I'm bored.  I'm not sure what the heck is going on, and I want to know what we're going to be doing over the next year and what role I'll be playing for the duration of the next project.  Okay, I take that back.  It sucks to be me.  I'd rather be in the dark than be privy to all the decisions that get rolled back to be replaced with equally mundane ideas.  Like &lt;a href="http://sutlermb.freeshell.org/jspp/2004/09/there-is-no-spoon.html"&gt;I said earlier&lt;/a&gt;, no technology is perfect.  There is no panacea, so please just pick a direction and go with it.  The sales people will sort it out in the end.  Just kidding.&lt;br /&gt;&lt;br /&gt;In the mean time, I will continue to read &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1590593898/qid=1095441948/sr=8-1/ref=pd_csp_1/002-2094605-1323244?v=glance&amp;s=books&amp;n=507846"&gt;&lt;em&gt;Joel on Software&lt;/em&gt;&lt;/a&gt; and learn about why null-terminated strings suck, how UTF-8 is just another hack to avoid making English speaking Americans write intelligent string manipulating code, and why it's never a good idea to throw everything out and start from scratch.  Viva &lt;a href="http://www.joelonsoftware.com"&gt;Joel&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Note: This posting also appears on &lt;a href="http://sutlermb.freeshell.org/blog"&gt;they're already here.&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/09/reviewing-performance.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109544232919571199'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109544232919571199'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109460064558421847</id><published>2004-09-07T18:17:00.000-05:00</published><updated>2004-09-07T18:46:12.140-05:00</updated><title type='text'>There Is No Spoon</title><content type='html'>There is no spoon.  There is no magic bullet.  There is no panacea.  There is no perfect technology.  &lt;br /&gt;&lt;br /&gt;I don't care how much you study, how many prototypes you build, how many "industry experts" you consult; you will never, ever, ever find the perfect technology that will solve your problems completely and without side effects.  No matter what technology you pick, you're going to regret it.  If you choose to implement your app using C#, you're going to love the portability of the controls, but you're going to hate the problems the mobility causes you.  If you add webservices, you're going to love the openness, but hate the stupid f*^%ing errors caused by your third party XML parsers.  If you choose to implement your UI in MFC, you'll love the integration with the Windows OS, but hate how it is literally impossible to maintain your code even one day after you write it.  &lt;br /&gt;&lt;br /&gt;I could go on and on.  No code more complicated than System.out.println( "Hello World!" )* will ever satisfy you as a software engineer.  And this is the true failure of the Object Oriented paradigm.  It provides a mechanism to reuse code, for them (they being mostly comprised of The Man and the machine in place to support his benevolently evil causes) to produce libraries so that everyone may partake from their infinite wisdom and limitless talent.  But alas!  As it turns out, their infinite wisdom is decidedly finite.  Their limitless talent is flawed.  And as an end result, we are collectively screwed.  Slowly.&lt;br /&gt;&lt;br /&gt;So they give the rest of us two choices of an exclusive order.  Choice A: We may choose our technology based on the bell or whistle without which our life may instantly cease (at which point we forfeit all rights to complain about bugs + functional holes).  Choice B: we can choose the technology with so few bells &amp; whistles that we have to write our own linked list whenever we need one (but we rest easy at night knowing control is in our capable hands).  Either or.  There is no gray area.  There is no midway point.  There is no compromise.  Resistance is futile.&lt;br /&gt;&lt;br /&gt;* -- That's cout &lt;&lt; "Hello World!"; for you C++ geeks.  Don't make me break out the C...&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/09/there-is-no-spoon.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109460064558421847'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109460064558421847'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109362476656157285</id><published>2004-08-27T11:32:00.000-05:00</published><updated>2004-08-27T11:45:43.880-05:00</updated><title type='text'>Formatting Changes</title><content type='html'>You may have noticed some small changes to the blog today.  Or maybe you didn't.  Anyway, there is now a small icon on the bottom of each post so that our hordes of adoring fans can easily email our content to their buddies all over the world.  We will soon rule the internet.  What?  Nobody reads this?  &lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;"Why didn't somebody tell me my ass was so big!?"&lt;/em&gt; -- President Skroob&lt;/blockquote&gt;&lt;br /&gt;Well, I solved that problem, too by choosing to make this blog public.  Now our glorified, email overkill can now be picked up by people who are just perusing the Blogger system.  Or not.  &lt;br /&gt;&lt;br /&gt;Oh, one more small thing.  If you're logged in to Blogger, you can now edit posts directly from the blog itself.  Just click on the pencil looking icon.  Go ahead -- try it out.&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/formatting-changes.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109362476656157285'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109362476656157285'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109337986870411823</id><published>2004-08-24T15:37:00.000-05:00</published><updated>2004-08-24T15:37:48.703-05:00</updated><title type='text'>Java Uncool?</title><content type='html'>&lt;a href="http://www.sys-con.com/java/46095.cfm"&gt;Top Reasons Why People Think Java Un-Cool - Debunked&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The conversation is smoldering a bit, so here's a list that might stoke the fires.  Read it over an provide feedback.  I will add one item to this list: C++ code is much harder to debug across platforms.  I can't help but notice that our code written in Java is ready to go and our POS C++ code still has catestrophic bugs that simply cannot be fixed without a re-write.  F*&amp;^%$g HP...you want to talk about someone who can't manage memory.  Look no farther than HP-UX.  You can't breath heavily without your app crashing because the OS isn't paying attention to what you're doing...&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/java-uncool.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109337986870411823'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109337986870411823'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109331060112126129</id><published>2004-08-23T20:18:00.000-05:00</published><updated>2004-08-23T20:23:21.123-05:00</updated><title type='text'>It's about damn time</title><content type='html'>http://science.slashdot.org/science/04/08/23/1141217.shtml?tid=14&lt;br /&gt;&lt;br /&gt;I mean come on, the the secret was let out via a chemical model on personal computer a &lt;a href="http://www.imdb.com/title/tt0092007/"&gt;full 18 years ago&lt;/a&gt;.  Then again, it was a Mac LC II, and as I recall the floor manager at Plexicorp &lt;span style="font-style:italic;"&gt;did&lt;/span&gt; say it would take years to get the equations right.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;"But you will be rich beyond avarice..."&lt;br /&gt;&lt;br /&gt;"How do we know he didn't invent the thing?"&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/its-about-damn-time.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109331060112126129'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109331060112126129'></link><author><name>Rusty</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109301537418319192</id><published>2004-08-20T10:19:00.000-05:00</published><updated>2004-08-20T10:22:54.183-05:00</updated><title type='text'>I'm looking at a puzzle in my ACM magazine put out...</title><content type='html'>I'm looking at a puzzle in my ACM magazine put out by google.  If you can solve it, you can get an interview :)  I'm working on it too, but I think I'm missing something.  So if you want to give it a shot, here it goes:&lt;br /&gt;&lt;br /&gt;-----&lt;br /&gt;&lt;br /&gt;To send a fax,&lt;br /&gt;&lt;br /&gt;Dial the four-digit access code Y&lt;br /&gt;where 60097 equals f(f(f(Y))).&lt;br /&gt;&lt;br /&gt;This machine has extension number Z&lt;br /&gt;where f(f(Z)) = 1.&lt;br /&gt;&lt;br /&gt;(If you forgot your orientation packet,&lt;br /&gt;E(x) = number of letters&lt;br /&gt;when x is written out in American English&lt;br /&gt;f(x) = 3[E(x)]^3 - x)&lt;br /&gt;&lt;br /&gt;------&lt;br /&gt;&lt;br /&gt;A: Sorry, there are no shortcuts in life.  But send in the right answer along with your resume and you'll go straight to the front of the line.  Okay, that's a shortcut.  &lt;a href="mailto:labjobs@google.com"&gt;labjobs@google.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/im-looking-at-puzzle-in-my-acm.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109301537418319192'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109301537418319192'></link><author><name>Kendrick</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109289761861055058</id><published>2004-08-19T01:24:00.000-05:00</published><updated>2004-08-19T01:43:49.033-05:00</updated><title type='text'>Another tasty C++ caveat</title><content type='html'>I love Bjarne's baby as much as the next CS201 grad, but I gotta say, to hell with the damn linker.&lt;br /&gt;&lt;br /&gt;The methodology underneath how to get a project together symbol-wise is a convuluted, patchwork Christmas tree wiring of a job that continues to confound me after seven years. The absolute worst is when you're trying to put something new together with someone else's code. This library with that, a cannabalized Doc/View app to a custom control...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Who gives a damn if the symbol is already defined, just don't include it again!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Are there any actual rules on how to make a smorgasborg of source link? MFC just makes matters worse with all the PCH nonsense. You try bringing in an MIT fourier-transform library along with a WaveAPI and a sample loader package to a simple dialog-based windows app and oh boy! Of course reusability is going just an afterthought if you can't even get two working files in the same language to cooperate.&lt;br /&gt;&lt;br /&gt;Ignore default libraries, link to MFC dynamic/static, use ATL?, delay loaded DLL, force symbol references, extern-- the list goes on and on for code generation and linking options, and I can't get some API to fit into my "hello world".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;'Click OK to detonate.' &lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;Any advice people can offer, or am I the only one still using the world-weary .NET/MFC/C++ jalopy?  </content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/another-tasty-c-caveat.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109289761861055058'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109289761861055058'></link><author><name>Rusty</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109268041459182324</id><published>2004-08-16T13:20:00.000-05:00</published><updated>2004-08-16T13:36:51.496-05:00</updated><title type='text'>[Article] IBM Tells Internal Users Not to Install Windows XP Update - Computerworld</title><content type='html'>&lt;a href="http://www.computerworld.com/softwaretopics/software/story/0,10801,95250,00.html"&gt;IBM Tells Internal Users Not to Install Windows XP Update - Computerworld&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Is this not hilarious?  People complain and complain about security.  Why is your code so bad?  Why are there so many holes for hackers to exploit?  I'll tell you why.  It's because you are a moron.  You have no idea how computers work, so you want them to work for you without any effort on your part.  I'm not blaming you for being stupid.  That's just the way you are.  But if you want your computer to work automagically, you're going to have to make some sacrifices.  Like security, for instance.  Of course, if you don't want someone to be able to hack in to your computer, maybe you should learn a thing or two about securing your own system (and consequently all that personal information you have on it).  But if you don't take the time to learn, please don't come back to me with your torches and pitchforks ready to lynch me for your own ignorance.&lt;br /&gt;&lt;br /&gt;But for some reason the shiny tines on your pitchfork seem to motivate me.  So I'll come up with something that you can do on your own and it will be easy.  In fact, I'll even install it for you with my cool automagicupdatethingamahoozit.  Don't move a muscle.  But I should warn you.  Having a secure operating system means that all of your cool applications -- the ones that were developed by the hypocrites who call my operating system insecure, bloated code -- the ones that depend on those same flaws to operate -- the ones with code that's looser than a whore in Amsterdam -- yeah, those applications aren't going to work any more.  And I guess you're going to come to me to figure out how to make them work, too, aren't you?  Yeah well, I have just three words for you.  "READ A BOOK!!"&lt;br /&gt;&lt;br /&gt;...Yet more proof that utility computing is the only way to deliver good, secure functionality to the masses.</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/article-ibm-tells-internal-users-not.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109268041459182324'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109268041459182324'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109252819571585901</id><published>2004-08-14T18:46:00.000-05:00</published><updated>2004-08-14T19:03:15.716-05:00</updated><title type='text'>FTP, Security, and You</title><content type='html'>Did you guys know that regular FTP connections don't encrypt the passwords...&lt;br /&gt;&lt;br /&gt;If you guys have any regular FTP accounts, don't use any passwords that you can't afford others to know... Anybody between you and the FTP server with a sniffer could potentially find it.&lt;br /&gt;&lt;br /&gt;I think I've brought this up before but I'm on the topic again for work so I thought I'd make sure y'all know the skinny.&lt;br /&gt;&lt;br /&gt;I was looking into FTP again because most web hosting companies offer it. I've decided I'm not going to. Well at least not regular FTP.&lt;br /&gt;&lt;br /&gt;I'll consider doing SFTP if someone really wants it but I don't think we're gonna advertise it.&lt;br /&gt;There's actually quite a few ways to do SFTP.&lt;br /&gt;&lt;br /&gt;FTP - no encryption&lt;br /&gt;SFTP (SSH+FTP) - secure to SSH server, clear to FTP.  Usually both servers are on same machine.&lt;br /&gt;SFTP (SSH2) - secure straight to SSH server, no FTP server.&lt;br /&gt;&lt;br /&gt;I currently use the SSH2 method.&lt;br /&gt;&lt;br /&gt;Here's a page with a little more info on SFTP methods:&lt;br /&gt;&lt;a href="http://www.vandyke.com/products/securefx/secure_transfers.html"&gt;http://www.vandyke.com/products/securefx/secure_transfers.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/ftp-security-and-you_109252819571585901.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109252819571585901'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109252819571585901'></link><author><name>Adrian</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109193018383091407</id><published>2004-08-07T20:49:00.000-05:00</published><updated>2004-08-07T20:56:23.830-05:00</updated><title type='text'>Random trivia...</title><content type='html'>A diamond will not dissolve in acid. The only thing that can destroy it is intense heat. &lt;p&gt;A lump of pure gold the size of a matchbox can be flattened into a sheet the size of a tennis court.&lt;/p&gt; The most abundant metal in the Earth's crust is aluminum.&lt;br /&gt;&lt;br /&gt;The three most common elements in the universe are 1) hydrogen; 2) helium; 3) oxygen.&lt;br /&gt;&lt;br /&gt;Adrian's birthday is August 9, 1978.  He accepts Visa, Mastercard, Cashier's Check but no Discover. (shameless plug)&lt;br /&gt;&lt;br /&gt;The United States government keeps its supply of silver at the US Military Academy at West Point, NY.&lt;br /&gt;&lt;br /&gt;Sea water, loaded with mineral salts, weighs about a pound and a half more per cubit foot than fresh water at the same temperature.&lt;br /&gt;&lt;br /&gt;Mercury is the only metal that is liquid at room temperature.&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/random-trivia.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109193018383091407'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109193018383091407'></link><author><name>Adrian</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109158478377281834</id><published>2004-08-03T20:38:00.000-05:00</published><updated>2004-08-03T20:59:43.773-05:00</updated><title type='text'>Source control semantics and pleasantries</title><content type='html'>Here's one for the CVS fans et. al.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Regarding "check-out"...&lt;/span&gt;&lt;br /&gt;Adrian sayez:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Oh, you mean checkout like you lock a file that you're working on? SVN works the same way as CVS does where if a file is changed at the same time by different people, it tries to merge the two. If there are no intersecting changes, everything is fine. For parts that are changed by both committers, the committer who tries to commit last will be notified and prompted for instructions on how to proceed."&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;True that differing files should be merged either automatically or manually at commit time, however, I see the utility of an exclusive "check-out" that CVS, VSS, Alienbrain, etc. support, where I mark a file as being exclusively used by me, and it's advised that other folks don't modify it until I check it in (they can't unless they explicitly change the file attributes, as when I check it out it your copy of the file becomes read only the next time you open the source control program). This way the need for merges is minimized, which is very easy to gum up without superb communication between programmers, esp. in LD situations.&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;br /&gt;&lt;br /&gt;Adrian sayez:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;So the procedure should be:&lt;br /&gt;1. Commit your work.  (to save your changes.  conflicts will be logged and you will be prompted for a solution.)&lt;br /&gt;2. Update all work.  (to get all changes others have made since last update)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One thing that bit us in the ass a couple times at CMU was doing this. Though there may not be any direct code conflicts on your commit, your commit may indeed break something with the version that exists in the repository. Thus, I thought it was more prudent to update first, check the build, make sure everything still works with your new changes, THEN commit them to repository. Given, you can commit, update, and then modify and re-commit if something breaks, but at that point the version in the repository is broken as well as the version on your PC. This is dangerous. The version on the repository should be guaranteed to be sound (+/- assets) at all times, that's something we can sleep with.&lt;br /&gt;&lt;br /&gt;Adrian sayez:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I lost the active.cpp work because i updated before i commited...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Ah, but I think that shouldn't happen. When you do "update" from the source control tool, it should say "&lt;span style="font-style: italic;"&gt;Hey! active.cpp on the local disk is modified (the timestamp on write doesn't match the previous one in the repository), you don't really want me to overwrite with the version in the DB, correct?&lt;/span&gt;" That's what the file timestamps in the repository are for, so even if you _don't_ check out the file explicitly, you should be safeguarded against blowing away your changes on an update.&lt;br /&gt;&lt;br /&gt;Anyway, this is the gospel I picked up from working at various places. I haven't looked at Tortoise closely enough to be able to tell if it supports the same key features as other source management tools, I could just be missing them. Anyone else with source control experience care to comment? (please do.)&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/source-control-semantics-and.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109158478377281834'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109158478377281834'></link><author><name>Rusty</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109151337954556111</id><published>2004-08-03T00:43:00.000-05:00</published><updated>2004-08-03T01:09:39.546-05:00</updated><title type='text'>patience with microsoft wearing thin</title><content type='html'>I try to be tolerant of Microsoft.  I'd like to think they, like everyone else, have some good and some bad to them.  But why do they have to piss me of SO BADLY?&lt;br /&gt;&lt;br /&gt;Problem 1:  I'm running SQL Server 2000 and my database name has changed.. but Enterprise Manager has to freeze for five minutes because it can't find the database.  Why can't I just delete the configuration and add a new database connection?  Every time I try to right click on the old one to delete it, it hangs for another five minutes.  When I'm in a rush and it's late at night, my patience wears thin to the points where the blood vessels in my brain are about to burst from the combination of anger, frustration, and caffeine.&lt;br /&gt;&lt;br /&gt;Problem 2:  If you install VS.NET without first making sure IIS is installed, you're SOL.  A friend asked me what he could do.  So naturally, I figure go ahead and install/enable IIS.  Now, how does one configure it?  Reinstalling the whole damn VS.NET sound a little drastic to me.  So, we start with just reinstalling the .NET framework.  Doesn't work.  Then, we hit the Internet, spend 15 minutes sifting through garbage comments from dumbasses, then come across a couple things to try.  Run a script that comes with .NET to configure IIS to run ASP.NET applications.  Doesn't work.  So then we start looking at manual configuration options.  Too labor intensive.  So, I should have just told him to uninstall VS.NET and reinstall it from the beginning.  Would have saved us both the headache.&lt;br /&gt;&lt;br /&gt;Problem 3:  Something got corrupted somewhere in my system so Internet Explorer busted.  Every time IE launches a new window, the window comes up blank.  That is, no pop ups (even desirable ones) work on my system.  Everytime a popup comes up, I have to copy out the URL, open a new browser window, then paste it in and hope it runs.  This is just idiotic.  Asked the systems people to fix it for me.  One month later and still no dice.  My machine is hosed and it takes me 40 minutes to do something that should take me 10 minutes to do.&lt;br /&gt;&lt;br /&gt;On a sort of sad note, my laser printer, which I bought in 1990, finally gave out this week after more than a decade of service.  My old HP LaserJet IIIp.  Paid over $900 at the time (I don't know how much that is in 2004 dollars).  It's a heavy brick of a printer.  150 dpi.  A couple years ago I added a 1MB expansion card to upgrade it to 300 dpi.  All the lights on the circuit flickered while it was printing.  It was a great printer for text.  I will miss it.&lt;br /&gt;&lt;br /&gt;Ok, so let me tell you what I hate.  I hate JavaScript.  I hate Internet Explorer.  I hate SQL Server.  I hate .NET setup and configuration.  I hate slow Internet connections.  I hate broken ODBC connections.  I hate the file permission settings in Windows.  I hate classic ASP.  I hate how people think XML is the solution to all the world's problems.  I hate how everyone's trying to use something as limiting as a web browser to build industrial strength GUIs.  I hate my broken keyboard.  I hate the way my wrists hurt.&lt;br /&gt;&lt;br /&gt;I'm done whining now.  Thank you.  My next computer will be an Apple.  Think different.&lt;br /&gt;&lt;br /&gt; </content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/08/patience-with-microsoft-wearing-thin.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109151337954556111'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109151337954556111'></link><author><name>Kendrick</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109115200568073867</id><published>2004-07-29T19:51:00.000-05:00</published><updated>2004-07-29T21:06:10.373-05:00</updated><title type='text'>Chicken Wire</title><content type='html'>If you're in the software business, readable code is&amp;nbsp;your life blood.&amp;nbsp; There is no way&amp;nbsp;you can maintain your&amp;nbsp;business if you have&amp;nbsp;programmers writing code that nobody else can read.&amp;nbsp; Because if nobody can read it, nobody can support it.&amp;nbsp; Everyone&amp;nbsp;knows there's no such thing as perfect code, so unreadable code&amp;nbsp;leads to unsupportable code, which&amp;nbsp;in turn leads to very unhappy customers.&amp;nbsp; Or&amp;nbsp;worse, it means&amp;nbsp;your customers never get the product as you struggle to get all the bugs out. &lt;br /&gt;&lt;br /&gt;I had the happy&amp;nbsp;misfortune of wading through someone's unreadable code in search of a really nasty bug today.&amp;nbsp; The author, we'll call him "&lt;a href="http://www.vladtheimpaler.com/"&gt;Vlad the Impaler&lt;/a&gt;" for now, worked for the project in its early phases.&amp;nbsp; Being a consultant, he got canned for no apparent reason.&amp;nbsp; We were left with the code and could only hope that no bugs (or other such monsters)&amp;nbsp;surfaced from beneith the black waters.&amp;nbsp; We could sense its cold yellow eyes peering back at us though.&amp;nbsp;&amp;nbsp; And then one day it snapped at us and the words that come to mind are, "&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00000DMBB/002-8889589-1368858"&gt;you sunk my battleship&lt;/a&gt;." &lt;br /&gt;&lt;br /&gt;Most of the time, when a bug arises in someone else's code, it's pretty easy to track down.&amp;nbsp; You go through some log statements, you trace the code using a debugger...you get a sense for the flow of the code.&amp;nbsp; Not Vlad the Impaler's code.&amp;nbsp; This man has a singular gift for natural code obfuscation.&amp;nbsp; And this is in Java, a language that protects you from some of the more obviously idiotic coding habits.&amp;nbsp; His will to confuse prevailed, though as evidenced by some of these gems: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;/**&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;* Foo entity&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;*/&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;public class Foo implements Bar {&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;/////////////////////////////////////////&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; private Object obj1;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; private Object obj2;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; private Object obj3;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; public Foo() {&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj1 = null;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj2 = null;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj3 = null;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; }&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; public Foo(Object o) {&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this();&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... // more code&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp; }&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;}&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; There are a few items of note in this example (I've changed the names to protect the innocent).&amp;nbsp; First of all, remember that this is &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt;.&amp;nbsp; I know that Java is not everyone's Forte, but bear with me here.&amp;nbsp; Notice how well commented this class is.&amp;nbsp; By reading the top level comment, you should alreay know why this class exists.&amp;nbsp; And look at how he visually breaks up the monotony of the code by separating the class definition from the rest of the class.&amp;nbsp; Pure brilliance. &lt;br /&gt;&lt;br /&gt;Now let's step through the code a bit, shall we?&amp;nbsp; If you're not familiary with Java, all objects are set to null when they are first declared.&amp;nbsp; So we have three class members, each set to null by default.&amp;nbsp; Now look at what would happen if I were to call the constructor Foo(o).&amp;nbsp; The first step is to call another constructor, which in turn sets all of my already null objects to null.&amp;nbsp; Again, I am flabergasted by this work. &lt;br /&gt;&lt;br /&gt;I know this may seem like nit-picking to some, but I swear I have a point.&amp;nbsp; The point is, consultants should be paid on quality of work, not quantity.&amp;nbsp; I don't care if you write code that has some bugs in it.&amp;nbsp; All code does.&amp;nbsp; But if you write crap like this, I'm not paying you.&amp;nbsp; I'm not going to give you any money until you hand me code that someone else can learn in&amp;nbsp;a few hours.&amp;nbsp; You got a problem with that, &lt;a href="http://www.sit.wisc.edu/~kljense3/MrTvs.html"&gt;fool&lt;/a&gt;? &lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/07/chicken-wire.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109115200568073867'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109115200568073867'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109096364107477540</id><published>2004-07-27T15:55:00.000-05:00</published><updated>2004-07-27T16:27:21.073-05:00</updated><title type='text'>Tired of Visual Studio? Try CDT</title><content type='html'>Hey Guys!&lt;br /&gt;&lt;br /&gt;I just happened across a project called CDT which is an IDE for C++ based on the Eclipse environment!&lt;br /&gt;&lt;br /&gt;I haven't tried it yet but am looking forward to it!  Especially as an open-source replacement for Visual Studio.&lt;br /&gt;&lt;br /&gt;Here's the page:&lt;br /&gt;&lt;a href="http://download.eclipse.org/tools/cdt/docs/news/CDT20-News.htm"&gt;http://download.eclipse.org/tools/cdt/docs/news/CDT20-News.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You should be able to use any compiler you want but most people seem to use GCC which means that you have to set up MingW or Cygwin if you want to use Windows.&lt;br /&gt;&lt;br /&gt;Here's an old tutorial which may or may not be helpful (Also goes over setting up MingW):&lt;br /&gt;&lt;a href="http://www.cs.umanitoba.ca/%7Eeclipse/7-EclipseCDT.pdf"&gt;http://www.cs.umanitoba.ca/~eclipse/7-EclipseCDT.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Anybody know of any other good C++ compilers for Windows? &lt;br /&gt;Adrian</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/07/tired-of-visual-studio-try-cdt.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109096364107477540'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109096364107477540'></link><author><name>Adrian</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-109088058226586123</id><published>2004-07-26T15:58:00.000-05:00</published><updated>2004-07-26T17:23:02.266-05:00</updated><title type='text'>Thoughts on Pattern-Based Movement</title><content type='html'>Hi all,&lt;br /&gt; Wanted some help implementing patterned movement for BlasterX in C++.&lt;br /&gt; &lt;br /&gt; I was thinking about what Pattern-Based Movement (PBM) entails and how to do it and wrote up some of my thoughts here:&lt;br /&gt; &lt;a href="http://www.itdesignservices.com/wiki/index.php?wiki=ThoughtsOnPatternBasedMovement"&gt;http://www.itdesignservices.com/wiki/index.php?wiki=ThoughtsOnPatternBasedMovement&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; In Java we'd probably have an interface "Pattern" with one method "public Movement getNextMovement();". Moves would have a list of Patterns and would keep track of the current movement its on while also keeping track of its position in the overall list of patterns.&lt;br /&gt; &lt;br /&gt; The end result would be a Movement Object that contains orientation, position, and speed data.&lt;br /&gt; &lt;br /&gt; So how would we accomplish this in C++?&lt;br /&gt; &lt;br /&gt; An example of a Pattern is BigPattern.&lt;br /&gt; BigPattern = Movement1, PatternRep, Movement2, Movement3, PatternSmall&lt;br /&gt; PatternRep = Movement4, Movement4, Movement4, Movement4, Movement4&lt;br /&gt; PatternSmall = Movement5, Movement6, Movement5, Movement6&lt;br /&gt; &lt;br /&gt;  Any ideas? &lt;br /&gt; Adrian&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/07/thoughts-on-pattern-based-movement.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109088058226586123'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/109088058226586123'></link><author><name>Adrian</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-108947665804746227</id><published>2004-07-10T11:07:00.000-05:00</published><updated>2004-07-10T11:24:18.046-05:00</updated><title type='text'>Web Data Mining - Templated Data Retrieval</title><content type='html'>Request for Comment:&lt;br /&gt;I'm starting work on a new project that will download pages from the web and parse those pages for data.&lt;br /&gt;&lt;br /&gt;Know of any good designs for parsing data from raw html?  HTML layout and content will change so ideal design would accomodate this and isolate that making maintenance easy. &lt;br /&gt;&lt;br /&gt;Ultimately, I want to make a tool that would let a user choose which parts of a page are useful, map them to fields in a db, and output a template that the parsing/mining program will use to grab the data from a bunch of similar pages that I feed it.&lt;br /&gt;&lt;br /&gt;Spidering is not required as I've already taken care of downloading the pages to mine.&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/07/web-data-mining-templated-data.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108947665804746227'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108947665804746227'></link><author><name>Adrian</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-108845539860438024</id><published>2004-06-28T15:41:00.000-05:00</published><updated>2004-06-28T15:43:18.603-05:00</updated><title type='text'>Damn, We're Good</title><content type='html'>More evidence of excellent project management and tracking...To quote an actual engineer in a recent meeting:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"We've done everything that we can...probably more."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;If that's not knowing your status inside and out, I don't know what is.&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/06/damn-were-good.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108845539860438024'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108845539860438024'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-108810845649992961</id><published>2004-06-24T15:10:00.000-05:00</published><updated>2004-06-24T15:20:56.500-05:00</updated><title type='text'>Java Open Source??</title><content type='html'>&lt;a href="http://www.arnnet.com.au/index.php/id;1568877660;fp;16;fpid;0"&gt;Sparks May Fly at Open Source Java Debate&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sorry, but &lt;a href="http://www.sun.com"&gt;Sun&lt;/a&gt; and &lt;a href="http://java.sun.com"&gt;Java&lt;/a&gt; are one step ahead.  Or behind.  Anyway, they're not where you are, wherever that might be.  Java is not currently open source.  The question is, should it be made so?  Some people think so.  Some people (including myself) have no clue.  The lure of open source makes a compelling case: people who care about Java will make it do what they think it should do.  The downside?  How do they know what &lt;em&gt;I&lt;/em&gt; think it should do?  Will open source inhibit the plethora of Java-based technologies that are flurishing in the closed market (read JMX, JMS, EJB, JDO, etc)?  Again, I have no idea.  Let's see what comes out of &lt;a href="http://developers.sun.com/techtopics/mobility/pr/2004javaonetopten/"&gt;Java One&lt;/a&gt; next week (which I regrettably cannot attend due to stupid work deadlines).&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/06/java-open-source.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108810845649992961'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108810845649992961'></link><author><name>Komokuten</name></author></entry><entry><id>tag:blogger.com,1999:blog-7349107.post-108783213937470430</id><published>2004-06-21T10:31:00.000-05:00</published><updated>2004-06-21T10:54:08.186-05:00</updated><title type='text'>Don't use Java</title><content type='html'>From what I've been told this is a roundtable/commentary on software engineering.  I can't think of anything truly useful at the moment, but of course I wanted to grab all the attention so I need to make the first post.  Here's a statement that I'm sure will draw (warranted to some degree) backlash from others on the panel...&lt;br /&gt;&lt;br /&gt;Don't use Java.&lt;br /&gt;&lt;br /&gt;It's a bloated, ineloquent carnival of programming on crutches for people who can't manage their own memory.  &lt;br /&gt;&lt;br /&gt;There, I said it.</content><link rel='alternate' type='text/html' href='http://sutlermb.freeshell.org/jspp/2004/06/dont-use-java.html'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108783213937470430'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349107/posts/default/108783213937470430'></link><author><name>Rusty</name></author></entry></feed>