Posts for year 2006 (old posts, page 1)

An annoying and non-obvious error message

So this afternoon there I was, typing up a detailed design for a solution that I’ve been tasked with, and Word (don’t start!) tells me it can’t autosave my file.What?

System Message: WARNING/2 (<string>, line 5)

Literal block expected; none found.

Cannot save the file [filename], too many open files. Would you like to abort or retry?

That’s weird, I don’t recall seeing this problem before. I shut down firefox, Visio and GropeWise too, still no joy.I tried changing save locations … no good.I also started getting messages that Groupwise libraries are used by Word for document management integration and I’d better startup groupwise rightquick in order to save anything.WTF sort of idiot system is that? I certainly did not tell Word that I wanted it to faff around with GropeWise. Interact with it, yes … but not become so dependent upon it that it forgets how to save in its own format ffs!So I tried starting Gropewise again. Scary error message now:

System Message: WARNING/2 (<string>, line 12)

Literal block expected; none found.

Ordinal 75 was not found in library MAPI32.DLL

And of course, GropeWise failed to exec.You might, by now, be thinking that my blood pressure had not risen, and that I had not (yet) started to swear out loud.You would, if you thought that, be incredibly and sadly wrong.Fortunately this hadn’t f***ed-up firefox, so a quick google search found `the solution:`_

(fire up cmd.exe)
cd c:\windows\system32
cp mapi32.dll mapi32_broken.dll
cp mapi32_moz_bak.dll mapi32.dll

Amazingly, GropeWise then decided it would play ball… though just to be sure I created an RTF copy of my document and stashed it in a few other places before rebooting.

System Message: WARNING/2 (<string>, line 30)

malformed hyperlink target.

Docutils System Messages

System Message: ERROR/3 (<string>, line 16); backlink

Unknown target name: "the solution:".




WTF is going on with Debian?

I read in OSNews and InternetNews that the logo for Mozilla Firefox is causing problems for Debian.The central problem is apparently that because the logo is trademarked, therefore the Debian Free Software Guidelines don’t allow the product’s inclusion in a Debian release.Of course, this is the pot calling the kettle black, given that “Debian” itself is trademarked.To my way of thinking this is taking the FSF’s “owning anything, particularly software, is eeeeeeevil and must be stamped out” attitude to its logical and completely stupid end point. This whole case is as stupid as the allegations (disproved and denied, fortunately!) that documents which used GPL’d fonts would themselves be GPL’d.I cannot understand why there is such antagonism towards those who would like due recognition of their work. The way that civilisation has developed to this point, the trade mark, registered mark and copyright concepts are the accepted methods of achieving said recognition. Rather than rail against this system (which does, admittedly, have its flaws) taking ones marbles and going off in a huff, how about trying to make the existing system better or more aligned with your beliefs?What this all means, for me, that Debian as a linux distribution is dead.




Why is it good to videotape Australian Idol?

Recently, J and I have taken to videotaping Australian Idol. After getting back from Chip and Ingrid’s wedding in Brisbane, we watched Sunday night’s ep on Monday evening.Or at least, we watched most of it. We fast forwarded all the bits where Marcia Hines was being everybody’s friend and displaying her rapidly decreasing musical credibility.The comment and criticism that Mark Holden and Kyle Sandilands (and even Dicko in previous years) give to the contestants is almost always thoughtful, genuine and intended to help.Marcia on the other hand …. can’t stfu and let the other judges do their jobs.Which means that the best new bit in this year’s competition is the “199-Judge” SMS feedback. Unfortunately none of my comments have been read out so far.I’ll be really happy if Marcia is not asked to return for next year. The show is better off without her.




So what’s this contract thing like?

