Planet WolvesLUG

Syndicate content
Planet Wolves - http://www.wolveslug.org.uk/planet/
Updated: 48 min ago

Jono Bacon: Ten Years of LugRadio, Zero Years of Bad Voltage

Thu, 27/02/2014 - 01:23

Ten years ago today we started LugRadio. For those of you who don’t know what LugRadio was, it was a podcast that some friends and I did that took a loose, fun, and eclectic look at Open Source and Linux. It developed a bit of a cult following to the point where 40+ people still hang out in the #lugradio channel today.

A am proud of what we achieved with LugRadio. Over 100 shows, 7 full-time presenters and countless guest presenters, 200+ hours of audio, 100+ guests, 2million+ downloads, multiple awards, 1000+ forums members, 40000+ forums posts, 6 live events in two countries, 5000+ emails to the show and an incredible community of people who surrounded the show, discussed it, got involved in some way, and otherwise gave us all immense enthusiasm to keep doing it.

I remember the day I started discussing the idea with Stuart Langridge, stood in my kitchen in Wolverhampton after a Linux User Group meeting, and I don’t think either of us would have ever dreamed of how far it went.

If you want to get a good idea of the show, check out the excellent documentary about LugRadio called Don’t Listen Alone by Tony Whitmore.

Although LugRadio is now wedged in the historical record, the good news is that there is a new kid on the block in the form of Bad Voltage.

Much is the same as with LugRadio (four presenters, show every two weeks, a focus on informative but entertaining content) but we don’t just limit the show to Linux and Open Source and we also cover technology, politics, gaming, and more. Check it out here.

Categories: LUG Community Blogs

Aq: There WILL be only one Ubuntu

Wed, 26/02/2014 - 19:23

Michael Hall declares that there is no “Touch”, only “Ubuntu”. And he’s absolutely correct. Sadly for the rest of us, though, he’s writing that post from the future. There will be One Ubuntu, but we’re not quite there yet.

Mike says that the difference is Unity 8. Actually, for the purposes of most people writing apps, I think that Unity 8 and Unity 7 don’t really enter into it. Unity works roughly the same way and presents roughly the same APIs. The biggest discrepancy right now between “Ubuntu Desktop” and “Ubuntu Touch” is that there’s a bunch of stuff available on the desktop which is not yet part of the platform API, which means that that stuff is not available on my Ubuntu phone yet and so I can’t use it.

Let’s take a little example. Right now, push notifications are still being worked on for Ubuntu (which is fine; it’s a difficult project and needs care), and in their absence I don’t have a way to have something on my phone which tells me when I get an email. I hate that. I really don’t like not having email notifications: they were the first thing I turned on on my new machine. So I thought: how can I do that on my phone? I’m prepared to sacrifice a bit of battery life for this, if need be.

Voice of the audience: just use cron! that’s what it’s for!

Sadly, I can’t use cron on an Ubuntu phone. If I ssh into my phone (which I’m happy to do) and then do crontab -e, it doesn’t work, because the main filesystem is read-only and so crontab can’t save a cron file. Nor can I use upstart, because upstart doesn’t include time-based scheduling, sadly.1 I could, I suppose, run a daemon which schedules for me (and that’s what I’m looking at doing) but that’s not very excellent a solution.

Voice of the audience: you can make the filesystem read-write!

Yes. You can. I do not want to. If I do that I don’t get to have system updates any more. More importantly, though, if I do that, I’m not an app developer. I’m a platform developer. I don’t want to be a platform developer. I want to make apps. If I’ve done some platform-developer things — marked the filesystem read-write, written things to it, installed other packages, tweakd the config — then I lose one of the most important things about mobile development, which is knowing that your device is the same as everyone else’s. I’ll no longer be sure whether “it works on my device” means “it’ll work on someone else’s”, because now it might work on my device because I’ve poked the platform. I’m not running Ubuntu, then; I’m running Stubuntu. It’s the same reason I won’t install third-party non-Ubuntu stuff with sudo — Ubuntu owns the root filesystem. If you’re a third-party package or package manager, you go in my home folder. If you insist on not going in my home folder, or you make it really difficult to do so2 then you just don’t get installed at all.

Look, I know this stuff is being worked on, and it’s fantastic. Ubuntu will be even better than it is at the moment, which is saying something. But at the moment there’s just no way to do a bunch of stuff on “Ubuntu Touch” which is possible on “Ubuntu Desktop”, until the ability to do that stuff appears in the platform API. That gap closes every day, and it’ll be brilliant when it’s finally gone, but until then there still is a difference between “Ubuntu Touch” and “Ubuntu Desktop”. Because when I ask the question “how do I get notified of new mails on Ubuntu?”3, the answer for my desktop is “install this app”, and the answer for my phone is “we can’t do that yet but we’ll be able to soon”. I’m fine with that being the answer: this is not a complaint that it’s not done yet, and I’d like to stress that point. This stuff is being worked on, and I know it’ll be great when done, but the fact remains that it’s not done yet. Until that day, there’s a distinction between “Ubuntu for my phone” and “Ubuntu for my desktop”, and it’s not just about phone-specific stuff like hardware access or app confinement. That distinction is currently present. Roll on the day when it’s not.

  1. and presumably will not, now that the focus has generally switched to systemd. That does have cron-ish abilities, but the phone isn’t using it yet
  2. rubygems, you are the weakest link, goodbye
  3. or “how do I get notified of new G+ posts” or “store key data from my app in a secure way” or “programmatically list what’s pinned to the launcher” or “update my desktop background whenever a particular file changes” or anything which requires some sort of background processing
Categories: LUG Community Blogs

