MacBook, defective by design banner

title:
Put the knife down and take a green herb, dude.


descrip:

One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com

Using 89% of the same design the blog had in 2001.

FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike, always wear white.

As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green.

x

MarkUpDown is the best Markdown editor for professionals on Windows 10.

It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support.

Features you won't find anywhere else include...

You've wasted more than $15 of your time looking for a great Markdown editor.

Stop looking. MarkUpDown is the app you're looking for.

Learn more or head over to the 'Store now!

Sunday, November 28, 2004

http://tinyurl.com/4958s

Tiny URLs iz good.

posted by ruffin at 11/28/2004 04:09:00 PM
Saturday, November 27, 2004

This could be a very good idea for the geeky --

Description:
LDBC (Liberty Data Base Connectivity) is a JDBC driver that provides vendor-independent database access. With LDBC, your application will just work on all major databases and you don't have to change any source code. LDBC is based on ANSI-SQL and JDBC.

Right now, when you move from one JDBC'd rdbms to another, you often have to tweak the crud outta your SQL. T-SQL and PL/SQL, believe it or not, do not *exactly* support ANSI SQL. Rather, there are things (autoincrement id fields, functions, bracket use, etc) that are implemented differently.

If there was a lib that allowed you to keep the same SQL (and perhaps supported a bit past ANSI) and truly just change what dbms you're pointing to, well, now that would be nice. Say in my new hsql friendly apps -- I build against hsql for those without rdbms-es on their box, but if someone wants to hook up to an enterprise dbms *poof*, with this the user/admin is a checkbox and a URL away from doing just that.

Very pie in the sky. :^)

posted by ruffin at 11/27/2004 10:49:00 AM

If you haven't looked at Google's beta update to their usenet interface, take a look. Pretty buggy right now, but a nice usenet client is definitely in the works there. Between gmail and this -- and I assume perhaps one day integrated Blogger as well -- Google is reinventing the web, and, strangely (though intelligently) doing it within the browser. I would've guessed for specialized thick clients to come next...

eWeek has a good Firefox review. One of their biggest issues with Firefox is the lack of enterprise management tools, which is (afaik) a good point. What's interesting is that *NIX-land apparently has never missed this sort of system-wide configuration util. What does that say about *NIX culture versus Windows? Reminds me a bit of the *NIX "RTFM/HOWTO Complex", where learning *NIX from the *NIX community (which really is the only way) often becomes a bit of a Catch-22. If Apple doesn't get too caught up in iPod-land, perhaps they'll fix the issue?

Their other eWeek complaint was essentially lack of ActiveX support, which isn't quite fair (I believe you can use a plug-in for ActiveX, though I doubt the integration is seemless), but that seems to be arguing that not having a structure that lends itself to security holes is a bad thing. They do have a point on the other half of the "it doesn't act like IE" complaint -- there are poorly written web apps that won't display/behave correctly out of IE (and by that I often mean IE on Windows), but this issue is as much that people learn to do html for IE only when it's barely more trouble to make xbrowser code.

And finally, been hacking this week. One good 4 hour chunk and two longer periods with frequent interruption. Have a good word-culler/index maker going. For the backend I'm using hsql. Not nearly as user friendly as MS-SQL Server and perhaps not even as friendly as Oracle in some resepects, but I've been able to kludge it enough to get everything I need going with JDBC and SQuirreL. Finally -- a good, xplat, open source, JDBC compliant, license-free rdbms. The sky's the proverbial limit.

