The version of libnss-ldapd included in Ubuntu 8.04 has many bugs that have been fixed. One rather annoying bug is a problem parsing map configuration. Please find the deb I built of 0.6.4 on 32bit Ubuntu 8.04.1 here.

I spent quite a long time googling for a way of re-creating symmetric cone nat in house without buying Cisco hardware. Hopefully someone else will find this useful. This was done on Ubuntu 8.04 beta.


eth1 = public ip
eth0 = lan ip


echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables --flush
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE --random
/sbin/iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

Hongli Lai asks why some think Rails deployment is difficult. First, a disclaimer. I am not a Ruby on Rails expert. I have only used Rails for one small production project. I found both Ruby and Rails quite easy to pick up coming from a J2EE background. What can be done with such a small investment in learning and in time writing code is quite amazing. However, I, like others, found deployment to be surprisingly inconsistent with the rest of the Ruby on Rails experience.

First let me begin by adding some detail to Hongli Lai’s description of deploying a J2EE app. A WAR is just a ZIP file of your application’s directory structure that ends in “.war”. You don’t need to create a WAR to deploy J2EE apps, you can also just upload files to the server like PHP. Depending on what framework(s) you use (Struts, Spring, Faces, etc) you may need to edit XML configuration files. Stock JSP, like PHP, doesn’t *require* any configuration files.

The trouble I have had with deploying Rails is the difficulty of ensuring the same gems are installed on the deployment machine as on the development machine. In my view, the confusing issue is that gems by default seem to install system-wide or user-wide unless you configure your Rails apps to look in a specific directory. This is in comparison to J2EE where libraries are by convention usually all in your application’s directory structure (/WEB-INF/libs) so you can just zip up the directory and give it to an installation of Tomcat (or any J2EE application server) and it will *just work*.

I never understand why with the strong emphasis on convention in the Rails development model, why the deployment process includes system administration tasks like gem installation. Why isn’t it convention that gems and Rails are all installed in a place inside the application’s directory structure so as to be independent of whatever versions the rest of the system has installed? The Ruby on Rails deployment model seems to default to assuming the developer has superuser control of the deployment machine. However, this is often not the case both in corporate environments and shared hosting environments.

The website for FMJ cleanroom reimplementation of JMF seems to be down. Its asking for a user name and password via Basic Authentication.

I am having trouble getting a microphone
ds = javax.media.Manager.createDataSource("javasound://");

Exception:
Nov 7, 2007 8:06:50 AM javax.media.Manager createDataSource
WARNING: java.net.MalformedURLException: unknown protocol: javasound
java.net.MalformedURLException: unknown protocol: javasound
at java.net.URL.(URL.java:574)
at java.net.URL.
(URL.java:464)
at java.net.URL.
(URL.java:413)
at javax.media.MediaLocator.getURL(MediaLocator.java:30)
at javax.media.Manager.createDataSource(Manager.java:513)

Draft 1 OAuth 1.0 spec was announced yesterday. By my count, it requires no less than 6 HTTP request/response round trips assuming the user is already logged in to the service provider.

If the user is NOT logged into the service provider and has to log in before approving or denying the consumer’s request, the number of round trips is increased by a minimum of two for a site using traditional user name/password authentication or even more if the site uses OpenID. Heaven forbid the user isn’t logged into her OpenID provider. In this case the number of request/response round trips skyrockets. Imagine the visible user experience in this case:

  1. Initiate protected resource request from service provider
  2. Redirected to service provider’s site to approve request….but wait user is not logged into service provider’s site…
  3. Prompt for OpenID
  4. Redirect to OpenID site to verify OpenID…but wait user is not logged into the OpenID provider’s site
  5. Prompt for OpenID provider’s login credentials
  6. Prompt to approve service provider’s login request at the OpenID provider site
  7. Prompt to approve the consumer’s protected resource request at the service provider’s site
  8. Wait as the service provider redirects back to the consumer with the approved request token….
    …which then redirects back to service provider to get the access token…
    …which then redirects back to the consumer…
    …so that the consumer can redirect back to the service provider and access the intended resource.

