Friday, February 27, 2009

New computes

Had a rare opportunity yesterday...buy a brand-new Macintosh at a seriously discounted price. MicroCenter sent me a sale flyer last week, special pricing starting yesterday. Mac Powerbook Pro was $1799, 17", 2.5 GHz, 2GB RAM, 250 GB disk. Intel dual-core processor. Nice machine.

Deal too good to pass up, like when I got my refurb G5 in 2004. Only problem is that NONE of my existing Mac software will run on this machine...going to have to download entirely new versions of the freebies, and pay for a couple of others. At least I can do it piecemeal, unlike if I replaced my G5. Dreading that day...

So I got it home just in time to find out that my internet access is dead for the next 18 hours...sob!

Stephanie Plum...

my favorite funniest book character...new book "Plum Spooky" came out in Jan...why not before Xmas I don't know...that seems poor timing by the publisher.

Anyway...this is one of those "between the numbers" books. Previously they were a little different, there was more character development in them, and less going on. This one is actually a Number book sans the boyfriends, and with this "Diesel" guy instead.

Which is just fine, it is just a screamingly funny as the numbered ones, which the other "Betweens" were not.

Looking at the length of it: 300pp, just like the numbers books, and twice the thickness of the other "betweens" titles. I got it for 30% off at Borders Express at the mall, and read it over the next 48 hours...great fun.

You really gotta wonder why Stephanie hasn't been turned into a movie. (yes, Grafton hasn't either, and V.I. Warshawski was more like VI wash-out-ski, so maybe that's it--except that Plum would be a lot funnier than those others)

found a free game...

called NEXUIZ

it's a pretty serious download, 380MB for the zip file...it's basically a deathmatch FPS game. runs well on my XP-64 box. (whereas UT04 has gone bad for some reason)

get it here

I've only played it a tiny bit...it's based on DarkPlaces, a Q1-source-derived engine.

and I am stuck at a seemingly simple low-grav level. It's instagib, which is not my fave, and I'm doing badly...and this is an early level. Have not figured out the rest of the weapons, so previously I've mostly been lucky.

some online animation

http://www.blender.org/features-gallery/movies/

in particular you want to look at Big Buck Bunny (8min) and Murnau the Vampire (27 min). BBB was an easy download. Murnau was not; apparently there are torrents, but that seems to not work for me any more...despite a brand-new BT. Which is too bad, this is an exceptional bit of animation; not available in hi-def, tho.

fwiw, F W Murnau was the director of Nosferatu, the first, silent, vampire movie. Apparently you can see it online HERE.

Monday, February 23, 2009

XML software

Can someone explain to me why it is that org.w3c.dom.Document (java api) does NOT have a method something like "writeToStream(OutputStream os)" which will dump the entire document to some stream (i.e., a file)?

Why? If the corresponding class "DocumentBuilder" can read a file (or URL), why can we not have a method to write?

I wrote one about 8 years ago, I know I can go find it, but sheesh...why?