Look -- let me editorialize this... If your app's development requires shooting for the latest and greatest libraries and OSes and you notice you have to lay out for new dev hardware to keep up every year or two, you're supporting the worst sort of consumerism. For full disclosure, I purchased another Apple computer within the last two months (month?), so I'm being somewhat hypocritical, but here's the point -- When I design software, I hope I don't require WinXP or Mac OS X 10.3. The best way I've found to provide client/GUI'd software to the widest range of OSes and hardware is to shoot for Java 1.1. There's no 16 bit vs. 32 bit issue like in VB; there's no xplat issue really to speak of. With Java, you can even write intelligently enough to relatively easily provide interfaces that scale and present different combinations of parts depending on the JRE a user has installed. The same app can be run on Mac OS 8.1 through Longhorn and Mad Hatter, and can take advantage of all the latest and greatest tricks where possible with smartly written, shared backend code and two GUIs (one AWT for "everyone" and one replacing some AWT objects with Swing/SWT, as needed, even combining the two if you'd like (which, surprisingly, doesn't even look that wacky in native LaF anymore)).

If you're using or are contributing to GNU software b/c you dislike Microsoft, embrace and extend that belief to include the software you write as much as possible. Do your best to write software that will truly run anywhere. Just because it seems the cycle of continual "hardware refresh" can't be broken doesn't mean you have to contribute to it.

(PS -- this is one reason Motif software, etc, really impresses me -- you can run some really old stuff even on my Mac through X11. Looks crappy, but runs nicely, and that's what it's all about. Now if someone could get My Mail Handler working for me...)

posted by ruffin at 11/27/2004 10:06:00 AM
Saturday, November 20, 2004

I define brilliance as the ability to create something extraordinary out of what seems to be eminently ordinary to everyone else. Can you imagine the first person who decided to tie sticks together to make them easier to carry? Until then, who hadn't seen a vine bind up trees? So many "inventions" are right there in front of us, and it takes a moment of brilliant insight to see how to put the pieces together the right way.

I bought a bike this year to get around a parking lot-poor campus a bit more quickly as I work on my graduate degree. At times I'm running a few minutes late, and biking from my parking spot makes a 15 minute walk into a 5-7 minute sprint on a bike. I wasn't going to be using my bike every day (meaning it was going to be sitting for days at a time), so I didn't want to bring in my shocked-up, mid-range mountain bike. Off to Wal-Mart for a $50 special nobody would ever think of stealing. Right?

Imagine my surprise here at the end of the semester when I walk up to the bike rack and notice among the score of locked bikes *not* that my bike's gone, but that its front wheel had been stolen! What the heck?! The bike itself is a piece of relative junk (the seat stopped working after about two weeks and the brakes don't really stop me anymore). Why would anyone steal a wheel that's not even "quick-release"? For the amount of dough you'd get for that wheel, you'd've been better off (and would've risked less) panhandling. Nobody would put that wheel on a nice enough bike they'd be paying top dollar for wheels.

I took the front tire off of my "real" bike this morning to lend to my Wal-Mart special, and as I walked up to the now nearly empty rack (it's a weekend) all was clear. Sitting next to my front-wheel-less bike was -- you guessed it -- a bikeless-front-wheel. Brilliant. This was not the safe dorm rack that I normally use for long-term stays, so I can't say when the would-be larcenist came on the scene s/he didn't have two bikes begging to be combined this way, but it's really pretty smart. Take the top off of an expensive bike that's [for now] inexplicably attached only by the front wheel, steal the defenseless front wheel from the Wal-Mart special, bike off, and profit.

Even better, I notice today that as I try to lock up my lock around my bike's frame and front wheel (it's a nice one this time, after all), I can't. It's not long enough (it's one of those 8" u-bolt thingamahbobs). But you can give yourself the optical illusion of having tied 'em both up by putting the lock through the front wheel and around the fork which, as you may have already guessed (good guesser by now), means *only your front wheel* is locked down. Ha! It's a continual vortex. Either you use the u-bolt and expose your front wheel (or everything but!) or you buy a cable lock that can wrap around the frame and wheel, but be easily cut by cable cutters, releasing the whole bike. Or you have to use two locks, which for whatever reason is too annoying for me and apparently anyone else to consider (at least until I lose another wheel). It's a great system.

Programming is a place where brilliance counts. You can create infrastructure essentially from time and thin air, and, if good enough, you can do better than Rumplestiltskin's spinning hay into gold. If you can find a new way to put two seemingly unrelated widgets together the right way, the gains in efficiency can be outstanding. This among other reasons is why it's very hard to pay or judge programmers based on lines of code created or what-have-you. There just isn't a good barometer for utils of brilliance, much less consistency of brilliance, other than perhaps, in our society, how much dough you can bring in *today*.

I may have mentioned taking a test in Pascal years ago where we had two "essay" questions where a task was presented and you had to, within constraints, make a program to fit. After taking this exam, I remember talking with the student who'd been consistently making the highest grades as we tried to figure out the best way to solve the questions. He'd beaten my socks off in the first, but in the second I'd been able to figure out a way to use recursion to make the answer a one-liner. Now I'm not going to argue that recursion is automatic brilliance, far from it. Sometimes loops o' recursion are, as you know, no more than instant memory lock and the apparent death of your user's operating system. But in this case, a quick, bright flash of insight made for a very elegant solution.

Yay for me.

At any rate, I wish the fellow whose bike was stolen would unlock that wheel and give it to me, as I doubt s/he would want my frame. Or at least when the 5-0 find the stolen bike at the pawn shop, I hope they contact me to give me my wheel back!

posted by ruffin at 11/20/2004 02:04:00 PM
Saturday, November 13, 2004



I've always wanted to get hsqldb working. It's a relational dbms in Java with a license that allows you to use it in most any project you want, requiring (afaict) just some text recognizing its use in your app. A very fair trade for us people aspiring to create (well, I've created -- aspiring to sell) commercial Java applications that would benefit from an rdbms backend (what app wouldn't?!).

Unf. each time I've tried, I've done it on my Mac and had issues. Finally, however, I believe I've figured out my last bit of trouble. Turns out it's b/c I'm using an OS X specific prebuilt SQuirreL SQL (favorite xplat isql client) with a version of hsqldb that expects 1.4. Here's a post I ran on the hsqldb site...

Along these same lines, if you're using SQuirreL 1.1final1 with OS X and the prebuilt jar for HSQLDB and run into this...

java.lang.NoClassDefFoundError: java/sql/Savepoint

... error, here's what's up, afaict. The app builder application for Java apps on OS X (what turns them into double-clickable bundles instead of jar files, etc) allows one to select which JRE the app uses. One option is to force the use of 1.3 (there were some issues with 1.4.1_01 on OS X 10.2 so both versions are kept) no matter what other versions are installed.

So if that happens and your JDBC driver requires 1.4 (and JDBC 3.0, iirc) -- which includes the savepoint jive -- you'll be sol using the prepackaged Squirrel on OS X even if you have 1.4 installed.

The answer is to run SQuirreL from the command line instead, either extracting the jar from the app bundle (by control-clicking the SQuirreL app's icon) or installing the xplat version (squirrel-sql-1.1final1-install.jar). Unf. the xplat version uses the Kunstoff (sp?) look and feel from Incors, which doesn't display correctly in 1.4 on 10.2 (Swing issues being one of the reasons Apple kept 1.3 on the OS alongside 1.4). Fee-uhn. You can muddle through, but it's a bit of a pain. Then run from that jar instead of the OS X pre-packaged version.

Good luck. Hope that helps someone other than me.

posted by ruffin at 11/13/2004 09:12:00 PM



I often forget how to "force" a default look and feel in Java. Here tis:

java -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel

posted by ruffin at 11/13/2004 09:09:00 PM

<< Older | Newer >>


Support freedom
All posts can be accessed here:


Just the last year o' posts:

URLs I want to remember:
* Atari 2600 programming on your Mac
* joel on software (tip pt)
* Professional links: resume, github, paltry StackOverflow * Regular Expression Introduction (copy)
* The hex editor whose name I forget
* JSONLint to pretty-ify JSON
* Using CommonDialog in VB 6 * Free zip utils
* git repo mapped drive setup * Regex Tester
* Read the bits about the zone * Find column in sql server db by name
* Giant ASCII Textifier in Stick Figures (in Ivrit) * Quick intro to Javascript
* Don't [over-]sweat "micro-optimization" * Parsing str's in VB6
* .ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); (src) * Break on a Lenovo T430: Fn+Alt+B
email if ya gotta, RSS if ya wanna RSS, (?_?), ยข, & ? if you're keypadless


Powered by Blogger etree.org Curmudgeon Gamer badge
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity.