Autopackage Planet Autopackage

March 04, 2010

Jan Niklas Hasse

Google Mail's Anti-Spam Filter becoming stupid?

Today I received two emails which where spam. But it was so obvious. They only contained images (!), where sent by very cryptic addresses, and told me how I could save money/taxes (in the title, I didn't view the images). I don't know what the hell Google is doing.

March 04, 2010 06:17 PM


June 17, 2009

Jan Niklas Hasse

LinuxTag 24-27 June 2009

Autopackage (me and a friend of mine) will be in hall 7.2b booth 101b. I will post some more news on the mailing list soon.

June 17, 2009 09:39 PM


May 15, 2009

Isak Savo

Perl was born

"1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born."

Or why not

"1995 - Brendan Eich reads up on every mistake ever made in designing a programming language, invents a few more, and creates LiveScript. Later, in an effort to cash in on the popularity of Java the language is renamed JavaScript. Later still, in an effort to cash in on the popularity of skin diseases the language is renamed ECMAScript."

For more fun, read A Brief, Incomplete, and Mostly Wrong History of Programming Languages.

May 15, 2009 07:57 PM


May 01, 2009

Isak Savo

Disconnected from reality?

(Warning: this post is just an angry rant, feel free to skip it)

I finally got sick of Ubuntu (lets see how long that lasts) and wiped by root partition to put fedora 11 preview on it. The first thing I always do on any linux distribution is to install support for all the non-free stuff like mpeg codecs and nvidia drivers. A quick googling on "fedora 11 restricted formats" gave me this page: http://fedoraproject.org/wiki/ForbiddenItems

Are they out of their f***** mind? I agree in principle to the stuff on that page, but in the real world, that page is just rubbish.

I have an nvidia card (and a good one) and lots of music in mp3 format (not every device or player in the world speaks ogg) and movies in a variety of formats. I would love to live in a free world, with all free formats and no software patents, but were not there yet and somehow I doubt we will ever get there.

To me, that page is a slap in the face:
"Proprietary drivers are not included in Fedora. They are considered harmful by many kernel developers."
I read: blabla, bla bla bla. Bla bla bla. You stupid user, you choose the wrong hardware. Now fuck off.

Nuclear waste is considered harmful. Proprietary drivers is at most stupid

PS. I know I will be able to get everything to work eventually. This rant is about the attitude of that page.

Update: http://rpmfusion.org/Configuration/ and http://rpm.livna.org/ seems to contain what I need to be able to use my computer again.
Update2: I'm back on Ubuntu again. Too bad, because I think the work red hat employed hackers are doing with free software is awesome and it would be nice to run the distribution where it happens.. well well, the goodies end up in ubuntu at some point anyway.

May 01, 2009 06:25 PM


April 30, 2009

Jan Niklas Hasse

Autopackage @ LinuxTag in Berlin

I've just recieved an E-Mail that Autopackage qualified for a sponsored booth at this year's LinuxTag. I'm not sure if that means that we already got one for sure though. Anyway, I will have to start working on completing the project's profile.

Unfortunately I'm still busy with school leaving examination for secondary school, but I'll be finished May the 13th. My current plans are to work a little bit on apbuild since the upcoming release of glibc 2.10.

April 30, 2009 02:55 PM


April 18, 2009

Isak Savo

First shot at synchronizing with the iPhone

As I mentioned in my previous blog post, I'm currently a proud owner of an iPhone and needed a way to synchronize my Lotus Notes calendar with it.

I'm not a big fan of CompanionLink, since it is both expensive (50 bucks) and pretty buggy. It also doesn't sync everything the way I want (more on this further down). Apart from companionlink, there are no tools out there that can help me get my calendar to the iphone (without going through a 3rd party) Being a software developer, and driven by interesting code challenges, the obvious solution to this problem is of course: to write a tool myself. :-)

Introducing: TieCal Synchronizer, your one-stop tool to synchronize Lotus Notes to the iPhone. It's still very rough, and has some annoying limitations (like no support for repeating events) but it works fairly well for me. It only supports one way sync (this is mostly all I need anyway) and lacks some basic configuration options, like setting timespan, and turning on/off reminders. It has also never been tested outside my own setup, so your milage may vary...

What it does do that you can't get with CompanionLink is merging of Lotus Notes' "Room" and "Location" fields so that they appear on the iPhone. Outlook only have the Location field, so Room is silently ignored by CompanionLink which is very annoying when you're on your way to a meeting and forgot to check where it is... TieCal handles this properly

The code is open source (GPL v2) so feel free to try it out. It's written in C#, using WPF for GUI. I've not yet created a proper release, do you'll have to compile from source for now (VS2008 needed).

April 18, 2009 04:15 PM


April 13, 2009

Isak Savo

Stuff they don't tell you about the iPhone

I bought myself an iphone the other week. Yeah I know it can't do MMS and that the battery life sucks but it's awesomeness of the user interface and amount of fun and useful stuff in the app store more than compensates for those issues. Besides, the crap that comes out of both Nokia and Sony Ericson these days are so pathetic that it's not even fun anymore. Come on, Nokia hasn't done a useful phone since the 5110 and I can't remember (Sony) Ericson ever producing a useful phone...

However, there are a few quirks you should be aware of that they don't tell you when you buy an iPhone. These are things that came as a surprise to me after I've bought it

The "universal" dock
Apple completely screwed up the dock connector thing. My initial thought was "Awesome, since the iPhone has this dock connector, I should be able to use all the sweet iPod accessories out there, right?" - WRONG! While they are all the same physically (the device will fit any ipod cord or accessory) you are not guaranteed that it will work. Apparently, apple has changed the interface so many times now that it's sheer luck if you get it to work. I did a quick unscientific test at the local Media Markt store and tried to put my iphone into the 20-something different ipod compatible devices and none of them worked with my iPhone 3G. A handful of them did at least charge the phone but not even that is guaranteed.

USB compatibility?
I talked to a clerk at another store when I wanted to buy a car charger and he confirmed this problem. Apparently it's even worse that this. Even if you have your standard iPhone usb-to-iPhone cord (from apple, shipped with the phone) and connect it to a third party wall-outlet-to-usb you cannot be sure it works. The clerk said they had two different ones in store since they work on different iPod/iPhone models. USB has been around for years and it's not rocket science. There's 5V on pin 1 and ground on pin 5 and you can draw up to 0.5A on a single port. How hard could it be? There's no room for screwups, but they still managed somehow.. *sigh*

Getting data to and from it
While we're at it, let's whine some more at Apple :). To do anything with your iPhone from a computer, you will need to go through iTunes. Anything except photos, which seems to be using some sort of standard protocol (ptp?) iTunes, apart from being a pretty crappy music player, only runs on Windows and OS X, which is of course problem for Linux users. I'm using windows at work and also have a Vista partition on my home machine so it doesn't bother me that much. Also, I'm not using the iphone for music (I have the far more superior Cowon D2 for that) so I'm not hindered by having to use iTunes for my music either. The thing I do have a problem with is synchronizing my calendar and contacts. At work, we use Lotus Notes which isn't supported by Apple (Nokia and Sony Ericson both do, by the way) and the only way to do it is to use a third party product (CompanionLink, $49.99) which is not only expensive, but it's also really crappy (random hanging, lack of decent configuration). It's also sort of a hack since it goes through Outlook before putting data on the iphone (itunes only supports Outlook and as I mentioned you have to go through itunes to get data on the iphone). I've no problem with this approach per se, but I object to putting out $49.99 for a buggy hack just because it happened to be the only option available.

We haven't seen the end of this story yet, but I plan on writing my own (hackish) sync solution that does what CompanionLink does and then release it as open source. It will do a bare minimum required to let me view my calendar on the iphone - no advanced two way merging or stuff like. Now let's see if I succeed.. 
The status right now, after one evening of coding, is that I can read calendar entries from both Outlook 2007 and Lotus Notes 7. Now I just have to write the syncronization code and then use itunes to put it on the phone. Should be easy, right? :-)

Despite the above, i'm satisfied with the iPhone. It's an awesome piece of technology that simply looks astonishing...

April 13, 2009 12:38 PM


March 24, 2009

Mike Hearn

Facebook Sync for Android


I just uploaded my first Android app to the market, Facebook Sync for Android. It is very simple – it just copies your friends photos into your address book, so you see their faces when they call you. Right now that’s about all it does, but I’m hoping I can make it significantly more useful in future.

So, how was my first time?

Mostly, writing Android apps is easy and fun. Occasionally, it’s frustrating and annoying. The biggest problems I had were caused by bad documentation, buggy tools and inconsistent UI in the included apps making it hard to know what to aim for. I also wasted significant time on the RPC framework which turned out to be unnecessary – hopefully I’ll be able to submit a documentation patch soon that clarifies when you need to use it and when you don’t.

That said, Android is about a million times nicer than J2ME. How it compares to the iPhone is the real question, and I haven’t written an iPhone app so can’t do a real comparison there.  I will say that I’ll put up with significant pain to get Java over Objective-C, which as far as I can tell is a stupid language with no merits at all. And I’m not a Java fan, so that’s a pretty strong statement for me.

I’ll be interested to see how much the app is used. Right now the only place contact photos are used in Android is the incoming call screen. Once you pick up, it’s gone. If you call them, it doesn’t appear. The text messaging app doesn’t use photos at all, and so on. I think this is a chicken and egg situation …. nobody is going to devote precious screen space in their app to a photo box when most people won’t have any contact photos. If syncing from social networks becomes widespread, it’ll suddenly become worthwhile to use photos more often, which I think will result in a much nicer experience.

March 24, 2009 06:17 PM


March 04, 2009

Jan Niklas Hasse

Autopackage 1.4.0

I couldn't wait any longer and released Autopackage 1.4.0 today. Hope everything works fine, please report any bugs left. There could be some things I forgot or did wrong since it's my first real release.

Thanks for all the feedback and support and also many thanks to Isak for helping me out with things like CVS access!

March 04, 2009 06:34 PM


February 25, 2009

Isak Savo

Living with multiple operating systems

My old computer died last year just before christmas so I had to buy a new one. I bought myself an Acer Aspire M5641 which is a decent machine with a decent price tag.

It came pre-installed with Windows Vista, which I hadn't tried until then so I decided to give it a try. It had a solid 5.0 on the experience index so I could test all the shiny effects that's supposed to give you the WOW effect.

All in all, it's a nice improvement over XP, but if you're coming from a Compiz powered desktop, or have seen OS X, then there's definitely no WOW what-so-ever.

The UAC thing was not as annoying as I had expected. It's a bit more frequent than the average sudo prompt in ubuntu but not at all as annoying as various reviewers had described it.

What finally made me plug in another hard disk and install Linux again was the lack of a decent command prompt. You can't really appreciate how much you miss it unless you spend a couple of months on a Windows system. I tried to learn the powershell thing, but after two days trying (and failing!) to create the equivalent of the snippet below, I gave up.


for i in *.avi; do
    output=`basename $i`-converted.avi
    RunCommandToConvert $i $output
    RunCommandToFixConvertedFile $output
done
Passing CLR objects around may sound nice in theory, but it's freakin impossible to use when all you want to do is manipulate strings and do operations on various files. Maybe my use case is not within the scope of powershell, I don't know. Or maybe it's just a case of trying to learn an old dog new tricks...

In any case, I'm now running Ubuntu 8.10 alongside windows (I decided to keep vista around, I mean I've payed my microsoft tax and it's useful for certain things like playing games or talking to weird hardware) and that requires sharing of data between two operating systems.

Most important is:Thanks to various software, I can access ntfs from Linux, and ext2 from windows. Both reading and writing works fine.

For pictures, this was easy. I'm using Picasa (it's fantastic! And I couldn't care less that it isn't "native" or anything.) and since my photos are stored in separate folders, and picasa stores settings for these in its picasa.ini file in those folders it's just a matter of copying over the files. Star rating, comments, edits. Everything already migrated with a simple 'cp /windows/picasa-folder ~/Pictures'. The only thing missing is the "Albums" which are sort of virtual grouping of pictures. I will need to migrate these manually from windows somehow.
For keeping these two folders in sync, I'm using Conduit which will automatically sync the folders for me.

For Firefox, I used to use Google Browser Sync, but that has long since been abandoned. A quick googling found me the Foxmarks service which so far has worked great. It syncs bookmarks and passwords (not cookies or preferences) but that's the most important things anyway.

