Angle brackets are a way of life
Something about my Current Status post the other day touched a nerve, and a substantial number of people wanted me to pass on the fact that they’re hiring and might well be interested in Sun alumni. (Hmm... now this piece is provoking “us too” notices. I’ll update, for a while anyhow.)
Of course, I should mention that at the recent Oracle/Sun media event, all the executives we’re wearing “We’re Hiring!” buttons; probably not Sun alumni right now, but lots of people aren’t and we get to be at the top of the list. Here are the rest:
The Googlers were well-represented; I heard from Denton Gentry (“There are many Sun alumni at Google, and many reqs open. To me Google feels similar to Sun in 1990s”), John Panzer, and a couple others whose tweets I can’t find now.
From Nuxeo, Stefane Fermigier.
From Salesforce.com, Peter Morelli (“Why not join the party”).
From Red Hat, Rich Sharples (“java, virt., Linux — always happy to put a good word in for ex sunnies I know and respect.”)
From NexJ Systems, Greg Fenton. Greg worked for me as an intern about 100 years ago.
From Yahoo!, Sam Pullara suggests following @YahooEngRecruit. Mary Smaragdis adds a pointer to their careers page.
From VMware, Jian Zhen.
From Mozilla, Rob Sayre suggests visiting their careers page.
David Van Couvering says his group at Symantec (based in SFO) is hiring too.
From Accenture, Will Snow.
From Microsoft, Matt Thompson.
From Twitter, Alex Payne points at their jobs page.
From Atlassian (JIRA & Confluence); hiring in both Sydney and SF, says Dave O’Flynn.
From Joyent, Mark Mayo remarks that, as the world’s largest OpenSolaris installation, they’re particularly interested in Sun alumni.
From Performable, Elias Torres.
From LinkedIn, Alex Feinberg, who goes by @strlen on Twitter, which has to tell you something.
Tony Haile from Betworks says they’re the company behind bit.ly, Summize/TwitterSearch, Chartbeat and Tweetdeck, and are hiring for a bunch of different companies for those interested in the real-time web and social media.
Robert Hahn points to the careers page for Primal Fusion, “A very young company looking to make a big splash with our semantic technology platform. We're doing a lot of development with Java and Python.”
From The Collaborative Software Initiative, Mike Herrick, in particular looking for a Core Developer - NoSQL Database.
Posted at 17:20
In his recent blog-article: “XPath needs virtual axes. Making XPath more XPathy?” Rick Jelliffe sais:
“I really like XPath2. I would never recommend anyone start with XPath1, unless you were doing very basic transformations with no text processing or data formatting.
But the niggle I have with XPath2 is that it is less XPath-y than XPath1. It does not significantly improve the central syntactical feature of XPaths: the location steps. (The only improvement that springs to mind is that XPath2 did improve the use of parentheses in location steps.) Instead, XPath2 provided much more conventional features like a for iterator. I think these significantly decrease the comprehensibility of an XPath, are anonymous and therefore require may comments to explain them, and fracture the line. To an extent, once you start to use nested syntaxes and iterators, why both using XPath at all?”
Rick gives this example:
find-rep( find-client(//manager/clients/client-ref)/rep-ref)/name
and proposes to improve the expression above by introducing “virtual axes” so that it could be written as:
//manager/clients/client-ref/find-client::rep-ref/find-rep::rep/name
So, curious reader, pause for a while, don’t read below, and think: has Rick uncovered a hole in XPath?
What you are asking for can be expressed almost exactly in the same form (actually I prefer the current XPath 2.0 form of expression).
You are asking for:
//manager/clients/client-ref/find-client::rep-ref/find-rep::rep/name
One can write this in XPath 2.0 as:
//manager/clients/client-ref/find-client(.)/rep-ref/find-rep(.)/name
The current XPath way of expressing this is cleaner -- no need for virtual axes.
This is a feature of XPath 2.0 that is not widely used and known: any function can be used as the current location step. The syntax rules that resolve its use are (at http://www.w3.org/TR/2007/REC-xpath20-20070123/#id-grammar):
[27] StepExpr ==> [38] FilterExpr ==> [41] PrimaryExpr
and the fact that a FunctionCall is a PrimaryExpr:
[41]
PrimaryExpr::=Literal | VarRef | ParenthesizedExpr | ContextItemExpr | FunctionCall
Also, consider that the axes in XPath have been useful so far mainly because there are just a few of them. Imagine having to deal with zillions of axes and struggling to remember what they mean. And if everyone can introduce their own axes, then why bother with them at all?
Dear reader, it's up to you to decide... as I have already done.
Posted at 15:17
Q. What is the difference between a Taxonomy and an Ontology? A. Not much.
Posted at 14:24
XPath is a family of small query languages for XML: they have a simple data model and syntactically were based on directory paths: so to find the attribute id of the parent of a chapter element which has a title...
Posted at 14:24
What a wonderful age we live in! An age where almost a quarter of a million non-obvious ideas without prior art are invented every year.
Posted at 14:24
Assignment for Dailyshoot 84 on 2010/02/07: “Challenge: Practice storytelling today. Look for 3 images that tell a story, and make a set of photos that go together.”
Super Sunday: With friends in the burbs, and a sad ending.
Posted at 09:05
Simon Phipps often feeds me tidbits — intellectual rather than gustatory — having to do with nutrition. Recently he recommended I watch a lecture by Dr. Robert Lustig of UCSF in August of last year, called Sugar: The Bitter Truth.
This lecture is really better described as a call to action with biochemistry diagrams. Lustig argues that fructose is an evil that’s been behind the rise in obesity and metabolic syndrome of the last few decades; that soda, juice, and sports drinks loaded with sucrose or HFCS are the single biggest factor in childhood obesity (his specialty); and that we had better start treating fructose as the chronic hepatotoxin it is and stay the heck away from it. I agree.
The lecture series is called Current Controversies in Nutrition: Letting Science Be the Guide. Well, yeah — what other guide have they been using all this time, for goodness’ sake? You know, I started my carbgrrl.com series admitting a worry about looking like a loon…no more. Richard Nikoley, primal blogger extraordinaire, often talks about Modern Ignorance and the ways in which supposed experts tie themselves in knots because of broken preconceptions about stuff we used to understand instinctively. (Richard blogged this lecture, and also another I’ll touch on here sometime soon…) It sure looks like Lustig is emerging from a cave of institutional ignorance, blinking — and pissed off. Good.
Lustig’s obsession with fructose probably doesn’t give an accurate picture of all the factors in play. He seems to think glucose is just fine to consume in whatever quantity — it’s the “energy of life”, he says (around 1:26:00) — and so I suspect he’s misguided about the evils of spiking one’s insulin over and over, in addition to spiking one’s triglycerides. Remember that the glucose that feeds our brains and bodies can be made from practically any old thing lying around, as I’ve discussed before. And in GCBC, (The Great) Gary Taubes discusses the pernicious effects of eating fructose and glucose in combination:
Because sucrose and high-fructose corn syrup (HFCS-55) are both effectively half glucose and half fructose, they offer the worst of both sugars. The fructose will stimulate the liver to produce triglycerides, while the glucose will stimulate insulin secretion. And the glucose-induced insulin response in turn will prompt the liver to secrete even more triglycerides than it would from the fructose alone, while the insulin will also elevate blood pressure apart from the effect of fructose. [GCBC, Ch. 12, p. 201]
I have a couple of other quibbles (I’m not sure Lustig’s lust for fiber is entirely warranted), but it’s absolutely worth watching if you care about this stuff.
Posted at 18:46
Assignment for Dailyshoot 83 on 2010/02/06: “Curves carry the eye along with them. Make a photo that creates a sense of movement with curves today.”
Taken from just northwest of this particular Seventies-vintage Buick, looking southeast.
Posted at 09:05
I decided to dip my toe in the Mac world and buy a Mac mini. If
I decide to make the switch, I will probably end up getting a fully
tricked out MacBook Pro, but I'm not ready for that yet and I want
to wait for the expected MacBook Pro refresh.
I've been using it for 24 hours.
Likes
Dislikes
Minor nits
So far I've installed:
I plan to install
Any other software I should install? Should I be using something other than Safari as my Web browser?
Posted at 09:44
Assignment for Dailyshoot 82 on 2010/02/05: “More fun on a Friday: Make a photo that goes with the title of a movie you've seen, interpreted any way you like!”
On one of my many trips to Japan, someone gave me this charming Totoro music-box. I can't remember who; if it was you, please accept my apologies and let me know.
Posted at 09:05
Assignment for Dailyshoot 81 on 2010/02/04: “Contrasting ideas engage the mind. Make a photo today that tells a story with contrasting elements. (via @dibytes)”
This architecture is not like that architecture. In Vancouver's mostly-boring downtown.
Posted at 22:36
I recently rewatched "How to Design Good APIs and Why it
Matters" (youtube video embedded below).
There are many lessons that can be learned from designing a good
api, one of the tips is to make sure that your method names make
sense. I ran across some code today in a test case, named:
createStuff
Great, I used to write these types of method names when I was
starting out. Figuring they were throw away, or just funny.
However, over the years I tend to avoid these names. Why, because 6
months later I'm trying to remember what type of stuff is being
created. The same thing goes with naming variables:
that
While it is cute, especially when you are comparing
this to that, it can be harder to figure
out 6 months later what that really entails depending on the code.
Choosing proper names does help with the overall maintainability of
the code. A computer may not care, but a human has to know quickly
what is going on.
Another favourite I've seen lately is naming a variable
soup. What is soup? What does it contain? Is it
vegetable, egg drop, beef, or chicken noodle? Descriptive variables
help yourself and those that have to maintain the code after you
leave.
If you are not using a static analysis tool to help detect possible
bugs ahead of time, why not? If you are looking for a way to help
contribute to an open source project, but are not sure where to
start, consider running FindBugs or PMD against that code base.
Submit some patches to the committers. It is amazing the type of
Homer Simpson "DOH!" moments these tools find.
An example:
if (someNullClass == null) {
_log.info("Error getting class name" + someNullClass.getName());
}
Obviously if this code ever was hit, it would toss a
NullPointerException. However, I found similar code that had been
in place for 3 years.
Your build system can help you out with reporting these types of
issues. Hudson has the ability to display both FindBugs and PMD
reports. These types of tools can really help clean up your
existing code, and help to catch bugs before they can happen. I've
also seen them help increase performance on some code bases. A very
common pattern I keep seeing is string concatination in Loops. This
is particularly nasty depending on the number of iterations, and is
an easy thing to fix, by making sure you use StringBuilder or
StringBuffer instead.
Here is a suggestion. Since for those that are on the Helios
release train, M7 is supposed to be for bug fixes and
documentation. Why not take a part of that time to run FindBugs or
PMD against your code, and try to address as many of these bugs as
possible. If you haven't run these tools against your code base,
you might be surprised what they find.
A constant gripe I hear from committers is that there is not enough
resources to fix all the bugs, but how about we try to prevent some
from ocurring in the first place. Then you can have more time to
work on your features and that killer E4 application.
Posted at 22:00
I spent a morning debugging a problem that I have now boiled down to this test case. The following query prints 3097: More...
Posted at 12:09
The XSL Working Group has published a Working Draft of Design Notes for Extensible Stylesheet Language (XSL) 2.0. This document describes initial design notes for version 2.0 of the Formatting Object (FO) part of the Extensible Stylesheet Language (XSL). Learn more about the XML Activity.
Posted at 22:27
I’m getting a lot of questions, and I think it’s important that readers know who pays the author of the words they’re reading. So: I have received an offer of employment from Oracle, with compensation that’s acceptable, and am waiting for information about the role that is contemplated and where I’d fit into the organization. I have until next week to accept or decline. I’m pleased that I got an offer, and assume that the picture will fill in soon; merging an 80K-headcount company with a 30K-headcount acquisition is complex, but Oracle has been around this track lots of times.
I’m sad about the Sun people who are on their way out (except for the ones who wanted out) and expect that this wave of pretty-senior and pretty-clueful people will have a noticeable impact on the industry. As for Oracle’s prospects in its new shape: Anyone who claims they know at this point is blowing smoke. I fearlessly predict drama.
Posted at 22:18
The XML Security Working Group published two Last Call Working Drafts:
The group welcomes Last Call comments through 18 March. The group also published several other drafts today: XML Security 1.1 Requirements and Design Considerations, XML Security RELAX NG Schemas, XML Security 2.0 Requirements and Design Considerations, XML Signature Transform Simplification: Requirements and Design, and XML Signature Best Practices. Learn more about XML Technology.
Posted at 22:15
The XML Security Working Group published two Last Call Working Drafts:
The group welcomes Last Call comments through 18 March. The group also published several other drafts today: XML Security 1.1 Requirements and Design Considerations, XML Security RELAX NG Schemas, XML Security 2.0 Requirements and Design Considerations, XML Signature Transform Simplification: Requirements and Design, and XML Signature Best Practices. Learn more about XML Technology.
Posted at 22:15
Assignment for Dailyshoot 80 on 2010/02/03: “Make a "sharp" photo today any way you interpret it, either tack-sharp focus or a subject that is sharp itself.”
This wall facing a vacant lot has been left unfinished for a long time, as we wait for construction. The pigeons have noticed.
Posted at 17:03
Over the years, the IT section has been pro-actively trying to improve security, to lock the system down, and keep commercial information safe. However, these steps also prevent the engineers from getting their jobs done, so they are all circumvented. The more that the official, central SOE is locked down, the more that the remote users have banded together to make their own unofficial SOE that doesn't get in the way.
Posted at 16:30
Over the years, the IT section has been pro-actively trying to
improve security, to lock the system down, and keep commercial
information safe. However, these steps also prevent the engineers
from getting their jobs done, so they are all circumvented. The
more that the official, central SOE is locked down, the more that
the remote users have banded together to make their own unofficial
SOE that doesn't get in the way.
Posted at 06:35
Over the years, the IT section has been pro-actively trying to improve security, to lock the system down, and keep commercial information safe. However, these steps also prevent the engineers from getting their jobs done, so they are all circumvented. The more that the official, central SOE is locked down, the more that the remote users have banded together to make their own unofficial SOE that doesn't get in the way.
Posted at 06:35
One of the annoying things about moving to the 64-bit Windows 7 is that Palm decided not to support USB synchronization. Since my phone/PDA is a Treo 680, that’s a nuisance. In theory, I can sync via bluetooth. In practice, it’s not as easy as it used to be.
First off, I had to get a bluetooth-USB dongle to use with my desktop PC. I plugged it in, Windows found it and installed the driver. That much worked. The page linked to above shows the steps to go through to enable the bluetooth synchronization with the Treo; following those steps worked just fine (although s-l-o-w-l-y) the first time. And then it stopped working, with an error message “unable to initiate hotsync operation because the port is in use by another application”.
I tried unplugging the bluetooth device, disabling it, nothing worked. I then foolishly installed the software that came with the device, which was a bad mistake, as it made everything bluetooth-related stop working. And even though I tried to uninstall it afterwards, nothing worked.
I used Glary utilities to clean the registry, it found a lot of entries that CCleaner, my previously favourite registry cleaner didn’t. Result: supposedly a cleaner registry, but no joy on the bluetooth device settings.
Poking around on the web uncovered this, and since websites have a habit of disappearing, taking their useful information with them, I’m going to take the liberty of rewriting the salient points here.
Unplug the device. Go to the control panel, then search for “services”. From the Services window, browse the list of services and find the Bluetooth Support Service, and double-click the entry. Select Automatic from the Startup type and then click OK. Plug the device back in.
This at least meant that I could access the settings on the bluetooth device, which was an advance, even if I still couldn’t hotsync. In the end, I discovered that if I added another couple of COM ports, that the Treo would hotsync. Slowly, of course. And the next time I wanted to sync, I had to delete all the COM ports that the bluetooth dongle knew about, and add another.
My next phone/PDA will come from a company that does allow USB synchronization. On present form, it looks like it won’t come from Palm.
Posted at 22:15
The motherboard on my old Windows XP box quit while I was taking a break for lunch one day, and I decided to replace it with an updated Windows box. So I’ll keep on using a Snow Leopard laptop, OpenSolaris server, and Windows 7 as well.
Maybe I was asking for trouble, going with the 64-bit version of Windows 7 Professional, but with a quad core Intel box it seemed a shame to not do so. Most of the tools I use every day (like Firefox and Pidgin) are easy to reinstall and thus ignorable. But there are some that cost me a little more time to figure out. Admittedly, it’s a somewhat eclectic collection.
First off, mail. I use Pegasus Mail, have for many years, and it suits the way I work. Every time I’ve upgraded, it’s worked flawlessly. This time, it took a while before I figured out that I needed to not take the defaults in the install, but rather uncheck the “create user configuration” box, and then in the following configuration step select “single user only”. After that, copying across the mail and configuration file worked perfectly to set it up right.
The Palm desktop presents more of an issue. It turns out that you can’t use a USB connection to synchronize under the 64-bit version of Windows 7, so I’ll have to get a bluetooth adapter to synchronize my Treo 680. Or get a new phone. I’m still mulling the options on that one.
Printer: the HP Color Laserjet CP1510 drivers and software won’t install from the CD. This isn’t really an issue; the default Windows 7 driver works fine but doesn’t show you the toner status etc. Fortunately, the HP.com website has an updated “advanced” driver. Except for, it doesn’t do all the status stuff either, apparently. Oh well.
The scanner is an ancient one from Canon, the 3000F. The scanning application won’t install. There are no drivers or updated applications on the Canon web site for Windows 7. The toolbox application for scanning and copying shows up on c|net, at http://download.cnet.com/CanoScan-Toolbox/3000-2094_4-10972136.html (it may be a dead link by the time you read this), but without the drivers it isn’t much use. Hunting around on the web showed that this is a case for the Virtual XP mode. This consists of 2 downloads, the first of which is 500 MB. The current estimate on our currently floaky DSL link is almost 2 hours to go, so I think I’ll go and do some real work while waiting for it to trickle in, and continue this post when I’ve made some more progress.
Posted at 22:15
After the previous set of Windows 7 adventures, I discovered that the box I bought doesn’t support hardware-assisted virtualisation, which is needed for the Virtual XP mode. Option 2 for the scanner: try out a separate application called VueScan, which claims to support a large number of scanners. Except for, this program needs the Canon scanner drivers to first be installed. Which don’t exist. On to the next attempt: install Virtual Box, and put Windows XP on that as a virtual machine. The problem with this was that the USB port kept claiming it was busy, and none of the various tips I found worked. Verdict: I couldn’t find a way to support the Canon 3000F scanner under Windows 7 64-bit, and will have to use my old XP laptop as a scanner driver until I have sufficient motivation to buy a new scanner.
Mind you, installing the virtualbox + Windows XP combo ended up being useful anyway. QuickBooks 2003 installs, but doesn’t run, under Windows 7. I gather that even the latest versions of QuickBooks have issues with Windows 7, so I simply installed the one I have in the Windows XP virtual machine. There was a bit of fiddling involved in moving data around, that involved installing the vbox guest additions and setting up shared folders, but in the end it all worked. I suspect more than a couple of programs will end up in that virtual machine.
Overall, I probably spent close to a week of work time setting up my work environment to be more or less where I was before my old PC died. It’s obvious they borrowed quite a bit from the Mac OS X environment, including hiding some of the useful functions. The menus fading in and out were starting to make me sea-sick until I found out how to turn that off (Control Panel -> System and Security -> System -> Advanced -> Performance Settings). I’m sure I’ll find more issues as I get more used to the environment, along with more programs that won’t install or work. Fortunately cygwin does work under Windows 7, along with Office 2003 (which I need for client compatability).
Posted at 22:15
The technical challenge becomes, how can we have an SOE today that will allows us to adopt an alternative SOE in a couple of years time? In economic terms, there is an opportunity cost in adopting any particular SOE: the cost of not being able to move to an alternative technology in the future. The emphasis on a standards-based procurement and SOE policy seems key in this. But so does a larger vision that factors in the opportunity costs of not being able to take advantage of objective architectural and technical advances (some of which may turn out to be fads too!), and does not just use license fees and help-desk costs as the bottom line.
Posted at 14:25
Assignment for Dailyshoot 79 on 2010/02/02: “It's Groundhog Day in the U.S. Make a photo that illustrates whether it's more like winter or spring where you live.”
These (very early) crocuses would be open were they sunlit, but here they're coated with raindrops.
Posted at 07:01
Some thoughts worth considering on state of HTML development today. -m
Posted at 06:45
OK, is it just me, or does the Hubble image that NASA published today reveal a cloaked Klingon Bird of Prey in our asteroid belt? Here is the close-up of what NASA calls a “suspected asteroid collision”:
This is an excerpt from NASA’s press release today:
“NASA's Hubble Space Telescope has observed a mysterious X-shaped debris pattern and trailing streamers of dust that suggest a head-on collision between two asteroids. Astronomers have long thought the asteroid belt is being ground down through collisions, but such a smashup has never been seen before.
Asteroid collisions are energetic, with an average impact speed of more than 11,000 miles per hour, or five times faster than a rifle bullet. The comet-like object imaged by Hubble, called P/2010 A2, was first discovered by the Lincoln Near-Earth Asteroid Research, or LINEAR, program sky survey on Jan. 6. New Hubble images taken on Jan. 25 and 29 show a complex X-pattern of filamentary structures near the nucleus.
"This is quite different from the smooth dust envelopes of normal comets," said principal investigator David Jewitt of the University of California at Los Angeles. "The filaments are made of dust and gravel, presumably recently thrown out of the nucleus. Some are swept back by radiation pressure from sunlight to create straight dust streaks. Embedded in the filaments are co-moving blobs of dust that likely originated from tiny unseen parent bodies."
Hubble shows the main nucleus of P/2010 A2 lies outside its own halo of dust. This has never been seen before in a comet-like object. The nucleus is estimated to be 460 feet in diameter.”
Sounds plausible, but as a Star Trek fan I still see a Klingon Bird of Prey that is about to decloak. Don’t believe me? Look at the picture again, but this time look more closely:
Live long and prosper… ☺
Posted at 22:18
W3C launched today the RDFa Working Group, whose mission is to support the use of RDFa, a format for embedding structured data in Web documents. The Working Group's goals include making it easier to author RDFa, promoting continued adoption of the technology in HTML, XHTML, and XML, and helping developers create RDFa applications. The group is chartered to extend and enhance RDFa 1.0, including the specification of an API. The Working Group will also support the HTML Working Group in its work on incorporating RDFa in HTML5 and XHTML5 (as a followup on the the currently published Working Draft for RDFa 1.0 in HTML5). Learn more about the Semantic Web.
Posted at 16:12
Excellent: The definitive guide to Jython
Posted at 16:04