This may work great in the bay area where everyone is 10 ms ping time away from everyone else, but try even just a simple OpenID login to a USA-based site when you’re on the Asia-side of the Pacific. Even when you’re already logged in to your OpenID provider, there’s significantly more waiting than the traditional username/password authentication session.

Looking for a solution to increasingly complicated OpenOffice.org Calc spreadsheets for maintaining our business and personal finances, I took another look at GNUCash and was pleasantly surprised by its improvement since the 1.x days.

You should be able to install my deb built by following these directions using the below instructions on an update to date install of Feisty.

  1. wget http://sinopop.net/downloads/gnucash_2.2.1-1_i386.deb
  2. sudo apt-get install libgoffice-0-3
  3. sudo dpkg --force-all -i gnucash_2.2.1-1_i386.deb
  4. /usr/local/bin/gnucash

Please note you’ll have to create your own icon.

Why does a Landscape-managed deployment of Ubuntu cost US$250 per seat per year? For my 7-seat deployment in our new China-based subsidiary, that would cost us US$1,750/year. Compare to the Microsoft Partner Program’s Actionpack Subscription at HK$2,792 (~US$350) per year. The Actionpack Subscription even provides 10 seats worth of internal-use software. That means 10 Vista licenses, 10 Office licenses and 1 license for an entire back office set up including Windows Server, Exchange and many other products. 10 seats of Ubuntu with Landscape would cost a staggering US$2,500 per year!

To put the cost difference in perspective of the local market price levels, the difference in cost is more than our entire month’s payroll. That US$2,150 could pay a freshly graduated software engineer from one of China’s better universities 4 year bachelor programs for 6 to 8 months.

Now of course, to be fair, the cost of Landscape also includes support from Canonical, but even if support was something we wanted, being only available in English and French, it is hardly something we would be able to make use of in China.

Ohio voters passed the SmokeFreeOhio late last year. Ten months after the voters spoke, the first fines were issued against offending businesses. The penalty for businesses that have ignored the will of voters for almost a year? A measly US$100. There are bars that make more than that on the sale of one bottle of liquor or wine.

Such weak enforcement is worse than no enforcement at all. The message this sends to the market is that the state isn’t really that serious about maintaining smoke-free public areas. The end result is a playing field that’s not level, exactly what a state-wide public smoking ban was supposed to prevent.

Ohio should study Hong Kong on how to enforce a public smoking ban. Hong Kong’s Smoking (Public Health) Ordinance provides for much stiffer penalties for violators of the smoking ban. Individuals are liable for up to HK$5000 (~US$640) per violation on summary conviction. They don’t waste time sending letters saying “please don’t violate the smoking ban.” If you violate the ban, you fork over the money. The much higher fine sends a clearer message to the market about the commitment of the government to enforcement of the law and commitment to protection of public health.

Isak Savo writes about the daily edgy updates that have been appearing the past two weeks. You know there’s a problem with pushing out updates too often when the update icon on Edgy, supposedly the stable version, appears more frequently than the update icon for Feisty, the current development branch. This is starting to feel like windows automatic updates…I just want to turn it off.

How about aggregating non-critical updates and only pushing them out once a week or once every other week? I want to subscribe to the digest version of updates…

Updated Feisty today and after restarting (new kernel) and logging in, I was prompted with a balloon indicating that Ubuntu may be using restricted drivers. Clicking on the new tray icon in the notification area popped up the following window:
Feisty New Restricted Drivers Manager
I like how it informs users in rather polite language that proprietary drivers are almost impossible for anyone but the driver’s vendor to support.

Perhaps it could contain a link to a list of equivalent hardware that is fully supported by open source drivers? Free marketing exposure for hardware vendors whose products offer open source drivers could help encourage more vendors to see the light.