For Music, I just made a symbolic link to my mounted windows partition. In windows, I used Winamp to listen to music (it's the player that sucks less) and on Linux I use Banshee. The problem with this approach is that neither of these players store all their information in the actual ID3 tags of the files. Most of the information is there, like album, title, artists etc. But I also like to rate my songs (to use the "Highest Rated" automatic playlist) as well as look at the play count (for fun, or use the "Most Played" automatic playlist). This information is typically stored in each applications own database, in their own format.

To solve this, I'm working on a small tool to migrate all this secret information between the players. I will save the details for another blog post, but right now I'm focusing on getting information out of Winamp and after that, getting extracted information into Banshee.

February 25, 2009 08:31 PM


January 17, 2009

Isak Savo

ú┶¯Š Þ3!Ú¦œ„Ø§€ú0z·o"Ú²×æ

Time to travel again, but this time for pleasure instead of business. I'm going to Argentina with my family to visit my brother who's studying there at the moment.

Trip will include (but not limited to)

It's gonna be awesome. Haven't seen my brother since this summer so it's gonna be fun see him again. I will bring all my camera gear and I'm sure there's gonna be some great photo opportunities.

January 17, 2009 09:53 AM


January 13, 2009

Jan Niklas Hasse

Autopackage 1.2.6

Unfortunately 1.4.0 still isn't ready to be released, but Isak released 1.2.6 yesterday.

Also the mailing list has got quite active in the last few days, I'm surprised.
Hopefully I will find some time to work on 1.4.0 this weekend.

January 13, 2009 10:19 PM


November 29, 2008

Jan Niklas Hasse

Autopackage 1.4 progress

It has again been a long time since my last blog post. Well, all I can say is that nearly all things are finished for 1.4 (3 tickets left in trac).

The only thing to do now for me is testing it on many distributions. With no more exams and the upcoming Christmas holidays this should be done in a few weeks and I hope we can release 1.4 this year.

November 29, 2008 07:34 PM


November 23, 2008

Mike Hearn

mikehearn


I had forgotten what a giant pain in the ass web design can be. That is, I had forgotten until last week, when I started compatibility testing a website I made for a friend who’s starting up a new business.

BP-Schulz is a one-woman company in Zurich specialising in hypnotherapy, counselling, relaxation and other things. I’ve been friends with Nastassja for about a year now so creating a web site (and a logo, and business cards) was a good way to help her get established.

We started with a graphics design session, and settled on a combination of her color scheme and my jigsaw puzzle motif. If I’d known how awkward that’d be I might have chosen something different. Making it look OK in Firefox wasn’t too hard, although I resorted to JavaScript absolute positioning to make the extrusions and holes in the pieces (ew). But in Internet Explorer I had to wrestle with the nightmare of “layout”.

It turns out that Internet Explorer has this imaginary concept of elements having “layout”. Layout isn’t something you’ll find in any spec – and for the longest time, not even in Microsofts documentation. Instead it’s an implementation detail of how Trident, the IE rendering engine, works. Elements that have layout are responsible for arranging their child subtree, elements that don’t are arranged by their nearest parent that does. Sounds simple? Unfortunately not.

Almost any element can be made to have layout, but only indirectly. There is no layout = true property you can set. Instead boxes get layout implicitly by setting width or height on them, or floating them, or being generated from a pre-set list of elements that always have layout. Whether an element has layout or not affects how it interacts with floats, how it positions, how it sizes itself and almost anything else you can imagine.

The only way to stay sane whilst developing non-trivial CSS on Internet Explorer is to achieve a zen-like insight into the mysteries of layout. Only once you understand the fundamental architecture of the browser itself can you create web pages that look (almost) how you wanted them to.

So do yourself a favor – go read the article I linked. Think about every sentence hard, as it’s easy to become lost in a maze of floats, boxes, containers and elements. Then go back and fix the websites you never got around to fixing.

November 23, 2008 04:49 PM


November 01, 2008

Isak Savo

Back from PDC

Came back from my trip to LA yesterday and I must say it was a blast. I've uploaded some photos to my picasa web album, click the collage below to get to it:

From PDC08


The big announcement this year was the new Windows Azure Cloud service that I have mixed feelings about. I think it could be useful for small businesses and startups to offload the maintenance of datacenters to Microsoft (and having them deal with scaling issues), but I doubt enterprises would like to have microsoft handle all their presious data.
They also showed alot of the upcoming Windows 7, which in my (and many other people I talked to during the week) opinion is more like "Vista as it was supposed to be" than a radically new version of Windows. They finally have the new search stuff in, including support for virtual folders to replace the "My Documents" / "My Photos" stuff that have been around since the '95 days. In Win7, you have "libraries" instead, which contains an aggregated view of several folders, so for example the "Music Library" could contain all files in $userhome/my music, d:\music, e:\other-music and still be maintained from what to the user seems like a single location. Nothing radically new (the idea has floated around the OSS community for some time) but I think it's nice nontheless. If nothing else, it makes it easier to separate the user data (docs, music, videos, etc) from the system data (os files, program files etc), something which has been possible but quite hard before in windows. (In Linux, of course, you just mount /home from a separate partition and be done with it)

The big thing about win7 in my opinion will be the addition of multi touch devices as a first class input device. This means that if you have a multi touch screen, like the newer displays from HP) they will seemlessly work with windows 7. In the open source world, multi pointer x should be able to provide the same kind of built-in functionality and I hope distributors will begin to incorporate ones it matures a bit more. I'm definitely keeping my eye on that project.