Dick Turpin: Eager

Wed, 26/02/2014 - 10:38
Colleague: "I understand you're moving, can we quote you for moving and setting up your equipment?"
Prospect: "It's not even built yet!"
Colleague: "Oh..........."

#facepalm
Categories: LUG Community Blogs

Jono Bacon: Ubuntu Development Update Presentation

Tue, 25/02/2014 - 06:59

This last weekend I was in LA at SCALE12x and gave a presentation providing a detailed update of much of the work going on as we build a convergent Ubuntu. As I have mentioned before, there is lots of other foundational pieces being built as part of this work (app insulation, SDK, click packages, developer.ubuntu.com, platform services etc), and this presentation covered where we stand today in this work.

Obviously a lot more of you couldn’t be at SCALE than couldn’t, so I have recorded the presentation to share online. You can see it below or click here to watch it. Enjoy!

Categories: LUG Community Blogs

Dick Turpin: Switch it off.

Mon, 24/02/2014 - 16:22
Customer: "Our servers broken!"
Engineer: "When you say broken what do you mean?"
Customer: "We switched the plug on and pushed the button like we normally do and it has a black screen with text on it."
Engineer: "You switched the plug on?"
Customer: "Yeah, of a night time when we've finished we switch the plug off."
Engineer: "After you've shutdown?"
Customer: "No, it asks us questions when we do that so we just switch the plug off."

Speechless.
Categories: LUG Community Blogs

Dick Turpin: Black Friday

Sat, 22/02/2014 - 20:37
I had a really bad day last Friday.

Prospect: "I'd like to order one of those Optiplex 745's at £140.00 please."
Me: "OK."
Prospect: "It will be for putting info in a spreadsheet. Just basic stuff."
Me: "You do know there's no Office package?"
Prospect: "What do you mean?"
Me: "There's no Office, you know, Word Excel etc."
Prospect: "But it says Windows 7 here!"
Me: "That's the operating system."
Prospect: "Well how much is Office then?"
Me: "I can do it for £165.00"
Prospect: "Does the Dell come with a keyboard and mouse?
Me: "Not normally but I'll throw them in."
Prospect: "What monitors have you got?"
Me: "What size do you want?"
Prospect: "I've no idea, I'll measure this one it's diagonal in't it?"
Me: "Yes."
Prospect: "20" inch"
Me: "I don't have any refurbed 20" I can do 19" inch for £35.00"
Prospect: "What about a bigger one?"
Me: By bigger one do you mean 22" Inch?"
Prospect: "Yeah"
Me: "OK they are £xyz"
Prospect: "And the next one?"
Me: "So a 23" inch is £xyz"
Prospect: "What's the next size up?"
Me: "24" inch. You can have a 48" inch plasma if you like?"
Prospect: "Nah, I'll have the £35 19" inch."
Me: [Through gritted teeth] "OK."
Prospect: "That keyboard and mouse, they are wireless?"
Me: "NO THEY ARE NOT.
Prospect: "Oh."
Me: I'll get you a price, that will be £xyz"
Prospect: "Are they flat keys?"
Me: "What?"
Prospect: "Are the keys flat? They look so much smarter."
Me: "No they are not flat."
Prospect: "Have you got any flat ones?"
Me: With the greatest of respect, they don't generally put 'has flat keys' in the specifications and tbh I'm not looking at loads of pictures to find a flat key one."
Prospect: "It's OK I'll stick with the ones you're throwing in."

Fortunately he bought the items discussed before my head exploded.

Categories: LUG Community Blogs

Jono Bacon: Today’s Ubuntu News

Thu, 20/02/2014 - 07:17

I am sure that you have all seen the exciting news about the first partners to ship Ubuntu smart-phones. For those who haven’t seen it:

19th February 2014, London: Canonical today announces it has signed agreements with mobile device manufacturers bq (www.bqreaders.com) (Spain) and Meizu (China) to bring Ubuntu smartphones to consumers globally. Canonical is working with these partners to ship the first Ubuntu devices on the latest hardware in 2014. Ubuntu has also received significant support from the world’s biggest carriers, some of which intend to work with OEM partners to bring phones to market this year.

Development programmes have begun with the partners to provide smartphones with a superior user experience on mid to high end hardware for consumers around the world. Devices will be available to buy online through bq, Meizu and at Ubuntu.com.

Today was a hectic day, starting with our Ubuntu town hall hangout and spent in a wealth of meetings. As such I haven’t had a chance to write a blog post about this announcement yet, but I wanted to throw something out on my blog before I go to bed.

Naturally this is tremendously exciting news. As I posted about before, 2013 was an intense year as we not only started building our convergent platform, but also the many inter-connecting pieces too such as our SDK, image based updates, Mir, app developer platform, platform services, app insulation, developer portal, and more. As a result of this work, since May 2013 I have been running Ubuntu full-time on my phone and we are in great shape.

In the last year my team has been heavily focused on building a new community; our Ubuntu app developer community. I have directed many resources in my team here for a number of reasons that I believe are of strategic importance to the future health, growth, and opportunity of Ubuntu and our community.

Firstly, we want Ubuntu to instill a level of simplicity, elegance, and power that is not just present in the default platform, dash, scopes, and services, but also emphasized across the apps that users want to use. This means kickstarting a new generation of apps inspired by the design and development principles that are driving our convergence vision and using a simple and powerful app developer platform so devs can go from idea to app store as quickly and easily as possible.

Secondly, I personally believe that apps are key to our success. I suspect that OEMs and carriers will be even more motivated by a platform with great apps and a powerful developer platform, I believe that users will be attracted to a platform with great apps, and I believe that developers will want to build apps for a platform that is both fun to use and develop for.

