Mar 5

Today: 05-Mar-2008: The road to 1.5

Category: joomla,today

So a few months back we released Joomla! 1.5 which is really cool however like everything people are taking a while to upgrade. For a lot of people this is a problem bcause some components they want to use aren’t quite updated for 1.5, don’t work 100% properly in 1.5’s legacy mode or just plain don’t work at all.

An example of this is Project Fork. It appears to mostly work in legacy mode but it doesn’t like the users. The reason for this is a query that is silently failing which means that it can’t load users. The fix is available from the following location: http://pasamio.com/downloads/projectfork_controlpanelfix.zip. You can apply it by downloading the zip file and extract the controlpanel.class.php file to the /administrator/components/com_hydra/classes directory and overwriting the existing file that is there (you might want to have a copy of that first). This should fix up the user system for Project Fork in 1.5 when accessed from the control panel.

Hopefully this helps someone out 😉

2 comments

Feb 26

Chaophya Park Hotel, Bangkok

Category: travel

After staying at the Sofitel Centara Grant in Bangkok, I actually enjoyed the Chaophya much better, even though it is allegedly rated lower than the Sofitel, the atmosphere is much nicer. I’m sure some useless services I don’t use were offered but quite frankly the ones I do like to use (shower, pool, internet) were in my mind better at the Chaophya than at the Sofitel. The room size was nice, the bathroom was wonderful and I had my own personal ADSL connection that seemed to run fine. My only disappointment was that it was all centrally linked to the power so the network would go off when I left the room which meant that it was hard to download anything when I was absent from my computer and it took a minute or so for the ADSL to get line sync when I first came into the room. The place has some nice features and a nice restaurant and bar.

No comments

Feb 24

I hate (poor) web designers

Category: web

Web design is a skill I don’t have. I admit this freely that is why I write code. But what I hate more are the Photoshop crowd of web page designers that make my life well and truly hell because whilst it looks pretty at the fixed resolution in Photoshop it looks like absolute crap because they rely on Photoshop to build the HTML for them which produces tables with insane spans in them, I’m looking at one with a rowspan of 12. That means tha one cell is supposed to span 12 rows. There is another with 14 and one with a colspan of 9. What I’m realy complaining about here is the lack of decent web designers who can make a decent web page template, something that will work across browsers properly. I know they exist but they are well and truly not the majority of designers out here or at least not the ones I have to deal with. What is worst still is that I have to deal with situations where they have decided to hire the designer separately and get the design done and then I end up having to clean up the mess of a design to get it to render properly. It just makes my life hell when I could be doing better things. Next on my list are the horrible hosting companies that I end up having to deal with as well.

1 comment

Feb 22

Today: 22-Feb-2008: Exchange

Category: today

Over the last two weeks I’ve had lots of experience and fun with Citrix and have managed to learn more about Citrix, Windows, Flex and mandatory profiles. I’ve managed to play with all sorts of interesting toys and problems since I’ve had to play with this, and all of it coming from the guy who has a full time Linux desktop and a Mac (very fond of my Mac). We’re amalgamating and all of the other shires (maybe 200 people) don’t really want to move away from their near and dear Outlook client nor do they seem very co-operative for much else. So we end up having to provide them with Outlook instead of Notes.

What we have been trying to do rather unsuccessfully is get IBM’s Domino Access for Microsoft Outlook to play nicely together with everything, including the Hummingbird DM extensions for Outlook. We’ve tried every combination of settings and a few versions of DAMO to get things to play nicely and it really isn’t.

Initially we had some success with getting DAMO to work nicely with Outlook. It takes us a lot of effort to get a user set up with both DAMO, Outlook and their Domino/Notes ID file. We had to go through manually for each user and set them up, however we didn’t get that far.

We next tested to see if the DM extensions were going to play nicely with everything. We found that the DM extensions worked well but DAMO ended up not working at all. We tried this in both our Citrix test environment and then within a Windows XP machine. Simply put, it didn’t want to fly.

So we went for the next best option, which was setting up Scalix profiles. We had the same MAPI profile set up for each user and configuration but it wasn’t as bad as the process we had to go through with DAMO (that is one nasty piece of work). We were running with a trial of Scalix and put it into our training environment to get an idea of the way it would behave when you threw some real load at it. Then we discovered that we couldn’t only have a limited number of premium clients and ended up swapping users around in training to try and get a realistic picture of things. We also did some numbers on Scalix versus Exchange, because that is what our last options were looking like and it started look like in the long term Scalix was going to cost more over Exchange. Plus we found this really nice looking tool that will make integrating the two possible which could provide us even more features over the Scalix solution (this might solve integrated calendars that Scalix wasn’t going to give us, but DAMO would).

So now, after a few weeks of trying DAMO and Scalix we’ve gone for an Exchange solution that might be able to get us out of the water and those who don’t want to learn anything new (or understand for that matter) with Outlook…and mostly everyone is happy.

1 comment

Feb 10

Bash to Phing to make

Category: programming

So most of my day I write code which is cool. I usually don’t have to redeploy things because I end up testing in the same environment that I work on it isn’t until I start a release cycle that I need to start to package things up that I really utilise build scripts. Initially I used to just export from SVN and tar things up by hand. I had also recently heard a few proponents to suggest Phing, a PHP based build tool that uses XML files similar to ANT, as something to use with my build scripts. The scripting that I had done was all in Bash, a rather flexible shell environment but lacking in a few features that a dedicated build tool gives me.

What triggered a lot of this is a set of rather strange bash scripts that form the build tool for Joomla!. It handles building the packages, exporting the packages and building the patch packages (diff of new files and updated files from the old release). Wilco always says that we should use Phing instead because it has all of these features. So this project called JAuthTools that I work on started becoming big and it was a pain to build things for it by hand so I decided that now was the time to get into Phing.

Phing
Phing (http://phing.info/) is as stated before a PHP based build tool. Its web site says it can do anything you can do with a traditional build system, which is really kind of your base expectation when you think about it. Why would you replace your build system with something that provides you less? Phing comes with by default all of the nice things you’d want from a build tool, tasks to do things, output things, make directories, move and copy things, call other tasks and a few other nice things.

Problem is that what I’m after is something to build tarballs, and these are marked as optional tasks for the system. This has some cool things like DbDeploy, which connects to a special DB and builds SQL delta files (version control for your DB), coverage analysis, PDO SQL executor, PHPUnit and my personal favourites, tasks for Zip, Tar and Subversion.

So I went to install Phing on my work box. Its a Linux machine so I decided that I wanted to avoid the PEAR path because that is just as good as installing things all over my system. Phing lived happily in my personal bin directory until I realised that to get SVN working I needed to get this thing from PEAR. I decided that I might as well fight PEAR (and my work proxy for that matter) and install it that way. It only took a few attempts to get PEAR to work through my work proxy, it appears that between the last time I was fighting it they fixed it up which is nice. CPAN is another one that is a pain as well because it wants to pull things left and right and my proxy decides that half of the files it wants are too big and it should ask for them after 5pm instead or use a special download request system. But I digress, Phing ends up being mostly unhappily installed via PEAR with a few complaints (I said, “yes download your dependencies” which bombed out when it figured out that its dependency was still marked unstable and refused to install it (so why err bother? why not ask me! I want to install it, I even said so, that is what “alldpes” means right?)). So now I have a SVN capable Phing! Shiny!

So I go off and build all sorts of things and suddenly the installer rejects the package I just built with Phing complaining its an invalid zip file. So I ended up by working around this with a Bash script that basically rebuilt the ZIP archive after Phing was done with its business. So I progress from Bash to…err…Bash via Phing! This is on a PHP 5.2.5 latest build so I’m not sure where the fault for this lays, but if I end up using the old tool then as far as I’m concerned it isn’t a replacement for my build system.

The next thing that I ended up finding is that the nested dependencies appeared not to be fully supported by the tool, which didn’t particularly bother me however as you’ll read later Make supported this perfectly fine. So I ended up having to alter my build file to handle Subversion check outs better because it would check it out for each sub dependencies. So I would have a top level one and then sub-dependencies so that each individual item wouldn’t have to do it themselves, especially for the targets that matched the same repository. I ended up just moving this into a common parent dependency and going from there.

And then I wanted to do some work on my Mac at home. I have a slightly out of date PHP, 5.2.0, which appears to have caused issues. This time I went straight to using PEAR to install things and again this caused issues, but given I was expecting some hassles I managed to get things working. I also don’t have a nasty proxy or firewall so that makes life easier for me as well when installing these things. I tried out my first build script and it spewed out a horrible amount of errors. For some reason on this combination SVN doesn’t want to work which dies silently which then causes the rest of the script to fail because it expects the SVN task to succeed and given I’m using a build tool to ensure that errors get properly trapped it doesn’t bail out or check that directories exist like I could do with a shell script.

Whilst this all sounds bad I did however like one feature that allowed me to control what the zip task (or selected other tasks) included and excluded which made things easier for building packages and controlling operations that are slightly harder in bash or make.

Make
Today I started off making a few new scripts on my Mac to replace the non functional Phing scripts. It wasn’t too hard to go from Phing to Make but I ended up re-expanding out my SVN scripts now that I have a system where the dependencies work better. Strangely enough my zip files also started building properly which was nice to have. But this got me thinking: why do we reinvent the wheel?

Sure it is nice to have a fancy XML file that takes a lot of control away, but at the end of the day when I compare what I wrote to get SVN to export in Phing and what I have to do with Make or BASH, on sheer number of characters I end up finding that Phing loses again.

But here is the really simple thing: Phing’s SVN support is a wrapper around the regular command line SVN client. The advantage of using Make or BASH is their portability for myself. My primary environments are Mac and Linux, and when I have been on Windows for extended periods of time I ended up installing Cygwin. So at the end of the day my build system is portable between systems. Additionally the “Gotcha’s” page for Phing shows that it isn’t really a walk in the park to get it to work on Windows either. The question is that do you really want to play with your build system each time you want to change platforms or do you want to go and get up and go without too many issues.

Make and BASH are both staples of the Unix environment and have had years of testing. Whilst it is nice to have something with a whole heap of new features, the fact is that some of the basic functionality doesn’t work properly or is a pain to get working across platforms: I ended up replicating these features anyway.

No comments

Feb 5

JAuthTools Update

Today I’ve been working on some new stuff for Joomla! to enable SSO between disparate Joomla! instances. I’ve tested it on Joomla! 1.0 and 1.5 in legacy mode. I’ll do some more work later to get it working with Joomla! 1.5 in native mode and to better integrate with JAuthTools for 1.5 (to utilise the SSO system that I’ve written for 1.5). If you’re interested, check out the JAuthTools SVN here: http://joomlacode.org/svn/jauthtools/sso/joomla10x/soapsso. If you check it out you can use the install from directory feature to install it into your test sites. I’ll have packages up in the next few days.

I’m also looking at doing some work on the JAuthTools for 1.5 to improve support. There appears to be some issues so I want to get it back up and running as well as porting/merging some of the features from the LDAP SSI into 1.5 and the LDAP Authentication plugin. I’ll probably also do some update to docs on the wiki as well to reflect the new features.

Things on my todo list after I clean up my released JAuthTools plugins:

  • Backlink Manager
  • JAuthTools Manager
  • JDiagnostics for 1.5
3 comments

Jan 21

Today: 21-Jan-2008: Fun with postgres

Category: today

Its interesting to see what tools and environments give you the skills and knowledge to apply to different circumstances. Today I had someone ask me a question: how do I have a unique number against multiple databases in a system across multiple sessions in Kettle. The Kettle sequence generator by default isn’t able to be altered via params which means it starts from zero for each one, which isn’t what we really wanted. The solution was something simple: use postgres. PostgreSQL isn’t my most favourite database, its complete with lots of nice little traps for new users and I always forget the traps each time I set it up. I kid you not, it annoys me no end all of the little things I have to change to get PostgreSQL to work in the same fashion as MySQL. Its just that I don’t use it enough though its still more work. In any case, we created our sequence generator in PostgreSQL and connected it up to Kettle and the thing worked perfectly (once I got postgres listening on the right interface, gave the remote server access to connect and fixed up the permissions). Beyond that today was filled with not a lot else that was interesting, more PHP work, fun with ASP systems that nobody knows anything about and building my filesystem and crashing things.

No comments

Jan 20

Cloverfield

Category: movies

To sum it up: shakey camera action to cover up the lack of a strong story line, with pathetically long character development and an ending that really reminds me of the Fellowship of the Ring: the damned thing still isn’t over. Spoilers ahead.

In fact I’d almost draw complete parallels with The Lord of the Rings: The Fellowship of the Ring. Though I must admit that I thought Cloverfield grinded along more than the Fellowship but it at least had the advantage that you knew there were two more movies to come, that they had to stop it somewhere and they even did a better way. I’d almost rate the action in Cloverfield as on par as the Fellowship as well, unless you count the people hiding and things randomly exploding as action (the scene from where they go up to the room to when they go down to the alley way was just people running and screaming isn’t action in my opinion its just people running and screaming). So heres the basic layout of the movie:
1) Introduce the characters in a tremendously long party scene complete with a bit of stupid drama. Intersperse this with a long forgotten day with what I guess are two main protagonists, this guy and some chick he has been friends with for a long time and they really deeply love each other but never really let it show blah blah blah (Start of the Fellowship in the Shire)
2) Things exploding, people running and screaming, hiding somewhere for a short while before moving again (this time not really running) (the Shire escape through the forest perhaps, with the fight at Weathertop (iirc))
3) Their bridge and way out of the city gets taken out and the guy gets the call from the girl saying she is trapped come save me (Rivendell)
4) They go forth to save said girl and end up in the middle of a large fight with the monster and the army and end up in the subway (Moria!) and then end up being chased by monsters in said Subway (still Moria) before coming out into the light and into friendly company (barely Lothlorien/Caras Galadhon).
5) They end up running again and recover the girl (no match to Fellowship here) and start running back for their evacuation (back to the fellowship, except trade boats with choppers) and the monster knocks the chopper down and it crashes (the falls)
6) Big scary monster attacks them and kills one of them (poor Boromir) and the guy and his girl escape from this and hide under a bridge

Someone said it should finished at the point where the chopper crashes, I’d tend to go with that sentiment. There is one more part where they basically nuke manhattan (I’m guessing). During the credit it goes “help us” and “its still alive” so I guess the guy is edging for a sequel. However the worst thing for me was that the damned camera never stopped moving during the entire movie and was smack bang in the centre of the theatre (not as bad as up near the front) which caused me to be sick between 3 and 4 (I’m told all I missed was the monster appearing for a short while) because I’d eaten a bit too much popcorn before hand (that I had been overcharged for as well). That and the general feeling of the audience when the credits started was: what, that is it? It’s over? Just a deathly air of silence. This is tied with the last time I went to the movies to see The Golden Compass (was really looking forward to that movie and enjoyed it) and ended up having parts of it ruined by a baby crying and people talking to their children.

I think next time I’ll pirate the damn thing, not get over charged on top of the already rip off price for popcorn and some coke to watch some crappy movie that I can’t pause when I need to go to the toilet because the damned director decided to make up for the defects in the story by continuously shaking the camera. When I wasn’t feeling sick or nausea, I was bored and and at no point was I scared (perhaps because the camera kept moving I couldn’t be scared and when the camera wasn’t moving that much I was either waiting for something to happen or nothing exciting happened). The problem with the scheme as it exists today is that the shit movies still get box office ratings and money whilst being of poor quality. People can only stand being ripped off so much before they sick of it.

No comments

Jan 14

Today, 14-Jan-08: Query languages, LDAP, business intelligence and filesystems

I’m going to start regularly writing daily posts about what I did today and the things I found interesting, I’ll at least try anyway.

First up for today is a personal thing, I completed a rather largish Uni assignment today which reminded me of all of the pains that come with C++, but to follow that I returned to working on my filesystem in C, which is just more pain. I got a quick response back, and almost full marks (96%) so I’m happy for all of the time I put in to get it done and how its probably far more complicated than anything else that will be submitted (it used Boost Signals and a whole heap of other things that I don’t think will ever be taught in the subject for a long time). But hey, thats just Uni!

Today I finally managed to get Pentaho, some business intelligence (BI) software, to play nicely with Novell eDirectory’s LDAP interface. I must have missed the option, but Pentaho doesn’t seem to accept anonymous binding to the LDAP server, which means I need to bind as a user. By default our users funnily enough have less access than the anonymous account (which is actually a proxy account with full browse permissions). The solution was simple enough: we shunted our dummy Pentaho user into the same group as the anonymous proxy account and everything worked. So I’ve now got Pentaho using LDAP for authentication (yay!) and a MySQL database to get its role/group permissions. Funnily enough when its all said and done the documentation is pretty close to the mark.

But once I had that I don’t have an ability to manage the groups/roles within Pentaho, so I end up having to write some small PHP to manage that. Luckily I worked on a project a while back that I called “Joomla! Central Management for Users” which basically connected directly to MySQL databases of Joomla! installs and altered the users. I had originally built it with a plugin infrastructure in mind so that I could plug other stuff into it later. Starting this morning it only had a ‘connector’ for Joomla! 1.0 via MySQL and LDAP, now it has one for the Pentaho security tables. This means I can easily copy users from LDAP or Joomla! into Pentaho without too much issues and has a debugged user interface already. But wait theres more!

When I was originally developing the tool I wrote a query language for it. See, SQL is a great language for databases, but its a bit hard to apply in situations where you don’t quite need all of that power. So I wrote my own query language. Its quite simple it can validate simple attributes and allows for set operations within “Sites” (a site is a container for users and groups). So for example I want to see all of the users who are on our web site but not in our LDAP directory:
existsin “Web Sites” and not existsin “LDAP”

Primitive sure, but it because writing a large SQL expression for something simple. I hope to expand on it, but it already does what it needs to do for the time being.

So I’ve covered query languages, LDAP and BI! All I need now is the filesystem news. Today there was a whole heap of fan fare on Slashdot about the ZFS news from Apple, whilst thats cool and all (especially since I don’t mind Apple’s UI), I personally have my own filesystem that I’ve gotten back into to do some work on. It also happens to be a Uni assignment due on Friday! So I’ll be back to working on that and hopefully I’ll have it to a nice stage that I can do some lightening talks at linux.conf.au!

No comments

Dec 22

Quicksilver

Category: applications,mac,macosx

If you are using a Mac and haven’t heard of Quicksilver then you are missing out in life, especially if you are a person who spends most of their time on the keyboard. Even when I’m not on a Mac, I still miss Quicksilver and the functionality it offers. I’m writing about it because just today I wondered “can it do this?” and funnily enough it could. It does help that I have enough plugins to sink a ship installed in it, however unlike other projects it doesn’t slow down when it gets all of these plugins installed on it, or not to any point that I can notice anyway!

For those of you who have heard of Spotlight, Mac OS X’s search utility, might have heard that it can launch applications as well as finding and indexing the contents of the hard drive. Quicksilver takes that one step further and provides not just the objects but allows you to bind useful actions to those objects, but you aren’t restricted to just one action. For example I launch Quicksilver and type “next song” (its found what I’m looking for by ‘next’) and next to this a whole heap of options appear, with the first preference (configurable of course) being ‘Run’ to execute this object. Its actually a Quicksilver plugin for controlling iTunes that I’ve installed.

Quicksilver for me ends up being the main program from which I launch applications. I’m a developer so that means that I end up typing on the keyboard more often than I end up clicking. Not only this but because Quicksilver uses a search metaphor, it is often quicker to find applications or files via typing than it is to move to the mouse and start pointing around. Remembering back to my GUI theory with KLM where pointing and clicking is far slower than plain typing (the benefit of Quicksilver is that I never move my hands from the keyboard). Again for a new user or one who types slowly, Quicksilver isn’t going to be as useful a tool, however for most users who can type at a reasonable pace, and especially for those who can touch type, Quicksilver is brilliant.

For more information about Quicksilver, check out Blacktree at http://www.blacktree.com

No comments

« Previous PageNext Page »