Posts

Showing posts from 2009

A bit of xmas admin support

It started off simple enough: "Can you install Photoshop Elements please?" - A friend got Photoshop Elements for xmas, since it was plugged as an easy, effective way to manage and share photos. (Toshiba laptop, running Vista) Installing it was easy enough, but when coming to share photos via email it got a bit scary because, he uses Yahoo mail, not a fat email client. When I started looking at it I though okay, I just need to set up Outlook with the mail server settings. Going into the help menu in Yahoo mail gave some pretty clear instructions on how to set Outlook up - but it didn't work. It kept asking for the username and password, which never worked. Searching around the web showed people talking about POP access to Yahoo mail, some suggesting it was a paid feature. But the Yahoo documentation didn't make any mention of needing a paid account. After wasting too much time on this, I just set up gmail - I knew I could easily access POP and SMTP here. So after c

A simple task queue

I'm working on a little sample framework - really only to keep my sanity and practice my chosen craft - that allows you to string together tasks in a pipeline for processing. To exercise that framework - to flush out the pros and cons of the implementation - I'm writing a sample application. The basic idea is that each task is interested in an event. That event could be the arrival of a file, or the completion of another task etc. To string tasks together, I've created a simple database queue system - as a task completes, it writes to the queue and then other tasks which are interested will see that event and then begin. Tasks complete either successfully (by returning no errors) or unsuccessfully (by returning more than one error). An important concept is to be able to add (or remove) tasks from the pipeline programmatically and without changing the database schema. So, quite simply, when a task completes, that event is written to the queue - but how do we find which event

Rapache on Ubuntu 9.10

I've just now stumbled across Rapache , a useful GUI tool that makes configuring apache easy. I found it by accident in the Ubuntu Software Center, but unfortunately it would freeze while trying to add a new domain. I searched the web for answers, and found a bug report . This didn't specifically reference Ubuntu 9.10 (rather, 9.04) and the file that needed to be patched didn't exist in the given location. I found it easily enough: paul@paul-laptop:~$ sudo find / -name RapacheGui.py[sudo] password for paul: /usr/lib/pymodules/python2.5/RapacheGtk/RapacheGui.py /usr/lib/pymodules/python2.6/RapacheGtk/RapacheGui.py /usr/share/pyshared/RapacheGtk/RapacheGui.py paul@paul-laptop:~$ I edited the last one (/usr/share/pyshared/RapacheGtk/RapacheGui.py) as documented in comment 23 to add the following at line 79: if not Shell.command.ask_password(): sys.exit(1) Note, this line MUST be preceeded by 8 spaces - indentation is important in Python. Now, rapache would prompt for

Tagging with Appengine DataStore

I've been looking into how to implement a tagging mechanism with Appengine (Python). By using a StringListProperty, you can associate a list of tags with an entity. The model would look something like this: from google.appengine.ext import db class Sample(db.Model): name = db.StringProperty(required=True) tags = db.StringListProperty() Now, assuming we want to find the entities tagged with a given word, we can use a query like this: q = db.GqlQuery("SELECT * FROM Sample where tags = :1",'z') If we want to find all entities that have ANY of these tags (OR) we can query with GqlQuery or filter: q = db.GqlQuery("SELECT * FROM Sample where tags in :1",['a','z']) q = domain.Sample.all() q.filter("tags in ", ['b','d']) When we want to find entities with ALL of the given tags: q = db.GqlQuery("SELECT * FROM Sample where tags = :1 and tags = :2",'b','c') q = domain.Sample.all() q.filter(&quo

No module named _multiprocessing

I'm getting back into appengine at the moment, and I came across this error: No module named _multiprocessing A google search turned up this error report: http://code.google.com/p/googleappengine/issues/detail?id=1504 which lead to this post: http://code.google.com/p/soc/wiki/GettingStarted The problem was of-course, that I was using Python 2.6 instead of 2.5. I love Linux, the solution is trivial: The workaround for this is to install Python 2.5 on your machine. It will be then be accessible by using python2.5 on the command line. Then open thirdparty/google_appengine/dev_appserver.py in your favorite text editor and replace the first line, #!/usr/bin/env python with #!/usr/bin/env python2.5 Note, I already had Python 2.5 installed via: sudo apt-get install python2.5 Now, I'll promptly get back to figuring out how best to use DataStore to implement my solution!