I also got a chance to talk to the Novell people at PDC. Aaron Bockover from the Banshee project was there and he showed some of the cool stuff he's been working on for banshee, including the d-bus interfaces and port to OSX. I asked him about what he thought of adding full WPF support to mono and he gave the "we've talked about it, we're interested in it, but we don't have any plans to do it yet" answer. Unfortunately Miguel was never around the booth when I was there so I never got the chance to ask him directly about it. I did go to see his talk about Mono and .NET and it was one of the best talks of the entire week (and that says alot, since there were many interesting sessions there!). He showed the new C# command prompt thing which was received with apploads and laughter since just a few days before, Anders Hejlsberg (chief architect for c#) showed something very similar but that is just in pre-planning and won't be shipped for several years (if at all). Nice to see OSS is taking the lead here.
Miguel also talked about the move to mono done by many game vendors and how the open model of mono enables them to use it in ways that simply wouldn't be possible using microsoft's closed license model. Game logic is traditionally written in slow scripting languages like LUA to make it easier, but it also makes it less performant. Using c# instead seems to provide a very good middle ground for these kind of things.

Update: direkt link to miguel's talk.(wmv download. Also available as mp4 download)
Update2: fixed mp4 link

November 01, 2008 04:48 PM


October 23, 2008

Isak Savo

Attending PDC08 in LA

On Sunday, I'm leaving for Los Angeles to attend Microsoft's PDC 08.


Looking good!
 

One talk I'm looking forward to slightly more than the other talks is Miguel de Icaza's talk about Mono and .NET. I secretly hope that Novel will announce that they will bring us full WPF support instead of just the limited subset called Silverlight. We're already starting to see similar platforms (like Clutter) in the open source world and wrapping this into WPF for Mono sounds like a nice thing to do. No idea if it's feasible or even possible though :-)

October 23, 2008 04:17 PM


October 16, 2008

Isak Savo

Do you really need touch screen?

Are you sure you absolutely need a touch screen on you cell phone? If not, then there are alternatives to the iPhone:

Spec comparison
I guess the moral is that you shouldn't pay too much attention to the specifications, or at least that they don't convey the full story.
Or maybe they are saying that the iPhone is just marginally better than a rock. Who knows :)

October 16, 2008 08:42 PM


October 14, 2008

Isak Savo

Humanity


This is old news, but I haven't heard about it until today when we were at the supermarket:

Ubuntu Cola
Not completely unlike the other famous ubuntu, it tries to live up to the meaning of the word by being fairtrade certified. The taste, however, wasn't all that good - it's drinkable, but it's not like a real coke.

October 14, 2008 06:26 PM


September 24, 2008

Neil Munro

The road to 0.1.6

Since my last post I have been hard at work, since I passed my exams and what not I made it into my third year of Uni, which since I didn't have to worry about them too much anymore I could get on with warp, now I have done a LOT I shall document a few changes.

1) Re wrote Add_Feed, Edit_Feed and Remove_Feed in cli.cs, they're simpler now, don't have the user double and triple checking the feed, in a gui once ok is clicked it's saved, the command line interface should maintain this consistency.

2) I have made warp much easier to work with if you wanna create a new UI you only have to write your file and create the relevant entries in UI.cs.

3) 4 bugs fixed TODAY, two instances where null feeds could be added and two instances where URLs containing spaces could be added.

4) vRunArgs has also been re-written and simplified.

5) A bug where the user was asked to press any key to exit, but the user additionally had to press return to exit, so a Console.ReadLine( ) was changed to a Console.ReadKey( )

6) A whole new preferences system was written, feeds and preferences are all stored together in one easy xml config file (I say easy, it certinally wasn't easy to write!), it's also stored in a logical place on the hard drive depending on platform (although it's currently probably incorrect under windows!).

7) A database will be implemented for 0.1.6 to managed the GUID's since any other method could result in variable's becoming overloaded, a database should be a bit overkill at the moment, but it'll future proof warp.

8) All funtions in Application.cs set a flag in the object and save the error message if an exception is thrown, a function exists to grab the error in question, this enables ANY UI to grab the error message and print it to the user.

9) The FeedManagementV2.cs file has been removed since Application does everything and more than it ever did.

10) Warp now has to be run as the root user, you know, since it's kinda a root application, I have yet to implement similar functionality under windows, since I'm not entirely sure how windows handles user privelages.

There we are, top ten things I've been working on, the database is the next thing, since a way to search and retrieve GUID's is essential for update and upgrade!

Blogged with the Flock Browser

September 24, 2008 01:27 AM


September 20, 2008

Isak Savo

New programming site

The famous (in the programming world at least) Joel Spolsky (Joel on Software) and Jeff Atwood (Coding Horror) has created a new kind of programming resource web site called Stack Overflow. The site is sort of a wikipedia meets Experts-Exchange meets digg, with content licensed under the creative commons. Of course, I signed up the day the site entered public beta, and I'm working on building up my reputation on the site.

