I know this is a news bulletin to a lot of people but it’s not about pet deaths, visits to the vet, the cute girl you met at the club last night or (and this may be the real shocker) that cool new CD you like a lot. It’s supposed to be, and you agreed to this when you signed up, primarily about Java. I saw one new blog added in the last couple of days that had three Java items and eight that had nothing to do with Java. It’s definitely not for your political diatribes about pinko leftists, the far right, or those damn centrists.
Much of the modern blogging software has the concept of categories and can separate out one category of material from another. For example, I run MovableType and MT allows me to have a regular RSS feed that includes everything as well as a Java only feed that only includes items from the “Software Development In Java” category. If I don’t put it into that category, you still might see it on my homepage when you visit but you won’t see it popping up as a new item on JavaBlogs. This is not hard! If the channel becomes filled with so much detrius that we can’t find the cool nuggets anymore then it will have devolved into nothing more than a bad mailing list where I can’t reply directly and I get to hear about the minutia of people’s lives.
For some bizarre reason I see people write this little meme periodically about how C# and .NET will “catch-up” to where Java is now in the next year or two so while there might be social or philosophical reasons to go with one or the other, there won’t be any tech reasons.
Whoa, whoa whoa, whoa whoa. I hope that I didn’t give the impression that I believed any such nonsense the other day when I gave my list of reasons I hope .NET fails. I just said that I don’t think the arguments get anybody anywhere. But if you are deluding yourself into believing that .NET is somehow going to magically “catch-up” to where Java is today in the next year, 18 months or even longer, you need to open your eyes.
What follows is a quick dump from an outline I keep using the Java Outline Editor. I call it my “Java Toolbox” and I keep and categorize links to technology that looks promising in it, this is a short list that skips mounds of stuff I have never had reason to look at and it also blows by reams of excellent commercial tools as well. Look at the length of this list and imagine the veritable army of open source .NET developers (who are apparently going to have to thicken from etherial vapor because I haven’t seen them yet) required to build all of this stuff. But, and here’s the part that I can’t seem to figure out why people don’t see it, do you think that Java developers are just going to sit there and watch them do it? Are we just supposed to halt all development and sit on our hands for a couple of years so they can catch-up? No. Catching-up implies that they have to be able at some point to outpace us and I’ve yet to see anything that has proven to me that that is even a possibility.
My Java Toolbox
Artificial Intelligence/Expert Systems
JGAP: The Java Genetic Algorithms Package
JOONE – Java Object Oriented Neural Engine
Surfboard Proxy Framework
News retrieval from hundreds of websites via their RSS syndication files.
Generation of reports from databases or other data sources.
The Bouncy Castle Crypto API
Tools for creating your logs in the first place and tools for looking at the generated logs.
Now bundled with Log4J (see Logging).
Look and Feel
Want to change the look of your Java application. Here are some ways to do it.
Java Conduit Manager (for Palm Conduits)
Handles loose coupling so you can build plug-ins.
VorbisSPI, JavaLayer, jlGui
There are more object to XML bindings in existence than you can even count. This a far from complete list.
Remote Procedure Calls
Apache XML-RPC (formerly the Helma XML-RPC library)
JMX offers a simple way for you to package server components so you can make them administrable locally or remotely. JBoss and many other server packages now make their components MBeans (managable beans) just to get this functionality.
Consider it seriously for any server software you might be building.
JMX Homepage (Reference JMX Implementation Available Here)
AdventNet Agent Toolkit Java/JMX Edition
Jakarta Commons Workflow Project
The schemes of the RIAA to combat piracy are growing increasingly strident and accusatory of everybody: Wired News: RIAA’s Rosen Sets Sights on ISPs
Eventually the music industry that funds this organization will shut it down and create a new one with a new name imagining that they can somehow get a fresh start and rub some of the stain off themselves. In the meantime you can enjoy it for the sheer circus value of it.
The best quote is the one from the end of the article, “I think we might need to stop fighting fire with fire and figure out something new to do, or we will end up with lots of ex-customers who swap files just out of spite.” Oh pal, you’re there, you reached that point for me when you shut down Napster only to let music companies open up new music “services” that treat me like a thief and an ATM for you all at the same time. I was buying CDs for my wife, my kids, myself regularly. When Christmas came around this year I didn’t buy any for my wife. None. I’m hoping that anything she wants, she downloads. I know I’m going to.
I just looked at CVS for HotSheet and I haven’t checked anything in since July of last year. Which sounds about right because I made some mistakes in writing it initially and then I got it to a state where it kind of limped along well enough for me to use it every day so there wasn’t a huge drive to do all the improvements it needs.
But I’m finding myself annoyed by the problems it has and I’m wanting it to start realizing more of its potential so you can expect a new version soon. It will have at least the following changes:
- The item history is currently staying around even if you delete the item history file. This odd quirk is a side effect of my using serialization to save off my internal structures and a minor bug in my code playing off of each other. [100% done]
- The default browser that launches for Unix/Linux users is now Mozilla. Since most users run the software through Java Web Start, this won’t change things an iota for you. Only if you were doing development with the code and running it from the command line or from the Ant buildfile. [100% done]
- Many channels were including HTML tags right in their RSS entries. This made the results almost impossible to read when you saw them rendered in HotSheet. New code in the RSS library allows for getting either the raw descriptions or the description with all tags removed and HotSheet now uses the latter. [100% done]
- Prevayler will be used for a new version of the item store, channel store, and item history. This will make a huge difference in HotSheet’s ability to deal with crashes or other problems. Fortunately, due to how the first version of the RSS library was written, this isn’t going to be too big a deal. [0% done]
- I went on a mission to cut as much as possible from the download so it would be a quicker download and I wouldn’t expend as much bandwidth for new people trying it out. I dropped quite a bit by removing all the XML libraries that are now part of the Java Runtime and even more by dropping the scripting support that isn’t even properly incorporated anyway. As a result it should be a lot trimmer and faster to install than before. If I was willing to cut my usage of Log4J and instead substitute the J2SE 1.4 logging I would have cut it from 4.2MB to .2MB. But I’m not willing to do that so you’ll have to settle for a .4MB download instead. [100% done]
For some reason, one guy chose to fire up a flame war this week by writing 101 reasons why Java is better than .NET. Sadly, this is much like my doing a list of 101 reasons why cats are better than dogs. It’s likely to “get a response” and, ultimately, it’s unlikely to sway anyone’s opinion one way or the other (or at least anybody who you care whether their opinion was swayed).
Here’s one of the first “rebuttals” I’ve seen to the list and it tries to go point by point through the first list and say nah, nah, nah to most of it. Pretty much what you would expect and it features the equally non-inflamatory title of “25 pathetic attempts to make .NET look bad”. Lovely…
So normally I’d just blow all this by as yet another useless flamewar like the old Amiga vs. Atari ST, Mac vs. Windows, etc. etc. of old but I think I’ve got a perspective that might be a little different on this. You see, I used to do Windows. Not in a little way, in a big way. I started developing for Windows when Windows 3.0 was in beta and I didn’t stop until mid 2000. In that time I developed software on Windows 3.0, 3.1, 3.1 Multimedia Edition, 95, 98, NT, and 2000. I used Visual Basic from 1.0 on. I developed in C++ using Borland and Microsoft tools. I’ve developed using libraries and APIs that Microsoft put together from COM and DCOM to TAPI and DirectX. I can go on and on about this but the point is that I’ve used Microsoft tools, software, and development kits up one side and down the other and because I worked for a long time at Tandy (now RadioShack) and Tandy worked closely with Microsoft I did a lot of it with beta stuff that the public never saw.
On the other hand, I only started using Java tentatively in 2000 and really went full bore with it when I moved to a .COM in 2001 so my history with it is relatively short. Nevertheless, the differences between the two environments is striking. There’s an old phrase something like, “there’s no religious man like the converted sinner.” I guess that describes me in this case. I see what the hell was wrong with staying with Microsoft so long and now I feel like I should witness for a bit.
So let me look at this list from my perspective as:
Lots of reasons I want .NET to fail and fail badly
- It’s benefits a criminal organization. Not one that’s been found guilty of crimes once or maybe twice, but lots and lots of times. Those crimes are many and varied, but here’s just a few of them: Stac Electronics v. Microsoft, DOJ v. Microsoft, Sun v. Microsoft.
P.S. If you want to split hairs, Stac v. Microsoft isn’t a criminal action, it’s doesn’t stem from a criminal abuse of their monopoly like the other two cases. Instead it was just a case of a small company being driven out of business by willful patent infringement, theft of trade secrets, etc.
- Microsoft isn’t just one thing anymore. It’s too damn big for that. I’m sure even Bill himself knows better than to think that he truly controls the whole ship because it’s become big enough that he can’t possibly know all the projects, people, etc. anymore. But even a really large company still has a kind of collective personality that it exudes and a large part of the personality both internal and external to Microsoft for many years now is that of a total control freak.
If they don’t own it, if they don’t control it, if they didn’t create it, if it doesn’t have a broad stamp from Microsoft on it, then they don’t want it. Sometimes it’s sufficient for the thing to merely exist and they’ll refuse to acknowledge it, other times they need to actively stamp it out because they can’t control it.
When was the last time you can remember Microsoft saying they supported a standard? That is, not something they invented and submitted a RFC for, an actual, take it off the shelf and re-implement it without renaming it or “improving” it so it doesn’t work with anybody else standard. C++? Basic? HTML? A video or audio codec? Java? Anything?
I’m sure there’s something, somebody will point out their excellent support for TCP/IP or something and I’m sure that’s true. But if you were to look at Microsoft as a person in your life, you’d wonder what was wrong with him or her such that so much had to be controlled by that person.
- When your business is selling the operating systems that 90+% of everybody uses, software development tools should not be a profit center.
Why should I have to plunk down a couple of thousand dollars for a “universal subscription” in order to have access to compilers and basic development information? Sun doesn’t have to do that? On this point I’ll quote from the .NET “rebuttal” that I linked to above, “For non-profit use VS.NET can be had pretty cheaply, especially if you know anyone that is in college somewhere.” Pretty cheaply? For a non-profit (that means charities, churches, universities, the hobbiest who is going to give away his work for FREE)… pretty cheaply? Wow. That is well and truly pathetic. To try and justify it, and say, oh well, you can try to scam an educational discount so it won’t be so dear, is even more pathetic.
- Marketing. Have you been “lucky” enough to catch one of the .NET commercials with William H. Gacy telling you how great it is without really ever telling you anything about it? Microsoft doesn’t trust .NET to stand on its own technical merits and it knows it may go like cod-liver oil down the gullets of a lot of people who have seen how the company works behind closed doors even if it were the tech shiznit.
So they are going to pull a page out of Intel’s bum-bum-buh-bum “Intel Inside” playbook and try to sell the brand like it’s sneakers and cola. Trust us, you’ll look cool if you use it, and we’ll keep hammering the brand on TV so somebody who doesn’t have much tech savvy in your organization will ask you if you are using it, or have plans to port to it, or whatever, even if he hasn’t got a clue what “it” is in this case.
- They don’t trust you. They don’t like what they can’t control and they can’t control you. They can try and they always will keep trying but ultimately you are going to see them keep trying to do things and always keep a step towards the door just so they can bolt if they have to. Want to see what I mean? Go visit GotDotNet sometime if you haven’t already been there. It’s the grassroots community website that Microsoft put up to support .NET just in case there wasn’t any grassroots community who actually wanted to do it. Or maybe just in case there was and they couldn’t control it.
Ever been to SourceForge? Of course you have, everybody has because that’s one of the hubs of all open source projects. You can go there and get the source of thousands of cool open source projects and it really serves the community well. There’s even hundreds of projects now that list C# among their programming languages. So why did Microsoft feel compelled to create their own GotDotNet Workspaces that is clearly just a ripoff of SourceForge?
A few reasons are fairly clear: First, at many of their workspaces you don’t get in unless they know who you are. Ever been stopped at SourceForge and asked for a name and password to look at a project? What about download binaries or source? No? At GotDotNet you will, lots of projects are marked with a lock. Second, forget about all those messy licenses that Microsoft might not approve of, you don’t need to worry your little head about BSD vs. GPL vs. LGPL. You’ve got the one true workspace license that you have to agree to, or else you won’t be putting your project there. Lastly, well it’s kind of obvious, but it’s really all about control isn’t it. After all, if you aren’t under their thumb, that has to be a bad thing. So a SourceForge that they control is pretty much a requirement, isn’t it?
- It’s a really sad way for a lot of people to waste a whole lot of time rebuilding that which already exists. Wouldn’t the whole computing world be a lot better if there wasn’t a team of people, maybe a couple of teams of people building complete copies of .NET for other platforms? If those same people were working on giving us new libraries and new tools for an already existing language instead of pouring in the thousands of man hours it’s going to take to build a copy of the C# compiler or a .NET version of Ant and JUnit?
In the end, we’ll all just be left with another way to do the exact same thing only in a different language. Lord knows the world benefits now from being unable to share media between France, Germany, Italy, Spain, the US, and Japan because we can’t all speak the same language. I benefit every day from the fact that I can’t read a Japanese manga I might enjoy or understand a TV show from Europe. Once you are done building this tower, go build a few more right beside it using Perl, Python, and Ruby too. They’re all trailing behind in certain areas, we need to make sure the same set of stuff is reinvented and rewritten for all of them too.
I’m tired now and I’m sure I can probably come up with some more stuff to add to rant but it’s not really going to change anything anyway.
I’m always looking for some software that will let me process XML data (or any data for that matter) using a tree of processes that may produce multiple outputs from a single input and that may use the by-products of intermediate steps in later steps. With software that has that ability and that also allows me to create new processes that can be inserted into the tree, I can do pretty much anything I want with data.
Here’s some of the projects I’ve been collecting pointers to in hopes that one of them would head in what I consider the “right” directions. So far none of the top three has appealed to me much but there’s a new one called Transmorpher in town that I’m looking at now. A brief glance at the white paper describing it makes it look more appealing than what I’ve looked at before so keep your fingers crossed and maybe we’ll have something really useful for data processing tasks of all kinds.
Before you make the mistake of purchasing TurboTax this year be sure you understand that you are not buying their software, you are just “licensing” it. Intuit TurboTax Technical Support
Yup. I thought it was really neat when I got a CD case last month with the new TurboTax in it in my mailbox. I thought that somebody had finally clued into the fact that you can send a disc out for a small amount and get people to try out your product. They are especially likely to when it’s something they’ve bought several years in a row. But I opened it up to find that the “deal” they were offering a long-time customer was worse than what I could get from going to the store. Thanks a lot Intuit.
But I made the mistake of thinking that was as far as the insult went. I was willing to forgive the attempt to gouge me and still buy the product until I found out that they’ve added a Microsoft Windows XP like “activation” system to the new software. So your installation is tied to a specific machine and you can’t give it to anyone else or sell it after you are done using it (even if you uninstall)… So just kiss the doctrine of “first sale” goodbye. You no longer “own” the product, you merely “license” it now for just as much as you used to pay to buy it.
Whil Whim likens it to buying a book that you can only use with one lamp. Woe unto you should you change the lightbulb, break the lamp, or wish to get rid of the book but not the lamp.
All I can say now is “%&@) YOU” Intuit. I’m one long time customer who will NOT buy this years product or next years or any other years as long as this is the way you run things.
Bravo, bravo, bravo!!! One thing that I’ve encountered over and over with new users (and even some more sophisticated users who normally work with only a couple of applications) is that they do not understand folders, drives, etc. They get confused when navigating the tree of files that resides on their file system.
Oh sure, they get used to it eventually, but people can adjust to lots of stuff that’s not necessarily very good eventually (like using abstract phone numbers to call people, ask yourself, does that really make any sense or is it just what you are used to). This is one of the first attempts I’ve seen to break free of that and produce something different. newdocms – a new document management system (Manuel Arriaga) is a file system where people store things with attributes attached and then search for them again based on those same attributes.
Because much of what people run on Linux is open source, the author has already been able to integrate his system into KDE (which is under quite a few Linux applications) and he’s looking for volunteers to integrate it into a couple of other places that would give widespread support for it under Linux.