Amazon web services via Grails

I just recently noticed that Amazon have changed the way you invoke their Product Advertising API - you now need to sign requests as described in the Example REST Requests . I obviously haven't been reading my emails, since the first clue came when I saw: <Error><Code>MissingParameter</Code><Message>The request must contain the parameter Signature.</Message></Error> Luckily, they have a java example demonstrating how to make an API request. If you extract the source from this sample into your <GRAILS_APP>/src/java directory, then you can invoke the amazon api with code like: [sourcecode language="java"] import org.codehaus.groovy.grails.commons.ConfigurationHolder import com.amazon.advertising.api.sample.* class AmazonService { private static final String ENDPOINT = "ecs.amazonaws.com"; private static final String AWS_SECRET_KEY = "put your secret key here"; private static final String AWS_ACCESS_KEY_ID

Locked subversion working copy

I don't know how it happened, but my local working copy got locked. This meant that every time I tried to commit, I got a 'working copy is locked' error. The solution was easy, after I found a reference in the FAQ : svn cleanup <directory>

Default open action for Ubuntu

Something happened on my Ubuntu install sometime which meant that double clicking on an HTML file resulted in the file being opened by gedit . Not really what I wanted. I started looking through the GNOME system menu (Preferences and Administration) to find how to change the default action - but that turned out to be the wrong place. In Nautilus , simply right click on the file and select 'Properties'. From there, go to the 'Open with' tab and select the appropriate application.

The problem with Digital TV

The problem with Australian Digital TV or at least, using a media center in Australia is: The standard def and high def channels are almost the same, but not quite. The high def channels have subtly different programs such as special documentaries. The EIT is a mess - spelling mistakes, program name changes (series premire, season finale, double episode etc), and not starting/finishing on time. The consequence of (1) is that you can't just go and say 'record all' - you've then got to go edit that rule to say 'only on this channel', otherwise you'll end up with 2 recordings of the same program, one standard def, one high def. You wouldn't actually want to delete one of the channels, because the differences can be interesting. The EIT issue is more serious - instead of being able to say 'record all occurances of "Program 1" only on this channel' you need to change this to not be so exact on the program name and use "%Program 1%&q

The week in review - 2009-32

SpringSource Roo I just found out this week about SpringSource Roo - a rapid development tools that promises: Working applications within 10 minutes of finishing the download I haven't used it yet, but at first glance it looks like a Grails/Rails type tool but being plain Java based as opposed to Groovy or Ruby based. This is a great move, since enterprises just don't seem to be able to get comfortable with dynamic languages - I mean, why continue worry about every little nut and bolt when Grails takes care of all that detail - Roo may just be the ticket for those too afraid to make the jump to Grails. SpringSource STS I've been using Netbeans 6.7 for Grails development these days (with what little time I have), but I'm thinking about trying out the latest SpringSource Tool Suite (STS) - I'm a big fan of everything SpringSource does, and I'm keen to see what their Groovy support in Eclipse is like. Replacing a DVD drive in Mythbuntu When I originally set

Sharing data between applications

Sometimes applications need access to data from another application. Here is one approach you could take: Define a view in the database that owns the data - this view should expose the data that the external application needs Grant select permissions so that the external application can select from the view Create a synonym in the external applications database for the view so that it appears as a local resource This has the advantage that the owner of the data defines what is exposed. Handy if the data is sensitive in any way. This solution also assumes that the external application only wants to read the data. If it wanted to write to the database, then the application that owns the data should probably publish an API (eg web services et al).

Adding items to Gnome menus

I've always wondered how to add items to Gnome menus. Well, it turns out it is relatively easy - as you would expect - and its documented here . It's as simple as creating a text file in the right place - refreshing easy compared to the binary shortcuts in Windows. When I was working on ToolInstaller , I added support for Windows shortcuts by using the OrangeVolt ant tasks library. Now that I have the missing piece of the puzzle, ToolInstaller could be easily modified to support Linux (GNOME). ToolInstaller was a project I started years ago - it was inspired by how easy it was to install software on linux (i.e. apt-get, yum) by using a repository of software, combined with the simplicity of programs which can just be unzipped.

No Scope registered for scope request

