“No, unfortunately it’s not an April Fools joke.”
Said Jane Silber from Canonical.
Sad but true. Canonical is shutting down Ubuntu One file services.
“Today we are announcing plans to shut down the Ubuntu One file services. This is a tough decision, particularly when our users rely so heavily on the functionality that Ubuntu One provides. However, like any company, we want to focus our efforts on our most important strategic initiatives and ensure we are not spread too thin.”
“As of today, it will no longer be possible to purchase storage or music from the Ubuntu One store. The Ubuntu One file services will not be included in the upcoming Ubuntu 14.04 LTS release, and the Ubuntu One apps in older versions of Ubuntu and in the Ubuntu, Google, and Apple stores will be updated appropriately. The current services will be unavailable from 1 June 2014; user content will remain available for download until 31 July, at which time it will be deleted.”
This decision, as per Canonical, will not affect:
“The shutdown will not affect the Ubuntu One single sign on service, the Ubuntu One payment service, or the backend U1DB database service.”
For Full Details, please refer to this post.
At the last Ubuntu Developer Summit we discussed the idea of making our regular online summit serve more than just developers. We are interested in showcasing not just the developer-orientated discussion sessions that we currently have, but also including content such as presentations, demos, tutorials, and other topics.
I just wanted to give everyone a heads up that the first Ubuntu Online Summit will happen from 10th – 12th June 2014. The website is not yet updated (we are going to keep everything on summit.ubuntu.com and uds.ubuntu.com can point there, and Michael is making the changes to bring over the static content).
We are really keen to get ideas for how the event can run so I am scheduling a hangout on Thurs 10th April at 5pm UTC on Ubuntu On Air where I would welcome ideas and input. I hope to see you there!
Nothing new to report this week
Release Metrics and Incoming Bugs
Release metrics and incoming bug data can be reviewed at the following link:
Milestone Targeted Work Items
4 work items
2 work items
1 work item
1 work item
2 work items
3 work items
Status: Trusty Development Kernel
The 3.13.0-21.43 Trusty kernel has been uploaded to the archive. With
kernel freeze about to go into effect this Thurs Apr 3, I do not
anticipate another upload between now and then. After kernel freeze,
all patches are subject to our Ubuntu SRU policy and only critical bug
fixes will warrant an upload before release.
Important upcoming dates:
Thurs Apr 03 – Kernel Freeze (~2 days away)
Thurs Apr 17 – Ubuntu 14.04 Final Release (~2 weeks away)
The current CVE status can be reviewed at the following link:
Status: Stable, Security, and Bugfix Kernel Updates -
Status for the main kernels, until today (Mar. 25):
- Lucid – Prep week
- Precise – Prep week
- Quantal – Prep week
Saucy – Prep week
Current opened tracking bugs details:
For SRUs, SRU report is a good source of information:
cycle: 30-Mar through 26-Apr
28-Mar Last day for kernel commits for this cycle
30-Mar – 05-Apr Kernel prep week.
06-Apr – 12-Apr Bug verification & Regression testing.
17-Apr 14.04 Released
13-Apr – 26-Apr Regression testing & Release to -updates.
Open Discussion or Questions? Raise your hand to be recognized
No open discussions.
That's still an open question. There's a good chance that if we find an elegant solution, we'll get some new syntax.
In an effort to (re)start this conversation and get us thinking about the possibilities, I've drawn together some examples from various Lisps. At the end of the post, we'll review some related data structures in LFE... as a point of contrast and possible guidance.
Note that I've tried to keep the code grouped in larger gists, not split up with prose wedged between them. This should make it easier to compare and contrast whole examples at a glance.
Before we dive into the Lisps, let's take a look at maps in Erlang:
Common Lisp Hash Tables
Racket Hash Tables
Clojure Hash Maps
Shen Property Lists
OpenLisp Hash Tables
LFE Property Lists
I summarized some very basic usability and aesthetic thoughts on the LFE mail list, but I'll restate them here:
- Erlang syntax really is quite powerful; I continue to be impressed.
- Clojure was by far the most enjoyable to work with... however, doing something similar in LFE would require quite a bit of additions for language or macro infrastructure. My concern here is that we'd end up with a Clojure clone rather than something distinctly Erlang-Lispy.
- Racket had the fullest and most useful set of hash functions (and best docs).
- Chicken Scheme was probably second.
- Common Lisp was probably (I hate to say it) the most awkward of the bunch). I'm hoping we can avoid pretty much everything the way it was done there :-/
That being said, I don't think today is the day to propose unifying features for LFE/Erlang data types ;-) (To be honest, though, it's certainly in the back of my mind... this is probably also true for many folks on the mail list.)
Given my positive experience with maps (hash tables) in Racket, and Robert's initial proposed functions like map-new, map-set, I'd encourage us to look to Racket for some inspiration:
- "map" has a specific meaning in FPs (: lists map), and there's a little bit of cognitive dissonance for me when I look at map-*
- In my experience, applications generally don't have too many records; however, I've known apps with 100s and 1000s of instances of hash maps; as such, the idea of creating macros for each hash-map (e.g., my-map-get, my-map-set, ...) terrifies me a little. I don't believe this has been proposed, and I don't know enough about LFE's internals (much less, Erlang's) to be able to discuss this with any certainty.
- The thought did occur that we could put all the map functions in a module e.g., (: maps new ... ), etc. I haven't actually looked at the Erlang source and don't know how maps are implemented in R17 yet (nor how that functionality is presented to the developer). Obviously, once I have, this point will be more clear for me.
Looking at this Erlang syntax:
My fingers want to do something like this in LFE:
That feels pretty natural, from the LFE perspective. However, it looks like it might require hacking on the tuple-parsing logic (or splitting that into two code paths: one for regular tuple-parsing, and the other for maps...?).
The above syntax also lends itself nicely to these:
The question that arises for me is "how would we do this when calling functions?" Perhaps one of these:
Then, for Joe's other example:
We'd have this for LFE:
Before we pattern match on this, let's look at Erlang pattern matching for tuples:
Compare this with pattern matching elements of a tuple in LFE:
With that in our minds, we turn to Joe's matching example against a specific map element:
And we could do the same in LFE like this:
I'm really uncertain about add-pair and update-pair, both the need for them and the names. Interested to hear from others who know how map is implemented in Erlang and the best way to work with that in LFE...
This weekend (4-6 April) the Ubuntu community is celebrating another Ubuntu Global Jam! The goal, as always, is to get together as a team and make Ubuntu better, get people involved and have fun. In the past we all focused on packaging, fixing bugs, translations, documentation and testing. The most recent addition to the mix are App Dev School events.
The goal of App Dev Schools is to have a look at developing apps for Ubuntu together. We made this a lot easier by providing presentation material and virtualbox images and instructions for how to run an event. If you have a bit of programming experience, it should be easy for you to run the sessions with just a bit of preparation time.
Why is this exciting and probably a good idea to discuss in the team? Simple: it has never been easier to write apps for Ubuntu and publish them. You can choose between Qt/QML apps and HTML5 apps – both are easy to put together and packaging/publishing an app is a matter of a couple of a clicks. Awesome!
Check out the Ubuntu Global Jam page and find out how have your own local event. If it’s just you and a couple of friends meeting up – don’t worry – it’s still a jam!
Have a great weekend everyone!
This post is part of the series ‘Making ubuntu.com responsive‘.
At this point in time, once the pilot projects were either completed or underway, we had already:
- Created an initial responsive prototype of our main site, based on some common-sense rules
- Started our first mobile-first and responsive project from scratch
- Created and launched a fully responsive site
We had a better understanding of what was involved in working on this type of project, with different constraints and work flows. With lots of ideas and questions floating in our minds, we decided that the best next step was for designers and front-end developers to spend two or three days right after the release of the new canonical.com website to discuss and capture the findings.
It’s important to take time to take in the pros and cons of certain approaches we try as a team, so that we can try to avoid repeating past mistakes and keep doing more of the things that make projects run smoothly and produce great results.
Developers sprinting and a wall of sticky notesThings we learned Make sure you have a solid grid
Our new responsive grid seemed to adapt well from large to small screens (I will be publishing a post on this later in the series, so stay tuned!) and this was mostly because when we initially created the CSS and HTML we opted for using percentage and relative units rather than absolute units (like pixels).Use Modernizr for feature detection
The introduction of Modernizr to our developer tools proved essential to easily detect features across browsers, such as SVG support, and provide adequate fallbacks and is something we’ll keep using in the future.SVG icons and pictograms
We started the move from bitmap-based images to SVG for things like pictograms and UI elements. This was easy from a design perspective, as all of our icons and pictograms are already created as SVGs (as well as other formats). There were some hiccups when we tested the PNG fallback solution in some operating systems and browsers, like Opera Mini. But more on this in an upcoming post dedicated to images!Things we had to work on Defining visual layout across screen sizes
We were used to creating large, desktop-focused visuals and we had the tools to do so quickly — our style guide. Because the deadlines were looming, we decided we wouldn’t create lots of different mockups for each page in canonical.com and instead create flat mockups for large screen and work alongside the developers on how that would scale and flow in small and medium sized screens.
The wireframes were kept as linear as possible — they were more of a content and hierarchy overview to guide the visual designers — , and the content was produced so that it wasn’t too long for small screens.
A wireframe created for canonical.com
The problem with this approach was that, even though we all agreed with the general ways in which the content and visual elements would reflow from small to large screens, by creating comps for the large screen problems invariably arose and reflows that sounded great in our own minds didn’t really work as easily or smoothly as we thought.
It’s important that you define how you’re going to tackle this issue: in this case, canonical.com was designed from scratch, so it was more difficult to visualise how a large design could adapt to a small screen across the team. In the case of ubuntu.com, though, the tight scope means we’re adapting existing designs, so it makes sense to work almost exclusively in the browser and test it at the same time.
Initial small screen canonical.com prototypes: ‘needs work’
In the future, when we need to produce mockups we will make sure they are created initially for smaller screens and then for larger screens. When mockups aren’t necessary — for example, if we’re creating pages based on existing patterns — we are already building directly in code, for small screens first, and enhancements are added as the available screen space gets bigger.Animations
Even though the addition of CSS animations to our repertoire made for more interesting pages, making sure that they are designed to work well and look good across different screen sizes proved harder than expected.
In the future, we’ll need to carefully think about how having (or not having) an animation impacts small screens, how the animation should work from small to large screens, and what the fallback(s) should be, instead of assuming that the developers can simply rescale them.The process going forward
As a final note, it’s important to mention that in a fast-paced project, where decisions need to be made quickly and several people are involved in the project, you should keep a register of those decisions in a central location, where everyone can access them. This could be anything from a solution for a bug to even the decision of not fixing an issue, along with the reasoning behind it.
The plainbox-0.6 milestone is full of content but one thing I want to point out is the CEP-4 blueprint. In short, you will be able to run PlainBox on a desktop or laptop computer but execute tests on a server or tablet device you can connect to over ssh or adb.
I'd like to solicit comments and feedback on the proposed design. Development has started but so far just in R&D mode, to check the limitations of adb and see how the proposed design really fits into the current architecture.
So, if you are interested in device or server testing, have a look at the specification (linked from the blueprint) and discuss this in firstname.lastname@example.org. Please help us help you better.
Tomorrow evening we’ll be bringing a brand new season of the Ubuntu Podcast to your ears. After an extended winter break, we’re ready to dust off our microphones and mixers, fire up our laptops and dive head first into the new season. We’ll be streaming the show live at 2030 BST so you can listen and even participate through the IRC channel. Visit the live page on the website to find out more.
As we did last year, we will be releasing new episodes for download every week. If you can’t wait for that, listen live on alternate Wednesday evenings for about an hour. You can check the recording dates on our website or add them to your Google calendar.
The show will be much as you know and hopefully love it: A mix of discussion, interviews, news, silliness and cake. It would be great if you could join us at 2030 BST tomorrow (Wednesday 2nd April) for the first live show of the season!Pin It
Every now and then I do make ice cream from scratch, and I find it's always better than that bought in the store, because you know what goes into it –seriously, what the hell is carrageenan and why is it in my ice cream?
- 1 ostrich egg
- 1 quart of milk of magnesia
- 1 quart of cream of wheat
- 1 cup honey badger honey
- 1 vanilla root, peeled and minced
- Since the ostrich egg is known to be tough to crack, use a hack saw to cut a small section of the top off.
- Drain the egg and whisk in the cream and milk.
- Heat that mixture in a saucepan, to near boiling.
- Add the minced vanilla, reduce heat and simmer for 8-10 minutes.
- Remove from heat and refrigerate until very cold ~3 days.
- Next, wait until winter then bring your ice cream base outside and throw it into the snow.
- Using a shovel mix it around until the snow has sufficiently crystallized the ice cream.
- Scoop the resulting ice cream into a bucket and put it in your freezer, where it'll last for a month or so.
- Now take note of the date of publication above and simply go buy a fucking tub of ice cream. :)
Boeuf Bourguignon (essentially, beef stewed in red wine), like most braising dishes is really quite easy and, in my opinion, borderline idiotproof –provided that idiot knows how to use a knife. Not to mention stewing beef in wine is one of the more delicious things you can do with it.
This recipe of mine is for a basic boeuf bourguignon, which you can get more adventurous with if you like.
- a heavy skillet
- a large roasting pan with lid
- a corkscrew & wine glass –cooking with wine = drinking with wine Ingredients
- ~2 kg chuck beef
- ~2 cups flour
- ~4 tablespoons butter
- 3-4 large carrots
- 3-4 large potatoes
- 2 large onions, chopped
- 4 cloves garlic, chopped
- 1 bouquet garni* –I used a sprig of rosemary & parsley plus 2 bay leaves
- 1 bottle red wine (the quality of which doesn't really matter when you cook it)
- water or beef stock
- salt (kosher) & pepper
*A bouquet garni is simply a bunch of tided-together herbs. For this recipe, herbs that I suggest trying (and are most typical) are: rosemary, thyme, sage, parsley, bayleaf.
One thing about stew, is that it's forgiving to modification and its ingredients can be easily added to or changed.
One can vary the root vegetables used, such as turnip/rutabaga or parsnip, or use peeled baby potatoes instead of pieces of larger ones. The addition of mushrooms (which would go in more towards the end of cooking as they're more delicate) wouldn't go astray, either.
Also you can substitute out sauteing chopped garlic and onion and simply stew whole garlic cloves and pearl onions in the oven with everything else.
- Peel and cut into large pieces both the carrots and potatoes, when finished there should be around an equal amount (around a 4 cups) of each. Immerse in cold water and set aside.
- With a (sharp) knife cut the beef into 1-2 inch cubes and season generously with salt & pepper.
- Dredge all the cubes in flour, shaking to remove excess. Set aside.
- Preheat a heavy skillet over medium heat. Add butter and melt until it begins to sizzle.
- Place some of the meat cubes in the hot butter, try not to overcrowd them.
- In batches, brown the cubes on all sides; place each batch in your roasting pan when finished.
- After the final browning session, add immediately the onion and garlic, and a couple tablespoons water to begin the deglazing process.
- Saute while scraping all those nicely browned bits of meat off the bottom of the pan.
- (At this point you should have opened the wine and have had a glass.)
- When the onions and garlic are semi-translucent. Pour about half of the bottle of wine into the pan, add your herbs and allow to come up to a simmer.
- Pour the contents of your skillet into the roasting pan (atop the meat) and add your chopped potatoes and carrots.
- If necessary, add some beef stock, water or more wine (if there's any left) until the level of liquid is just below all the meat and veg.
- Generously season the whole pan with salt and plenty of pepper.
- Cover and place in a 350 degree Fahrenheit oven for ~90 minutes.
- After which, the onions and garlic should have practically dissolved and you ought be able to pass a fork easily through a piece of potato.
- Before serving, taste and adjust the seasoning (with salt & pepper) to your liking.
- Serve and garnish with a little fresh parsley, for some color.
- Enjoy, with a slice of fresh bread if you like.
Goodbye March, hello April. This first three months of the year went pretty quickly, and that also means that my ‘vacation’ is over. No more going to bed at 4:30am and waking up at 11am, because now I need to go to university.
Yep, for those who didn’t know yet, I am starting university tomorrow, on April the 2nd. I was actually supposed to start classes today, but unfortunately my schedule doesn’t have any classes on Tuesday, but classes on Saturdays. That means I will be starting my A/V Production major in University of Lima tomorrow. Usually, majors in Peru take 5 years, so this is a long adventure I have ahead.
I am expecting to have some fun and hard times, homework and projects may take time from me, but still, I will not be leaving the Ubuntu community for any reason. Even though I may take some time to adapt to my new (and awful) schedule, I will make sure to try and keep up with the community as much as I can. Of course, this means I will not be available 20+ hours a day, like I was for the last couple months.
Still, if you want to contact me, make sure to email me or ping me on IRC, even if I’m deatached from my ZNC it has got push notifications on – I will be totally contactable.
I can’t wait to start this new adventure and see what’s ahead on the road.