Arggggg!
I’d seen a link to this a few days ago and it was presented in such a way that it seemed like an intelligent discussion of the relative merits of C++ and Java – certainly the reply I read was. I didn’t have time to read it until now and I’m extremely disappointed. If I could remember who linked to that rant I’d probably give up reading their blog. I’m not going to bother rebutting most of the article, there are plenty of incorrect statements in it just as there are plenty of incorrect statements in every article like it comparing any two languages. How hard is it to make people understand that they should choose the right language for the right job? XSLT is a good language for manipulating XML, Java is a good language for cross platform work, high level apps, applets and a bunch of other stuff, C is good for writing low level stuff, speed critical apps (or speed critical sections of apps), as is assembly, C++ is good for a bunch of stuff, perl is great for a bunch of stuff particularly quick little scripts to manipulate text files, shell scripts are great if you need to perform a bunch of file operations or combine a bunch of small pre-existing tools. Prolog is good if you need a solid logic processing/reasoning engine, HyperCard is fantastic if you want an easy to comprehend language with extremely rapid development, MetaCard is great if you need a cross-platform HyperCard or just hit up against HyperCard’s limits. Javascript is a great language if you need to add dynamism to web pages, Visual Basic is great if you want a rapid prototyping language or a simple GUI tool, .Net is probably even useful if you can make the #*(#@ thing work… I’ve programmed in all of those languages and probably many more, they all have strong points and weak points but if you want to succeed at using any of them, you have to stop trying to use them like they were your “favourite” language. You will always think Java is crap if you try to write C or C++ code in it – it has a different paradigm and a different way of doing things. By the same token you will always hate .Net if you try to write Java code in it (trust me I hate .Net because of that). The idea that if you can program in one language you can program in any language by just learning the syntax is completely wrong. You have to learn the syntax, then you have to learn the paradigm, then you have to learn the best practices, then you have to gain experience and finally you have to accept the philosophy of the language and stop trying to beat it into submission. In short, learning a new language is just that – a learning process. You can’t expect to know everything and you must go into it assuming nothing and learn from scratch – everything you have come to expect and assume about your programming language may have changed and you need to find out if it has or not. If you find yourself criticising the programming language constantly you’re doing it wrong. Thousands of people are most likely happily using that exact same programming language without cursing and swearing – do you really think you know better than all of them?
Strange Bug Reports
Sun released Java 1.4.2_04 – a bugfix release today. Reading through the list of fixed bugs I noticed this one (log in required). Here’s the bit that caught my eye:
Expected results: Java would work for these tests.
Note:
- Mature teen/TCP, Adult/TCP and Adult/modem are working for the same pages.
- Mature teen/modem is working when IE option Java: Use Java 2 v.1.4.1_02 is unchecked.
- Mature teen/modem is working when other JRE version (e.g. 1.4.0_03) The bug is complaining about Java not detecting the proxies that are set by a dial-in porn service. I imagine that was a very well tested bug fix….
Musical Update
I haven’t had a lot of time to continue writing my musical but none the less it is progressing. I’m pretty happy with the first act now and have a plan set out for the second. I’m a little concerned that it might be a bit depressing though. It can be tough to confront issues like adoption, abuse, homelessness and alcoholism without becoming very depressing. At the same time it’s important not to gloss over the issues or the whole musical just becomes too surreal or worse, becomes a Disney movie…. It’s interesting to see a distinct style developing in my writing as well with a number of recurring techniques being used, mostly subconsciously, through the musical. I’m particularly pleased to see that these techniques aren’t just a copy of things I’ve seen elsewhere – they’re actually fairly unique concepts, if not in themselves, in the way they are used. Still, the greatest challenge for me will be weeding out all the really cheesy lines that seemed like a good idea at the time but just don’t work when actually spoken by the character. That task is yet to come. Anyway, back to the MarchFest website, the program went up this evening.
MarchFest Update
Things are rocking along with MarchFest 2004 though it, combined with product releases at work, have been keeping me extremely busy. On the plus side the performer list is now up at the MarchFest website. Information on the fashion parade and art gallery to come soon hopefully. Don’t forget to mark your diaries to attend on the 20th!
A Slight Oversight
Some guys noticed that there’s RFID tags in US currency. All very scary and such, but there’s one quote that shows a bit of a lack of research:
What we resent is the fact that the government or a corporation can track our ‘cash’. Credit purchases and check purchases have been tracked for years, but cash was not traceble until now… Maybe US currency doesn’t have this, but on every Australian bank note, there’s a unique serial number – has been for many, many years. This is used to track cash. It’s simple and effective, banks will often scan the serial number to ensure the notes aren’t on the stolen list and the numbers are capable of being read automatically. RFID tags just mean you can do it at a distance, but have the down side of not actually being able to tell you who has the note or what they’re doing with it because of the large number of notes that are likely to be around at the time (think supermarket checkouts). In other words, your cash transactions are still effectively untraceable.
Java Coding Style
java.net blogger Malcom Davis comments on why you should use the Sun Java coding style. The first comment is the perfect example of “ego” that he talks about:
Why not adopt the Sun coding conventions? Simple – because they are derived from an antiquated and BAD way of coding.
There are very good reasons why C programmers moved away from the coding styles used by Sun, and the excuse that ‘modern IDEs have code colouring and brace matcing, etc.’ is NOT a good reason to have to rely on it. Gah! Could there be a more reactionary, inflammatory and unsubstantiated comment? How does the poster know what the Java coding convention was derived from. What makes it “bad”? Why is an antiquated coding style not a good thing? Why exactly did C programmers move away from the coding styles used by Sun? What evidence is there that C programmers actually did start of such a coding style and move away from it? What problem does code colouring and brace matching supposedly not overcome? In other words, why should I believe some random comment on a web page which provides no solid argument, no reasoning, no attempt at justification and absolutely no facts? As Malcom noted:
Suprise Inspections
My house mate informed me this afternoon that the land lord would be coming around tomorrow for an inspection. Hilarity is currently ensuing. It random matters of interest: This was interesting – living muscle tissue powered nanodevices – and I was always told to think big…. ant has proved itself much easier to set up multiproject builds than maven which is kind of unfortunate since maven forces you into performing multiproject builds quite a lot. Might have to create a decent maven plugin to handle multiproject builds automatically instead of manually having to set up the reactor. Combining the generated website and producing a combined distribution seems to be the key to this. Obfuscation is evil. I spent all day trying to get it to work for me. Stripping out unused classes (including in dependant libraries) automatically is also evil but not quite as much so. Someone really needs to slap proguard and retroguard around a bit to share some features. Currently proguard has a brilliant config file syntax but renders itself completely useless due to the fact that it can’t handle resources correctly while obfuscating (still good for jar shrinking though) – retroguard on the other hand can’t handle SomeClass.class syntax (which proguard can) and has an awful configuration file syntax (no wildcards). I had to write an ant task to automatically list all the classes in org.apache.xerces since it really doesn’t like being obfuscated. For the record, we obfuscate whatever we can because it noticably shrinks the resulting jar file size by changing things like MyVeryLongMethodName to a. Think of it as lossy compression for java classes. Tomorrow I plan to spend most of the day swearing about a bug which is causing our applet to stop repainting after a certain point in time. We only managed to reliably replicate it this afternoon and the process of replication is still pretty difficult. On the plus side, we’re still on track to release the product last Friday. :S
How To Enjoy Having 1 Mouse Button
Sylvain Wallez comments on his new PowerBook hardware and among the good and bad he’s found are a couple of comments that come up a lot but shouldn’t. There’s three problems Sylvain is running into that I want to take a look at:
- No page up/down
- No scroll wheel
- One mouse button The solution for all three problems is to keep your left hand on the keyboard. When you’re typing, keep both hands on the home row (asdfghjkl;), when you use the mouse, slide *both* hands down, your right hand slides down to the track pad and your left hand slides down to sit on it’s “mousing” home row – (fn, ctrl, option, command). You now instantly have access to your second mouse button by pressing down the control key – it’s actually much faster and easier than a real second mouse button because you don’t have to turn your thumb under to reach the second mouse button. Now, the next thing to notice is that on a laptop, moving between the keyboard and the trackpad is a very cheap operation (unlike when using an external mouse), the two things are very close together. This is most noticeable when moving from the trackpad to keys at the bottom of the keyboard – like the arrow keys. So when you need to scroll, flick your right hand up to the arrow keys and suddenly you have access to scrolling and page up/down (fn on the left hand and the up/down arrow). This falls down when your editing documents rather than reading web pages etc because the up down arrow just moves the cursor and not the view (though some programs use command-up to move the view and not the caret) – page up/down still work but are no good for careful positioning. This is *far* better than using the side of the trackpad as a scroll wheel though (at least as far as I’ve found). All this probably takes a bit of getting used to, but once your fingers get used to it you’ll probably find that you don’t miss the scroll wheel or second mouse button. Even when I do have an external mouse plugged into my laptop I use the trackpad because it’s so much closer, faster and easier. If however, I have my laptop out of reach or closed and am using an external keyboard and mouse I’m driven absolutely nuts by the lack of scroll wheel and second mouse buttons. But wait! There’s more! Now that you’ve got your left hand on the bottom left of your keyboard you’re ready to fully appreciate the power of keyboard shortcuts. Ever wonder why undo, cut, copy and paste are Z,X,C,V – they’re right there in the bottom left of the keyboard for easy access. Save is a flick of the fingers away, you can bring up the find dialog while your right hand flicks back up to the keyboard and starting typing immediately. If you’re a command tab junky, that’s close by for you as well, though once you realise just how close the track pad is (and get used to flicking over to it) you probably won’t be so addicted to command tab anyway (but don’t loose the skill, it’s still essential on desktops). Lock your dock down so it doesn’t shuffle around all the time and your mouse becomes the ultimate switching utility (short of rapidly switching between two applications which command-tab is king of). Then start mapping special functions to things command click, shift click, command-shift-click, command-control-click, command-option-click, option-control-click, function-control-click, command-control-function-option-click, oi! How many buttons do you need? :) Oh yes, learn to use the escape key – it will cancel pretty much any dialog and a whole bunch of other things too. Plus with your left hand always on the keyboard, it’s really fast and easy to reach. Now if you haven’t given up on me being a stark raving lunatic yet, here’s the tip that every mac user should know about but much to my surprise don’t seem to. Command-H. Try it! The current application hides instantly letting you access whatever is behind it. Unlike minimizing though, this hides all the applications windows and most importantly they all come back at once if you click the application in the dock or command-tab to the app. You can also use command-option-H to hide all other applications, though I’m not sure why you’d bother. Let me repeat myself in bigger type for those who only skim this far down:
Command-H is your friend. Minimizing is for wimps. Okay, that was a bit antagonistic. I’ll stop now.
Number portability fees
I received my final bill from Optus the other day and in amongst all the crap they send is a notice that from the 15th April 2004 an $8 fee will apply “to any customer who switches their mobile phone number from Optus to another carrier or service provider”. That’s pretty low. The number portability legislation came in to encourage competition between mobile phone providers – effectively breaking down some of the barriers to switching. Now admittedly an $8 fee probably isn’t going to stop someone from switching but it’s still pretty low I think. Fortunately, I changed providers before that fee came in.
MarchFest on the Web
I mentioned earlier that MarchFest was coming up. The website has now gone live. If you’re in Brisbane on the 20th of March why not drop by and check out some of Brisbane’s finest local talent?
Real Estate
Why is it that with such a housing boom going on it’s so hard to find a decent place to rent? My housemate and I are looking for a new place to live, house, townhouse, unit, apartment we don’t care. It just needs to be in a reasonable location (in Brisbane that generally equates to somewhere near the SE freeway, or reasonably close to the city), about 2 bedrooms (one can even be really small), an office and space for 2 cars to park (under cover optional) . The $200 to $250 price point is about right for us. Trouble is, we just can’t seem to find a place that meets even those pretty loose requirements. Well actually we did find one place that looked perfect but it had already been taken. Really frustrating that the real estate agent made me go out there to take a look at the place before they bothered to tell me it was taken too. There’s one other option which has some potential. Have to call the real estate agent tomorrow and find out if it’s taken or not. So, anyone got a place in Brisbane they want to rent to two fine upstanding young business men?
Other things I didn’t know
Continuing on the “things I didn’t know” theme: I didn’t know there was a kext for OS X that let you mount ext2 and ext3 drives. Very nice to discover, now not only can Linux finally read and write HFS+ drives but OS X can read and write linux drives. Kudos to the people involved.