(continuing here with man's favorite activity)

Wednesday, February 18, 2009

My computers...

Being unorthodox in most things...

I have a day job at an interesting company, which can remain nameless...I get to do some exotic stuff. And some pedestrian stuff, that's often a need too.

I mostly get to do things I like, which is great.

One of the things I get to do (because I choose to): I have my own computer. Well, really, all the engineers do. The diff is that I build my own from pieces. Everyone else: std config whatever the company is buying (well, with some variations, but not much).

Mine: completely different. This way I get what I want (which is NOT a generic Dell, which has gone from best to pretty sucky in recent years), when I want, and can upgrade when/how I want.

So I have this:



It takes an AMD Athlon x64 X2, 2GB RAM. On-board video plus a good PCI-Ex card means three monitors, which is pretty dang cool. And it is *quiet*. It's now 3 yrs old, so what was hot at the time is less so now; this doesn't really bother me a lot, except that now I am doing some work where more power would be helpful. (At the least I want a quad core, and 4GB RAM.)

I'm also thinking about a touch-screen, having played with those new HP units a little. Touch-position precision is weaker than I'd prefer there...but a touch-screen would be a nifty thing to do some UI work with, and there seem to be some < $1000 in the 25-inch range.

The process at work for getting a computer is kinda broken, inasmuch as I could get the Dell, but not something as slick as what I have. So I bought/built it myself. Replaced a drive when the original boot-drive started doing that bad clicking thing (see blog late 08 on this), got a video card aimed at decent game perf, just the right RAM (2GB dual-channel). My preferred kbd and mouse combos. My preferred monitors. Etc. I buy my own software, too, so I get what I want when I want.

New machine coming probably a year from now. If I can get something in roughly the same form-factor. With a 4-core or better CPU, at least 50% faster clock-rate.

This is the machine I do all my programming on. And nearly all my game-playing. And not much else.

My Macintosh G5 is where I do all the other stuff, like music, photos, video, database, taxes, personal info--the non-game fun stuff...that's had a chunk of upgrade, too, but less. RAM (5GB) and disk (1TB).

another Jaguar XKE note

having bought the car, I find myself noticing how many others ripped it off back in the 60s and 70s.

The original (this is mine):



It looks like nearly every sports car in the 60s was a rip-off of the style...without managing to look as good.

Felt like a blog on this, having seen the trailer for The Graduate go by last night on TCM. Didn't quite recognize Dustin Hoffman's car...it's an Alpha Romeo Duetto:

a little less curvy than the Jag, but clearly derivative.



As was the Corvette tear-drop:

which was clearly the previous body style updated to look like the Jag.

and the Datsun 240Z:

which did at least have a price advantage over the Jag (about half, actually).



Even the classic 1964 Aston Martin (the Bond car of all time):



which shows up briefly in the recent Bond film Casino Royale.

and of course the late 70s Mazda RX-7:

Computer gadgets

I had the Logitech wireless kbd/mouse combo...I really liked the kbd feel. the mouse was ok, the good part about the pair was that they worked together off the same wireless, and the mouse had a recharging dock...but the mouse had not been working too well in the dock for a while now, so when wife and I went to Circuit City, I got the last Logitech Dinovo Edge they had, for windows.



This is a nifty kbd, has its own dock for recharging (which is going to cause a problem when it can't hold a charge any longer). I'd like it a little better if the arrow-keys combo was shifted to the right about an inch. It's not, and the home/end/del/insert combo is now vertical instead of horiz, which means my game custom keys are out of whack...

It's a bluetooth kbd, which means it comes with a BT/USB adapter, and therefore I could get a BT mouse now...but I have this nice Logitech Nano wireless mouse I like...the one with the micro-transmitter unit.

So my wife now wants the same kbd for her Mac...I probably do, too, for that matter...except that I don't have bt on my mac; I think she does, but turned off.

Sunday, February 08, 2009

Software errors

Nothing worse than having a bizarre error creep into someone else's software that you have to use, and it's too complex for you to fix...

take this example: google for "eclipse ioconsole updater error" and see what you get. I just moved to eclipse 3.4 yesterday, because it looks like I'm going to have to do some C code soon (feh!).

tweaked an older program today, to try out an enhancement (from a friend), and suddenly I've got the below error. This is something that has gone wrong in eclipse, has to do with your doing too much System.out typeout. Most of the complaints (man's favorite activity) you find in google on this subject suggest it's something about line length, but it's not. It's just total typeout.

Here's the actual error:

!ENTRY org.eclipse.ui 4 0 2009-02-08 17:43:10.270
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.ArrayIndexOutOfBoundsException)
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
Caused by: java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.eclipse.swt.custom.StyledTextRenderer.textChanging(StyledTextRenderer.java:1295)
at org.eclipse.swt.custom.StyledText.handleTextChanging(StyledText.java:5467)
at org.eclipse.swt.custom.StyledText$6.textChanging(StyledText.java:4850)
at org.eclipse.ui.internal.console.ConsoleDocumentAdapter.documentAboutToBeChanged(ConsoleDocumentAdapter.java:302)
at org.eclipse.jface.text.AbstractDocument.fireDocumentAboutToBeChanged(AbstractDocument.java:645)
at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1148)
at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176)
at org.eclipse.ui.internal.console.ConsoleDocument.replace(ConsoleDocument.java:82)
at org.eclipse.ui.internal.console.IOConsolePartitioner$QueueProcessingJob.runInUIThread(IOConsolePartitioner.java:533)
at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:94)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
... 22 more



So it's just an array OOB problem. It arrived in 3.3, and is still present in 3.4, which I just started using yesterday.

Looking at the reported msgs and responses, it seems to be a problem in more than one place in the eclipse source code.

Gad.

