Planet #LUGRadio

jono

International Women’s Day Comp: Get Your Entries In!

Look at this lovely bag of swag:

Image courtesy of Melissa Draper.

Want to own all this goodness, including Ubuntu Backpacks, women’s t-shirts, key chains, 1 year digital subscription to Linux Pro Magazine or a 1 year print subscription Ubuntu User, and a copy of the The Art of Community by some beardy community guy?

On January 10, 2010 the Ubuntu Women Project announced an International Women’s Day Competition; an awesome effort to gather wonderful stories of how women have discovered Ubuntu. From the announcement:

Ubuntu-Women has tried in the past to find some way to celebrate this event, but as far as I can remember it has never really amounted to much other than some chattering on IRC. So let us try a bit harder for 2010!

We have all come to Ubuntu in our own special ways — every single one of us differently to the next. Yet one of the most common questions we get asked is “How can I get $woman to use Ubuntu?”.

Obviously we cannot really answer that question, but we would dearly love to have a collection of stories by women about how they discovered Ubuntu. Such a repository would allow us to demonstrate that there’s no one definitive answer, and at the same time maybe provide the gift of inspiration to women who are interested — showing them that it’s really not so unusual to be Ubuntu fans after all.

We are not expecting any particular length, but do remember that these stories should be suited to perusal at leisure and not require someone to allocate hours of their day to read. Anywhere between a few paragraphs and a OO.o Write page is ideal.

Two prizes up for grabs. One prize pack will be given to the story that the community votes is their favourite. One prize pack will be given to a randomly drawn entrant. I have been given the pleasure of drawing this entrant in a videocast, and announcing both winners to the world on March 8th. Thanks to the Ubuntu Women project for asking for to do this. :-)

So, get your entries in to ubuntuwomen.competition at gmail.com by 23:59UTC on 22nd February 2010. Rocking!

February 09, 2010 08:05 AM

schwuk

Calvin once thought that his life would seem more interesting...



Calvin once thought that his life would seem more interesting with a musical score and a laugh track. Today my son (who is not called Calvin, but does - by complete lack of coincidence - have a stuffed companion called Hobbes) decided that his life needed subtitles (or closed captions for non-UK readers). Here is an example of this.

To be fair, his handwriting has massively improved recently, and he is justifiably proud of this. He used to have to be asked to do any form of writing. Tonight we had to ask him to stop! :)

February 08, 2010 08:53 PM

davee

Kidlington Chess Congress 2010: “Better than last year”

The First Weekend In February is when chess fanatics from all over England gather for the Kidlington Chess Congress. Unlike last year I had had much more practice and felt more confident of doing well this time.

Last year I played four games: I drew three and lost one. Not great, but OK for not having played competitively for so long.

This year I was playing in the Under-145 tournament: my last posted grade in the 1990’s was 139 and my performance last year was equivalent to about 130, so this seems reasonable. In fact, this year all of my opponents had grades in the 130s.

  • Round One: As Black I managed to get a mediocre position out of the opening. I was definitely a little worse when my opponent made a mistake which meant he had to give up his Queen for a Rook and Bishop. This was good for me but, ultimately, the placing of the remaining pawns and accurate defence by my opponent meant that the game ended in a Draw. Score 0.5 out of 1.
  • Round Two: As last year, I took this round (Saturday afternoon) as a pre-arranged bye, to avoid spending the entire weekend away from the family. So that was worth another half point; score 1.0 out of 2.
  • Round Three: For the Saturday evening game, I played White against an elderly chap who made his moves incredibly quickly. He only used about 15 minutes for the entire game. I hoped that his rapid play would be his downfall, so I played carefully and looked for moves with deeper consequences than I thought he would see. Eventually he made a seemingly ‘natural’ reply which was in fact a blunder: I won a knight outright and from then it was only a matter of time before I Won. Of course I was absolutely delighted with this, given my failure to win a single game last year. As an extra bonus, his quick play meant that the game didn’t end too late, so I could get a good night’s sleep prior to the Sunday games. Score now 2.0 out of 3
  • Round Four: Playing Black, I opened with the Caro-Kann defence, which I’ve never played before competitively. Without making any obvious errors I got into a position where my opponent had a huge amount of play and plenty of attacking options; I didn’t really have much choice other than to defend as carefully as possible. When his attack fizzled out, my opponent made a misjudged sacrifice of rook for bishop, hoping for compensation to continue his attack; this didn’t work and from then on, I was on the offensive. It was a long game, more than three hours, but I eventually managed a second Win. Score now 3.0 out of 4.
  • Round Five: In the final round, I played the Morra Gambit as White, which I haven’t done before: he played the 3. … d3 line which is essentially the Morra Gambit Declined, which meant that I had a reasonable position out of the opening without having sacrificed a pawn. My opponent castled riskily into a Queen’s side attack and the game finished rather quickly, although I made a mistake right at the end which, fortunately, he missed. That was my third Win in a row and left me with a very respectable score of 4.0 out of 5.

My final round game finished fairly early, so I stuck around watching the other games play out: at some point it dawned on me that, depending on how these other games finished, there was a possibility I’d be in the first few places and be eligible for a prize. At one stage, there was a chance that I’d be part of a massive share of 2nd Place, but in the end I came equal 4th: the winner of the competition had 5/5 and two others had 4.5. There were three of us on 4/5, sharing the £40 prize, which the organisers very generously rounded-up to £14 each :-)

Overall this was a very good tournament for me: I scored 3.5 out of 4 over the board and remained unbeaten. My calculations show that my grade for this tournament was around 170, with which I’m very happy. I still haven’t played enough games in the last two years to get back on the ‘official’ English Chess Federation grading list, but maybe if I play again next year… ?

February 08, 2010 08:52 PM

jono

Ubuntu Opportunistic Developer Week: Call For Participation!

In the continued interests of helping to make Ubuntu rock as a platform for scratching itches and making awesome apps, I am putting together a new online learning event: Ubuntu Opportunistic Developer Week, happening online between 1st – 6th March 2010.

The week will be just like our previous online learning events such as Ubuntu Developer Week and Ubuntu Open Week, but instead providing a week jam packed with awesome sessions about writing applications that scratch your itch, and predominantly focusing on Python tools and frameworks, Bazaar, Launchpad and infrastructure. The goal for the week is give attendees a head start on a given technology useful for applications.

So, I am looking for volunteers. If you feel you could give a tutorial about a given Python module or associated technology (e.g. Glade, Launchpad, Bazaar etc), please drop me an email at jono AT ubuntu DOT com and I will liaise with you to get it scheduled. I am also look for some showcase sessions: stories about how you put together an application, how it scratched your itch and what tools you used. Thanks to everyone who contributes to leading a session!

The week has already been added as a Lernid event and I am going to encourage session leaders to create slides for their sessions. As each session is confirmed it will appear in Lernid and on the wiki page. Rocking!

February 08, 2010 05:53 AM

jono

Master Of The Situation

I had a crack at creating some electronic music. I know, not metal. I figured I would share this, and I have never done this before, so be gentle. :-)

Check out Master Of The Situation in MP3 and Ogg format.

Created in Cubase with Halion One, a KeyRig and Drumkit From Hell.

February 08, 2010 04:42 AM

GingerDog

Twitter Weekly Updates for 2010-02-07

  • Wondering where to run to tomorrow. #
  • Rowan now has a facebook account to go with his Twitter @rowangoodwin and blog … (rowangoodwin.co.uk, Facebook.com/rowan.Goodwin) #
  • Haha msnbot it appears you are enjoying indexing a customers server a bit much. Have you heard of being 'nice' ? #
  • Today I did a total of 132 pushups thanks to the Hundred Pushups iPhone app. (Week 4, Day 3, Level 3) #100Pushups #
  • Rowan is still asleep. Lie in ftw. #
  • RT @loudmouthman What Woman will not tell you about pregancy is great breakfast reading http://bit.ly/caqaJL #
  • RT @jzy: @codinghorror you should try "Outside" sometimes. http://bit.ly/dsbcos – looks like a great game…. Cost? Hardware/platform? #
  • If only this developer knew database design. Adding (a) new table(s) for an additional dataset is just WRONG! #uneducated #heathen #
  • Today I did a total of 119 pushups thanks to the Hundred Pushups iPhone app. (Week 4, Day 2, Level 3) #100Pushups #
  • More sleep plz? Kthxzzzz #
  • Hmm aroundme's augmented reality looks cool; @moobert might kill me if i ask him to do it on the food hygiene iPhone app we're planning tho #
  • Don't you just hate it when you save data to a backend, only for it to silently vanish. (Apc + zend_cache. Perhaps apc needs more memory?) #
  • I am now 200 grams heavier. #chocolate #
  • Why do I need to FAX docs to apple to develop on the iPhone. FFS. What's wrong with email ? #fail #not1980sanylonger #
  • Today I did a total of 121 situps thanks to the 200 Situps iPhone app. (Week 2, Day 3, Level 3) #200Situps #
  • Interviewing possible php contractor this morning. I hope he's good – i've got work stacking up. #
  • *ding dong* "Time to wake up chuggers!" #
  • .RT @metofficeWMids ADVISORY of Heavy Snow for West Midlands valid from 0349 – 2359 Wed 03 Feb http://bit.ly/bBNkz0 #
  • RT @scottmac: Announcing HipHop for PHP – http://developers.facebook.com/news.php?blog=1&story=358 #
  • RT @grifferz Impregnation via the proximal gastrointestinal tract in a patient with an aplastic distal vagina: http://is.gd/7wvbe (via @jwz) #
  • Today I did a total of 102 pushups thanks to the Hundred Pushups iPhone app. (Week 4, Day 1, Level 3) #100Pushups #
  • Sleep little toddler. Sleep. #
  • Cold cold. Brrr. Snow melted tho :( #
  • Well that was a crash course into learning mailscanner with exim on rhel. What next dear customers ? #
  • Hmm 144 bus turns up an hour and a half late. Chances of getting to Birmingham before 1030 – near zero. #
  • Bromsgrove looks a bit clogged up this morning. Stupid snow. Wondering if I'm going to make
    the train now. #
  • Today I did a total of 108 situps thanks to the 200 Situps iPhone app. (Week 2, Day 2, Level 3) #200Situps #

February 07, 2010 04:41 PM

jono

I Support Same Sex Marriage

I love being married, it has opened up an incredible sense of commitment and security in my life and my wife’s life. Love is love, and I would never want to prevent anyone from enjoying what I am afforded the privilage of enjoying. This includes gay people. As such, I have joined this Facebook group to get 1,000,000 who support same sex marriage. I usually hate these kinds of groups, but I think it could be interesting to visualize the support behind this issue. Worthy, methinks. :-)

February 06, 2010 08:17 PM

resiak

Foschart: a FOSDEM schedule app for the N900

Hello internet! I am at FOSDEM 2010 in Brussels. I tried the fosdem-maemo schedule application for my Nokia N900, and decided to write an alternative app which is easier to use with my fingers, and looks more like a Maemo application.

screenshot of foschart

The result is foschart. It's just something I knocked together in a few hours yesterday, but it's pretty usable already. It supports showing talks grouped by track, by room, and just in chronological order, and a list of favourites. It's all happily kinetic-scrollable, etc., and is very snappy once it's started.

There's no proper release or package yet; if you want to package it up properly, please do! But for now, apt-get install python-hildon, then copy foschart.py and schedule.xml to /opt/foschart, and foschart.desktop to /usr/share/applications/hildon. Then it should show up in your application list, and away you go. As ever, patches welcome. Enjoy!

Update:

The illustrious Jonny Lamb has made a package!

February 06, 2010 03:13 PM

jono

Project Awesome Opportunity

In the continued interests of making Ubuntu a rocking platform for opportunistic developers, today we formulated the plan for Project Awesome Opportunity. The goal is simple: build an opportunistic development workflow into Ubuntu. You will install one package from Universe and your Ubuntu will be hot-rodded for opportunistic application development, making development more fun and more accessible for a glorious itch scratching smackdown.

At the heart of the project is Ground Control by Martin Owens and Quickly by Rick Spencer and Didier Roche. I have been thinking about the challenges of how we build a great first incarnation of a platform optimised for opportunistic developers, and it struck me that we can divide the first set of tasks into three broad areas:

  • Creating a Project – we need to help opportunistic developers ramp up as quickly as possible: they feel the itch and they are ready to scratch right away.
  • Collaborating on a project – it should be really simple grab code, create a contribution and submit it to the project.
  • Fixing a Bug – bugs are at the heart of software projects, and we should optimize the bug fixing process making it a doddle for opportunistic bug fixing developers to grab some code and make it work.

A key part of this workflow which I designed yesterday is the Fixing a Bug component, and this is something I am really passionate about us trying to deliver in the Lucid timeframe. This is not a formal project that my team is working on, this is something that I am focused on in my spare time and coordinating with Ground Control author and rock star, Martin Owens.

Let me explain how it works:

Opportunistic development lives in the Projects/ directory in your home directory. When you load this directory in Nautilus, you see this:

Ground Control places three buttons that identify the key use cases we are keen to satisfy. When the user clicks the ”Fix Bug” button the following dialog box appears

For the first cut of this feature a bug number is required, but the feature could also include a search box for finding bugs and even potentially have an option on the Launchpad project page saying ”Fix a bug on your desktop” (or some other descriptive term) and when you click that link, Nautilus opens up and is fed the bug number.

When a bug number is submitted, Ground Control will create a branch that the bug affects (typically trunk) into your Projects/ directory. You can then go and hack the code:

When a source file in the branch is changed (and ultimately the coder fixes the bug), we now see an ”Upload Fix” button:

At this point the branch has the fix committed, so the coder clicks the button and then sees this dialog box:

This dialog box asks for the following:

  • The first box is the content that goes into the commit message.
  • The second box is the content that goes into the merge proposal.
  • The third box is optional additional characters for the branch name.

When the user clicks the OK button, the following process occurs:

  • Bazaar commits to the local branch.
  • The branch is pushed to the branch location specified.
  • The branch is added to the bug report.
  • A merge proposal is made.

So, I fleshed this idea out over the last few days and documented it and had a chat with Martin Owens who created Ground Control, and he has committed to finish off the current feature set of Ground Control and creating the Fix a Bug feature in the next two weeks. Martin has volunteered to invest a significant amount of time and effort into solving this problem in Ground Control, and I am going to be working to grow awareness of the project, handle the packaging in Universe, and help to get more people involved in testing and translations. See the Create a Project, Collaborate and Fix a Bug blueprints for this feature. Feel free to subscribe to them to track progress.

For this feature to flourish and for us to rock the socks off opportunistic developers everywhere, we are going to need your help, particularly with testing and where possible bug fixes. Here are the main ways in which you can help:

  • Fixing Bugs – Martin is largely a one man band on this project and he needs help fixing Ground Control Bugs. If you are interesting in helping, see the bug list here and get involved. He will love you and I will hail you. :-)
  • Testing – Testing is critical to this project. We have a tight timeframe on this, so we need you to help. How do you test? Simple, grab the dailly PPA of Ground Control set up by the awesome Nathan Handler, test it and report bugs.
  • Moral Support – Martin Owens is doctormo on Freenode. Ping him and tell him he is awesome. He and I hang out in #ubuntu-community-team: buy him a virtual beer.

So that is the goal. Let’s see if we can rock it and fire up more opportunistic developers.

February 04, 2010 08:46 PM

GingerDog

Still looking for a PHP contractor….

At work I’m still looking for a short term PHP contractor. Perhaps I’m being unrealistic in my expectations/requirements (rate/location/duration/skills etc), but nevertheless…. As I’ve not found anyone via normal channels (twitter/phpwm user group etc) I thought I’d turn to a random recruitment agency (who I’d spoken to a week or so ago).

Yesterday I interviewed one guy – who’d been a programmer for a number of years (10+) – using Visual Foxpro (whatever that is) – presumably it’s a dead language, as he wants to move across into PHP. He has very basic PHP experience (yet claims 2 years on his CV), figured out how to do FizzBuzz and Recursion without too much help – but didn’t know anything about object orientation, separation of concerns (specifically MVC), security (obvious SQL injection) or unit testing and failed to make any comment on what is almost the worst code I could find to present to him. This isn’t necessarily a problem – I would normally be happy to train someone – however, not when I’m paying him £25/hour and I’d be lucky if he was productive within a week. (Hint: students are better than this when they’ve only been in University for two years).

Today, I therefore continued hunting, with mixed success. I had three more CVs – all asking for more money, and one looked quite good – but had a requirement he worked remotely after the first few days (well he does live in Telford). Another, who is local, I’m interviewing tomorrow. Wanting to do some homework on him, I had a look at a couple of websites mentioned in his doctored CV  - the first is clearly .Net from the error message it throws when you pass a > into it’s search box – so either they replaced his PHP site quickly or his CV is misleading. The second has a PHP error on it – and is only (effectively) a themed wordpress site which looks like it’s slowly rotting. From these I found out his address (hint: whois $flamingodomain) and an invalid email address/domain (which archive.org seems to not do much with). Typing in his name into Google / LinkedIn, Facebook etc produces no obvious matches. So I know hardly anything about him, and for all intent he may as well not exist. Great sales job there.

From talking to the recruiters it seems it’s difficult to find decent PHP programmers – and anyone who may be decent will almost certainly not be programming PHP as their primary language (i.e. they’ll be doing web development in Java/.Net, and know PHP quite well). This seems a shame, but really only confirms what I already knew from interacting with others in the community. I’ve known for ages that I’ve effectively taken a large pay cut by running my own company, and doing PHP. It sucks that this continues to be the case. Clearly I’m a martyr or something.

So, if you happen to be a contractor looking for work, please make an effort. I’m not overly impressed so far, and may just end up stalling customers for another week/month instead.

(Oddly I wrote this post, posted it, and it vanished. What are you up to wordpress? Why do you want me to retype things in twice?)

February 04, 2010 08:40 PM

GingerDog

Can you write a web app, like Ebay, for me?

Today I had a phone call which went along the lines of ….

Prospect: Do you develop web applications?
Me: Yes… <cue sales pitch>
Prospect: I’ve got a great idea, it’s like eBay…. I need a programmer….
Me: <thinking: oh not another….>
Prospect: I think it’s about 2 developer months worth of work….
Me: Well, we’d need to see your requirements spec to determine that.
<snip>
Prospect: Would you be willing to do the work for free in return for a stake in the resultant venture? How much would it cost?
Me: Well, I’ve not seen any sort of requirements specification; I’ve no idea what’s involved….. Just how long is a piece of string?

I don’t quite understand why people think they’ll be able to create an eBay/Amazon/Google/whatever killer/competitor with minimal funding, a couple of months development and also persuade me to do the work for free on the outside chance they’re successful (that’s like a <5% chance). I might consider reducing the price of the development in return for a share in any resultant company – but I’m sure as not going to commit to anything before I’ve seen any sort of business plan.

Perhaps tomorrow I’ll get someone wanting a site “like Facebook” costing a few thousand pounds… ‘cos we do PHP just like them… and it can’t be hard can it?

February 04, 2010 07:04 PM

Aquarion

Sense

thejointstaff: Stand by what I said: Allowing homosexuals to serve openly is the right thing to do. Comes down to integrity.

Adm. Mike Mullen – Chairman of the Joint Chiefs of Staff

The future is odd.

February 04, 2010 05:47 PM

Aquarion

Fishy adventures in thailand

A (rare) thing not by me on here, and in fact by my brother Ben, who is teaching English in Thailand:

Day 1030 in Thailand. 9pm. Just walked downstairs to hear the quiet rushing of a mini waterfall in my front room. It seems in a bit to escape the concentration camp that is my 2′ x 1′ fish tank. My Japanese fighting fish has picked a fight with the base plate on the tank and won. Unfortunately attacking the base meant that he couldnt escape but the water could. Not only that but the water drenched the air pump which co-incidentally died a slow but painless death. Freeing the fish from his shallow ‘would be’ grave, I placed him in a bowl while I organised some temporary accomodation, for reasons only known to him, that particular bowl wasn’t quite up to his plant-filled, black and white gravel castle and escaped that too. Luckily for him I found him before greenpeace did.

My front room, sofa, chairs and christmas tree are all wet. The water even streaming down my drive into the road outside. Strange, it didnt seem that much when it was just sitting there..

February 03, 2010 07:19 AM

schwuk

Sharp Netwalker

Sharp Netwalker:

Just seen one of these in the flesh, and I have serious gadget lust. If it were a little bit cheaper and I didn’t already have a netbook…

Pocket sized, running Ubuntu, and 7 hours of use. A nice little conference sub-netbook.

February 02, 2010 11:25 PM

schwuk

Americans seem to have confused a Milky Way with a Mars bar. I...



Americans seem to have confused a Milky Way with a Mars bar. I can’t imagine the blue car winning after eating this…

February 02, 2010 06:13 PM

GingerDog

Rate limiting http traffic (mod_evasive and iptables)

A customer has a relatively busy web site, which contains lots of juicy information (business names, addresses, email address, phone numbers etc etc). Currently there is nothing in place to stop people spidering it – unless someone explicitly looks at the log files and does something.

Blocking annoying people who spider the site is easy enough -

iptables -I INPUT -s 80.x.x.x -j REJECT

However, I’d obviously rather automate this if possible – and ideally without having to change the PHP code (as each request would need perform some sort of DB lookup it’s part of a spidering attempt)

So, my first idea was to manipulate an existing rule I have to limit SSH connection attempts, giving something like :

iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 40 -j LOG --log-prefix "http spidering?" --log-ip-options --log-tcp-options --log-tcp-sequence --log-level 4

Annoyingly however, even though these are the first rules in the iptables output – and they should therefore work, they don’t – i.e. I’m not seeing anything being logged, when doing e.g. the following on a remote server :

while [ true ] ; do
wget -q -O - http://server.xyz/index.php
done

So, I’m still trying to avoid making changes to the code base – although doing so would produce the best user experience (namely we could display a captcha or something and if someone really can browse that quickly they’d not encounter any problems).

And as I’ve just found mod_evasive which claims to provide DoS and DDoS protection. Thankfully Jason Litka has packaged it – so I have no problems from an installation point of view :-) (yum install mod_evasive)

Installation on Debian doesn’t result in a config file – but it’s not difficult to create (see /usr/share/doc/mod_evasive). However, it’s not a shiney, sunny ending – mod_evasive appears to be “tripped” by people requesting images – and in my case the client has about 10-20 images per page; so it’s difficult to differentiate between a normal user loading a page or someone running httrack on the website and only requesting the “php page”. If only mod_evasive took a regexp to ignore/match… and I can’t seem to find anyway of fixing this.

So application logic it is :-/ Perhaps caching in APC may be the way forward ….

February 02, 2010 01:43 PM

schwuk

"I hope to be as good a person as my dog thinks I am."

“I hope to be as good a person as my dog thinks I am.”

- Unknown

February 01, 2010 11:57 PM

jono

Lucid Ubuntu Global Jam Announced

Are you good folks aware of what is happening on 26th – 28th March 2010. But of course, it is the Ubuntu Global Jam!

In the last few cycles we have organized and run an event called the Ubuntu Global Jam. The idea was simple: encourage our awesome global Ubuntu community to get together in the same room to work on bugs, translations, documentation, testing and more. And they did, all over the world, as can be seen here.

To make the event as simple and accessible as possible, we have picked five topic areas and we are encouraging you lovely people to organize an event with one or more of them:

  • Bugs – finding, triaging and fixing bugs.
  • Testing – testing the new release and reporting your feedback.
  • Documentation – writing documentation about how to use Ubuntu and how to join the community.
  • Translations – translating Ubuntu and helping to make it available in everyone’s local language.
  • Packaging – packaging software for Ubuntu users to install with a clock.

With five primary methods of getting involved, there is something for everyone in this rocking global event. In this event we are also adding an Upgrade theme too: upgrading to Lucid from Hardy or Karmic and reporting your upgrade experience.

One thing that I am keen that everyone remembers: you don’t have to be an official developer, packager or programmer to take part in the Ubuntu Global Jam. Also, lets not forget that Ubuntu Global Jam events are a fantastic place to learn and improve your skills: you can sit next to someone who can show you how to do something or explain something in more detail.

If this is all sounding right up your street and you fancy organizing an event, go and read this page and then add your event to this page.

Rock and roll: let’s make this one to remember. Start your engines, folks…

UPDATE: I have scheduled some regular meetings every two weeks in #ubuntu-meeting on Freenode to discuss the Ubuntu Global Jam, provide a place to ask questions and get together as a community to make the most out of the event and awareness of it. These meetings are on the Fridge Calendar. :-)

February 01, 2010 08:22 PM

aquarius

DesktopCouch talk at FOSDEM

Nice! Manuel, heroic desktopcouch community contributor, is speaking about Making your users happy, and "cloudify"ing your app with desktopcouch at FOSDEM. I can't make it there this year, but that talk will be excellent :-)

February 01, 2010 04:50 PM

GingerDog

Twitter Weekly Updates for 2010-01-31

  • RT @glynmoody Facebook rewrites PHP runtime – http://bit.ly/ahwWiq to be released as open source #facebook #php #
  • Poop. Spoke too soon. Snow tap being turned off. F'ing weather god. Curse you. #
  • Decent snow. 4/10 perhaps. B61 #uksnow … Just keep up for an hour or two and perhaps i can sledge/snow fight. #
  • Looks like we had a token amount of snow last night. Looks cold too :-/ 14 miles here I run. Still, cybrosis ppdcast episode to listen to:) #
  • Our car has depreciated £1000 for every year (7) we've owned it. Perhaps it'll soon put on value when as it turns into a mobile pool? #
  • Today I did a total of 105 pushups thanks to the Hundred Pushups iPhone app. (Week 3, Day 3, Level 3) #100Pushups #
  • RT @stuherbert PHP 5.3 adoption: some numbers and talking points http://bit.ly/djJRos (please RT) #
  • Dogs have a very inefficient protocol for communication. Guessing lots of packet loss as they've been retransmitting for ages now. Woof woof #
  • The last apple in the shop should be avoided; keys are always in the last pocket you check. #lessonoftheday #
  • Today I did a total of 97 situps thanks to the 200 Situps iPhone app. (Week 2, Day 1, Level 3) #200Situps #
  • Twitterific appears to have won. Goodbye tweetdeck. #
  • Nice Run – roads (a38 etc) were almost empty, shame I'd have to get up at 5am to experience it more often :-/ #
  • 100 pushup thing is now hard; couldn't do last rep without two stops :-/ #100pushups weak puny arms get bigger! #
  • Today I did a total of 100 pushups thanks to the Hundred Pushups iPhone app. (Week 3, Day 2, Level 3) #100Pushups #
  • Today I did a total of 92 situps thanks to the 200 Situps iPhone app. (Week 1, Day 3, Level 3) #200Situps #
  • is giving tweetdeck a whirl… as a change from twitterific #
  • Shocked to receive apple MacBook he ordered online yesterday afternoon this morning. Win! #
  • Today I did a total of 80 pushups thanks to the Hundred Pushups iPhone app. (Week 3, Day 1, Level 3) #100Pushups #
  • Worringly I seem to like coffee (with chocolate biscuits) I wish there was no junk food in this house. I'd best help 'dispose' of it….. #
  • Today I did a total of 88 situps thanks to the 200 Situps iPhone app. (Week 1, Day 2, Level 3) #200Situps #

January 31, 2010 04:41 PM

schwuk

Dear Mr 18E...

These missives are directed to the kind, caring, socially aware person sitting in seat 18E - directly in front of me - on this morning’s (well, yesterday morning now, but it’s still Saturday here - this time travelling lark is a headache) flight from Manchester to Amsterdam.

  1. If you’re going a set an alarm on your phone, please make sure it wakes you up - not annoy the hell out of everyone sitting around you.
  2. Snoring. I know it can’t be helped, but when combined with your other faults…
  3. No matter how many times you try, not matter how hard you push or jump up and down on your seat my legs aren’t going to suddenly become shorter.

So Mr 18E, thank you for making that particular 1 hour and 30-odd minutes of my life incredibly unpleasant and occasionally painful.

To Mr 19D - my neighbour - I should probably apologise since Suzanne (my wife) thinks I scared him when I resorted to punching (I maintain it was merely a “shove”) the seat of Mr 18E as he once again tried to forcibly relocate my kneecaps.

However in what I can only consider as a reward for my considerable restraint, Suzanne and I had exit row seats for the 11 hour flight from Amsterdam to Portland. Great seats, but I swear there was a draft from the door… :)

Now it is 9 o’clock at night and we have a day of driving and touristy stuff lined up for tomorrow, so it’s time to have a proper sleep for the first time in 48 hours.

January 31, 2010 05:03 AM

jono

Connecting The Opportunistic Dots

Something I have talked about extensively recently has been my passion to see opportunistic developers served well on the Linux desktop. These kinds of programmers are people who want to write small, focused, fun little applications that scratch an itch, even if that itch is to have fun. These kinds of developers are having a whale of a time filling the iPhone App Store with scratch-your-itch type of applications, and I am really keen to see more of these kinds of applications on the Linux desktop, and making Ubuntu the perfect platform to develop them on.

We have been seeing a growing movement inside the Ubuntu community in helping to make Ubuntu a rocking platform for opportunistic developers. While all the components are Open Source and can be shipped on any distribution, I am really keen for Ubuntu to really optimize and integrate around the needs of opportunistic programmers and I just wanted to highlight some of the work that has happened here.

In much the same way that Linux/Apache/MySQL/PHP (LAMP) became a popular arrangement of tools for web development, we have been seeing a similar scenario in Ubuntu too, in which a set of tools work well together and are often preferred by developers. These are:

  • Python – a simple, easy to learn, flexible and efficient high-level language.
  • GTK – a simple, comprehensive and powerful graphical toolkit for creating applications.
  • GNOME – the desktop environment that ships with Ubuntu, offering many integration facilities.
  • GStreamer – a powerful but deliciously simple framework for playing back and creating audio, video and other multimedia content.
  • Glade – an application for creating user interfaces quickly and easily, which can then be loaded right into your Python programs.
  • DesktopCouch – a framework for saving content in a database that is fast and efficient, hooks neatly into Ubuntu One and is awesome for replication.

In Ubuntu land we love this framwork. Many of our applications are written using them and this helped make it simple for others to get involved and contribute patches and bug fixes. It has been interesting seeing many folks settle on the same set of tools.

There are of course may other tools and facilities that can augment this list, but this is a common foundation in many applications. Fortunately, all of these ship with an Ubuntu system except Glade, but you can install Glade 3 by using Applications->Ubuntu Software Center.

Many of you will have heard of Quickly which provides a devilishly simple way of generating a new application, hacking on the code, changing the GUI and saving it to bazaar. Quickly also provides some awesome features for uploading the code to Launchpad and releasing your program to others in a Personal Package Archive.

What I like about Quickly is that it automates much of repetition surrounding software development and it ultimately allows you to deploy software to a PPA which people can then download and use. Now, PPAs are a little more complicated to install right now: you need to know what a PPA is, know where to find it, and click a few things or enter some commands to switch it on. Fortunately, the rather awesome Ubuntu Software Center which everyone’s favourite Vogt…Michael Vogt…is developing, is going to be extended with functionality to better support PPAs. This, combined with the ratings and review features coming to the Ubuntu Software Center is pretty rocking. I am not sure of the specifics of how PPAs will be supported, but I believe they will first begin on visibility and then follow up with integration features later. If you want to get started with quickly take a look at this entry.

With Quickly able to get folks up and running with development, I wanted to make it easier for opportunistic developers to get their hands on code snippets and examples to learn from. As such, I created the Acire and Python Snippets projects. These projects provide a simple means in which you get access to a freely available regularly updated library of examples, across a range of different areas. With Acire you will always have a growing knowledge base of real code that you can read, run and share, and the community works together to regularly add to and support that knowledge base. The response so far has been great and you can read more about this in my previous blog post.

So, at this point we have all the tools needed to build applications, learn from code examples, and publish packages that ultimately will be visible in the Ubuntu Software Center. The one area that neither Quickly nor Acire has particularly served well is improving on how we collaborate together on software. Few Open Source projects have one sole developer, so we really want developers work well together, in conjunction with translators, documentation writers, bug triagers and more.

To do this we have the rather awesome Launchpad and Bazaar which are a doddle to use. Launchpad provides everything you need to work together on a software project and I have become a bit of a Launchpad fan as I have got used to using it. In my earlier days I tried Sourceforge, Trac and other systems, but Launchpad is rocking it for me.

While I love Launchpad and Bazaar, their integration in Ubuntu could have been better. As an example, to get code in and out of Launchpad so you can contribute to a project, you use the bzr command and the process typically works like this:

  • You download some code from the Launchpad project with bzr.
  • You branch the code: this effectively means making a duplicate directory of the code.
  • In that duplicate directory you add a feature, fix a bug or make some other kind of improvement.
  • You then commit your changes to your local branch: this effectively tells Bazaar of the changes you have made.
  • You then upload your branch to Launchpad (this is called pushing a branch).
  • The final step is to propose a merge. This is when you offer your branch and it’s changes to the project maintainer to merge into the main codebase. Launchpad ties together nicely with bzr to handle this process and has a web front end for doing code review.

Now, understanding how all this works and doing it a few times takes a little getting used to, and much of it is learning how to use the different bzr commands and how they hook in with Launchpad. Well, very recently my friend and yours Martin ‘doctormo’ Owens has released his Ground Control project which provides a graphical interface to the whole process by building it into the file manager in Ubuntu. I cannot tell you how bloody cool this is. It works a little like this:

  • You create a Projects directory in your home directory.
  • Click Places->Home Folder and go to the new Projects folder.
  • In there you can see a button to login to Launchpad. Click the button, enter your username and password. Job done.
  • You now see a a button where you can select a project to work on. Click on it, enter a project name, select it and it creates a new folder.
  • Now go into the folder and there is a button to download the code. Click it, select a branch and the code is downloaded.
  • You can now hack on your feature and a button will appear to commit your changes.
  • Finally, you will then see a button to propose a merge. You enter some text to describe your change, and it is uploaded.

No commands. None. What I love about Ground Control is that it is highly contextual: it is built into the file manager and it only ever shows you a button for what you can do at that time. It is simple, quick and Martin has done a wonderful job with it. Go and see a video demo of Martin showing Ground Control here.

Ground Control is still very very new so expect bugs, but do give it a go, report bugs, and importantly, he is looking for help to make sure it has full translations support. If you have done this before, drop him a line. The Ground Control Launchpad project is here.

With each of these components we are seeing more and more gaps in the integration and ease of the development process getting filled. I am hugely excited about this and I am excited about it bringing more and more people to Ubuntu as a development platform and it ultimately generating more and more Free Software for us all to use. We still have a long road ahead though and plenty of good work yet to do. If you think there is a gap you can fill, come and help us rock it. :-)

January 30, 2010 11:10 AM

schwuk

Best Summary I've Seen Of Why The iPad Matters

stevenf:

The Old World

In the Old World, computers are general purpose, do-it-all machines. They can do hundreds of thousands of different things, sometimes all at the same time. We buy them for pennies, load them up to the gills with whatever we feel like, and then we pay for it with instability, performance degradation, viruses, and steep learning curves. Old World computers can do pretty much anything, but carry the burden of 30 years of rapid, unplanned change. Windows, Linux, and Mac OS X based computers all fall into this category.

The New World

In the New World, computers are task-centric. We are reading email, browsing the web, playing a game, but not all at once. Applications are sandboxed, then moats dug around the sandboxes, and then barbed wire placed around the moats. As a direct result, New World computers do not need virus scanners, their batteries last longer, and they rarely crash, but their users have lost a degree of freedom. New World computers have unprecedented ease of use, and benefit from decades of research into human-computer interaction. They are immediately understandable, fast, stable, and laser-focused on the 80% of the famous 80/20 rule.

January 29, 2010 04:58 PM

Bryn_S

Another Test

Testing posts from the BlackBerry

Testing

Testing

January 29, 2010 04:34 PM

mrben

No such thing as a free bike…

Back in December 2007 I tried a bit of cycle commuting on a borrowed mountain bike. I stopped when I realised that it wasn’t really saving me any money, and because I thought I was about to move to a job closer to home, whereupon I would start again. Sadly, the job never materialised, and I never started up cycling again, despite having done over 200 miles at that point.

Fast-forward to 2009, where I got 2 offers – a new job at Central and a new (to me) bike via an online friend. He had been given an old 10-speed road-bike, but wasn’t allowed by his wife to keep it, so I said I would take it.

I took delivery of an old Peugeot Carbolite 103 (actually the name of the frame, the model is an obscure number on a sticker near the bottom bracket that is a bit torn :( ) in November, but sadly there is no such thing as a free bike. New tyres were a good start, but when I went for my first serious test ride, the chain broke. A new chain then enabled me to see that the saddle was woefully uncomfortable, so a new saddle arrived for Christmas. I’m still in need of some mud guards, and I suspect a rack at some point, and some additional cycling clothes, etc, etc, etc. You get the picture ;)

Me collecting the bike:
me + bike

A few alterations later:

Carbolite 103

Of course, then there are the alterations that need doing. The brakes are shoddy and need a bit more work, if not replacing. The brake levers have been moved, but need moved a lot more to make the drops anything more than decoration. I have bar tape to fit (matching the saddle…). Plus it now needs a good clean and oiling.

However, I’ve done 100 miles in January, having ridden every work day, and I intend to ride at least 200 work days in 2010, which would be about 1000 miles of cycling. It will also save me in the region of £400, although I would need to minus expenses off that…… now – where’s that cycling mag….

mrBen

January 28, 2010 09:44 PM

GingerDog

Verified by Visa …. what rubbish

On Wednesday I was trying to buy train tickets for an upcoming trip to London.