The org that I’m contracting to is fairly large, very busy, and much more of a professional services sort of outfit than I’d realised.Like a lot of other places, they use MS-Windows (2k and XP Pro) as their desktop, and they have a heap of Novell NetWare servers for fileserving. I’m ok with that, I was in a similar environment back at UQ Library all those years ago.What I don’t like is that their mail system is GroupWise.As far as I can determine, GroupWise was written by people who do not understand the internet. Or SMTP. Or IMAP. Or that you should not top post. Or if you’re going to be sending/receiving emails all day that you should not be forced to use the mouse. The other thing they don’t understand is that their “cross platform client” written in Java isn’t. It’s chock full of linux/i386 JNI libraries so it’s not pure Java.And I cannot, for the life of me (yes, despite having read the manuals and help files available) figure out how on earth I can make our weekly team meeting appointment actually repeat!I’ve been playing with a new BrandZ zone (having futzed around to get it to run Centos3.8) so that I could try out the “cross platform” yet linux/i386-only GroupWise client. Unfortunately that hasn’t been successful so far and I can’t really spend any more time playing with it because I actually have to provide the value that I’m being paid for.So today I caved and rebooted into MS-Windows XP. I installed the NetWare client, found the GroupWise client and a few other now-essential apps on the network and installed them. I also made the mistake of installing Outlook. I say mistake because (apart from the security problems) it had conniptions at the thought that I might not want to use it for my addressbook or as an email/calendaring client.So I uninstalled it and Clippy too.I’ve got access to all the subtly-overlapping systems that they run, some via NetWare, some via Citrix MetaFrame (any pointers on how to get Tarantella to play nice with Citrix urls?)…. but I still need to get some training on the major system.And courtesy of a stressed-out project manager (aren’t they all?) I managed to find the shared drive which has all the document templates which the rest of my team had been unable to point me to last week and which had been leading to a general feeling of DOOOM! about the whole gig.So yes, it’s not quite as bad as I thought.But as far as I can see right now it’s still pretty disorganised.




So what’s this contract thing like?

The org that I’m contracting to is fairly large, very busy, and much more of a professional services sort of outfit than I’d realised.

Like a lot of other places, they use MS-Windows (2k and XP Pro) as their desktop, and they have a heap of `Novell NetWare`_ servers for fileserving. I’m ok with that, I was in a similar environment back at `UQ Library`_ all those years ago.

What I don’t like is that their mail system is `GroupWise`_.

As far as I can determine, GroupWise was written by people who do not understand the internet. Or SMTP. Or IMAP. Or that you should not top post. Or if you’re going to be sending/receiving emails all day that you should not be forced to use the mouse. The other thing they don’t understand is that their “cross platform client” written in Java isn’t. It’s chock full of linux/i386 JNI libraries so it’s not pure Java.

And I cannot, for the life of me (yes, despite having read the manuals and help files available) figure out how on earth I can make our weekly team meeting appointment actually repeat!

I’ve been playing with a new `BrandZ`_ zone (having futzed around to get it to run Centos3.8) so that I could try out the “cross platform” yet linux/i386-only GroupWise client. Unfortunately that hasn’t been successful so far and I can’t really spend any more time playing with it because I actually have to provide the value that I’m being paid for.

So today I caved and rebooted into MS-Windows XP. I installed the NetWare client, found the GroupWise client and a few other now-essential apps on the network and installed them. I also made the mistake of installing Outlook. I say mistake because (apart from the security problems) it had conniptions at the thought that I might not want to use it for my addressbook or as an email/calendaring client.

So I uninstalled it and Clippy too.

I’ve got access to all the subtly-overlapping systems that they run, some via NetWare, some via `Citrix MetaFrame`_ (any pointers on how to get `Tarantella`_ to play nice with Citrix urls?)…. but I still need to get some training on the major system.

And courtesy of a stressed-out project manager (aren’t they all?) I managed to find the shared drive which has all the document templates which the rest of my team had been unable to point me to last week and which had been leading to a general feeling of DOOOM! about the whole gig.

So yes, it’s not quite as bad as I thought.

But as far as I can see right now it’s still pretty disorganised.

System Message: WARNING/2 (<string>, line 26)

malformed hyperlink target.

System Message: WARNING/2 (<string>, line 27)

malformed hyperlink target.

System Message: WARNING/2 (<string>, line 28)

malformed hyperlink target.

System Message: WARNING/2 (<string>, line 29)

malformed hyperlink target.

System Message: WARNING/2 (<string>, line 30)

malformed hyperlink target.

System Message: WARNING/2 (<string>, line 31)

malformed hyperlink target.

Docutils System Messages

System Message: ERROR/3 (<string>, line 4); backlink

Unknown target name: "novell netware".

System Message: ERROR/3 (<string>, line 4); backlink

Unknown target name: "uq library".

System Message: ERROR/3 (<string>, line 6); backlink

Unknown target name: "groupwise".

System Message: ERROR/3 (<string>, line 12); backlink

Unknown target name: "brandz".

System Message: ERROR/3 (<string>, line 18); backlink

Unknown target name: "citrix metaframe".

System Message: ERROR/3 (<string>, line 18); backlink

Unknown target name: "tarantella".




Gainful employment, starting on Monday…..

As of Monday 18th of September I’ll be employed again. It’s a 6 month contracting gig doing Solaris and HPUX platform design and build as well as some server consolidation and “process improvement” stuff.Sun has a few engineers onsite there too, in the same group. As it happens, I’ve worked with them for years and they’re really keen for me to join them.I’m looking forward to it – the chance to do something a bit different, see things from the customer perspective and so forth.And in 6 months time, who knows? I might see about an extension, or I might do something else. It all depends. The world is my oyster and who knows what delights the future holds?




Time to start thinking about my SUNW options

Over the years I was at Sun I was awarded options at various strike prices. Most of course are under water (above the current NASDAQ price) but some are worth something, courtesy of today’s closing price of USD5.19. Now I just have to figure out all the international transfer stuff and talk to Sun’s designated broker… and fill out the US IRS’ W8BEN form….. and hope the price keeps going up!




More on infrastructure: apache, tomcat and roller

It occurred to me that I should mention how I got my tomcat + roller setup done for my home website.

Firstly, you need to make sure your web server has an appropriate linkage to a web application server, such as `Tomcat`_. Sun provides `Apache`_ versions 1.3 and 2.0 with Solaris Express, along with Tomcat v5.

With Apache 1.3 you can use the mod_webapp.so plugin along with mod_rewrite or mod_proxy in order to redirect webapp requests to the correct port. Here’s what I configured with v1.3:

####
# to re-direct jmcp.homeunix.com/blog to :8000/roller/page/jmcp
####
RewriteEngine  on
RewriteRule     /blog   http://jmcp.homeunix.com:8000/roller/page/jmcp
RewriteRule     /roller http://jmcp.homeunix.com:8000/roller/main.do [L]

I didn’t want to use v1.3 though, so I tried the bundled v2.0 instead. That uses a slightly different AJP/1.3 redirection process, for which you need mod_jk. This isn’t included with the bundled version, so you need to pull it down and build it yourself.

#
LoadModule jk_module libexec/mod_jk.so
JkWorkersFile /etc/apache2/workers.properties
JkLogFile     /etc/apache2/logs/mod_jk.log
JkLogLevel    info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat     "%w %V %T"
# Send everything for context /examples to worker named worker1 (ajp13)
#JkMount  /examples/* worker1
JkMount /blog/* ajp13
JkMount /roller ajp13
JkMount /roller/* ajp13
#

That didn’t really work for me either, unfortunately. I kept seeing errors like these:

[Fri Sep 01 21:03:12 2006] [296262:0000] [info]  mod_jk.c (1978): Service error=0 for worker=ajp13
[Fri Sep 01 21:03:18 2006] [296263:0000] [info]  jk_ajp_common.c (1178): Socket 15 is not connected any more (errno=-1)
[Fri Sep 01 21:03:18 2006] [296263:0000] [info]  jk_ajp_common.c (1202): Error sending request. Will try another pooled connection
[Fri Sep 01 21:03:18 2006] [296263:0000] [info]  jk_ajp_common.c (1224): All endpoints are disconnected or dead
[Fri Sep 01 21:03:18 2006] [296263:0000] [info]  jk_ajp_common.c (1783): Sending request to tomcat failed,  recoverable operation attempt=1
[Fri Sep 01 21:03:18 2006] [296263:0000] [error] jk_ajp_common.c (1794): Error connecting to tomcat. Tomcat is probably not started or is listening on the wrong port. worker=ajp13 failed

which meant that nearly 50% of requests to any webapp run by tomcat would fail to respond with a error about excess load. Clearly bogus, but a pain in the rear nonetheless.

So I ditched both in favour of pulling down apache httpd v2.2.3 and tomcat v5.5.17. (I also grabbed OpenSSL and installed it in /opt/local).

The successful configure line that I used for building apache is

CC=/opt/SUNWspro/bin/cc
CFLAGS='-xlibmil -xlibmopt -xO5'
CXX=/opt/SUNWspro/bin/CC
CXXFLAGS='-xlibmil -xlibmopt -xO5'
#requires openssl in /opt/local/lib
LD_LIBRARY_PATH=/opt/local/lib:$LD_LIBRARY_PATH ./configure --prefix=/scratch/web/apache/2.2.3 \
--enable-modules=all --enable-file-cache --enable-cache --enable-dbd \
--enable-deflate --enable-ldap --enable-mime-magic --enable-expires --enable-headers \
--enable-usertrack --enable-unique-id --enable-version --enable-proxy --enable-proxy-connect \
--enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-ssl \
--enable-http --enable-dav --enable-info --enable-cgi --enable-vhost-alias --enable-imagemap \
--enable-speling --enable-rewrite --enable-so --with-mpm=prefork --with-ssl=/opt/local \
--enable-authnz-ldap --with-ldap --disable-static-support --enable-static-htpasswd=no \
--enable-static-htdigest=no --enable-static-rotatelogs=no --enable-static-logresolve=no \
--enable-static-htdbm=no --enable-static-ab=no --enable-static-checkgid=no

Note: if you enable the “–enable-v4-mapped” option then you’ll get messages like this one:

[Mon Sep 04 07:52:06 2006] [warn] (128)Network is unreachable: connect to listener on [::]:80

So, with apache 2.2.3 built and installed I added these lines to my httpd.conf file:

## http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html
ProxyPass               /roller         ajp://localhost:8009/roller
ProxyPassReverse        /roller         ajp://localhost:8009/roller
ProxyPass               /blog           ajp://localhost:8009/roller/page/jmcp
ProxyPassReverse        /blog           ajp://localhost:8009/roller/page/jmcp

Right, so that’s apache done, what about tomcat?

I pulled down a pre-built version (Java is great :>) and installed it in my desired location (/scratch/web/tomcat/tomcat). Drawing on the existing shell script /etc/rc3.d/S50apache I set CATALINA_HOME=/scratch/web/tomcat/tomcat, ditto for CATALINA_BASE and made sure that user webservd is the one which runs tomcat and apache. I had to chmod some of the directories under /scratch/web for that to work correctly first.

In order to enable the JVM server mode (better for long running processes), I edited $CATALINE_HOME/bin/catalina.sh, adding

##### jmcp start
CATALINA_OPTS="-Xms64m -server"
##### jmcp end

up the top of the script.

Then it was time to get roller happening.

Grab a copy of roller from the Download Page.There is a reasonably good installation guide published at the Roller Wiki site, and I used that quite extensively.

You need a backend db to store the blog entries and a few other things. The default that Roller uses is MySQL, but you can also use Oracle or postgresql. Since I’ve used PostgreSQL more than the others (and Sun bundles it and MySQL with Solaris Express) I figured I’d see how easy it would be to use it.

Once I’d created a postgres db (called roller) and started it, I had to create the various tables that roller needs.

There is a createdb.sql script supplied under $ROLLER/WEB-INF/dbscripts/postgresql which was a good start for this. However, it didn’t do all of the requisite GRANT operations, so I had to do those manually from within pg_ctl. (I was sure I’d noted them down somewhere, but I can’t lay my hands on the file).

That done, I then had to create a roller.xml file to deploy in tomcat’s $CATALINA_HOME/conf/Catalina/`hostname`/ directory.

Courtesy of the Wiki installation guide, I found a section labelled “Example for Tomcat 5.5.X Users” on which I based my deployment descriptor:

<Context path="/roller" docbase="/scratch/web/tomcat/roller" debug="0">
<Resource name="jdbc/rollerdb" auth="Container" type="javax.sql.DataSource">
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/roller?user=USERNAMEHERE&password=PASSWORDHERE"
username="USERNAMEHERE"
password="PASSWORDHERE"
maxActive="20"
maxIdle="3"
removeAbandoned="true"
maxWait="3000" />
<!-- If you want e-mail features, un-comment the section below -->
<!--<br/>  <Resource name="mail/Session" auth="Container" type="javax.mail.Session"<br/>     mail.smtp.host="mailhost.example.com" /> < br/>  -->
</Resource>
</Context>

You must ensure that you’ve got the db-specific JDBC connector jar installed under $CATALINA_HOME/common/lib. In my case, the package SUNWpostgr-jdbc contains /usr/share/java/postgresql.jar which was exactly what I needed.

I then started up tomcat and apache, connected to http://www.jmcpdotcom.com/blog and enjoyed seeing the login screen for roller.

After a day or so I remembered that I should get some SMF manifests together rather than shell scripts. So with thanks to Chris Gerhard amongst others I hacked up some manifests for postgres, tomcat and apache. +--------------+----------+----------------+ | service name | manifest | service script | +==============+==========+================+ | apache223 | http://www.jmcpdotcom.com/blog/wp-content/apache223.xml | http://www.jmcpdotcom.com/blog/wp-content/http-apache223 | +-----------+----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ | tomcat | http://www.jmcpdotcom.com/blog/wp-content/tomcat.xml | http://www.jmcpdotcom.com/blog/wp-content/tomcat.sh | +--------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ | postgres | http://www.jmcpdotcom.com/blog/wp-content/postgres.xml | http://www.jmcpdotcom.com/blog/wp-content/postgres.sh | +----------+---------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+

Edit the paths in the xml and shell scripts to suit your installation, then copy the scripts to the correct location, and run svccfg import /path/to/each/manifest followed by a quick svcadm enable svcname… and you should be good to go.

Technorati Tags: `tomcat`_, roller, `apache`_, postgresql, Solaris, OpenSolaris, infrastructure

System Message: WARNING/2 (<string>, line 195); backlink

Duplicate explicit target name: "tomcat".

System Message: WARNING/2 (<string>, line 196); backlink

Duplicate explicit target name: "apache".

Docutils System Messages

System Message: ERROR/3 (<string>, line 4); backlink

Duplicate target name, cannot be used as a unique reference: "tomcat".

System Message: ERROR/3 (<string>, line 4); backlink

Duplicate target name, cannot be used as a unique reference: "apache".

System Message: ERROR/3 (<string>, line 177); backlink

Duplicate target name, cannot be used as a unique reference: "tomcat".

System Message: ERROR/3 (<string>, line 177); backlink

Duplicate target name, cannot be used as a unique reference: "apache".




Where was I 5 years ago?

Five years ago today I was attending a Sun-internal conference StorageAces 2001 which was being held at the Newark, CA, Hilton hotel.There were a bunch of us there from the Australian operation, our flight had gotten in earlyish on the Sunday morning so we were actually too early to checkin at the hotel.

One of our rooms was ready though, so we dumped our bags there, hopped back into Dan’s rental car and hooned off to Fry’s at Fremont. It was just about the only place we knew would be open, have at least semi-decent coffee and where we could waste 3 hours with ease.So we did that, came back, checked in and got on with the conference. The Monday sessions went fairly quickly and I woke up early (05:45 US/Pacific) on the Tuesday.

I turned on the tv though forget which channel it was, and I saw the first plane fly into the building. I wasn’t really awake though, and I didn’t really hear what the newsheads were saying except that President Bush was talking about a terrorist attack. Then they cut back to the camera trained on the WTC and we saw the second plane hit.It was surreal. I did not believe what I was seeing, and I figured that President Bush was being melodramatic ...

So I went to the hotel’s gym for a quick job. There was a tv on in the room and I thought I should change the channel, but I didn’t — I guess I didn’t want to believe or put the pieces together. After about 15 minutes I went back to my room. By that time my brain was working and I began to realise wtf was going on.

I called J back in Sydney but only got our answering machine so I went and had breakfast. Everybody in the hotel was in shock. When I went back up to my room there was a vm from J, a little frantic, so I called back immediately. A good friend of ours had called her as well and J was watching Channel Nine, getting more and more frantic and scared. I was scared too. She was particularly worried when she heard talk of “Newark” on the tv, not realising that the talking heads were referring to Newark, NJ on the other side of the continent. I don’t recall whether I rang my parents or not, I assume I did. I asked J to keep the SMH for me until I got back.

All I was getting in the USA was the US perspective and since I didn’t have a laptop and the conference on-SWAN facilities were always in use by others I wasn’t able to read the SMH or the ABC online.

I felt so cut off, it was heartbreaking.

The Aussie contingent had a meeting a little later in the morning, and then I went and rang Sun’s 24 hour support number in Australia because I knew that I’d be able to get through to the oncall engineer and he or she would be able to get in contact with everybody’s manager. One of the Sydney-based SSEs had only recently moved to NYC, he worked in Sun’s office in the WTC and we were very worried for him —as much as for any— and everybody else of course.

The conference went downhill after that point. Pretty much everybody would gather in the bar to watch the Fox coverage … I vividly recall one Colorado-based SSE talking about how an immediate (ie, within 24 hours) retaliatory strike against Afghanistan was the best course of action… and then watching the towers crumble.

We had a world-wide headcount operation that morning. Not having been involved in a disaster before I had no idea what to expect. I bet the plans that Sun put into action that day were ones that they’d never thought they would ever have to use.

Whatever the case, from my point of view those plans worked just fine. Over the remaining three days of the conference with no planes flying into or out of SFO it was just surreal. Nobody really wanted to attend any sessions, we were all preoccupied with the thought of getting home. A lot of the attendees from the east coast started carpooling and drove all the way back so that they could help with reconstruction.

When a jumbo flew overhead at about lunchtime on the Thursday everybody cheered. It was amazing. We’d gotten used to the silence, but it was still eery, then that plane came in and the relief was palpable.

By the time the conference wrapped up on the Friday and we’d all checked out, the numbness was unbelievable. We couldn’t wait to get on the plane. I managed to score an upgrade to business class which after that week I really needed.

I rang J about 4 hours into the flight using the inflight satphone. I waited until then because I was still scared that we could have been hijacked too. We were a fair chunk of the way to Hawai’i by then so I figured we were ok. Unfortunately I scared the heck out of J – she assumed that this was my “goodbye darling, my plane’s been hijacked and I’m gonna die” phone call.When our flight landed at Sydney and we got through customs + immigration, I saw J waiting for me at the gate, and the relief was intense.




Personal flag day: Last day of Administration Leave

Today is my own personal flag day because it is now a month since I had my RIF chat. Part of the RIF process at Sun is that you are placed on administration leave for 30 days, in which time you can seek to be redeployed and thereby continue your employment.

The roles that I want within Sun are either not available any more (probably due to the RIF and associated re-orgs) or won’t be available for some time. And while I’m confident I can get a position within Sun again there’s no guarantee that I will. Some hotshot could waltz in with slightly better timing.

shrug

I’ve been working with some recruiters, doing a heap of personal networking and making use of some of the things I learnt at the outplacement course a few weeks ago. So I have a reasonable expectation that I’ll be earning a crust within a short period of time.

In the meantime my todo list is growing (in no particular order):

  • getting ONNV with hg figured out sufficiently that I could explain it to others

  • moving the i2c driver from $UTSBASE/sparc to $UTSBASE/common and

  • providing support for the SMBus on x86/x64

  • adding some dcmds to mdb to make it more like Solaris CAT

  • getting together a migration presentation for Solaris 10 and

  • putting a ZFS presentation – What’s in it for me?

Oh, and find time to play with Coder Cat... and be a husband too!