Looks like I'm going back to 3.2, I can't live with this. Will only do the C dev with 3.4. Not worth my time to try to fix it for them.

Man's favorite activity

not sex...just as well, we'd have overpopulated ourselves to death.

not tv, although we do spend a lot of time on that...

no, it's complaining.

That's right...complaining. Came to this conclusion a couple of years ago...

look at my other post about How We Learn, that was the genesis. We complain about things that have made us unhappy. Why? Because when we are babies, when we complain (i.e., cry), we get made happy pretty quick--fed, diaper changed, whatever. I suspect that folks who complain a lot probably cried a lot as babies.

Tuesday, February 03, 2009

Oblivion, redux

Started a replay of Oblivion. Yes, I already put in over 1000 (yes, thousand) hours on this before...thought I would try out some alternate strategies.

1) How far can you level up in the training area? Well, sneak can be at 100. Block can be over 25. Other things can be in the 20s. How to get sneak that high: when you first encounter the "sneak" goblin, he never turns around, so you can level-up on that behind him. Thing to do is go to 25, so you get the damage bonus, then whack it and take the loot, and go into the next room, where there are the 4 goblins, incl the one on patrol. Wait until the patrol goblin passes by, then follow to find a stalagmite pair in the dark that you can get stuck behind. Now, put a weight on the forward key, and you can walk away for a while (this is going to take several hours). Come back when you need to approve the 50,75,100 level dialogs, and zowie! You are the Expert of Sneak. Unfortunately, you can't get Athletics up at the same time, you actually have to change position. For Block, you stand and let the rats attack you one at a time, and hold out your shield. This isn't fast, but it's effective. Heal yourself along the way, and kill the rats when you can't recover. Move on to the next one, perhaps with new armor. You'll want to repeat this routine again later, when you need to level-up on armor.

Bonus: pick a character type where Sneak is a major skill. This way when you leave the training area, you can go sleep somewhere and level-up 10-12 times immediately. (Course that might be dangerous, as the opposition is suddenly a chunk better than you, and you only have a punky weapon). If I could, I'd want to design a character type where all the things you can level-up on fastest/soonest are primary skills: Sneak, Block, Alteration,

2) Go straight for the Mages Guild, and do their tasks. Practice on some low-level spells that are not attack, while standing around. Your aim is to get to Alteration Level 50, because that is when you can use Chameleon--and you can enchant your armor with it. Along the way you have to either capture some souls, or find some loaded soul gems. IIRC, with Common souls, you can enchant Chameleon at 14%, Greater Souls at 17%, and Grand souls are 20%. You'll have to sleep-level-up along the way so you have enough Magicka to do the enchanting, but once you can, with Chameleon > 100%, you are undetectable by anyone, which pretty much makes you invincible. I found a couple of Grand Soul gems with grand souls in them, which is great, because you aren't going to encounter any for a while.

3) Good loot and interesting opponents don't really show up until about Level 10. Recall all the squawk when the game originally came out about how the opponents level'd up with you? i.e., the game does not ever get easier in terms of fighting...well, true enough, until you learn the trick about Chameleon. But the real problem is that you do need some money for buying things, but that's really only at the beginning, when you need to buy spells; you're going to find adequate armor on opponents. And excepting when you attack a clannfear which reflects damage, you don't even need armor when you have 100% Chameleon (other than needing to wear enough charmed items to reach that 100%).

4) Fast travel does nothing for your skill increases...but it lets you join Mages Guild sooner, and Chameleon.

5) Do the task about the missing brother in Chorrol/Cheydinhall, and then the follow-on about the missing sword, but DO NOT turn in the sword--you want to keep it and use it. This is the best sword you can get for a long time.

6) Clear out any relevant caves/etc BEFORE taking on any kind of escort assignment. NPCs all operate via Artifical Stupidity, so they are going to run into fights they can't win. Granted, official escorts can't usually be killed, but there's that one "take weapons to cave X and clear the goblins out" where they CAN be, and if one of them IS, later rumors mention your failure. Whats-er-name the orc and the Black Bow Bandits task, she can be killed too, but she does at least wait for you to say it's ok to tag along...and when you have Sneak 100 and Chameleon 100, you can kill anything anytime anywhere without taking any damage, so you don't want anyone else getting in your way.

