Programmable toaster ovens
"In contrast the Java community has stagnated, stuck with a language designed in a hurry to power toasters. "
Random image of the Banana Jr. in 'Bloom Country' which, when it's owner phoned up the support hotline as it was misbehaving, was put on the phone and the technician threatened it with its chips being used for programmable toaster ovens.
So much of Java seems to be very same-y, putting a web front on a database, EJB for scaling out. Tuple spaces are interesting; C4I systems are blackboard based, some of those fielded ten years or more years ago. It went mainstream in that market a decade ago.
Yahoo pipes is an in-browser graphical programming tool for connecting feeds and searches. My laptop isn't quite up to running it - very slow response to moving anything. But interesting none the less.
Getting started in C++ on Linux
I've recently updated my Ubuntu partition on my laptop to 6.10 Edgy Eft (presumably an orange newt rather than a religious movement), which plays much more nicely with its touch pad, and am using it about half the time - mostly I live in Firefox, which doesn't care much what the OS is.
I've hidden my Civilisation DVD at the office, so now have other things to waste time on, such as finding out how to program Linux. So I've downloaded Eclipse and am getting the C++ tools as I write. KDevelop doesn't find the help system on the Ubuntu I'm using (which is Gnome rather than KDE), and I think I need help.
Today at work I was trying to formulate a pi-calculus representation of the C++ networking library I'm maintaining, which has a concurrency bug I can't seem to locate. That was hard, so I'm falling back to creating an object syntax shorthand that can be simulated. I'll map the semantics to pi-calculus; it's all sugar, but means the representation that's animated in the simulator is closer to what's being modelled, and you don't have to use the rather complex forms for data structures and places presented in Milner's work.
Putting a CD of the installer image into the drive started package manager, which meant I could get rid of the errors in the install of graphviz-cairo, which had failed from Add Programs, and was causing other programs to fail to install.
Running Eclipse as a normal user doesn't allow you to add the C++ plugin; whereas normally programs ask you for permissions, Eclipse just fails.
Running Eclipse again using sudo, it has to download all the installer files again. But this time it seems to be able to write to the plugins directory where Eclipse is installed by default.
Restarting, still under super-user, seems to have C++ tools. HelloWorld.cpp compiles and runs.
Close and start under normal user account; it's forgotten my choices (which is not surprising), but appears to be all there.
Created a new C++ managed make project.
Opened a file on my Windows partition, chose save as, clicked OK assuming it would save to my project's workspace. Instead, Eclipse crashes.
I must say that the reason I have never used Eclipse is that each time I have done so - on Windows and OS X, it has fallen over far too quickly for me to get anything done with it. It's also got a pig-ugly UI. It looks like the same may be true on Ubuntu.
Restart Eclipse. File>Open doesn't locate previous project. Try to create project again, Eclipse says a project with that name already exists. Project > Open is greyed out, so I can't use that, though why I can't open the project if it exists, or create one with the same name if it doesn't.
Deleted the directory in the workspace, which was empty. Attempt to create a project with the name, but still Eclipse prevents me.
Exit Eclipse, find the empty project directory has re-appeared event though it could not be created, so delete it again and the workspace folder.
Start Eclipse, try to create project again, again it complains "A project with that name already exists in the workspace." A quick search says "This error appears when you have the folder with the same name as your project in your workspace." This is not the case.
Give up and call the project something else for now.
Exit and get an error reporting " Problems occurred while trying to save the state of the workbench."
Start Eclipse again. It reports that an error has occurred.
Remove workbench folder and try again, now Eclipse loads. Try and make project with desired name, and that works now.
Eclipse is saving workbench info in hidden folder in workspace; so the metadata there needs to change rather than just deleting the folder; deleting the folder does not cause an refresh of the metadata to ensure it is consistent.
So doing the obvious thing to erase a project doesn't work, and Eclipse requires that nothing else touches its project folders. Which is a bit of a problem, as I am wanting to use the same source folder layout for both Windows and Linux targets.
Open files from the Windows partition; they are read only, so it's not quite going to be as easy as I hoped. Use File>Save As and save first file to workspace, having to navigate there from /home/pete. Select second file (there are several), and it's forgotten where I am saving to. Instead of navigating, I enter the full path in the name box and hit Ok. After a brief pause, Eclipse crashes. F__k knows where my file went.
Copy files to workspace/project_name in command prompt. Attempt to add them to the project, get "Source is in the hierarchy of the destination." error. Try again, this time importing from the Windows partition directly. Select the overwrite without warning option, but get warnings that files are being overwritten. But now it seems to have imported the files.
Ok, so we are now compiling, and getting errors. The help option brings up a browser in a tiny sidebar which searches Google. Yay. Given I was using Eclipse in the hope of getting proper help, this is not good.
What's the conditional define for Linux?
g++ gives some nice warnings, for example member initialisation order in constructors
SSE doesn't compile as the option for g++ is not set. Eclipse shows a blank page for the help topic about setting makefile options.
Found g++ options in project properties (which is fairly obvious place). No option to enable SSE, so add option manually. Not too difficult this step.
The little hash table example compiles and works; tomorrow if it snows I'll be working at home rather than driving into the office, so I may try to get a basic simulator for a process calculus running under Linux.