Once upon a time there was a tool called deborphan. It finds orphaned packages which could be removed from the system. You can maintain a list of ‘keepers’ to stop it suggesting removal of things that you want.
I wanted to extend this to work with the builtin “auto-installed” flag that aptitude stores for all packages. I also wanted it to work with Arch Linux.
A few years ago I found an old iMac G4. It’s now over ten years old and these days PowerPC chips are not too useful. However it did have a very nice 20″ 1680×1050 IPS display in an attractive case.
If only I could connect this display to some other computer! I decided to try to hook it up to the Mac Pro I recently purchased from Atlassian.
I bit of web searching found the incredibly helpful dremeljunkie.com. I discovered that internally the iMac does use the same TMDS signalling as a DVI connector.
That means in theory I just have to hook everything up the right way and it will work! :)
This is an experiment in cross-posting something from my internal blog with my employer Atlassian. I thought it may be be of general interest so I’ve edited it a bit and shared it here.
We recently did a regular zero downtime upgrade of our order processing system. This is a fairly routine event, we use Bamboo deployments to push from git master to our dev, staging and then production environments every day. The vast majority of these upgrades go smoothly without serious regressions or problems. On this particular day the application did not come back properly, we had an outage! We treat these very seriously because the ordering system is a big monolithic do-all-the-things type of application. An outage means customers cannot make new purchases, view their license keys, sign up for OnDemand, view prices on Marketplace and many other things.
Guest post by lemnisca.
I’ve recently started getting into Linux wireless programming for work. I am a fairly experienced C programmer but don’t know much about kernel development so this is a new adventure for me. What I found was that while there is a lot of information available about how it all works — indeed, since it’s open source, one can at least in theory have complete information about the functioning of the system — there is not much in the way of an introduction. There’s no broad explanation of how it all works for someone completely new to the system. The documentation that does exist is largely focused on documenting individual functions, structs, etc. and is more of a reference for those already familiar with the system. I quickly found myself lost in a sea of source code, chasing down chains of function calls with no real feel for how the whole thing is put together. So I’ve decided to share what I’ve learnt, in the hopes that it might help someone else in the future.
About a year ago when I first bought my Bluray drive for Linux I had a simple requirement. I wanted to be able to put a disc in, then with some graphical tool select a track and have it start playing. It turns out nothing on Linux can do this.
So I wrote a simple Python/Qt app which uses MakeMKV to decrypt and VLC to play it.
A small Python script to connect to the internet over Bluetooth DUN (dialup networking) using my Nokia Symbian phone and my Linux laptop.
This was written on Arch Linux but should work elsewhere too. It uses bluez5 to enable bluetooth, rfcomm to create the serial port and wvdial to create the PPP connection and manage routes/DNS. Many newer phones use Bluetooth PAN instead of DUN so this method won’t be applicable.
Once upon a time this all worked automagically with NetworkManager. Since bluez5 it fails with this error:
Method "Connect" with signature "s" on interface "org.bluez.Serial" doesn't exist
Apparently we’re supposed to use the new Serial.ConnectFD DBUS API instead.
My latest project was to have wireless audio streaming from my Symbian mobile phone over Bluetooth to a a new set of speakers. I used PulseAudio, Bluez5 and Arch Linux running on a Raspberry Pi. It all works really well. I can connect/disconnect from the phone and everything is automatically started on boot. I’m enjoying it now as I type this.
Update 2017-03-05: hciconfig is deprecated
Java Generics are a neat hack to save some typing. They have a bunch of problems though. Most of these are due to the lack of runtime type information. Today a friend asked why you can’t create do:
The compiler gives the error error: generic array creation.
Following is a short explanation of what generics can and cannot do in Java.
I was looking around online for a simple, good looking, web-based countdown timer. The best I could find were using Flash, ugh. So I did what any self-respecting software developer would do and wrote one myself! :)
After upgrading my file server from Ubuntu 10.04 Lucid to Ubuntu 12.04 Precise I had a few problems with Samba. Mac OS X 10.6 clients were very very slow. A 1MB file would take several minutes to transfer completely, making browsing photos and general use impractical. Windows (Vista and 7) clients could not connect at all, the file server did not appear in the browse list and typing the name manually did not work either. Unsurprisingly, Linux Samba clients worked perfectly.