7) Avoid starting the main story/quest line until you have Chameleon = 100. Fast travel around Kvatch to make certain...because once you start it, the Oblivion gates start appearing. They're fairly dangerous, but if you have Chameleon 100, you don't care.

8) Let summoned chars do your fighting. Until you have chameleon 100, this is important. Otoh, it does mean that your weapon attack skills atrophy.

9) When you go to Leyawiin, go to Rowena Galentius' house, and whack Everscamps to your heart's content. They won't attack you until you attack them, and even then only one at a time. I shot arrows into them for 10 Marksman levels. I whacked a bunch for ten Blunt levels. I punched a bunch for 20 Hand-to-hand levels.

10) Begin the game with "Bag of Holding" plug-in. This lets you carry an emormous amount of stuff, as opposed to going back and forth hauling loot to the merchants (which would otherwise be infuriating, and ultimately something you stop doing).

11) Do the paid training once you start having money. Granted, this is only 5 skill levels per major level, but you want to pay-train the major levels.

-----

Largely good strategies. I've played 120 hours, am level 12, Master of the Fighters Guild (didn't do that first time), near the top of Mages Guild, skill level ~50 on most (100 on sneak), Chameleon 100, have NOT begun the main story line so no Oblivion Gates yet, and I have not traveled too far or done too much yet. And I can continue to major-level-up for a while yet, probably at lest 5 more, maybe 10. MANY places to visit and explore.

Text processing concepts and tools

In the past 15 years, I have worked on text-processing software tools more than once, and I'm doing it again here of late.

While it doesn't take an Advanced Degree (tm) to understand *most* of it, some aspects do get pretty exotic.

How I started way back when I've used several of the mentioned tools. Most don't really meet my needs or wants.

I participated in some of the MUC episodes (6 and 7, I think), and have known about the MET and ACE episodes.

There are others, of course.

There are other tools around that do the named-entity job. I wrote one myself, because the one I had used most a lot had some flaws I didn't care for (one of which was occasionally a show-stopper), and some experimental purposes.

What I would consider an interesting set of text-processing capabilities:

Tokenizer (separate words from each other and non-words)
Reconstitutor (re-assemble words or other things from separate tokens)
Stemmer (separate root words from their suffixes; Porter Stemmer is the standard)
Pattern matcher (match word sequences)
Name lists (annotated/typed names of whatever)
Dictionaries
Topic Finding
WordNet

----

Other related tools whose value I'm not convinced of:

POS tagging
Sentence splitting/parsing

-----

Why are these tools of interest or value?

There is a lot of text/words content on the Web, and in databases. No possible way to read it all, and nearly no way to even find out what you might *want* to read. How do you find all the stuff you *should* read? Or stories that mention things of interest? How do you find stories that are on topics of interest but didn't happen to use the words you expected (i.e., defeating google)? What if it was in a foreign language--which REALLY defeats Google..?

You need some help.

Which leads to the two tools of interest.

1) Named-entity recognition. Find various reasonably-unique-meaning words/phrases
2) Topic recognition. Stories on any given topic are likely to use a lot of the same words.

A third tool of interest would do this: recognize relationships between words in the stories; this could include the simple concept of pronoun-references, but could also be more complex relationships, like "Barack Obama is the President of the United States" would have a person name, a location name, a job title, and the relationship between all of them. In the MUC bake-offs this was known as Template Entity Recog. It's dramatically much harder than the others.

Name recog is important because you can use it to mark up stories as being about that particular name, without necessarily having seen that name before. Topic recog is valuable because you can then find stories "about" something-or-other, without having to know any of the right keywords. Of course the list of topics isn't going to be tiny, so choosing the right topic is not necessarily trivial.

-----

Peculiarities:

There are a few, but not many, human language families. One group are the "Romance" languages, which are derived from Latin. Many european languages are this type. There are the pictogram languages like Chinese, Japanese, and Korean. There are a few oddments, like Thai, which has no related languages (IIRC). Arabic languages are another family.

Writing direction: left to right, right to left, top to bottom...likewise varies, but probably corresponds closely to origin.

Use of an alphabet, and whitespace. The pictogram languages don't have an alphabet in the same way that Latin languages do, nor do they use white space as word separators. I'd argue that these are fundamental flaws in the languages' written form.

All these things complicate computing, because they lead to language-specific solutions.

-----

Words are important. Without them you cannot express concepts, and you can't really invent new concepts. Language has to be mutable. But let's have the computer do some of the work.