So, I book the tickets, and get to point of being asked for my card details … tap tap tap … kapow … Up comes the Verified by Visa payment screen (in a stupid iframe [how do I know this isn't a phishing site?]). Well, it displays my ‘username’ correctly – a terrificly hard to guess one of MRDAVIDGOODWIN… I enter my details and it keeps decling them. Hmm.. Fine… perhaps I’ve incorrectly stored the password – “oooh look – reset password…” *click* – “You want me to enter my date of birth… is that the ONLY security check you’re going to do? WTF??? ”

Grr.. Why do they bother….

See also http://www.lightbluetouchpaper.org/2010/01/26/how-online-card-security-fails/

January 28, 2010 08:55 PM

jono

Passing On The Lernid Torch

This week has been a big week for Lernid in which it has received some comprehensive testing, feedback and exposure because of the always awesome Ubuntu Developer Week. It has been fantastic to see Ubuntu Developer Week session leaders using slides and the features in Lernid to get the most out of their sessions. Lernid is in great shape with a solid 0.5 release and a tonne of bug fixes already ready for 0.6 as well some new features.

I wrote Lernid because I just wanted to JFDI a solution to something that I thought could squeeze a huge amount of extra value out of online learning events. I am proud of where the project stands now, but I think now is the time to move stewardship of the project over to hands with more time and oversight to keep up to date with a growing Lernid development community. With this in mind I am proud to announce that the new leader of the Lernid project is Michael Budde.

Michael has taken a phenomenal amount of initiative with Lernid and has been keeping on top of the many merge requests and bugs while I have been busy cavorting around the Internet with work. I had a call with Michael today to talk through the transition, and you good folks can expect Lernid to bring in a session leader mode, easier question asking features and other awesome features. I am excited to see where Michael takes the project. I am also excited to see how other distributions and projects use Lernid now that it supports user-specified server configurations.

So, folks, please join me in welcoming Michael as the new Lernid Leader and a continued healthy future for our new e-learning tool!

January 27, 2010 11:12 PM

GingerDog

Random PHP project progress

Initially when we founded Pale Purple all our new PHP development used a combination of Propel, Smarty and some inhouse glue. Over time we seem to have drifted towards the Zend Framework, but I’ve never been particularly happy with Zend_Db or Zend_View. Why the Zend Framework? Well, it has loads of useful components (Cache, Form, Routing, Mail etc) and it’s near enough an industry standard from what we see – and obviously I’d rather build on the shoulders of others than spend time developing an in-house framework no one else will ever use.

For one customer, we’re currently working on the next iteration of their code base – which incorporates a number of significant changes. When we inherited the code base from the previous developers we spent a long time patching various SQL Injection holes (casting to ints), moving over to use PDO’s prepared statements and trying to keep on top of the customer’s new functionality requests and support issues. There’s still a lot of horrible code to refactor, plenty of security holes (although none public facing) and we know we’re moving in the right direction – hopefully patching and duct tape will soon be a thing of the past as it will develop some form of architecture and look like someone has thought about design and long term maintenance.

I’ve started to properly do Test First Development – at least from a support perspective – as too often we’d find we would patch a bug, only for it to reappear again in a few weeks/months time. This has been especially useful with the SOAP interface the application exposes. The tests run every 5 minutes, and we all get emailed when stuff breaks – it took all of 30 minutes to setup and put in place – then it was just a case of actually writing the unit tests themselves (the tests take minutes to write; finding/fixing any bugs they pin point takes somewhat longer :-/ ). I’ve also abused Simpletest’s web testing ’stuff’ to also act as an availability checker of the live site (i.e. hit a few remote URLs, and check that we don’t get error messages back and do see expected strings).

The original code base had no ‘model’ like layer (or MVC ‘compliance’) – files containing HTML, CSS, SQL, Javascript and PHP were the norm – we’ve added Propel to the project as the ‘model’ layer – which took a few hours; and then when reverse engineering the database we found a few oddities (tables without primary keys and so on) – anyway, moving the functionality from a handful of legacy objects across into the Propel ones seems to be well underway, and I for one will be glad to see the end of :

$x = new Foo(5);

Accompanied with code that does the equivalent of :

class Foo {
    public function __construct($id = false) {
        if($id != false) {
            // select * from foo where id = 5
            // populate $this; don't bother checking for the edge case where $id isn't valid
       }
       else {
           // insert into foo values ('');
          // populate $this->id; leaving all other fields as empty strings...
     }
     public function setBaz($nv) { // repeat for all table fields
         $this->baz = $nv;
         global $db;
         $db->query('update foo set baz = "' . $nv . '" where id = ' . $this->id);
     }
}

Finally, we have a meaningful directory structure – where some things aren’t exposed in the document root. Hopefully soon a front controller and some decent routing. At the moment a huge amount of code is just sat in the ‘public’ directory due to it’s nature. We hope to fix this in time, and move to using Zend Controller – once we get Smarty integrated with it.

Propel has added some nice new features since we last used it (effectively v1.2); it was a toss up between it and Doctrine (as obviously the ZF is moving in that direction) – but we already had knowledge/experience with Propel and it seemed the easier option.

I’m hoping that with time we’ll be able to get up to at least 60% test coverage of the code base – at that point we should be able to refactor the code far easier and with less fear. At the moment I doubt the unit tests cover more than 5-10% – although maybe it’s time I pointed xdebug or whatever at it to generate some meaningful stats.

My final task is to get some decent performance measurements out of the code base – so we can track any performance regressions. I’m fairly confident that moving to Propel will result in an speedup as duplicate object hydrations will be eliminated thanks to it’s instance pool, however having hard figures and nice graphs to point at would be ideal. So far I’ve knocked up my own script around ‘ab’ which stores some figures to a .csv file and uses ezComponents to generate a graph file. This seems to be a crap solution, but I can’t think or find anything better. Any suggestions dear Internet? Perhaps I should integrate changeset/revision id’s in my benchmarking too. Suggestions here would be exceedingly appreciated.

There, I should have ticked all necessary boxes wrt development practices now. Now to work on finding a contract PHP developer….

January 27, 2010 10:03 PM

Aquarion

Delighted

This morning, I was entirely weirded out when the lights in the hallway of our block of flats appeared to follow me.

The light outside the front door was on, and as I walked towards the lift they switched on and off in sequence, a controlled pool of light that followed my every move.

The lights in the lift weren’t working properly either, and only the one near the door has ever worked properly, so I wasn’t that suspicious until I got to the lobby of the building, and once again was followed out by this flowing pool of illumination, silence save for the “click” as the light behind me switched off, and the light ahead of me switched on.

Outside was darkness, strange despite the bleak midwinter cold for my phone claimed 8am, and I double checked my possessions – Glasses, Phone, Keys, Wallet – as I buzzed myself out of the building.

I was distinctly unprepared for the spotlight.

The darkness above me was absolute; none of sun, moon or stars to indicate the presence of the sky, a few street lamps bathing the world around them a distinctly sodium orange glow; but around me and cast very obviously from above me was an oval of white light that pointed in front of me. As I stepped forward it followed me exactly, and I looked up to see what cast it.

There was nothing there at all. No bright point of light to blind me, just a deep velvet darkness that swallowed the universe, and no visible source for the spotlight that followed my every move. I stepped backwards, forwards, ran sideways, dodged left and right. It followed exactly. I lay down on the path and it grew larger to encompass me, I walked under a bus shelter and it vanished; only to reappear as I passed the shelter by.

The streets were empty, although I could see the spotlights of others far ahead of me. The occasional car passed in the darkness. I walked on.

* * *

A few other people were in the office working, though almost anyone who had seen the news had taken its advice and stayed home. We sat, glued to our chosen information channels. The darkness, apparently, was absolute. Nobody knew where the spotlights were coming from, who controlled them, or why. Reports from confused satellites reported the absence of stars, although whether that was due to their absence or a dust cloud or something nobody seemed quite sure.

The sun still appeared to exist, international temperatures were as normal, plants would grow. Animals across the planet – all in their own tiny spotlights, none as bright as those I had seen – were panicking. The spotlights themselves appeared to indicate something, some peoples’ being dimmer or brighter according to no known measure. The advice was to keep calm and wait for the smart people to work out what was going on.

Nobody ever did, and so we sit in the darkness so many months later, watching out over the field behind our flat, the occasional light flitting across the field as a rabbit runs for its life, the light suddenly going out as it escapes down the rabbit hole.

January 27, 2010 05:45 PM

Bryn_S

Test

Testing a few new things.

January 27, 2010 01:44 PM

popey

Yahoobuntu!!!

Ubuntu is switching the default search from Google to Yahoo!

Those of you testing out the development version of Ubuntu Lucid should notice a change in Firefox very soon. The default search provider for new installations of Ubuntu Lucid (10.04) and upgrades will be Yahoo! and not Google. Canonical have struck a revenue sharing deal with Yahoo! which generates income for the company. This revenue should help pay the wages of Ubuntu Developers employed by Canonical, and support the infrastructure required to develop and build the distribution.

What it might look like

So when using the search box in the top right corner of Firefox on Ubuntu, you’ll be taken to a Yahoo! results page rather than the old default Google one. If you are upgrading to Ubuntu 10.04 and you had Google as your search provider (the previous default) then this will change to Yahoo!. You can of course change the search provider, this is merely the default for Lucid. Doing so will mean your search revenue won’t go via Yahoo! to Canonical. That’s your choice, clearly.

In addition, the browser ’start page’ – that is the page you see initially when you open the browser – will reflect whatever the default search provider is. So in the top right, if you choose ‘Google’ you’ll get the Google start page, and conversely if you choose ‘Yahoo!’ you’ll get the Yahoo! start page when you first open the browser. Again, you can change the start page to be blank or use some other search provider. These are just the new defaults.

It’s possible that additional search vendors may be added to the list – Bing anyone? – but it seems that for Lucid there will be at least the two mentioned above. Users who already run Ubuntu and are upgrading to Lucid, but don’t use Google won’t notice a difference, but they’re welcome to manually switch to the new Yahoo! search provider if they want to financially support the Ubuntu project that way.

No doubt this will cause some consternation within the Ubuntu community, as many find changes to “their” browser to be tantamount to breaking and entering their home. Indeed when these things were previously messed with there were a few heated complaints and reports of broken-ness.

Hopefully the dialog on this change will remain civil and, well.. lucid.

January 26, 2010 09:44 PM

aquarius

Adding Ubuntu One support to your applications, an IRC lecture

This year, as last year, I did an IRC talk as part of Ubuntu Developer Week. This time, it was about adding Ubuntu One to your applications, and what that will bring to your users. (Once again my xchat plugin for IRC talks was massively helpful!

Introduction

  • Hi! I'm Stuart Langridge, from the Ubuntu One team, and this talk is called "Adding Ubuntu One support to your applications".
  • You can ask questions at any time in #ubuntu-classroom-chat. Please write QUESTION at the beginning of your question so I can see it more easily. I'll stop at the end of a section and answer some questions.
  • During this talk I'm going to explain the different ways your applications can take advantage of Ubuntu One...
  • ...talk about why you'd want to do that...
  • ...and give a couple of sneak previews of things that you can't *quite* do yet but will be able to do for Lucid 10.04, so you can be ready!
  • Firstly, though, remember that "integrating with Ubuntu One" isn't really the point; the point is to give features to your users that make their lives easier.
  • Now, obviously, using Ubuntu One will make you taller, it'll make you more attractive to the appropriate sex, and it'll make the sun shine more brightly, but remember that it's all about providing things that your users want...
  • ...and Ubuntu One gives you the infrastructure you need to do that. If it doesn't, come talk to us!

How to do cool things with file synchronisation

  • OK, so, the first thing is: files.
  • As you know, Ubuntu One automatically synchronises files in your Ubuntu One folder to Ubuntu One itself in the cloud and to all your other machines.
  • This means that you can take advantage of automatic file backup just by having your application save things to the filesystem!
  • Imagine that you want attachments that you receive by email to be stored online and backed up so you can get at them later.
  • Most mail clients will already let you do this in some way. So, change the folder that these attachments are saved in to be an Ubuntu One folder and suddenly all your attachments are backed up online and available on every machine!
  • For example, there is a Thunderbird attachment called "Attachment Extractor" (https://addons.mozilla.org/en-US/thunderbird/addon/556)
  • Install it, select "Automatically extract attachments on email receipt" in Tools > AttachmentExtractor settings > Auto-Extract, and set the "Save Path for Attachments" to /home/YOU/Ubuntu One/Mail Attachments, and that's all you need!
  • Similarly, if you want off-site backups of your computer, then you can install one of the many simple backup programs, like backintime (http://backintime.le-web.org/) and choose the backup folder to be inside your Ubuntu One folder.
  • With no extra effort you've got off-site online backups which you can get at from any of your machines or from the web.
  • As another example, imagine you've built yourself a digital picture frame out of an old laptop, which is a pretty cool project for your weekends. How do you get the photos on it?
  • Well, when I did this, I created a new Ubuntu One user for the picture frame, and then I shared a folder with that picture frame user through Ubuntu One.
  • The picture frame just did this: eog --slideshow "/home/pictureframe/Ubuntu One/Shared With Me/pictures from Stuart Langridge"
  • and then to add new pictures to the frame, I just copy them into the folder that I shared.
  • I could share that folder with anyone else, too, and allow them to write to it, and then they'd be able to add pictures to the frame too!
  • The way I'll do this from 10.04 Lucid onwards is to use the new User Defined Folders feature, where any folder, anywhere, can be designated as an Ubuntu One synced folder
  • and you can elect to have some folders but not others synced to particular machines
  • So I'd create my "digital picture frame" folder in my home folder (or wherever), and then mark it as a UDF.
  • Then on the picture frame itself, I'd sign into Ubuntu One, and say that I only want to subscribe to that particular UDF and not any of the others.
  • so then files that I put into "digital picture frame" on my laptop will be synced to the picture frame
  • and the picture frame just displays all the files in that folder
  • ta daaah, it Just Works.

Publishing files publically

  • A much-requested feature which will be available in Lucid is "public files", the ability to publish an Ubuntu One-synchronised file to a public URL so anyone can get at it.
  • This is useful for the user directly; they can easily make a file available to the world.
  • It's also really useful for applications, because you can now build one-click publish-to-the-world directly into your apps.
  • Imagine that your app is Shutter, which is like the standard Gnome Screenshot tool on steroids.
  • If you install Shutter and then hit the Print Screen button, it'll take a picture of your screen.
  • One of the main reasons people take screenshots of their screen is to show them to other people, which makes this a perfect case for publishing the screenshot to a URL so anyone can see it.
  • So, in Shutter (or your similar app), provide a "Publish with Ubuntu One" button.
  • That button should do the following:
  • 1. Save the file into the user's Ubuntu One folder (just save, as normal)
  • 2. Call the publishing API
  • The publishing API will be D-Bus; I can't confirm exactly how it will work, yet, because the team are still constructing it, but keep your eyes open for more details!
  • This shows a basic principle of Ubuntu One's design; pretty much anything you can do explicitly, like publish a file, or share a file, can also be done using the D-Bus API from applications.
  • I'll answer some questions here about using Ubuntu One file sync in your apps.

Questions

  • kklimonda|lernid QUESTION: Is there a full GObject U1 API for storing data, settings etc. or do we have to make use of ~/Ubuntu One/ for now?
  • Data and settings are best stored in desktopcouch if you want to take advantage of all that lovely synchronization goodness; there are benefits to doing it that way, and I'll talk about desktopcouch in a bit.
  • But you can certainly store settings files in ~/Ubuntu One if you want to
  • and obviously actual data *content* that your apps work on, your documents and so on, are stored in ~/Ubuntu One
  • mhall119|work QUESTION: in 10.04 you will be allowed to have multiple sync folders outside of ~/Ubuntu One/ ?
  • mhall119|work, yep, you sure will. UDFs (user defined folders) are a big feature that'll land in 10.04.
  • strycore89 QUESTION : will we be able to share single files and not whole directories ?
  • No. Sharing is done folder-by-folder, and we're not planning on changing that.
  • mhall119|work QUESTION: right now the local folder names match the online folder names. With the ability to have multiple sync folders, how are naming conflicts resolved?
  • I'm not sure what you mean here by "naming conflicts"; maybe we can pick that point up after the session, or later on?
  • foobob QUESTION: are you thinking of giving some GB more to the free plan?
  • I don't believe we are at the moment, no.
  • yltsrc QUESTION: will be ready symlincs in U1?
  • yltsrc, UDFs, being able to mark any folder as Ubuntu One synchronized, takes the place of symlinks. If you use, er, some alternative to Ubuntu One and you're used to putting a symlink in, say, ~/SyncedFolder which points at ~/SomeOtherFolder to get SomeOtherFolder synced, you don't need to do that in Ubuntu One; you just mark SomeOtherFolder as a UDF and it will be synced for you.
  • lantash49 QUESTION: Will there be more detailed specification w.r.t storing settings in ~/Ubuntu One? Storing them there directly seems to conflict with the XDG directory specs.
  • lantash49, one obvious approach to this is to mark XDG_CONFIG_DIR and XDG_DATA_DIR as UDFs, so they're synchronized across your computers.
  • yltsrc QUESTION: i want participate in testing U1, how can I do it?
  • Drop into #ubuntuone and talk to the team about what's going on and how you can help; we've had some really helpful community members already, like rtgz, who's done tons of stuff
  • taj QUESTION: Are there any plans to make U1 cross-platform?
  • There's a sprint at PyCon US to port Ubuntu One file sharing to Windows:
  • and mandel, another incredible community member, is currently porting desktopcouch to Windows: http://www.themacaque.com/?p=372
  • both of those projects are great, and if you can help that'd be wonderful
  • mhall119|work QUESTION: If I put a symlink inside of a UDF, that points elsewhere, does U1 sync that as a link, or as a copy of what is linked to?
  • it's synced as a symlink.

Desktop Couch

  • The second leg of Ubuntu One for developers is desktopcouch, the CouchDB on your desktop.
  • If you missed my last Ubuntu Developer Week talk about the basics of desktopcouch and what it's for, you can read it at http://www.kryogenix.org/days/2009/09/03/desktop-couch-irc-talk
  • In fact, you can read all the desktopcouch documentation at http://www.freedesktop.org/wiki/Specifications/desktopcouch/Documentation/, and you should do so :-)
  • The bit that's most likely to be relevant here is the "I am a developer, and I want the applications I write to store data in and work with desktopcouch" section. It contains much that is relevant to this talk!
  • http://arstechnica.com/open-source/guides/2009/12/code-tutorial-make-your-application-sync-with-ubuntu-one.ars/1 is a really great guide, written by segphault, of how to support cloud synchronization of data in your applications.
  • Essentially, if you use desktopcouch to store your application's data, instead of using sqlite or flat files, then the data will be synchronised between all your machines *without you having to do anything*.
  • So your app will work the same on all your machines with no effort.
  • To store a record in desktopcouch, simply do:
  • >>> from desktopcouch.records.server import CouchDatabase
    >>> from desktopcouch.records.record import Record
    >>> db = CouchDatabase('testing', create=True)
    >>> r = Record({'key':'value'}, record_type='http://example.com/testrecord')
    >>> record_id = db.put_record(r)
  • and to get it back, by record ID:
  • >>> fetched = db.get_record(record_id)
    >>> print fetched['key']
     'value'
  • The Quickly project, for writing Ubuntu apps, have created "widgets" that use desktopcouch without you having to think about it. CouchGrid, for example:
  • >>> from desktopcouch.records.couchgrid import CouchGrid
    >>> keys=["key","another key"] # to label the columns
    >>> couchgrid = CouchGrid(db_name, record_type=record_type, keys=keys)
    >>> mywindow.pack_start(couchgrid)
  • and then you have a CouchGrid, which is a data table where all the data is automatically retrieved from desktopcouch and stored back into desktopcouch when changed
  • http://www.youtube.com/user/calorielookup#p/a/u/0/Vwr5Xw5ZrIE has a video demonstrating couchgrids
  • You don't have to know anything about desktopcouch at all for this! Just use the widget and your data will be saved to the database and synced to your different machines with no effort or code on your part at all.
  • https://wiki.ubuntu.com/Quickly/Snippets has a few more examples of using desktopcouch from Python and from Quickly apps.
  • So, cloud-enable your apps! Let's see my song ratings in Rhythmbox or Banshee or Amarok or Exaile or Quod Libet appear on all of my machines. Let's see my Chrome bookmarks appear everywhere, like my Firefox bookmarks already do.
  • Remember, too, that apps can share data. If you want to store song ratings for Amarok in desktopcouch, don't make that storage Amarok-specific; that way, if I decide to switch to Quod Libet I don't have to re-rate all my songs!
  • I'm happy to answer questions about sharing of data between apps if you have them.
  • Also, I'll stop now to take some questions about desktopcouch generally.

Questions

  • andypiper QUESTION: what is Quickly....?!
  • Quickly is an app that helps you make Ubuntu apps really...quickly
  • it takes care of putting together the framework of an application for you, and it makes a deb package for you and uploads the code to launchpad, etc. All the boring stuff that you don't care about when you just want to get your app done
  • the next session, by didrocks, is about quickly, so I'd stick around for that :-)
  • https://wiki.ubuntu.com/Quickly has more
  • yltsrc QUESTION: is available any standard for database name? And how resolve conflicts with different application?
  • yltsrc, there isn't a standard, as such, for database names, because what the desktopcouch project is trying to avoid is laying down lots of standards that you Must Comply With
  • we're a "rough consensus and running code" sort of group :-)
  • the best place to have discussions about that sort of thing is at http://groups.google.com/group/desktop-couchdb which is the desktopcouch mailing list
  • desktopcouch records are deliberately set up to have two sections, a "main section" and an "application specific" section
  • so the idea is that apps co-operate on the main section and store app-specific data in the app-specific section
  • for example, Evolution contacts sync in Ubuntu One is done by Evolution storing your contact data in desktopcouch
  • but the format for a contact has been defined
  • and the contacts are stored in a database in desktopcouch called "contacts"
  • so Thunderbird, for example, could *also* sync its contacts to that same database, in the same format
  • and Evolution stores Evo-specific data (like, say, an internal ID) for a contact record in the app-specific part of the contact record
  • and Thunderbird would do the same
  • what this means is that if you decide to switch from Evolution to Thunderbird, you've still got your addressbook! You don't have to export it and re-import it every time you move between applications
  • yltsrc QUESTION: U1 require python (2.6). Is any plans to run it on python3?
  • I don't believe there is, at the moment, no.
  • b1ackcr0w QUESTION: SpiderOak is said to be going Open Source soon, are there oppertunities to integrate their services with U1?
  • There could be, certainly. I haven't looked into that in detail myself, but I'll be sure and bring it up!
  • mhall119|work QUESTION: I want to hack on the server-part of U1, short of becoming a Canonical employee, what can I do?
  • At the moment, you can't, I'm afraid. The source code for the server part of file synchronization is closed.
  • The source code for the server part of desktopcouch is CouchDB, though, and work on that is perfectly doable.
  • We worked closely with the CouchDB upstream project to make sure that all the changes we needed to use CouchDB in Ubuntu One were part of the main CouchDB trunk.
  • yltsrc Is avalably any FEATURE ROADMAP for U1?
  • that's...sorta what this talk is :) I can see how it might be useful to have a more formal statement of "what's coming up", though. I'll bring that up with the team.
  • yltsrc QUESTION: is U1 uses dbus? and how i can extend my application to use it?
  • Yes. The syncdaemon, which is the bit that handles file synchronization, exposes D-Bus commands for almost everything it does.

Web apps and desktop apps talking via Ubuntu One

  • Since desktopcouch is a CouchDB, and since your data is synchronised not only to your other machines but up to the cloud as well, this opens up the intriguing possibility that you can build a web app that can share data with your desktop app.
  • Ubuntu One's CouchDB uses OAuth for authentication.
  • This means that your web app can ask permission from the user to read your desktop app's CouchDB data directly from Ubuntu One.
  • So the data that appears in your desktop app can also be available to that user on the web.
  • This is a pretty new area, so nobody's using it yet, but it's possible.
  • You use OpenID to log the user in to your web app using Ubuntu One -- you may have seen "log in with Twitter" buttons, or "Facebook Connect", which work on the same principle.
  • Once that's done, your web app can then request permission to read the user's CouchDB database to get at the data that your *desktop* app stored there.
  • So, if we think about the song ratings example above, you can build a web application that can show all the song ratings that the user has entered and allow them to be edited.
  • Your users can then manage their song ratings or playlists or whatever else you've stored directly from a web interface if they're not at their actual computer.
  • Sharing data between web apps and desktop apps is quite hard, and not many people are doing it, so this is a chance to offer a feature that no-one else has!
  • DesktopCouch plus web apps give you the ability to share that data without you having to do any extra work.
  • This also gives you the ability to offer mobile apps as a web interface, so people can work with their data from their smartphone and see their work reflected on their desktop when they get back to it.
  • Are there any questions about how linking up desktop apps and web apps would work?

Questions

  • mhall119|work QUESTION: how does it handle when a file is edited on2 different computers before syncing?
  • If that happens, you'll get a .u1-conflict file showing you that there was a conflict, for file synchronization.
  • In desktopcouch, there will be a conflict record for the data.
  • One of the things that we have on our Big List Of Stuff To Do is some sort of graphical conflict management to make dealing with these situations even easier, but that won't be done for 10.04.
  • So at the moment, handling data conflicts is done by the applications that use the data; the applications have a better idea about how to merge/overwrite/handle conflicts than Ubuntu One does most of the time anyway, because Ubuntu One just moves the data around, it doesn't always understand it.
  • qense (late) QUESTION: When you define a UDF outside the Ubuntu One directory, where will it be synced to when you enable/install Ubuntu One on a different computer?
  • It'll be synced to the same path, so if you mark ~/myfolder as a UDF on computer 1, it'll appear as ~/myfolder on computer 2.
  • duanedesign QUESTION: Where can I find documentation on the U1 API
  • the desktopcouch API is defined (mostly) in the desktopcouch documentation at http://www.freedesktop.org/wiki/Specifications/desktopcouch/Documentation
  • the file sync API isn't defined anywhere yet, I don't believe, because we haven't had a chance to do it, so it's reading the source, I'm afraid. https://wiki.ubuntu.com/UbuntuOne has some details, though.
  • emoreno QUESTION: Is there any way to use a Private Cloud rather than U1 with the same API
  • Not at the moment. The protocol that the syncdaemon uses to talk to the cloud isn't secret, though, so it would be possible to implement a private cloud.
  • mhall119|work QUESTION: does U1 offer any kind of versioning on it's data, like the ability to retrieve an older version?
  • Not at the moment, no. We've talked about that, but it isn't available now.
  • OK, that's a brief tour of what services Ubuntu One can bring to your apps. You can make the files your app uses be synchronised, you can publish those files publically, you can store data from your apps that will be available everywhere, and you can share that data with web applications.
  • nealmcb QUESTION: Re the question on working on the U1 server end - Elliot Murphy recently talked about your open file storage protocol, noted his "build no silos" policy for U1, and talked about e.g. Tomboy integration. Can you expand on the places that people can work on servers that integrate with U1 protocols?
  • desktopcouch is a CouchDB, so it can replicate data with any CouchDB, including other desktopcouches on your LAN -- see the desktopcouch-pair tool for this, in the desktopcouch-tools package -- and so doesn't even need a server at all
  • Tomboy notes sync was done by us implementing the Snowy API -- Snowy is a Django server to which you can sync your notes, designed by the Tomboy team, and they're looking at doing their own deployment of it
  • qense QUESTION: Any change there will be a small collection of snippets showcasing webintegration of Ubuntu One?
  • if someone does that I'll love them forever.
  • I'd certainly like to, it's just finding the time :-)
  • OK, if you have other questions, feel free to ping me, or chat on #ubuntuone!

January 26, 2010 06:11 PM

jono

Application Indicator Online Tutorial Today

Recently I have been talking about how stoked I am that we are solving the problems in the notification area with Application Indicators based on this spec from the KDE team. We are now shipping this functionality in Lucid with Rhythmbox, Nautilus, Empathy, XChat-GNOME, Lernid and other applications using it.

Application developers are pretty excited about the technology, and as such we have scheduled a tutorial session about how to make use of the application indicator framework as part of the awesome Ubuntu Developer Week. The session is today, the 26th Jan at 7pm UTC / 11am PST / 2pm EST lead by the always awesome Ted Gould. More info on joining the session is here or you can use Lernid to join really easily.

January 26, 2010 05:15 PM


© LugRadio 2007 · Site designed by Michael Evans

© LugRadio 2007 · PlanetPlanet theme by D. Rimron