Thirdly, I believe there is a huge opportunity to refine and innovate in so many areas of our app developer platform and community. Everything from the tooling to knowledge and support to publishing can be optimized and refined to build the very best developer platform.

As such, in my peanut-sized brain the apps are where much of my team’s strategy should be focused.

I am delighted by the progress we are making here. As I wrote about a few days ago, there is lots of wonderful work going on and fresh features and improvements landing soon. Our Ubuntu app developer platform is growing in leaps and bounds and I am really proud of the efforts of so many people.

Now, while I am proud of where we are today, I am not going to compromise until we have the best developer platform in the world.

So, how does this all relate to the bq and Meizu news?

Well, this news starts the ball rolling on the first set of devices that are going to be hitting the market. This in-turn will result in a general consumer audience starting to use Ubuntu on smart-phones. While today we have thousands of developers flashing their phones with Ubuntu and eagerly writing apps and using other people’s apps, the injection of general consumers will build even more motivation and momentum for our app developers to create apps they are truly proud of and that will be of interest to a new generaton of Ubuntu smart-phone users. As a musician I can tell you that having an audience makes everything that much more worthwhile, and I think it is the same our developers who are about to get a new audience growing around them.

These are tremendously exciting times. Our vision is ambitious but every day the momentum grows and I delighted you are all joining the journey with us. Let’s do this, friends!

Categories: LUG Community Blogs

Dick Turpin: When can I have them?

Tue, 18/02/2014 - 13:29
Here's a good one.
Ask me to look at the prices of my quotation. "Can you do anything on the price?"
Ask me for slightly higher spec's. Aye? You just asked me to cut the base price?
Ask me for a delivery date as well. How the feck would I know when I have no idea what you're ordering?
Categories: LUG Community Blogs

Dick Turpin: Email expert.

Mon, 17/02/2014 - 17:04
Customer: "My emails won't go I keep getting an email saying there's a problem."
Colleague: "Can you send me the bounce-back?"

A few minute later.

Colleague: "You've sent me the emails you're trying to send."

#facepalm
Categories: LUG Community Blogs

Aq: More on an Ubuntu Component Store

Sun, 16/02/2014 - 15:21

After yesterday’s musings on a “component store” for Ubuntu developers, a few people said “hm that sounds interesting, how would it work?” So I’ve thrown together a little demo.

I should be clear: this is a demo. It’s not a component store; it’s not for real use; you can’t add things to it; you can’t use it in your apps. This is just enough of a test implementation to allow people to talk about whether this is a good idea or not. None of the code I’ve written would be used in a real implementation, if such a thing existed: I don’t do any error checking, I don’t have any tests. It’s just to give a demo of what I think the developer experience of a component store might be like if it existed, which it does not.

First you need the utility which searches the store, which is called ucs. Get it with bzr branch lp:~sil/+junk/ucs-cli. You now have a utility named ucs which can search the component store for components you might find useful in your apps.

Next, an app which uses it. Grab a demo with bzr branch lp:~sil/+junk/ucs-demo-app. You can now load that app into the Ubuntu SDK editor, or just run it from the command line with qmlscene ucs-demo-app/UCSDemoApp.qml. If you do that, you’ll see that it’s missing components: UCSDemoApp.qml:3 "ubuntu_component_store": no such directory. So, the app needs components and they aren’t installed, which is correct. Change to the app’s folder and run ucs install.1

$ cd ucs-demo-app $ ucs install Installing RedButton

and now the app should work: qmlscene UCSDemoApp.qml shows an app with a red button in it. If you look at the source of the app in the ucs-demo-app folder, you’ll see two things that make it different from a stock app:

  1. import "ubuntu_component_store" at the top of UCSDemoApp.qml. This includes components installed from the UCS into the app. You don’t need to individually name the components you import: just import "ubuntu_component_store". The app can then use all the components it asks for, such as the RedButton {} QML Item.

  2. there is an ubuntu_component_store.json file in the app’s folder. This ships with the app, and it describes the components that this app uses. Basically, it is JSON like this: { dependencies: { RedButton: "*" }}, describing that this app requires a component called RedButton and doesn’t care about its version number (hence "*").

So the process for working on an app which uses components from the store is: get the app source, then ucs install. That will install all the components that the app requires, and then you can start hacking on the app.

The process for developing an app which needs components: if you want to add a component to your app-in-progress, then ucs list will show the list of all components (which in this demo is one, RedButton), and ucs install RedButton will install that component2 and update ubuntu_component_store.json to add it to your dependency list. So when developing, just ucs install ComponentINeed, and then make sure that ubuntu_component_store.json is checked into source control and that the ubuntu_component_store/ folder isn’t checked in.

Those of you who have worked with node.js and npm will be thinking: this looks a lot like npm. You are not wrong. I think that that’s an excellent model for building projects. There will be people who say “but what if I want the same component in two projects but I don’t want to have it on my disk twice?” Ignore these people. Make a component store which works on a project-by-project basis; it’s so much nicer. Clearly there’d need to be a bunch more work on all this: ucs search and ucs submit and ucs remove and a web UI to browse everything and API specifications and server scaling and re-running ucs install after you install a component in case that component itself has dependencies and deciding what happens if two components in the same project have the same dependency and actually paying attention to version numbers and, and, and. There’s a bunch of integration which could be done with the Ubuntu SDK editor: if your app ships with an ubuntu_component_store.json file, then run ucs install when you open it. Ship ucs with the SDK. Automatically add ubuntu_component_store/ to bzr ignore. Provide a graphical browser for the list of components. This is not an implementation: it’s a demo. A real version would need a decent amount of thought.