Recently I was working with some code which defined beans as request scope. Junit tests failed with the following exception while trying to initialize the application context: Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: ...; nested exception is java.lang.IllegalStateException: No Scope registered for scope 'request' I found the solution by searching around (unfortunately I didn't record the sources). Basically, you can register the required scopes as shown below: [sourcecode language='java'] import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestScope; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.SessionScope; public class SampleTest extends AbstractDependencyInjectionSpringContextTests { @Override protected v

Trinidad and text wrapping

While using Trinidad 1.0.1 I came across a problem where text did not wrap when displaying read only text fields. This meant that everything was pushed off the right hand side of the page. I had to change the fields from: <tr:inputText label="#{msgs['message1']}" styleClass="labelRight" required="false" value="#{mybean.value}" id="mybean" columns="10" readOnly="true"/> to <tr:panelLabelAndMessage label="#{msgs['message1']}"> <tr:outputText value="#{mybean.value}" /> </tr:panelLabelAndMessage> and added the following to my style sheet: .af_panelFormLayout_content-cell { white-space: normal; } Note outputText instead of inputText. It was tricky to get it working in FF and IE at the same time.

Virtual machines with VirtualBox

I've found VirtualBox to be very easy to create virtual machines - it's free, open source, and available on Windows, Linux, Macintosh and OpenSolaris. One of the features I particularly like is being able to create a virtual disk that grows as needed ( dynamically expanding image ). You can also mount an iso image for the CD/DVD drive - which is exactly what I want to do when installing the operating system on my new virtual machine. Installing on Ubuntu is as easy as: sudo apt-get install virtualbox Now, from the Applications/Accessories/VirtualBox OSE menu item, you can start VirtualBox and create virtual machines. Several things I need to remember after I've created a new machine: Under "Settings/General/Advanced" select "Enable PAE/NX" to avoid the "This kernel requires the following features not present on the CPU: 0:6 Unable to boot - please use a kernel appropriate for your CPU." Under "Settings/Network/Adapter 1" select

Finding constraints in Oracle

It can be quite frustrating when you get exceptions like those below - constraint violations where the constraint has a system generated name which means nothing to you: 2009-03-23 23:30:43 ERROR [AbstractFlushingEventListener.performExecutions] Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update ... Caused by: java.sql.BatchUpdateException: ORA-00001: unique constraint (SAMPLE.SYS_C00123456) violated ... The easiest way to find out which table this constraint is associated with is to issue a statement as shown: select constraint_name, table_name from user_constraints where constraint_name='SYS_C00123456'; Now you know the table involved, you can easily find out the exact nature of the constraint in various ways - my tool of choice is SqlDeveloper - a GUI interface to Oracle (and other) database.

Just for a bit of fun... whohasmorefollowers.com

Recently I jumped on the Twitter bandwagon and created whohasmorefollowers.com - a simple service that lets you compare the number of followers for 2 Twitter users. This weekend I added a game feature to it - the player is presented with 2 random twitter users (from the top 50) and is challenged to guess which user has the most followers. It makes you think, and the results can surprise you! Why build such a thing? Well, just for a bit of fun really. But it was also a good excuse to familiarise myself with: jquery jquery plugins ( jquery.template ) blueprint css framework Another added benefit was with having such a simple application was that the whole exercise fitted into a very short timebox . The exposure to these frameworks made it worthwhile doing, and it reminded me how painful IE can be. If you're interested, play the game and tweet your score!

Redirecting javathinking.com to www.javathinking.com

I thought it would be a good idea to redirect requests to http://javathinking.com to http://www.javathinking.com and I found out how to do that easily here. Basically I just needed to add the apache directives: RewriteEngine on RewriteCond %{HTTP_HOST} ^javathinking.com RewriteRule ^(.*)$ http://www.javathinking.com$1 [R=permanent,L] In ISPConfig this can be done easily through the administration console rather than editing the apache config files. Firebug shows me that I am now getting a 301 redirect when accessing http://javathinking.com.

cp with force overwrite

I was recently trying to copy a directory over an existing one and kept getting prompted - asking if I wanted to overwrite existing files - even though I was using the force option: cp -Rf dir1 dir2 I found the answer  here  - it was caused by an alias forcing the interactive mode. Quick solution is to bypass the alias by an absolute reference to cp: /bin/cp -Rf dir1 dir2

Error executing script War: No such property: stagingDir for class:_Events

While trying out my new Morph Grails hosting account, I installed the morph-deploy plugin and then promptly discovered that 'grails war' failed with Error executing script War: No such property: stagingDir for class: _Events It turns out this is a known problem with Grails 1.1 and the solution is to delete the _Events.groovy file in [your home dir]/.grails/1.1/projects/[your application]/plugins/morph-deploy-0.1/scripts

Modifying web.xml in Grails

I'm trying out Grails application hosting at Mor.ph with a  free developer account . To put up a sample application, I wanted to be able to protect the site with basic authentication so that it won't be accidentally found and played with. So, following the Mor.ph instructions, I needed to modify web.xml to add security constraints and a login mechanism. As with most things Grails,  the solution  was easy - simply install the templates and modify the web.xml template. But, at the moment I have to uncomment it in order to get it running locally - what I really need is a way to only put this modification in when the environment is production...

Playlists with MythTV

I've been wanting a way to use playlists on my media center either from within MythTV or with any other player. The reason is I have a bunch of short videos (music and documentaries) that I'd like to be able to play consecutively. It turns out to be a case of just RTFM . You can create playlists for MPlayer from directory listings, and then associate playlists with a particular mplayer command. To generate the playlist from all files in a directory, I use the following: dir * | sed 's/\\//g' > all_videos.pls The sed part of this command removes the \ from escaped spaces... i.e. a file 'Hello world' is output from the dir command as 'Hello\ world' - the space is escaped. We need to generate a file without these escaped spaces for it to work properly. I use the following mplayer command associated with the pls extension: mplayer -shuffle -fs -zoom -quiet -vo xv -playlist %s

Hey! Where'd my swap go?

I've just noticed that I've got no swap space! (Dell 1525 running Ubuntu 8.10). I first installed my laptop with Ubuntu 8.04, and later upgraded to 8.10. After the upgrade I noticed that hibernate no longer worked, and I think (from memory) I found an error message saying something about not enough swap space. I briefly thought about trying to find out how to add more swap (I already had a 4G partition defined, and I've only got 2G ram) but then I swiftly moved on to other more pressing issues. Well, just recently I fired up System Monitor to check on a process, and notice in the bottom right corner it said there was no swap space. Firing up 'top' confirmed this - my system had zero swap! I could see that I had a swap partition defined: paul@dell1525:~$ sudo blkid /dev/sda8: TYPE="swap" UUID="4bd53cb9-611c-4e57-a9df-4754d6bcdd65" But the corresponding entry in /etc/fstab had a different entry:. # /dev/sda8 UUID=e6eb6c47-599c-4612-ac8a-287279ee438

Grails Openid plugin and Xerces

I just created a grails 1.1 application, and installed the openid plugin. When starting the application, I got the following exception: 2009-03-17 22:25:41,090 [main] ERROR context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'consumerManager': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.openid4java.consumer.ConsumerManager]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/xerces/parsers/DOMParser at java.security.AccessController.doPrivileged(Native Method) ... Caused by: java.lang.NoClassDefFoundError: org/apache/xerces/parsers/DOMParser at org.openid4java.discovery.Discovery. (Discovery.java:47) at org.openid4java.consumer.ConsumerManager. (ConsumerManager.java:51) ... 21 more I worked around this by dropping xercesImpl-2.6.2.jar in the l

Set default browser in Ubuntu

To set the default browser, use update-alternatives as shown below: paul@dell1525:~$ sudo update-alternatives --config x-www-browser There are 2 alternatives which provide `x-www-browser'. Selection Alternative ----------------------------------------------- 1 /usr/bin/firefox-3.0 *+ 2 /usr/bin/seamonkey Press enter to keep the default[*], or type selection number: 1 Using '/usr/bin/firefox-3.0' to provide 'x-www-browser'. There is a good write-up of the update-alternatives system here .

Podcatching solution

I'm getting closer to a podcatching solution with gpodder . Gpodder is a simple and easy to use podcatcher - and importantly, it can be invoked from the command line in a non-interactive mode. This is important because of my internet plan - I get twice as much download quota on off-peak times as I do on on-peak. So, I can shedule a cron job to fire gpodder up at 1am and download the latest podcasts. Great, because I'm not going to consume precious on-peak bandwidth. Now that I've got the latest podcasts handy, I can listen to them on my media center using Amarok . This isn't the only option, but it works for me because the interface lets me 'group by album' - which is conveniently groups most podcasts - and display those added today/1 week/1 month/... Amarok also lets me configure Xine to output to SPDIF - important, because my media center is only connected via SPDIF to my surround sound receiver. Without this option, I wouldn't be able to hear anything. A

Extra Ubuntu Repositories

A friend put me on to this blog post about extra repositories for Ubuntu. This is a great resource which highlights some great (and possibly essential) software that you should know about if you are running Ubuntu (and possibly any linux flavour). Have a look, you may find some software listed there of interest to you. I didn't know about some of the items listed (eg GNOME Do ) so its been a great resource for me.

Getting rid of Root email

I've got a Linux VPS through RimuHosting - I'm no system admin, and the root account gets a pile of email spam. This takes up disk space so I try to regularly delete it. The best way I've found is to us Mutt - a console based email reader. Firing up Mutt as root displays the thousands of spam mails recieved. Pressing 'D' lets you delete messages that match a pattern. So I can specify the pattern 'a' and that matches almost all of the messages. When quitting the application, it deletes the marked messages. So, this is a good solution for reading or deleting many emails without downloading them - if you have ssh access. To avoid having to do this, can anyone tell me how to stop receiving these emails?

Groovy and Grails books

The catalog of Groovy and Grails books keeps growing, so if you are in the market for some, check out these sources: Pragmatic programmer Grails Groovy Apress Grails Groovy Manning Grails in Action Groovy in Action On Amazon:

Removing svn files

I recently needed to clean up and remove all of the svn files in a directory structure. I found the answer here , a simple linux command line to recursively delete .svn folders: find . -name ".svn" -print0 | xargs -0 rm -Rf

Over typing -Dskip.junit=true

I generally prefer Maven2, but I'm currently on a project using a custom ant build script - and I'm over having to type -Dskip.junit=true when I just want to generate a quick jar without running the tests. To easily switch off tests, I modified ant.bat so that it looks for a command line parameter 'st' and if found, it will substitute it with -Dskip.junit=true. In Ant 1.7.0, you just need to change line 68 in block ':setupArgs' from set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1 to if ""%1""==""st"" (set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% -Dskip.junit=true) else (set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1) So, the whole block reads (from line 65): :setupArgs if ""%1""=="""" goto doneStart if ""%1""==""-noclasspath"" goto clearclasspath if ""%1""==""st"" (set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% -Dskip

Cannot find a valid baseurl for repo: core

I came across this error while trying to install a package on Fedora 5: # yum install gd-devel Loading "installonlyn" plugin Setting up Install Process Setting up repositories core [1/3] Cannot find a valid baseurl for repo: core Error: Cannot find a valid baseurl for repo: core The solution was relatively simple if obscure - I found it  here . I simply changed the enabled=1 to enabled=0 in: /etc/yum.repos.d/fedora-core.repo /etc/yum.repos.d/fedora-extras.repo /etc/yum.repos.d/fedora-updates.repo

Do you have that package installed

With yum, you can find out if you have a package installed using the query option. For example if you want to know if 'php-gd' is installed: # rpm -q php-gd php-gd-5.1.6-1.6

Mplayer sound via SPDIF

I recently lost sound via mplayer on my MythTV mediacenter. This affected any of my video collection that weren't DVD iso images since mplayer was the configured player for most types. At first I thought it might have been related to doing a system update, but now I think it was related to my tinkering which got interrupted by the kids - and then promptly forgotten about. Days or weeks later, I was surprised to find the sound missing when playing videos (rarely done - I usually watch the recordings or DVDs which use the internal player). Now that I've fixed the issue, the problem is obvious. I have a Gigabyte motherboard and I use the SPDIF output to take the sound via optical cable into my surround sound receiver. In the video setup, I had the default player set to mplayer with the command: mplayer -ao alsa:device=spdif -fs -zoom -quiet -vo xv %s This directed sound to the SPDIF output. But, when using MythStream, no sound came out when watching things such as the Apple movi

Do you need a Grails developer in Sydney?

If you haven't heard of Grails, head on over to Grails.org and have a look. Grails breaks down the barriers to the Java platform and gives you a highly productive environment for building web applications - and you are always free to utilise plain Java seamlessly. Having used Grails on my personal projects , and written several Grails plugins, I'm sold. My time is precious and I can achieve a lot with a small amount of code, in a small amount of time - free of a lot of the bureaucracy of "Enterprise" Java applications. If you are interested in working with Grails and need a conscientious, motivated guy on your team, drop me a line: paulrule1@gmail.com . To get to know me better, see: http://www.myonlineprofile.net/profile/prule http://www.ohloh.net/stacks/27540 http://www.linkedin.com/in/paulrule

Linux sound on the Dell 1525

Sound on my Dell 1525 notebook has always been dodgy under Linux. On windows it runs fine, but under Linux (Ubuntu 8.10) sound is very low - it only becomes audible at 50% volume, so at full volume it is quiet. The real show-stopper is that Skype is unusable since the microphone is also severely attenuated. Doing a test call on Skype results in a barely audible playback. I've spent several hours here and there, looking for solutions. The latest adventure lead me to forum posts from 2006 which lead me from resource to resource until I finally came to SoundTroubleShooting which is probably where I should have started. From here I reached the ALSA Intel supported hardware list. Turns out my hardware is not supported: paul@dell1525:~$ lspci | grep -i audio 00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02) The ICH8 is not listed as supported hardware. The solution is to get a supported sound card. My workaround means I'm going to have to us

The price of buying books online

Image
I wish all books were available as PDFs. I don't like the physical space real books take up, and I don't appreciate paying for delivery, or waiting for delivery. Some books are available for Kindle, but I just want a PDF. Recently I wanted to buy 4 books - my first instinct was to go to Amazon: Item(s) Subtotal: AUD 97.92 Shipping & Handling: AUD 39.50 Total AUD 137.42 I'd prefer not to pay $40 for delivery, so I thought I'd check more local places to compare: Dymocks.com.au Fishpond.co.nz Amazon.com Building a WordPress Blog People Want to Read AUD32.95 NZD48.99 USD19.79 ProBlogger: Secrets for Blogging Your Way to a Six-Figure Income AUD42.95 NZD46.69 USD16.49 Outliers: The Story of Success AUD61.51 NZD52.98 USD15.39 The Huffington Post Complete Guide to Blogging N/A NZD33.96 USD10.20 Total AUD137.41 NZD182.62 (AUD150.85) AUD137.42 So from Dymocks, 3 out of the 4 books cost AUD137.41. I don't know about delivery, I had so much trouble with the site - no r

Memory upgrade for media center

I've noticed that my MythTV ( Mythbuntu 8.10) machine was using 100% of its 1G and swapping. (Incidently, I was running the Blootube widescreen theme, and just switching to the MythCenter theme resulted in a snappier experience). So, I went to buy more memory - and found that 1G cost AUD23 and a 2G stick was AUD45. Nice. I went for the 2G but when a friend commented that mixing a 1G + 2G I'd miss out on dual channel. Bummer, but I'll live with it. When I first installed the RAM, I put the new 2G chip in the same channel (A) as the existing 1G. Booting the PC reported 3G in single channel mode, but it wouldn't boot! It simply reported a CRC error and stopped! I took out the 1G stick, leaving just the 2G and booted okay. Hmmm, so now I put the 1G back, but in one of the channel B slots so the 2 sticks were in different channels. Now, when booting it reported 3G in Flex mode! I'd never heard of this so I looked it up. It all gets explained very well here , and what it

Conspiracy or oversight?

A recent Computerworld article referenced Linux, Mac OS X and Windows Vista. They linked Mac OS X and Windows Vista to their search but they didn't link Linux . Conspiracy? Oversight?

Printing after upgrading from Mythbuntu 8.04 to 8.10

I've just noticed printing not working on my mediacenter. Its not something I do often, so I assume it stopped after the upgrade. There was no printing configuration under settings, so I installed: sudo apt-get install system-config-printer-gnome This gave me UI feedback that the printer was not working. I could see an error in /var/log/cups/error_log: E [18/Jan/2009:00:47:46 +1100] Filter "rastertogutenprint.5.0" for printer "PSC_2100_Series" not available: No such file or directory I found the answer by googling at http://ubuntuforums.org/archive/index.php/t-520453.html : sudo aptitude purge gs-esp sudo aptitude install cupsys cupsys-driver-gutenprint foomatic-db-gutenprint foomatic-filters fontconfig libtiff4 libfreetype6 gs-esp I had to go into Settings/Printing/Server/Settings to re-enable remote printing. Sorted.