This is part of the Two Weeks of Code.
Cardfight. Now this one I’m actually quite proud of.
You can play at http://kryogenix.org/code/browser/cardfight/. It never got published because it’s not quite done; it’s a little hard to understand what you need to do, and I haven’t done the hard maths yards to understand whether there’s a winning strategy for player 1 or something. But this is one of the first things I ever built that actually felt like a complete app: proper use of audio, a full on game rather than just a thing which tested the basic concept. I still might turn this into a real thing that gets released, at some point, once it’s got a few more graphical touches around things like the victory and defeat placeholder screens.
Also, it can’t decide what its name is: cardfight is the codename for it (‘cos you fight by using cards), but the game itself thinks it is called “semichins”, which if I remember rightly was a clever punny anagram but I can’t remember what it was a clever punny anagram for, and besides I don’t like either of those names. Better suggestions are invited.
On GitHub at: https://github.com/stuartlangridge/cardfight.
Over the last few years I’ve written loads of little apps, bits of code, things that never got released because I never got the time to finish them or because I wasn’t totally happy with them or just because I forgot. A while back as part of the Pastry Box Project, I said
If you’re anything like me, you’ve got folders full of little experiments that you never got around to finishing or that didn’t pan out. Put ’em up somewhere. These things are useful.
and I should really follow my own advice. So, I’ve decided to publish some of these things, as part of a thing I’m calling “#twoweeksofcode”. One new thing per day. Some are unfinished; some are quite raw; some demonstrate interesting principles but never made it into the light of day. All might be useful to others. So for the next two weeks I’ll talk briefly, once per day, about an app or bit of code that I’ve built and published the source for so that people can build on it or be inspired by it or just have some fun with it.
So, apparently the NSA and GCHQ are able to break some encryption protocols/formats, and have widespread access to Skype / Hotmail / Outlook / Gmail / Facebook etc.
I’m not sure why this is thought to be a surprise. It’s their job to do this, right?
While I’m not convinced the widespread trawling of data has been done with appropriate safeguards in place (it doesn’t sound like it has been) it isn’t that different to how it was an openly acknowledged secret that the state had automated monitoring of phone calls for certain keywords/phrases 10-15 years ago (nuke, bomb, anthrax etc) which no one particularly cared about then.
I’m skeptical that the revelations will have much of an effect on “professional” terrorists – who must have already been aware that anything transmitted electronically could not be guaranteed safe from eves-dropping. The main harm will surely be that the West can no longer claim the ‘moral high ground’ when it comes to surveillance / monitoring / hacking / infiltration – which it used to with states like China and North Korea.
Perhaps the revelations will lead to a wider uptake of open source software (which is presumably harder for a state to infiltrate/backdoor)? Certainly it should now be exceedingly hard for any state to justify using Microsoft Windows in any part of government where the information is classified/secret.
One day my six numbers will come up. When that happens, I’m going to open a bar in the centre of Birmingham. It’ll be called Turings. And it will not be like other places.
Firstly: no cash. On entry you swipe a card and get a sort of heavy metal token thing, which you give back on the way out. Secondly: no bar. It’s all table service.
Every table will be a big electronic screen. Sort of like a Microsoft Surface, a big iPad, that sort of thing. On the table your group of friends can do a whole bunch of things. The most obvious one is order drinks: you can flick through the list of drinks available, choose one, and “throw” it across the table to the person who’s paying for this round. They charge it to their token, which the table recognises is resting on the table (this is what the token is for), and a waiter brings your drinks on a tray.
Your table can choose their own music. Above each table is a directional speaker, so music chosen by your table is only audible to your table.
The table’s got a web browser in it, so anyone can pull up Wikipedia to settle arguments, send messages to Facebook or Twitter, play games across the table.
Every table has a bunch of USB sockets and leads for common phones.
I’d love to run this place, even despite the opinions of jwz and Yahtzee that running a bar is not as much fun as you think: really, I’d want to drink in it, and the manager runs it. All I need is six numbers. 1, 6, 7, 19, 24, 30. It’s not much to ask.
People are queueing up. To get into a library.
Not a One Direction concert. A library.
I love this city.
This is the Library of Birmingham, opened this week after six years of planning and construction. It’s the largest in Europe.
In front of the library is an open-air theatre at the bottom of a pit. Actors are declaiming below as if ’twere Shakespeare’s time, and crowds are gathered to watch. Couples stand hand-in-hand and marvel at the loveliness of it all.
Or maybe they’re just a bit hung over. (This is still Birmingham, after all.) They might be overawed by the neon lighting on the escalators. It looks like Minority Report. But for books.
People are walking around with mouths open taking pictures of it. In a library. The government are shutting down libraries when they can. We’re told that Google makes them obsolete. And people are queued up to get inside. Vive la difference, eh?
There’s a live choir on the top floor, which I assume won’t be here when it’s not opening week, but it does make me feel like William of Baskerville. Or Adso, anyway. There are computers all over the place, with open source OpenOffice and the Gimp on them (and MS Office and iTunes too). There’s a Contemplation Room, for what I know not (well, for contemplation obviously, but contemplation of what? The eternal oneness? What Billie-Joe Macallister threw off the Tallahatchee Bridge? Whatever miracle it was that got this place built?) And everywhere there are people looking at books, talking about books, picking up books, reading books.
Apparently Sarah Rowell, head of marketing for the Library, told the BBC “We want to get over the notion that libraries are quiet places where you’ll be shushed if you raise your voice … there’s room for activity, noise, joining-in and getting together with friends.” If you run into her at any point, buy her a drink or something. That’s how libraries should be. Reverent but not hands-off. Teach your kids to love books, not to treat them as untouchable museum objects or as irrelevances in the age of Facebook. I myself read mostly ebooks and listen to audiobooks, both of which the Library provides, and there’s the obvious question of why you need a big building to put books in when an iPhone app can do it instead. The Library of Birmingham is the answer to that question, and that Birmingham city council were prepared to build it is one of the reasons I really like it here.
Neil Gaiman told us that libraries are our friends. The late, great Borges thought that Paradise might be a kind of library, and he’d know. If the librarians of heaven want somewhere to model their place on, they could do a lot worse than the Library of Birmingham. Go visit. Today.
Ubuntu has a thing called the “Magic SysRq key“, provided by the Linux kernel, which allows you to restart your machine in a safe way if it gets seriously wedged. Useful when you need it. However, I’ve got a Lenovo U300s laptop, and it doesn’t have a SysRq key.
It does still work, though. To do a “magic sysrq thing”, you press SysRq and then a letter, or combination of letters: the reboot command is the letters REISUB (which is “busier” backwards). To do that on the U300s, the “SysRq key” is ctrl-alt-fn-prtsc. What this means is, to reboot, do this:
Bit of backstory, here. A while back, Tesco 1 opened a new store in Potton, the town where I grew up and my parents still live 2. As part of the agreement, they apparently said that people could park in the supermarket’s car park even if they weren’t actually shopping at Tesco, which is a bit of a boon for the already-overcrowded Market Square in the town 3. Now, whether this little agreement actually got written down anywhere seems rather unclear 4. Nonetheless, it seemed to be being adhered to until a few weeks ago, when mysterious signs appeared saying that you might get fined when parking there if you didn’t park in the correct bays, or if you weren’t shopping. Oops.
So my old man, town councillor and champion of the downtrodden that he is 5, went on the warpath. And today that’s apparently been reversed: you are now again free to park in Tesco’s car park even if you aren’t shopping there. Hooray. You should all get in your cars and drive there now, park in their car park, and then walk across the road to the Co-op and buy stuff from there instead. Buy a pint from Mick in the George and Dragon while you’re there and tell him I said hello.
Also, the local paper reported on it 6, and dad even got his picture on the front page. That’s four seconds of his fifteen gone. Fight the power! Nice one, dad.
On 1st July I sat the Advanced exam. Having passed, I am now fully licensed with the call sign M0RNW.
I believe that in the entire history of Ubuntu we are at the most exciting time we have ever experienced.
With Ubuntu we set out with a clear mission: to build an elegant, beautiful, Free Software platform that brings powerful, easily accessible, technology to all. We are gritted in our determination around this mission.
All the pieces are starting to come together. A powerful converged platform, a beautiful user experience, a new SDK and app upload process, powerful cloud orchestration technologies, and a growing eco-system of users, app developers, and devops.
Awesome technology is not enough though. Silicon Valley is littered with the corpses of many great technologies that didn’t catch on. The key to successful, living, breathing technology is adoption and passionate users and developers.Building Adoption
LoCo Teams are a critical piece of how we drive this adoption.
LoCo teams are our front-line troops out there living Ubuntu and sharing it with others. If we have successful LoCo teams we will have a successful Ubuntu.
In recent years we have faced some challenges with LoCo Teams though. Fewer people have been participating in teams, we have some rather bureaucratic processes in place for how and where people can form teams, and LoCo teams are not as optimized for success as they could be. Put simple, I feel our LoCo Team community could benefit from stronger and more visible leadership.
I want to change this. I want to re-energize our LoCo community to bring out the best in our wider community and to open doors to more and more people who can be touched by Ubuntu. I am not talking about just welcoming Linux fans to LoCo teams…but app developers, content creators, devops, partners, general users, and more.
The potential is tantalizing.
For us to achieve this though we need a crisp strategy.
At UDS the other day we had a session that I found personally rather frustrating. At every UDS we always have a session about LoCo Teams, and there are always lots of ideas around what LoCo teams should be doing and how we can support them. These ideas are usually expressed as “we should do XYZ” or “the problem with LoCo teams is XYZ and we need to fix that“. We always have lots of ideas but few people are willing to sign up to work items to deliver that work.
Ideas are easy to have, delivering real practical solutions that drive improvements is harder, and we need more of the latter. We need people who are willing to make change happen in a practical way.
There is too much opportunity with Ubuntu and bringing technology freedom to people to let our LoCo Teams wither on the vine.Help Us Lead
Recently the LoCo Council announced a re-election for seats on the next council. The LoCo Council is the most natural place for this leadership to occur, and I want to encourage those of you who are willing to commit the time and effort to bring change to LoCo Teams to apply to join.
I want to transition the mental model of how the LoCo Council works from merely joining meetings and reacting to agenda items and tending to the business of the week. I want to see the council bring leadership, challenge the norms, challenge our bottlenecks, and build a culture of innovation and change around our LoCo Teams.
Our community is laden with great people who can bring this kind of leadership, and I want to encourage you to join the council.
We need people who are willing to commit more than providing +1 and -1 votes on our LoCo Council meetings, but people who want to think about the next generation of LoCo Teams and what work needs to be completed to achieve that vision, and commit to driving it forward. I would ask that only those of you willing to (a) lead and (b) commit time to actively participate in the strategy the council focuses on should apply. If you can only commit to joining the LoCo Council meetings and not driving strategy and leadership forward, please don’t apply to join.
This is not to suggest our existing and previous LoCo Councils has and have not been doing great work; I am tremendously thankful for their remarkable contributions. I just think we need to amp up our game, in much of the same way we have been amping up the Ubuntu platform. Now is our opportunity and we need to grasp it with both hands.
This is a tremendous opportunity for great leaders to have a real world-changing impact on Ubuntu and Free Software in general.
If you are excited about the opportunity of re-energizing LoCo Teams, bringing leadership, and challenging the norm, I strongly encourage you to apply. Please share your ideas for leadership and change in your application.
I am doggedly committed to helping to make our LoCo Teams successful and I have some ideas around how we do this when the new council is formed. I am looking forward to working with our new generation of leaders to help our LoCo Teams to do incredible world-changing work with an incredible world-changing platform.
Arbitrary tweets made by TheGingerDog (i.e. David Goodwin) up to 29 August 2013
Mind > *boom*(2013/08/08)
Arbitrary tweets made by TheGingerDog (i.e. David Goodwin) up to July 5th 2013
Outside the window a machine scrapes the ground flat in preparation for the arrival of a crane. An engineer is marking the ground with laser-guided accuracy and tomorrow the timber frame structure will be lifted into place then bolted to the cross-hairs of yellow paint marked on the 12 cubes of concrete we’ve poured into the ground. 5 years on from the first decision to buy a plot of land and embark on a self-build project the house is now finally under way.
I’ve been charting the journey elsewhere on a tumblr page, sharing a mixture of links, quotes and sketches to convey some of the stages that the project has moved through, but it’s time I tried to summarise the decisions we’ve taken along the way and start to share more details.
The house is an experiment. An excuse to test out numerous materials and detailing ideas that I’ve been thinking about for some time. An experiment that I hope will result in an opportunity to take what I’ve learnt and repeat the most successful elements of it again for others, helping them to make better houses for less money. It’s also going to be my family’s home and if there’s a tension to this story, a latent risk growing in this narrative, it’s about whether some of those experiments will fail to deliver the home we decided to strive for 5 years ago. This seems wholly appropriate though as if there was ever a time to embrace some risk and uncertainty in one’s career as an architect, surely the self-build project is the time to do so. I’m going to share the project here and elsewhere using various tools, but first I’ll share some of the back story. Partly because it’ll be cathartic for me and partly because the full story infuses every part of the final building I’ll be constructing over the coming weeks.
The full story actually includes two houses. Before this house there was another house. An entirely different design that was forged during a time when both my family and the national economy were feeling a little braver and more care free. It was more ambitious in size, construction demands and most importantly funding expectations. We were committed to a self-build mortgage route and expecting to employ a main contractor to oversee it all. Whilst we worked out the funding route I spent months wallowing in the pleasure of being able to spend such a long period on early concepts, turning out alternatives week after week, folding and unfolding the volumes bound by the ground levels, neighbour’s house and laws of physics over and over again until I was sure I’d tried every permutation. There were pages full of diagrams in the sketchbook and seminal texts on the coffee table and it was a delight.
It was also tortuous. Endless variations on a theme with no external force able to come between the client and architect, the gap between them having closed entirely and the brief becoming as fluid as the pen strokes in every sketch.
Then comes the blessed relief of a constraint you can cling on to. Mortgage paperwork, APR calculations related to energy performance and a cost estimate. You buckle down and find a solution in 3 sides of A4 paper.
I worked hard to get a planning approval. I suspect the local authority had never seen a design and access statement like it. We progressed towards construction information. I argued with the mortgage lender about what it costs to make a Passivhaus building and they sent a valuer round to ask questions such as whether there would be lead flashing on the chimney. The form he was filling out looked 30 years old. Meanwhile, the engineer and I spent months trying to work out how to stop an externally insulated basement slipping down a hill. I included a shed on the sedum roof just because frankly, every sedum roof should have one.
I pushed on with lots of BIM and lay awake at night worrying about whether the chiaroscuro was sufficiently nuanced and if the sun on an autumn afternoon would crawl across the south facing concrete exactly as I hoped. Hashtag: cliché. All I had to do next was build it.
Then one winter evening we called a halt to it all. Life had changed and none of it made sense any longer. Sarah had been diagnosed with an illness that prevented her from continuing her career as a GP, our finances changed overnight and driving home from work listening to Radio 4 brought the sound of Cameron and Osborne driving our economy headlong over a cliff in the name of austerity. We woke up and told the kids the dream was over. The news brought unexpected responses from both of them. My 8 year old daughter confessed she preferred small cottages anyway, just as long as it included a decent chimney. My 10 year old son, pulling himself together and wiping the tears from his eyes, immediately grabbed a piece of paper and a pen and drew a picture. It showed the house broken down into smaller pieces, each believably within our reach a section at a time, yet ultimately combining to become something that might still result in the home we wanted. I’ve never been prouder. Finally I had a proper brief.
Irk The Purists:
Liberated from the shackles of complete freedom, it was easy to embrace the new constraints. Slice the budget in half, respond to an illness that caused vertigo and made stairs a bad idea, work out how to procure it yourself – this was the new brief.
Standing on the shoulders of giants, I channelled Charles Moore’s three orders and I called on Walter Segal and his legacy of timber frame construction principles and combined it with the products of a local manufacturer of pre-fab cassette systems that I’d got to know over the last few years.
Frames between optimum span centres, posts on cheap foundations, an order of machines to organise the services, single storey living in an off-site manufactured villa. The revised planning application became a timber ark that we’d use to ride out the emotional flood. I lost my nerve at the last moment. In the face of growing doubt and learning how to deal with our new family life, I lost faith in the diagram and simplified it into a single structure with a single construction strategy. It was a mistake and the planning department, to their credit, knew it.
I quote: “We were disappointed by the new design, it looked like the work of a different architect and we wondered what had happened. We really liked the last proposal.”
It was good to know they liked the previous design at least. Not enough street presence was the feedback, a single storey structure with such simple elevation treatment just couldn’t cut it amongst the rest of the street. Could I make some of it two storeys? I had to acknowledge they were right. It looked like the author had been feeling downtrodden and sorry for himself and turned out a building to match. Which of course, he had.
An opportunity presented itself. This request for the addition of a two storey structure meant I could test the timber frame against something else. Throughout this period I’d been exploring ways to improve the performance of the affordable housing we make at Axis Design, specifically I’d been researching Passivhaus methods and developing detailing using thin joint masonry and natural materials. Two buildings, two materials and the option for two building phases should the finances demand it. The final redesign then became a split between two uses – sleeping and living.
Two buildings connected by a service zone. An air-lock of carefully controlled mechanical and electrical inlets and outlets. The order of machines ultimately found its home nestled between the order of rooms and the order of dreams. I could connect up and commission the building on an independent trajectory to the other parts of the house, neatly allowing me to control the trades and procurement for this aspect as well as understand fully where the challenges lay in achieving the holy grail of energy efficient design: air-tight construction.
I resubmitted the planning application.
All I had to do now was build it.
A further year of discussions and sketches about timber construction, thermal bridges, vapour barriers, clay blocks and triple glazed windows has ended in a building that would at times make Walter Segal proud and at others have him rolling in his grave. Such multi-layered, competing constraints running through almost every aspect of the house makes this project much more than the formal gestures and diagrams that made up the early pages of my sketchbook. It’s a hard won series of compromises chiselled out of the coal face of contemporary housing in the 21st century and I’ve learnt to love it for exactly that.
Alongside the seminal texts I’ve often cited on tumblr and twitter over the years I would add another to compliment the deviations I’ve made that will irk the purists so. Jeremy Till’s wonderful book ‘Architecture Depends’ has become a reassuring companion these last few months. In it he encourages the embracing of contingent dependencies as a mindful architectural praxis over the search for an independent (mindless) architectural form:
“My hunch is that architecture is the contingent discipline par excellence, and if we can deal with rather than deny that contingency, architecture may be seen as an exemplary form of transformative practice and lessons as to how to cope with contingency may be learned from its practice. But architects will deserve this attention only if they give up their delusions of autonomy and engage with others in their messy complex lives.”
Over the coming months I’ll be sharing what I can about the messy complex project that we’ve embarked on. There’ll be text and pictures at all the usual outlets and hopefully a few more unusual ones too, such as Little Printer, where you can get an alternative version of the story in a format more suited to the papernet and thermal printing. I did mention this was en experiment didn’t I?
This article is part of a series of blog posts covering the many different areas of work going on in Ubuntu right now. See the introduction post here that links to all the articles.
Unity is the graphical environment that we ship in a default Ubuntu installation. Released for the first time about three years ago, Unity is focused on simplicity and consistency across multiple devices. In this article I am going to cover the history of Unity and how Unity 8 is driving a new era of code and design convergence in Ubuntu.
Although Unity is a single graphical experience, you can think of it in three broad buckets:
Back when the design team started working on Unity the goal was to solve a key set of problems in the user experience of Linux and build a simple and efficient user interface, but to also build a set of design patterns that could scale across multiple form-factors.
Design is a complex process, and a process inspired by ideas but defined by practical real-world testing. As the team developed ideas, tested them, and iterated on them, these ideas were boiled into a set of common design patterns that were not merely intended for a desktop…but that could be applied to other form-factors too. This was a challenging prospect: to a reasonable extent, building design around a specific form-factor is much easier than producing scalable designs across these different form factors, and the level of design work that went into Unity was and continues to be incredible.
It is important to remember that this design effort was not limited to the launcher, panel, indicators and other common visible pieces that we associate as the building blocks of Unity; it was also the gestures, login manager, toolkit components, dash components, and more. The goal has always been to have a consistent design story across everything we do: Unity, Juju, conference booths, websites, and more, and thus the Unity work needed to be able to exist within this wider design story.
As the designs formed for Unity the development team kicked into action.
Back in the early days we had two different code-bases for Unity; a 3D and 2D code-base. The simple reason for this is that some OEMs wanted to ship Unity on hardware without 3D acceleration, so we decided to have two different branches and share as much code as possible between these branches so we could serve all potential OEMs.
These branches were quite different though. Unity 3D was written with Compiz and a graphical toolkit we created called NUX, and Unity 2D was written in Qt/QML. As you can imagine, this resulted in some duplication of effort and some deltas between 3D and 2D. The teams worked their socks off, but these technical limitations were causing some headaches.
As the goals to spin up our full convergence story across TV, Mobile, Tablet, and Desktop became more important it was clear that we needed to make a decision about these two different code-bases. After an extensive amount of discussion it was decided to focus explicitly on Qt/QML as our primary code-base, a decision that also matched our decision to focus on Qt/QML as the core of our Ubuntu SDK.
This now brought technical consistency across our engineering teams: Qt/QML would form the bases for Unity, the Ubuntu SDK, new application development, our app developer community growth and more. I had been lobbying for a focus on Qt/QML for some years, so speaking personally I was delighted by this move.
A core benefit of Unity is the rich range of services that it provides. This includes services such as:
Another very significant service is The Dash. In previous versions of Unity the dash provided a place to search your local system and a limited set of online services. For Ubuntu 13.10 the dash has been extended to search 50+ services all from the home scope. The dash provides a consistent place to find and search for content, apps, information and more.
Again, it is important to remember that these services are not just useful for the desktop…they apply to all the different form-factors we are focusing on. This, tied together with our convergence-ready SDK means you can consume these services in your app and they run across all these different devices.Unity 8
Earlier I mentioned the decision to focus on Qt/QML as our core development focus, but that was not the only decision moving forward with Unity however. The goal was also to build true convergence into the core Unity code-base too. Our goal was to have a single Unity code-base and when you run it on a Desktop you get one experience, and when you run it on Phone you get another experience. This boils the full convergence story down into a single code-base, which also means that if you fix a bug in that code-base, the bug fix applies to all devices too.
This is true convergence: a single code-base with a scalable set of design patterns that can be deployed on a wide range of devices.
This focus has materialized in Unity 8; the next generation of Unity that is currently running in the Ubuntu Phone and Ubuntu Tablet images. On the desktop we are still running Unity 7 (based on Compiz and Nux) until Unity 8 has desktop features baked in.
If you want to see this convergence working, install Unity 8 on your Saucy desktop with:sudo apt-get install unity8
Then run it with:export UBUNTU_ICON_THEME=ubuntu-mobile unity8 -mousetouch
This will load what looks like Ubuntu Phone on your desktop in a window. It should look like this:
Remember, Unity changes how it operates based on the screen size. To see this in action, increase the size of the window and you will now see something that looks like LightDM:
Re-size it smaller again and it looks like the phone interface again.
Another fun test is when at the phone size, slide from the left of the window to show the Launcher and click the Ubuntu button. Now click the ‘Search’ button and the search box takes up the full width of the window:
Now re-size the window to be much bigger and click the ‘Search’ button again; the search box now appears to the right of the window:
This is a subtle example of how Unity 8 adjusts the experience based upon the screen size and the goal is that we will make many such changes to optimize the Unity experience across these different form factors, but the core ingredients, technology, and focus on content is the same, just visible from different perspectives.Are We There Yet?
Today Unity 8 is running on the phone and tablet. Currently the vast majority of engineering focus is going into making everything work for Ubuntu Phone, but all of this engineering going into Unity 8 is built within the context of working on other devices too. As an example, although Unity 8 running on a full sized desktop screen looks like a mobile device running on a monitor (a native desktop UI will be added later), the core of the dash and all the system services will be desktop ready: they just need to be extended to support that screen profile.
In other words, although it might feel we are not working on the desktop, everything the engineering teams are working on is work we would need to do for the desktop in Unity 8 anyway, so it is all valuable work heading in a consistent direction.
Not only this but there is a far greater level of continuous integration and testing in Unity now than ever before. Every four hours there is a battery of tests run against the trunk code-base and if the tests pass a new package appears in the Ubuntu archive, giving you the opportunity to test it and keep up to date with the very latest in Unity. All feature planning and tracking is done publicly in blueprints and discussed at our Ubuntu Developer Summits.
The goal is that the phone user interface in Unity 8 will be mostly complete for Ubuntu 13.10, and then the focus will be on Desktop between 13.10 and 14.10 with the goal of shipping Unity 8 on the desktop in Ubuntu 14.10, thus spanning full convergence across all form-factors with this single Unity code-base and set of scalable design patterns.