I don’t know whether this would actually take off. I don’t know whether there are sufficient people developing reusable components for Ubuntu apps to justify it. But I think that, if there are, then this might be a good way for someone to go about it.

  1. fill in a path to the ucs utility wherever you branched it, of course, or put it on your $PATH
  2. from wherever the store says it’s hosted. This RedButton component is on github, mainly because ucs downloads a zip file of the component and github helpfully provides them for you, which Launchpad doesn’t. Note that I think that components should not themselves be uploaded to the store; the store just stores a URL for them.
Categories: LUG Community Blogs

Aq: Bad Voltage, apps, and generic components for Ubuntu

Sat, 15/02/2014 - 21:19

I wrote a very simple app for Ubuntu for Bad Voltage, the finest podcast in the land. It shows you the list of shows, and lets you play them. Simple. Streaming: there’s no downloading for offline use here, no notifications of new shows; it’s a little app, only. So the first thing you should do is go search for it on your Ubuntu phone and install it.

More interestingly, though, I tried to make this a generic app. That is: the actual code which defines this as a Bad Voltage app looks like this:

import QtQuick 2.0 import Ubuntu.Components 0.1 import "components" MainView { objectName: "mainView" applicationName: "org.kryogenix.badvoltage" automaticOrientation: false width: units.gu(40) height: units.gu(71) id: root backgroundColor: "black" GenericPodcastApp { name: "Bad Voltage" squareLogo: "http://farm4.staticflickr.com/3794/10457827766_59715d2694_o.jpg" author: "Stuart Langridge, Jono Bacon, Jeremy Garcia, and Bryan Lunduke" category: "Technology" feed: "http://www.badvoltage.org/feed/ogg/" description: "Every two weeks Bad Voltage " + "delivers an amusing take on technology, " + "Open Source, politics, music, and anything " + "else we think is interesting." } }

To make a similar app for your podcast, just fetch the GenericPodcastApp.qml file from the Bad Voltage app source, include it in your project, and then use the GenericPodcastApp component. Define a name, squareLogo, author, category, feed, and description, and that’s it; you’re done.

I’d love there to be a whole bunch of generic components like this. Something where I don’t really have to mind how it works, I just grab it from somewhere, drop it into my project, and use it. A QR code scanner, a QR code generator, a circular dial widget, an online high-score table. Obviously it’s possible to make reusable components right now, but there’s no market in them; what I want is something almost like the Ubuntu app store but for developers, where I can look for components, grab one, and insert it into my project, right from the Ubuntu SDK editor. One button-push should update any of these components that I have in my project; that way, if someone fixes a component I can rebuild my app to include it with ease. What I really want is the Ubuntu component equivalent of npm install, I think. The ultimate destiny of any such component is to be so useful to so many people that the Ubuntu core team lift it out of the component store and into the SDK, but it’d be great if it were easier to do this before things get to that stage, and the SDK can’t contain everything. I see no reason why some of these components couldn’t be open source and some sold for money, so there’s potentially an income stream there for Ubuntu developers who make reusable things. GenericPodcastApp is hugely trivial, but an example of the sort of thing that I think could develop. Any component which doesn’t use anything very Ubuntu-specific would work on other QML platforms too, and vice-versa, so the market could even be usable by developers across many platforms.

Categories: LUG Community Blogs

Dick Turpin: If its four it must be less?

Fri, 14/02/2014 - 15:03
Customer: "I can't send this email?"
Me: "That's because you have a 50mb attachment! You can't send attachments that size you'll need to split that zip file into four separate ones."

A little later.

Customer: "I still cannot send this email!"
Me: "What the...... You've attached the four zip files to the same email! That's still 50mb."

#facepalm
Categories: LUG Community Blogs

Jono Bacon: Bad Voltage Season 1 Episode 9 ‘The Starting Pitstop’ Is Out

Thu, 13/02/2014 - 22:44

Stuart Langridge, Jeremy Garcia, Bryan Lunduke, and myself wend our troublesome ways down the road of:

  • We weigh in on the upstart/systemd brouhaha in Debian and discuss what happened, why it happened, and whether it was a good thing or not.
  • Bryan reviews the Lenovo Miix 2 tablet and we get into the nitty gritty of what you can do with it.
  • We take a trip down memory lane about how we each got started with Linux, which distributions we used, and who helped us get on our journey.
  • We take a recap and look at community feedback about guns, 3D printing, predictions, Bad Voltage gaming, the Bad Voltage Selfie Competition and more, all making an appearance.

Go and listen or download it here

Be sure to go and share your feedback, ideas, and other comments on the community discussion thread for this show!

Also, be sure to join in the Bad Voltage Selfie Competition to win some free O’Reilly books!

Finally, many thanks to Microsoft for helping us get the Bad Voltage Community Forum up and running, and thanks to A2 Hosting for now hosting it. Thanks also to Bytemark for their long-standing support and helping us actually ship shows.

Categories: LUG Community Blogs

Aq: Static electricity

Thu, 13/02/2014 - 12:51

So here I am with a static blog.

I was on Wordpress. I like Wordpress; in particular, I like the vitality of it. There’s a large community of people using it and working on it and making plugins and making themes, and it’s become apparent to me over the years that one of the things I care about quite a lot, when using software which is not a core part of what I do, is that I do not have to solve every problem that I have myself. That is: I would like there to be the problem-solving method of “1. google for desired outcome; 2. find someone else has written a plugin to do it”, rather than “1. google; 2. find nothing; 3. write code”. What this means is using some project with a largeish community. So I settled on Pelican, because it’s one of the more popular static blog engines out there, and hence vibrant community.