The reputation system is what makes the site especially interesting, because it allows the site to be run by the community without the explicit need to assign moderators that control the content. Anyone with sufficiently high reputation can do those kind of tasks. And getting a high rep is not very easy - or at least it takes time and dedication. As I said, you gain rep by answering questions, but the thing is you only get it if other people like your answers, giving you an incentive to write as good and detailed as possible. And only people with a certain amount of rep can actually vote, so you can't easilly trick the system by creating a bunch of fake accounts. Really clever.

There's more info about the reputation system and the site as a whole on the FAQ page. Also, Joel Spolsky's post about the launch explains a lot too.

September 20, 2008 10:19 AM


September 18, 2008

Neil Munro

Title

I've been thinking in addition to fixing bugs for each release I should not wander directionless into the coding wild, I need to have a destination, so since I think that this is such a great idea I am focusing on important tasks for each release. For now the security policy code is going to be ignore, only for the time being, it WILL be brought back in.

0.1.6 (the next stable release):
This will not be a total re-write, but a LOT of the code is going to be tidied up and cleaned to it's not a horrible mess like it previously was.

0.1.7 (the next unstable release):
I've been thinking, I could REALLY make my life easier than support hundreds of different package managers, I could just support packagekit, I make ONE package kit call and the package is installed, I don't even need to know what distro is being used! PackageKit solves a lot of the possible problems I may run into so since distributions are packaging it now and the next bunch of distros will have it installed or available in a repo Warp will begin to depend on packagekit to do the muscle work for distribution specific packages. Admittedly source packages will need to be handled by warp, but this is fine since I can focus on that and rely on packagekit.

0.1.8:
PackageKit integration will be stabilised if it's not already, hopefully the newly organised code from 0.1.6 will be good enough for a long time now and I can avoid tangling it all up again. If this is the case, then hopefully packages can be uninstalled, at the very least, through packagekit, autopackage may be another story.

0.1.9:
Windows features will be focused on this release, I can only do so much under linux that will ensure windows integration, there will come a point where I simply just have to boot windows and get on with it. Also with that, a System.Drawing based GUI can be implemented the Mono/Wine would be able to run, not Linux native but it should run :D

0.2.0:
If at this point all core functions are done and a rudimentary GUI runs on at least windows, then Warp will ship 0.2.0, work will the begin on reimplementing security policy and Linux native GUI'S.

Blogged with the Flock Browser

September 18, 2008 06:21 PM


September 17, 2008

Jan Niklas Hasse

GtkMencoder's Trac page and hybrid autopackages

It has been a long time since my first post, so here's the second one.

First I want to present GtkMencoder, a frontend to convert video files using mencoder. I started it last year because I didn't want to look up mencoder's command line option all the time. It was also a good time to practise python as it's written using PyGTK.
Two friends of mine helped me set up a Trac page. Have a look and tell me what you think of it :)

I also committed some changes to autopackage that should make it possible to create hybrid packages. This means you can create a package, which installs different binaries on 32 and 64 bit machines using binary patches (similar to the already existing C++ ABI mechanism).
To create such a package you first need to create a package which only works on one platform, let's say x86. Then you copy this package to your x86_64 machine and let makepackage know that it should create binary patches. For this you need to add the following lines to the BuildPrepare section:

if [[ "$(uname -m)" == "x86_64" ]]; then
export HYBRID_PACKAGE="your_x86_only.package"
fi

makepackage will extract the package and use its data payload to see what differences there are. The newly created package should then be installable on both 32 and 64 bit machines. Depending on the target machine autopackage will install the right binaries.

There are still some bugs left, but I hope I can fix them during the next two weeks so that autopackage 1.3.0 can be released and you can help us finding bugs.

September 17, 2008 10:18 PM


September 08, 2008

Neil Munro

Progress on 0.1.6.

Despite me being reluctant to continue warp development with the inability to upload all my changes to an svn server I have continued to work on what will become 0.1.6, many many features present up to now have been disabled in order to implement the preferences code, which is a bit misleading, while it WILL be an object containing all the applications preferences, it'll also contain data critical for the successful running of warp, as is stands objects are being passed all over the place and it's an absolute mess, really it is.

My central starting point is the loading of the program data, which will be in charge of what UI to load etc, it'll also abstract things away from a specific implementation, or at least, that's my plan, so far little or no code has been thrown away, but I am simplfying the code, for example:

I now check the platform and set up paths reletive to each OS, this enables me to get the paths once and then use the varibales anywhere in the program without rechecking the OS.

It was probably insanity of me to not do this in the first place, but I'm working on it now.

Currently, for some reason I have a sharing violation which is holding me back and that I am trying to track down, I may just start a new project an just use the new code see if it's my new code or the old conflicting with it, well that done, and it's the new code not working already :P But, messing around with the new code in a new project enabled me to fix the issus and merge the changes back into the old project, which is a step forward. :D

Blogged with the Flock Browser

