Spreadsheet exports

Spreadsheets as a data export format are just horrible, but clients seem to consistently request it. ButIDontWannaItJustFeels…ComeON!! don’t you know we have a beautiful REST JSON API?!


Okay so at least there is Apache POI to help out.

I made a couple simple utility methods that take a Map of data and either turns it into a spreadsheet or fills in a spreadsheet that you feed it. Not enough code to make into a github project or plugin, but a Gist? yeah sure – here ya go! Maybe you’ll find it useful.


As is, it outputs .xls files and you could use the output to render a spreadsheet file. You can also easily make this .xlsx but it requires including a couple more large POI jars.


Flattr this!

Crowdfunding Open Source

I know various people who sing the praises of Apple’s OSes in part because of the quantity and quality of apps. Or conversely criticize Linux or to a lesser degree Android because of the lack thereof. I get the pragmatic appeal they are making. But then, referring to the apps, they say things to the effect of, “where I can PAY money to keep them going”, and they lose me a little bit.

Is the utopia of open source yet maintained quality software somehow out of reach, or out of reach on specifically on open platforms maybe, as this type of thinking seems to imply? I don’t think it is, but I am not certain how to explain its overall lack of realization. This isn’t to say open source stuff is bad. It isn’t! I use it almost exclusively, and manage to be mostly productive and not frustrated with it! But, generally speaking, open source options often either don’t exist, are missing some features, or are lacking some polish compared with proprietary options. Even if that is not mostly true it is true often enough to maintain that impression among most people I know who have an opinion on the topic.

I have been glad to see more crowdfunding and such for open source projects. The donation model isn’t new of course, but the ways to do it have certainly expanded and the popularity of crowdfunding in general has exploded. Personally I try to contribute funds for projects that I use, but I always struggle to decide how much money throw in the hat. Should I contribute what I would guess a license for similar software might cost, based on how frequently I use – or would potentially use – it, or based on how much I want to see this missing piece of functionality added to the ecosystem?

With crowdfunding gaining popularity and becoming easier to initiate I have been hoping to see more quality and increasing options emerging on Linux, and that is happening, but it seems slower to happen than I would expect honestly. Maybe another way to say it is that it simply isn’t terribly clear whether there has been an increase in the pace of general development or the willingness to stick around and maintain and refine a project. And if there has, it’s not to the degree I would have expected now that the crowdfunding option has emerged the way it has.

One possible cause is that somehow crowdfunding doesn’t yet feel as legitimate as it should to the type of people who typically fund software development. Many, if not most, people who pay for software licenses barely understand the distinction between open source and closed source software, so in part a failure to jump on the crowdfunding bandwagon isn’t surprising, however, I know a number of tech savvy OS X and PC users who have the philosophy of “I want to financially support developers of good/useful software”, but sometimes it seems like they are only interested in doing that through the license/closed source model, and not so much via the crowdfund/open source model. Like somehow the later isn’t sustainable or doesn’t qualify as legitimate support somehow. Maybe my perception is just off on that, but if not then I wonder what causes/perpetuates that, and I wonder what can be done to get over that and get us closer to software utopia.

Flattr this!

SSH tunneling in Ubuntu

I wanted to work with a PostgreSQL DB remotely with PgAdmin, but I didn’t really want to figure out how to allow the DB to accept external connections in a secure way. Since I have SSH access this should be very doable. I have seen co-workers use putty for SSH tunneling before, and had previously used Putty on Ubuntu to copy that, but setting up my Natty workstation I figured there had to be a more native way to do it. Of course I could do tunneling straight from the command line. If I could ever remember the steps for it that approach would work great. Instead I found a tool called Gnome SSH Tunnel Manager (gSTM) and installed that from the Ubuntu repos. It is pretty straight forward to configure if you understand the concept of tunneling, which I only barely do, so I needed a little help getting set up, but after that it is dead simple.

  1. Install gSTM and start it up.
  2. Click ‘Add’ for a new tunnel bookmark, and name it.
  3. Add IP and user login for remote machine.
  4. Leave port and privatekey as default (unless you know what they are used for in which case you probably know what to put in there).
  5. In the port redirection section click ‘Add’, a new dialog will appear.
  6. Type is ‘local’.
  7. ‘Port’ is the port on your local machine you want to assign the tunnel to (I did 5666).
  8. ‘To host’ can be set to ‘localhost’.
  9. ‘To Port’ is the port used on the remote machine. default PostgreSQL is 5432.
  10. Click ‘OK’ and all the settings are done for gSTM so click ‘OK’ again to close the settings dialog.
  11. Highlight new tunnel, and click ‘Start’ – it should prompt you for the ssh password.
  12. Ta-da!
  13. Now use pgAdmin, or  another application to connect to the DB at localhost:5666 (or whatever port you set in step 7 above..).

Now I just need to make sure my tunnel is running in order to have access to the DB locally. Very cool! Probably where I got most confused was with the ‘To host’ and ‘To port’ settings, the wording seems backwards. Is that just me?

Flattr this!

A Service is not a Product

A recent article details How Google Is ‘Closed’, Just Like Apple

I have to disagree. They may both have aspects that are closed, but they are definitely not ‘just like’ each other. Apple sells a product that is closed, Google sells a service that is closed. The difference is crucial, and should be obvious to anyone who has taken business 101. Some companies make money on a product some on a service. A closed service is nothing new, and doesn’t offend me (though it may entrap me). A closed product is a new concept. It is offensive because it restricts me in new ways that I am not accustomed to evidenced by new laws that have to be created to enforce the restrictions. I would add that if these restrictions actually were justifiable we wouldn’t need new laws to enforce them and thus wouldn’t feel offended.

Apple has plenty of closed services as well by the way, so they may qualify as doubly closed, or maybe closed squared?

Flattr this!

IP infringement and definitions

Apparently the current US administration is pushing to ‘reform’ intellectual property laws, and even some popular tech sites have chimed in. Anyone around me for any length of time over the last few years knows that intellectual property is a pet subject of mine, so I can’t help but be annoyed by what they are saying.  Is piracy theft? Well yes, but I don’t agree with what they mean. I think intellectual property is an altogether invalid concept, and even find the term ‘intellectual property’ itself objectionable because the word ‘property’ can’t legitimately be applied to ideas, patterns, or arrangements. Property by definition needs to be able to be owned in an exclusive manner. I suppose that is why they had to add the word ‘intellectual’ in front of it – to distinguish it from actual property, in which case they may as well have called it ‘imaginary property’! The argument is framed by the terms used. My aim here will to briefly question definitions. With diagrams I ‘stole’.

There is the somewhat popular graphic that emerged a while back.

In a simple way gets at a core issue. Scarce vs. non-scarce entities. 'ownership' is not violated by duplication in the way it obviously is by theft.

And lots of variations springing out of that:

pirate hater
Didn't like the original, so attempts to recast the 'pirates' as evil without really dealing with the scarcity issue. I guess the underlying claim is that piracy 'steals' the possibility to profit exclusively, and those potential profits were somehow owned by an ideas originator, however, you can't really own an opportunity any more than you can own an idea so it doesn't hold water.
Just decided pigs were more fun than stars I guess...

Some people prefer hexagons and shopping carts

A feeble attempt to appeal to the plight of the starving artist while again ignoring the core issues. Has this person lived under copyright for so long they have no ability to imagine alternative models of profitability? Do they really think without IP all creativity and innovation will cease? In general IP benefits the big guys more than the little guys. Many independent artists thrive without IP, others just prefer to do art for arts sake.
file sharing not piracy
Pulls into question the usage of the term 'piracy' with a touch of humor.

File sharing has evolved some, and I sort of feel it is worth while to illustrate how as it is actually quite relevant to the file sharing legality issue. However, I can’t really do it better than the wikipedia article on torrenting, and this demo (won’t work in IE, don’t try) does a slick job of illustrating a torrent in action.

Copying is duplication, not piracy. Piracy is theft in international waters. Theft only operates in the realm of property and ownership. Property is a scarce resource that can have exclusive ownership. Ideas can have an originators but not owners.

Flattr this!

My Android Experience Thus Far

I have had my Samsung Moment since around Thanksgiving 2009. It came with Adroid 1.5 initially and was my first smartphone. I played with it quite a bit at first, but after the first few months the novelty mostly wore off. I fell into a pattern of using it for its browser, email, twitter (mostly reading tweets not tweeting myself.) and occasionally for taking photos. Battery life was pretty dismal which actually discouraged me from using it because I would rather not have a dead phone by the afternoon.

Sometime in the spring it got updated to 2.1 which was sort of a let down to be honest. Most things were just as they were. There were a few more options as far as apps, and a nice new unlock screen, but that about covers it. standard 2.1 stuff was left out by Sprint. I guess they had their reasons.

About a month ago I decided I wanted to try to do some deeper customization. These phones are like little computers. If I could install Ubuntu on my laptop why couldn’t I do something similar on this phone.  Android is basically a Linux distro for mobile phones.

Anyway long story short – rooted it and installed custom ROM with the help of sdx-developers. I actually had some reasons for work that prompted this move, but those aren’t so relevant here. The phone is awesome again. A couple new features and capabilities come with root access that only geeks will appreciate, and all the bloatware that I never used and couldn’t get rid of was gone, but the most useful aspect is the dramatically improved battery life. Now a full day of heavy use is no problem. Two full days is pushing it a bit, but I do it from time to time. The wireless tethering is slick and actually useful when traveling. (did I mention I am not paying Sprint for this feature? … don’t tell….)

It comes with some consequences. The occasional random reboot or flickery screen, but so far they haven’t really interrupted anything I needed to do. reboot is faster than it used to be too. Overall the stability isn’t really a hit, because the phone wasn’t glitch free before anyway.

What is cool is that these now ‘old’ phones (Sprint tweeted they were done providing updates for the Moment 6-7 months after it was released!) can continue to be very useful because of an active developer/hacker community. I do encounter these longings to have the latest greatest devices, but I am also beginning to see much more challenge/fun/value in being able to keep lower end hardware useful through better software.

The more I have a smartphone the less I want to be without one. It is interesting how my computer usage habits are changing because of it. Maybe a topic for another post.

Flattr this!

Ubuntu Lucid = mega cool, but…

I am really enjoying the latest Ubuntu. They added lots of polish, and the OS is consistently moving steps ahead as far as ease of use for geeks and non-geeks alike. My thoughts center around, “but does it even matter?”. Sure, Ubuntu is free on a couple levels that OS X and Windows aren’t, but most non-developers don’t feel the shackles, so they don’t care.

Like an invisible tax the cost of the OS is bundled with the hardware for the vast majority. Again, for non-developers, the licence restrictions are slightly annoying at worst, also they are accustomed to paying for software, so they think “who cares?”. It would take something more significant than a very usable and free alternative OS that they would have to take the effort to install and get accustomed to make them care. I won’t be wasting a lot of breath trying to convince these sorts of users to make the switch. My lengthy discourses on open source ideology would merely prove to be confusing or annoying. That is not a guess, it’s happened.

Developers, however, have much less of an excuse for not caring. They should be feeling, or at least be aware of, the shackles of the closed environments and ecosystems. Those with a choice, often choose to ignore or to justify. I have noticed they justify their use of OSX or Windows for what tend to be short sighted reasons. If such short sighted excuses were ever really valid, is another debate, but either way, those justifications are getting weaker and weaker. Ubuntu, from a developers perspective, has potentially crossed over from being a viable alternative to being a superior one. 10.04 = a better chance of them actually being convinced, like me, that Ububtu is mega cool!

Flattr this!

Linux Mint 6 on HP laptop

Thought I would log my experience setting up my laptop with Linux Mint 6.

About the Hardware:

I got a pretty good deal on this from Best Buy on a Black Friday sale. The model number is dv4 1114nr if you’d like to look up the hardware specs. I quickly had Ubuntu 8.10 running on it. Most things worked out of the box. The webcam, the wireless internet, the graphics card, and all the touch buttons up by the screen. the microphone and the neato little remote control were less cooperative.

A Little History:

As time went on a few things were starting to annoy me because I couldn’t manage to fix them. One was that the hibernate and suspend features were not working. A little research and I narrowed this down to a BIOS issue. Basically what that means is there is no way I could fix that with out a special update from HP. Unfortunately they do not provide any BIOS update files that play nice with Linux. I got in touch with them and after they reiterated a few times that they don’t support Linux they sent me a recovery disc. So, backed up my home directory, reinstalled Windows, preformed BIOS update, noted how slow and heavy Windows was, then put in my Linux Mint CD and started over.

Installing, Updating, and Customizing Mint:

The install time was less than 30 min. In contrast it took over 3 hours to run those recovery discs. after the install was complete I connected to my wireless right away, and installed the available updates. about 170MB of them. While that was going on I moved the bottom panel to the top of the screen, changed the wallpaper and theme, and fixed the buggy sound issue that these laptops are known to have.

To do that I opened a terminal the Gnome-Do way (just press “super + space” and start typing “term…” and press enter. In the terminal:

gksudo gedit /etc/modprobe.d/alsa-base

and add this to the end of the file:

options snd-hda-intel enable_msi=1

I did a little customizing of my top panel such as:

  • removed – windows list,
  • added – desktop switcher, sysyem monitor, search files and folders, weather
  • hid – gnome do icon (right click and select preferences…)

By now my updates were complete. I decided I wanted to play with the new MintInstall feature so opened that up and hit refresh. Maybe it’s just a first time thing, but it took a looong time to get ready. Maybe a part of that was the screenshots it was loading.

I like to have my windows roll up when I double click the title bar, so while that was loading I went into Menu -> Preferences -> Windows  and set the “Titlebar Action”. Mint Install was still loading, so I also set my location in the weather applet I had added to the top panel

Mint Install was ready so I went to start installing all the stuff I wanted. The screenshots, ratings, and reviews are all neat features, but I wished I could have installed more than one application at a time. While I did abandon MinstInstall in favor of Synaptic Package Manager pretty quickly, I do appreciate its simplicity. And better yet, my list of things to install is much shorter than in Ubuntu because Mint, in my opinion, has a much nicer set of default applications – GnomeDo, PulseAudio, SunJava, Thunderbird the Medibuntu package, etc. Of course part of that is because they ignore certain license issues, but it doesn’t bother me as I own all of those lisences already anyway. Plus I am more and more persuaded that intellectual property is an illegitimate concept idea altogether.


I still haven’t been able to get my built in mic to work. If I plug a mic in to the jack that does work, though even that took a little messing around with the sound preferences/ pulse audio settings. Skype needed to be adjusted to use pulse, and blocked from auto adjusting mixer levels. Even then the mic is very very quiet (Part of it might be the crappy mic I was using).

I tried to run a shell script to install Groovy/Grails syntax highlighting by double clicking. That didn’t work. Odd, and couldn’t figure out how to get it to go. I am no terminal jockey, this much is true

Flattr this!

Intellectual Property Debate

I recently have become very interested in this topic. I read this review which lead me this free book. So far I have only read the introduction, but I am eager to continue. A few months ago I read Against Intellectual Property which was very intriguing, but left me wondering about practical application

This new book makes a bold general claim:

Since there is no evidence that intellectual monopoly
achieves the desired purpose of increasing innovation and creation,
it has no benefits. So there is no need for society to balance the
benefits against the costs. This leads us to our final conclusion:
intellectual property is an unnecessary evil.

Flattr this!

Linux Mint

I have switched to a new distro on my laptop. I have been quite impressed overall with this Ubuntu derivative called Mint. I use my laptop for web development and all the more common/less geeky things like editing photos, browsing the internet, listening to music, and doing office work. Mint has performed beautifully in all areas. While it doesn’t do much that Ubuntu can’t, its many steps closer to the ‘just works’ OS, and that makes mint my current top recommendation for anyone considering giving Linux a try

mint logoLinux Mint has some important advantages over Ubuntu. A number of them have to do with appearance, some are functional, and others have to do with system stability.

First up is appearance. Compared to Ubuntu’s dull defaults Mint comes with a more visually appealing theme and a nice selection of desktop backgrounds. For users accustomed to Linux those are very minor conveniences which wouldn’t really be worth the switch. I am no expert with customizing Linux look and feel, but I thought I had a pretty decent handle on it. That said, Mint has improved a number of small touches to the look and feel that are beyond what I knew how to do – boot and login screens are examples of this. Good fine grain aesthetics are hard to describe, but my opinion is that the polish is pretty good, definitely superior to any distro I have seen out of the box.

Beyond looks Mint feels a little smother once you get to working with it. Some things work better, and others are just slightly more convenient. For example:

  • It comes with a simple configuration interface for Composition installed. You can get this and better on Ubuntu too, but since it doesn’t come installed its one of those things that many people stumble over when they are new. It took me hours to get the cube going the first time I installed Ubuntu!
  • an all in one menu with some nice built in filters
  • less frequent updates
  • “open as root” is just a nice option for those who like to use the gui file manager, but still want to be able to do power user tasks.
  • The terminal is more friendly to my eyes as it comes with some nice color coding, and there are fun fortunes to boot! (if you enable them during the install…)
  • numerous codecs pre-installed
  • gnome-do pre installed
  • installing new programs – most of the time I use synaptic, but for less experienced users mints customs system would pretty nice I think
  • I don’t know why but my javascript animations in Firefox are just smoother and certain things print anti-aliased that didn’t with Ubuntu – like Dia projects.

Part of the ‘just works’ idea is that you don’t have to constantly fiddle with things to keep it working. Its why a friend of mine loves Macs, less time tinkering with the system, more time doing real work. Some people think the tinkering keeps them sharp and in a good state of mind regarding their machine… I digress. Mint requires less tinkering, but like any open source software will still let you if so inclined. An important contributor to this stability is that Mint uses a custom update system that rates updates on the likelihood that they will cause problems. The result is a more stable, but half a step behind environment. So long as you aren’t concerned with having the latest software the day it comes out this shouldn’t be an issue. I myself run a development build of Ubuntu on another machine, and while I like playing with the bleeding edge stuff, I also have come to really appreciate the stability of Mint. As a disclaimer I am not at all entering the discussion of mint as a server. I think it is meant to be a desktop not a server, and the stability I am referring to is all about the desktop.

With Ubuntu 8.10 due out in days I am eager for the release of Mint 6 that will follow shortly after. I hope to add an article on customizing the desktop and maybe another on setting up a Groovy and Grails development environment after that release.

Flattr this!