At this point there will be questions.

If you wanted a vibrant popular community why didn’t you use Jekyll?

I couldn’t work out how to install it.

It says: gem install jekyll. I did that and it says Permission denied - /var/lib/gems/1.9.1. So for some reason a command run as me wants to install things in a system-level folder. No. System level belongs to apt. Let the word go throughout the land.

I’m sure that it’s entirely possible to configure RubyGems so that it installs things in a ~/gems folder or something. But I don’t want that either: I want this stuff to be self-contained, inside the project folder. Node’s npm gets this completely right and I am impressed down to the very tips of my toes with it. Python gets it rightish: you have to use a virtualenv, which I am doing. Is there a virtualenv-equivalent for Ruby and RubyGems? Almost certainly. But I’m not trying to learn about Ruby, I’m trying to set up a blog. Reading up about how to configure Ruby package installation to be in the project folder when you’re trying to set up a blog isn’t just yak-shaving, it’s like an example you’d tell a child to explain what yak-shaving is. So no Jekyll for me, which is a bit annoying, but not too much since Pelican looks good. And I know Python pretty well, and don’t like Ruby very much, so that’s also indicative.

Why are you using a static blog engine at all? What was wrong with Wordpress?

It got owned. I got an email from a friend of mine saying “hey, did you know that if you look at your blog in an old browser, such as Dillo, there’s a bunch of spam at the top of it?”

I did not know. But it was the case. Sigh.

There are plenty of guides around about how to fix this: dump the DB, reinstall Wordpress, restore the DB, then look for fixes, etc, etc, etc. And I thought: wow, that’s a bunch of effort and what do I get for it? I’m still vulnerable to exactly the same problem, which is that an upgrade to WP happens, it notifies me, I notice thirty nanoseconds later, and in that thirty nanoseconds some script bot somewhere 0wns the blog. I could, in theory, fix this by spending much more time setting up something to auto-update WP, but in practice that’s hard: what do I do, svn update every fifteen seconds in a cron job? Nightmare.

So, what am I getting from Wordpress that I’ll lose if I go static?

My list of plugins contains a bunch of stuff which is only relevant because it is Wordpress and thus dynamic: caching, spam, that sort of thing. Static sites don’t need any of that. I like Jetpack a lot; it gives me a nice mobile theme and stats, and I’ll lose that (as well as comment moderation from a mobile app, which I don’t care about if I don’t have comments; see below). I have a bunch of nice little plugins which throw in features that I like, such as adding footnotes, which I’ll lose. Counterbalance that with how it’s basically impossible to put a <script> element in a Wordpress post, which is incredibly annoying. I won’t be able to create posts if I’m away from my computer (without doing a bunch of setup), but in practice I don’t do that, it turns out. And finally, comments.

Hm, comments. On the one hand, I like my commenters; there have been interesting discussions there, and normally informative. On the other hand, there’s a lot less commenting on blogs going on these days; you get much more real-time discussion on Twitter or G+ about a post than you do on the post itself. That’s a bit worrying — you’re losing the in-one-place nature of the conversation, and their bit of the conversation might vanish from the public discourse if G+ shuts down, which is why I don’t like Disqus — but that’s happening anyway and can’t be stopped. So maybe I can live with it.

Also, themes, but Pelican has a bunch, including rather excellently the same theme I was using on Wordpress! So it looks like nothing changed! Rawk.

So, let’s see how it goes. Possibly I’ll find something else critical that I’m missing and migrate back… and I do still have to write a footnotes plugin… but so far we’re feeling good about it.

Categories: LUG Community Blogs

Jono Bacon: Forward Momentum in the Ubuntu App Developer Platform

Thu, 13/02/2014 - 07:14

Last week I was in Orlando sprinting with my team as well as the platform, SDK, and security teams and some desktop and design folks. As usual after a sprint, I have been slammed catching up with email, but I wanted to provide a summary of some work going that you can expect to see soon in the Ubuntu app developer platform.

HTML5

In the last few months we have been working to refine our HTML5 support in the Ubuntu SDK.

Today we have full HTML5 support in the SDK but we are working to make HTML5 apps more integrated than ever. This work will land in the next week and will include the following improvements:

  • Consolidating everything into a single template and container. This means that when you create a new app in the SDK you have a single template to get started with that runs in a single container.
  • Updating our Cordova support to access all the devices and sensors on the device (e.g. camera, accelerometer).
  • Adding full Ubuntu platform API access via Javascript. With this you will be able to access Online Accounts, the Content Hub, the App Lifecycle support etc and more.
  • Adding a series of refinements to the look and feel of the HTML5 Ubuntu components. Before the components looked a little different to the QML ones and we are closing the loop.
  • Full API documentation for the Cordova and Platform APIs as well as a number of tutorials for getting started with HTML5.
  • On a side note, there has been some tremendous speed improvements in Oxide which will benefit all HTML5 apps. Thanks to Chris Coulson for his efforts here.

With these refinements you will be able use the Ubuntu SDK to create a new HTML5 app from a single template, follow a tutorial to make a truly native look and feel HTML5 app utilizing the Cordova and Platform APIs, then click one button to generate a click package and fill in a simple form and get your app in the store.

I want to offer many thanks to David Barth’s team for being so responsive when I asked them to refine our HTML5 support ready for MWC. They have worked tirelessly, and thanks also to Daniel Holbach for coordinating the many moving pieces here.

SDK

Our SDK is the jewel in the crown of our app development story. Our goal is that the SDK gets you on your Ubuntu app development adventure and provides all the tools you need to be creative and productive.