September 08, 2008 01:20 AM


September 04, 2008

Neil Munro

Update

Warp was on an undefined but not permanent hiatus, a family member died and my best friends father also died, uni exam results were not what I was expecting so work on Warp was put on hold until things quieted down, fortunately I am back, however the sourceforge svn server isn't up for write operations yet, so it'll be a while before any work is committed.

I have been thinking that the state of the code has become quite hard to manage, so I am looking for ways to streamline the code in order to make any further progress with it.

I also note a complete preferences file is required, in fact, feeds and filters could be put into the one configuration file and prevent files being scattered all over the place.

So in an attempt to prevent code being chucked out, since it's known coders dislike throwing away code, I am going to see if I can re-structure before it's too late...

Blogged with the Flock Browser

September 04, 2008 10:32 PM


July 09, 2008

Mike Hearn

mikehearn


… is growing slowly, but most people still aren’t making the connection between high oil prices and the fundamental shift in production rates that is peak oil. This image shows Google searches for “oil price” (red) against “peak oil” (blue):

July 09, 2008 05:33 PM


July 07, 2008

Mike Hearn

mikehearn


Yay, it finally happened. Google released protocol buffers as an open source library.

Protocol buffers are one of those ideas that has a million different implementations but very few good implementations. As a result everybody invents their own and we lose interopability and time for no good reason. Protocol buffers more or less hit the sweet spot between features and simplicity – I certainly wouldn’t want to design a file format or network protocol without them these days, and now I won’t have to, even if I’m doing work outside of Google.

Here’s a quick intro to what they are.

Protocol buffers are binary XML

Well, sort of. XML is more complicated than protocol buffers are – protobufs have no concept of namespaces, attributes vs subelements, character escaping, DTDs or any of the other things that make XML complicated. But the essential idea is the same – it’s a way of representing trees of structured data in such a way that they can be extended in a backwards compatible manner.

The key features of protocol buffers are:

  • A very efficient yet simple binary encoding. A minimal protobuf takes only a few bytes due to clever use of variable-length integers.
  • A simple specification syntax that lets you define a schema far more easily than an XML Schema would be.
  • A compiler that produces objects representing your structures in either C++, Python or Java. These objects present a much cleaner and simpler interface than the XML DOM – it’s quite feasible to represent all your programs internal state this way, whereas it’d be painful to replace a native object heirarchy with XML.
  • A set of tools that let you quickly serialize and deserialize them.
  • A lightweight (incomplete) set of interfaces that let you hook protobufs up to an RPC system.

Usage in RPC

Protocol buffers are so named because they were developed as a wire protocol for server communication within Google. Over time this developed into a full high performance RPC system that supports many advanced features. In particular it’s very easy to debug and troubleshoot, a feature I find invaluable day in, day out. At heart though, this RPC system is still based on protocol buffers – the RPC protocols are defined using them.

The key feature here is that it’s very easy to extend protocols based on protobufs over time. Alternatives like CORBA, DCOM or Ice don’t have a particularly elegant approach to this – if you want to introduce a new parameter to an RPC for instance, you need to introduce a whole new interface, and then translate the call through. In a protobuf based system, you just mark the new field as optional and then use the has_foo() function before accessing it in your new server. When the client is ready to use the new parameter, one set_foo() call is all it takes.

The next key feature is that it’s very efficient on the wire. Protocols like SOAP or XML-RPC are really not designed for efficiency at all. In many cases, this won’t be a big deal, but for Google it is because we push everything so hard.

Protocol buffers as a file format

Because they efficiently serialize to binary, can be used from at least 3 key languages (and more in future) and can be extended over time, protocol buffers are a perfect fit for many file formats. Most open source programs these days have based their file formats on XML. OpenOffice, AbiWord, Inkscape and more all use XML markup languages to save their data. Because XML tends to be very large, they often zip it, resulting in a very slow and complicated piece of code to load or save these files. This matters – a big part of the complexity of the Word/Excel formats is due to “quicksave”, a feature that users love as it lets auto-save be less intrusive and more frequent, but which complicates the codebase considerably.

Protocol buffers have a more or less optimal binary representation and can be deserialized into in-memory objects extremely fast. Nothing stops you gzipping part or all of them if you want to eliminate some redundancy, but it’ll be redundancy on the application level that is eliminated, not on the format level.

Go check it out

Seriously, it’ll only take a few minutes to read the docs, and you’ll add a valuable tool to your arsenal. Whilst the problem that protocol buffers solve isn’t new, this is one of the best implementations I’ve seen so far. I hope the open source community embraces this system as a way to make easier to use, more efficient file formats and network protocols for its applications.

July 07, 2008 10:51 PM