Fortunately there are a number of improvements coming here too. This includes:

  • We will be including a full emulator. This makes it easy for those of you without a device to test that your app will work well within the context of Ubuntu for smartphones or tablets. This is just a click away in the SDK.
  • We are also making a series of user interface refinements to simplify how the SDK works overall. This will include uncluttering some parts of the UI as well as tidying up some of the Ubuntu-specific pieces.
  • Device support has been enhanced. This makes it easier than ever to run your app on your Ubuntu phone or tablet with just a click.
  • We have looked at some of the common issues people have experienced when publishing their apps to the store and included automatic checks in the SDK to notify the developer before they submit them to the store. This will speed up the submissions process.
  • Support for “fat” packages is being added. This means you can ship cross-compiled pieces with your app (e.g. a C++ plugin).
  • Last but certainly not least, we are going to be adding preliminary support for Go and QML to the Ubuntu SDK in the next month. We want our app developers to be able to harness Go and with the excellent Go/QML work Gustavo has done, we will be landing this soon.

As ever, you can download the latest Ubuntu SDK by following the instructions on developer.ubuntu.com. Thanks to Zoltan and his team for his efforts

developer.ubuntu.com

An awesome SDK and a fantastic platform is only as good as the people who know how to use it. With this in mind we are continuing to expand and improve developer.ubuntu.com to be a world-class developer portal.

With this we have many pieces coming:

  • A refinement of the navigational structure of the site to make it easier to get around for new users.
  • Our refined HTML5 support will also get full Cordova and Platform API documentation on the site. Michael Hall did a tremendous job integrating Ubuntu and upstream API docs in the same site with a single search engine.
  • A library of primers that explain how key parts of our platform work (e.g. Online Accounts, Content Hub, App Lifecycle, App Insulation etc). This will help developers understand how to utilize those parts of the platform.
  • Refining our overview pages to explain how the platform works, what is in the SDK etc.
  • A refreshed set of cookbook questions, all sourced from our standard support resource, Ask Ubuntu.
  • We will also be announcing Ubuntu Pioneers soon. I don’t want to spoil the surprise, so more on this later.

Thanks to David, Michael, and Kyle on my team for all of their wonderful efforts here.

Desktop Integration

In the Ubuntu 14.04 cycle we are also making some enhancements to how Ubuntu SDK apps can run on the desktop.

As many of you will know we are planning on shipping a preview session of Unity8 running on Mir. This means that you can open Unity8 from the normal Ubuntu login screen so you can play with it and test it. This will not look like the desktop; that work is on-going to converge Unity 8 into the desktop form-factor and will come later. It will however provide a base in which developers can try the new codebase and hack on it to converge it to the desktop more quickly. We are refreshing our Unity8 developer docs to make this on-ramp easier.

We are also going to make some changes to make running Ubuntu SDK apps on Unity 7 more comfortable. This will include things such as displaying scrollbars, right-click menus etc. More on this will be confirmed as we get closer to release.

All in all, lots of exciting work going on. We are at the beginning of a new revolution in Ubuntu where beautifully designed, integrated, and powerful apps can drive a new generation of Ubuntu, all build on the principles of Open Source, collaboration, and community.

Categories: LUG Community Blogs

Dick Turpin: White space.

Wed, 12/02/2014 - 17:00
Customer: "The download URL generated by our website is not working."
Me: "TBH it has never worked."
Customer: "Yes it has!"
Me: "OK, see the plus signs in this+is+my+file.pdf that is not a legal character in a URL it should be %20"
Customer: "OK?"
Me: "I've turned on directory listing on on your website. Can you see all the documents now?"
Customer: "Oh yeah."
Me: "So you would have got myfile.pdf but not my file.pdf you would have got anotherfile.pdf but not yet another file.pdf"
Customer: "Oh, that explains why sometimes it worked and sometimes it didn't."

#facepalm
Categories: LUG Community Blogs

Dick Turpin: Not new?

Tue, 11/02/2014 - 17:08
So I was offering some generation 1 iPads for sale.

Prospect: "Ello mate, you've got some iPad's for sale, what does iPad 1 mean?"
Me: "It means they are first generation, the first iPad's they made."
Prospect: "Oh, so they're old then?
Me: "Well as I say they are the first ones released."
Prospect: "They're not the latest ones then?"
Me: "Not for £150 they're not!"

If only I had more hair to pull out.
Categories: LUG Community Blogs

Dick Turpin: Anything cheaper?

Tue, 11/02/2014 - 14:25
I'm sorry but you've really fecked me off! You time waster.

*Day 1*  "Thanks for the email on the refurbed base unit for £200 leave it with me."

*Day 2* "These refubed ipads for £150 do you have them? Oh, you order them in. Let me think about it."

*Day 3* "How much for a Samsung 10.1?"

Why do I say time waster? £200 is clearly too much for him, £150 was probably too much for him and now he's taking the piss by asking about something that is clearly double the price of second hand equipment.
Categories: LUG Community Blogs

Aq: Building a (PhoneGap) iOS app from Ubuntu entirely without Mac OS X

Tue, 11/02/2014 - 12:11

The Major: But, Fawlty, how did the starling get in the bar?
Basil: No, no, no. You were in the bar.
The Major: I was in the bar? Yes! Yes, I was!
Basil: And the starling was in the garden, and the rat was nowhere at all.

It is possible, with the aid of PhoneGap and Adobe’s PhoneGap Build service, to make an app for iOS, get it signed, and deploy it to an iPhone without having a Mac involved at all. Up until yesterday I would have sworn up and down that this was not possible, and I told a bunch of people that; making a PhoneGap app isn’t a problem from Ubuntu, but getting the necessary keys to get it signed is. However, thanks to a writeup from BreezeJS I now know that this is not the truth. It’s possible to make an iOS app in Ubuntu and get it signed, I’ve done it, and now I’ll walk through that process. This description owes a lot to the Breeze writeup without which I’d be nowhere, but exactly what the screens look like has changed a little. Links and instructions correct as of 11th February 2014.

Make a PhoneGap app

No instructions for this bit. Read the PhoneGap documentation. Once you’ve built that, you’ll have a www/ folder with the HTML, CSS, and JavaScript of your app in it.

Get a PhoneGap Build account and add your app

Also no instructions for this bit, other than to say this: the app bundle that you upload or pull from Github does not have to contain just the contents of your www folder. I pointed PGB at a Github repos which had the www/ folder at top level and other things in the repos too, and it worked fine. Remember that your config.xml file which configures PGB needs to be in the same folder as index.html.

Get an iOS developer account

Sign up for the Apple Developer Programme. To build iOS apps this will cost you sixty quid. Once you get an email saying that you have access to iTunes Connect, you’ve been approved. Do what it tells you and fill out a bunch of forms about your bank account and address and so on.

Set up certificates

Go to the Apple Developer Member Centre and choose Certificates, Identifiers & Profiles, then under iOS Apps choose Certificates. You’ll probably see a screen saying “What type of certificate do you need?”; if you don’t, there’s a [+] button to add a new certificate.

The first thing you need is the Apple intermediate signing certificate, available from this screen. At the bottom it says Worldwide Developer Relations Certificate Authority; download this AppleWWDRCA.cer file and keep it around somewhere.

Development p12 key

Now, set yourself up a development p12 key as follows.

# Generate your private key openssl genrsa -out private.key 2048 # Generate a certificate signing request. Use your own email address! openssl req -new -key private.key -out CertificateSigningRequest.certSigningRequest -subj '/emailAddress=joe@example.com, CN=Joe Example, C=UK'

On the “What type of certificate do you need?” Apple page, say “iOS App Development”. Go through its little wizard and upload your CertificateSigningRequest.certSigningRequest file. It will give you back a ios_development.cer file.

# Convert ios_development.cer to ios_development.pem openssl x509 -in ios_development.cer -inform DER -out ios_development.pem -outform PEM # Convert ios_development.pem to ios_development.p12. Enter a password and remember it for later. openssl pkcs12 -export -inkey private.key -in ios_development.pem -out ios_development.p12 Distribution p12 key

Now, generate a distribution p12 key in the same way:

# Generate a certificate signing request. Use your own email address! openssl req -new -key private.key -out DistCertificateSigningRequest.certSigningRequest -subj '/emailAddress=joe@example.com, CN=Joe Example, C=UK'

On the “What type of certificate do you need?” Apple page, say “iOS App Development”. Go through its little wizard and upload your DistCertificateSigningRequest.certSigningRequest file. It will give you back a ios_distribution.cer file.

# Convert ios_distribution.cer to ios_distribution.pem openssl x509 -in ios_distribution.cer -inform DER -out ios_distribution.pem -outform PEM # Convert ios_distribution.pem to ios_distribution.p12. Enter a password and remember it for later. openssl pkcs12 -export -inkey private.key -in ios_distribution.pem -out ios_distribution.p12 Add your phone as a Device

On the Apple page, on the left, it has a “Devices” section. Add a new device. For this, you’ll need the UDID of your iPhone. Do not use one of the apps on the App Store to get this: Apple changed things in iOS 7 so that apps can’t read your real UDID: they get a vendor-specific fake one. If you’ve got what you think is the UDID of your phone and it begins in FFFF then it’s not your actual UDID; it’s a vendor-specific fake UDID, and that will not work here. Instead, plug your iPhone into your Ubuntu machine with USB, and then run

$ lsusb -v 2>/dev/null | grep -e "Apple Inc" -A 2
iManufacturer 1 Apple Inc.
iProduct 2 iPhone
iSerial 3 472585[censored]

The iSerial is your actual UDID. Use it to add your phone as a new Device on the Apple developer portal.

Add your app

Also on the left of the Apple page, there’s Identifiers > App IDs. Add a new App ID for the app you’re planning to build.

Get a Provisioning Profile

You now need a Provisioning Profile. This is a certificate which is specific to a (p12 key, app, device(s)) combination; that is, you need a new one of these for each combination of app-to-install and device-to-install-it-on. You can add more than one device to a provisioning certificate, though.

Under Provisioning Profiles on the left on the Apple page, add a new profile for your chosen combination of (key, app, device). It will give you a something.mobileprovision file to download.

Add keys to PhoneGap Build

In the PhoneGap Build Edit Account page, go to Signing Keys and upload your p12 key and mobileprovision file. Unlock the key by entering the password you created for it. On your app’s PGB page you should now be able to select that key under iOS and build your app for iOS. Finally, point your selected device’s Safari browser at the download URL for your iOS app (https://build.phonegap.com/apps/PGB_APPID/download/ios) and you’ll be able to install it.

Done. An iOS app built with Ubuntu. Thank you to Apple for opening up the ability to administer this stuff through the web, PhoneGap for providing the Build service, and Breeze for working out how to tie it all together.

Categories: LUG Community Blogs

Aq: Building a (PhoneGap) iOS app from Ubuntu entirely without Mac OS X

Tue, 11/02/2014 - 12:11

The Major: But, Fawlty, how did the starling get in the bar?
Basil: No, no, no. You were in the bar.
The Major: I was in the bar? Yes! Yes, I was!
Basil: And the starling was in the garden, and the rat was nowhere at all.

It is possible, with the aid of PhoneGap and Adobe’s PhoneGap Build service, to make an app for iOS, get it signed, and deploy it to an iPhone without having a Mac involved at all. Up until yesterday I would have sworn up and down that this was not possible, and I told a bunch of people that; making a PhoneGap app isn’t a problem from Ubuntu, but getting the necessary keys to get it signed is. However, thanks to a writeup from BreezeJS I now know that this is not the truth. It’s possible to make an iOS app in Ubuntu and get it signed, I’ve done it, and now I’ll walk through that process. This description owes a lot to the Breeze writeup without which I’d be nowhere, but exactly what the screens look like has changed a little. Links and instructions correct as of 11th February 2014.

Make a PhoneGap app

No instructions for this bit. Read the PhoneGap documentation. Once you’ve built that, you’ll have a www/ folder with the HTML, CSS, and JavaScript of your app in it.

Get a PhoneGap Build account and add your app

Also no instructions for this bit, other than to say this: the app bundle that you upload or pull from Github does not have to contain just the contents of your www folder. I pointed PGB at a Github repos which had the www/ folder at top level and other things in the repos too, and it worked fine. Remember that your config.xml file which configures PGB needs to be in the same folder as index.html.

Get an iOS developer account

Sign up for the Apple Developer Programme. To build iOS apps this will cost you sixty quid. Once you get an email saying that you have access to iTunes Connect, you’ve been approved. Do what it tells you and fill out a bunch of forms about your bank account and address and so on.

Set up certificates

Go to the Apple Developer Member Centre and choose Certificates, Identifiers & Profiles, then under iOS Apps choose Certificates. You’ll probably see a screen saying “What type of certificate do you need?”; if you don’t, there’s a [+] button to add a new certificate.

The first thing you need is the Apple intermediate signing certificate, available from this screen. At the bottom it says Worldwide Developer Relations Certificate Authority; download this AppleWWDRCA.cer file and keep it around somewhere.

Development p12 key

Now, set yourself up a development p12 key as follows.

# Generate your private key openssl genrsa -out private.key 2048 # Generate a certificate signing request. Use your own email address! openssl req -new -key private.key -out CertificateSigningRequest.certSigningRequest -subj '/emailAddress=joe@example.com, CN=Joe Example, C=UK'

On the “What type of certificate do you need?” Apple page, say “iOS App Development”. Go through its little wizard and upload your CertificateSigningRequest.certSigningRequest file. It will give you back a ios_development.cer file.

# Convert ios_development.cer to ios_development.pem openssl x509 -in ios_development.cer -inform DER -out ios_development.pem -outform PEM # Convert ios_development.pem to ios_development.p12. Enter a password and remember it for later. openssl pkcs12 -export -inkey private.key -in ios_development.pem -out ios_development.p12 Distribution p12 key

Now, generate a distribution p12 key in the same way:

# Generate a certificate signing request. Use your own email address! openssl req -new -key private.key -out DistCertificateSigningRequest.certSigningRequest -subj '/emailAddress=joe@example.com, CN=Joe Example, C=UK'

On the “What type of certificate do you need?” Apple page, say “iOS App Development”. Go through its little wizard and upload your DistCertificateSigningRequest.certSigningRequest file. It will give you back a ios_distribution.cer file.

# Convert ios_distribution.cer to ios_distribution.pem openssl x509 -in ios_distribution.cer -inform DER -out ios_distribution.pem -outform PEM # Convert ios_distribution.pem to ios_distribution.p12. Enter a password and remember it for later. openssl pkcs12 -export -inkey private.key -in ios_distribution.pem -out ios_distribution.p12 Add your phone as a Device

On the Apple page, on the left, it has a “Devices” section. Add a new device. For this, you’ll need the UDID of your iPhone. Do not use one of the apps on the App Store to get this: Apple changed things in iOS 7 so that apps can’t read your real UDID: they get a vendor-specific fake one. If you’ve got what you think is the UDID of your phone and it begins in FFFF then it’s not your actual UDID; it’s a vendor-specific fake UDID, and that will not work here. Instead, plug your iPhone into your Ubuntu machine with USB, and then run

$ lsusb -v 2>/dev/null | grep -e "Apple Inc" -A 2 iManufacturer 1 Apple Inc. iProduct 2 iPhone iSerial 3 472585[censored]

The iSerial is your actual UDID. Use it to add your phone as a new Device on the Apple developer portal.

Add your app

Also on the left of the Apple page, there’s Identifiers > App IDs. Add a new App ID for the app you’re planning to build.

Get a Provisioning Profile

You now need a Provisioning Profile. This is a certificate which is specific to a (p12 key, app, device(s)) combination; that is, you need a new one of these for each combination of app-to-install and device-to-install-it-on. You can add more than one device to a provisioning certificate, though.

Under Provisioning Profiles on the left on the Apple page, add a new profile for your chosen combination of (key, app, device). It will give you a something.mobileprovision file to download.

Add keys to PhoneGap Build

In the PhoneGap Build Edit Account page, go to Signing Keys and upload your p12 key and mobileprovision file. Unlock the key by entering the password you created for it. On your app’s PGB page you should now be able to select that key under iOS and build your app for iOS. Finally, point your selected device’s Safari browser at the download URL for your iOS app (https://build.phonegap.com/apps/PGB_APPID/download/ios) and you’ll be able to install it.

Done. An iOS app built with Ubuntu. Thank you to Apple for opening up the ability to administer this stuff through the web, PhoneGap for providing the Build service, and Breeze for working out how to tie it all together.

Categories: LUG Community Blogs