June 19, 2008

Neil Munro

Protection charms.

When I was in Turkey I was introduced to a local legend, that people with blue eyes and blonde hair had the power to curse people, usually accidentally, now being blue eyed and blonde haired, I was made an example of during a demonstration of the legend, but I met someone randomly on the bus yesterday who was wearing the 'evil eye charm' and this is supposed to repel the ability to curse someone. It really is hilarious to walk down the street and see people wearing something that is believed to render my ability to curse someone useless.

Not that I have tried to curse anyone, but it's hilarious and interesting all at once.

In other news, warp is coming close to being autopackagable, once I have the know how to package properly I just ensure binary relocatability remains in place with new code and it's another feature completed on the way to 0.1.6.

My friend Ash will be visiting from Glasgow in a couple of weeks, and she will be doing one of the minor features for 0.1.6 not that I can't do it, but I wish to encourage people to work on Warp. She will be implementing the creation of the feeds.txt file and adding of the default feed if it is not present. This will mark another bug/feature (I cannot remember what it is labeled as right now) complete for 0.1.6.

Work is progressing slow but steadily. :)

Blogged with the Flock Browser

June 19, 2008 12:35 AM


June 16, 2008

Neil Munro

0.1.6 progress

Hard drive failure, PC World, blah blah blah.

Restored my system, since I am getting quite good at that now. Continued to work on Warp.

The Warp autopackage builds, and installs but does not work, yet.

9 of the 17 tasks currently marked to complete have been completed, putting progress at over 50% so far. So far completed is

1) All the splicers are now in their own sealed class, help has been moved to a sealed class.
2) All code now has a more complete style.
3) All functions recurse if they fail, hopefully this will mean something unexpected will be attempted again, it may lead to infinite loops, but this remains to be seen.
4) Bug fixes etc
5) The clean argument now works. This had not been added to the bug tracker for some reason but was always intended to be included, it now is.

The reason the clean argument was added in a stable release was that all the framework had been created it just had not been integrated.

Looking forward to 0.2.0 whenever that is, will be a feature complete system update utility that is command line based. It will be totally cross platform, I intend to achieve this by having two additional namespaces UNIX and WINDOWS, these will contain the OS specific code, like path names and autopackaging things etc. Hopefully to create a windows package from a Linux package should just be a mater of changing

using UNIX; to read using WINDOWS; and just change all occurences of UNIX to WINDOWS in the Main.cs file.

At least, that's my plan anyways.

Blogged with the Flock Browser

June 16, 2008 02:33 PM


June 09, 2008

Neil Munro

Warp 0.1.5 released.

Warp 0.1.5 is out, logging is implemented as is a full featured security policy many bug fixes and other things have been applied. Work for 0.1.6 has started and will be out as soon as I can finish it. Warp is a massive challenge and the more I develop with Warp the more I learn, which at times it just feels like it's going to split my mind in half. If Warp is useful to even one person then it is worth it. If there is someone who is following the development of Warp and intends on using it when it is done, could you please contact me, just so I know?

So here it is Warp 0.1.5, it is dedicated to the memory of Michael Bryson, I never knew you, but you were her friend, you should have held on, she'd have taken good care of you! I hope that you have found your peace, R.I.P.

Blogged with the Flock Browser

June 09, 2008 09:44 PM


June 07, 2008

Neil Munro

Two functions to go!

Warp only has two functions to be written in the logger function for 0.1.5. to be released. I had a bottle and some (didn't quite finish the second) of ale, and wrote a function for viewing the log file within Warp, it was one of the simpler function that just required some pretty brainless person to do it, so in a drunken mood writing mind numbingly simple functions was the best thing for me to do.

I am very much looking forward to releasing 0.1.5 since it has been almost three months since 0.1.4 Warp has doubled in size, a few quite frankly critical features have been added.

As usual after 0.1.5 there will be a much more rapid release of bug fixes and stabilization of these new features which will obviously be 0.1.6 then a longer to be released 0.1.7 I apologize for the long delay in new feature releases however being more or less a one man project it's hard to add everything I wish to add in a short time frame.

However as well as having a list of tasks for Warp I have now placed all OUTSTANDING tasks onto the sourceforge tracker system. This means should something go horribly wrong on my computer there exists another list.

In personal news, I built a flat-packed bed in about 10 min (if we take away time spent reading instructions and mission impossible style moving out of the freshly assembled bed since I constructed it around me, but I'm small it was easy enough to get out of) I personally don't see what the problem is about building flat-package furniture in short time periods. I also now have a wah-wah pedal for my guitar, it sounds sweet, especially when daisy chained with my grunge pedal.

Blogged with the Flock Browser

June 07, 2008 12:44 AM