OSSMichigan.org - Not quite a planet but a state.

June 29, 2009

Andrew Turner

Reboot into Action

So I just finished attending my first Reboot – and as many people tried to explain before hand, “it’s weird”. Not just European Conference weird with completely different crowd, most attendees speaking in a foreign language (their own, or in English which is foreign to them), varying minor variations on “what matters”, and of course dealing with wall plug adapters.

No, Reboot is weird in a different way. In attempting to learn if it was more traditional conference, or unconference, the answer was never clear and often just “yes” to the multiple choice question. Now I know why they said that, it actually makes sense. But let me hopefully be slightly more lucid.

What is Reboot?

Reboot asks for anyone to submit topics ahead of time, and these are then chosen both by a committee as well as public voting – so it’s a very open system, BarCamp-like, but these talks are then chosen with a speaker and assigned times. So then Reboot becomes more traditional conference with many “stage talks” in a face-forward audience setting. There are some side rooms that will have sessions scheduled that are discussions, but that definitely isn’t something to plan on. So the presentations are more traditional.

But then where Reboot was really surprising is the amount of the conference that happens outside of the sessions. This isn’t just a “hallway track” discussions – they are full-fledged, conference long sessions working on projects. People are dedicated to building things, gathering together information, creating, ideating, collaborating, advising – all during the conference. I’m quite sure a sizable number of Reboot attendees never go to a ’session’ but merely use the venue as a mechanism to gather together many like-minded people who are driven to do something, and leverage the brain-power and thoughts that are coming out of the sessions to act on something bigger.

I love BarCamps – they’re discussion-centric, synergistic, and connect people in networks to carry forward and achieve great things in the future. What Reboot does, by comparison, is not wait. Have an idea? Get started on it now. Or at least be very good in capturing the idea, disseminating it widely and getting it moving as quickly as possible.

Now perhaps with a little better, or at least verbose, explanation of what Reboot was like from my perspective – it also makes the name itself more meaningful. The conference is Reboot, not “Reinstall”, or “Start-over”, or “Redo”, just “Reboot”. When you Reboot something you retain some measure of the longer-term state it was in; applications are installed, configurations are set, and so forth. But what Rebooting does is to go back to a fresh state, with the long-term memory and skills and infrastructure, and get up and running and back into business.

So the conference is about considering what’s around you, what you’ve built and have, and through the sessions, collaborations, projects, whatever, to take a fresh perspective and jumpstart on moving forward.

Action

Reboot Yourself

The theme, or topic, of Reboot 11 was “Action”. Simple, single word: Action. Take action, make something happen. There is a parellel in Tim O’Reilly’s “Work on things that matter”.

The proposed reasoning behind having Reboot focus on “Action” was that we are in a global economic crisis, there are short-term issues such as disasters, corrupt governments, and long-term problems of environmental quality, health, and education. It was a push for us to work on these issues and figure out how we can help enact change.

However I found through talking with many people that had attended several Reboots that there was “nothing new”, or “revolutionary” in many of the topics and that the individual felt they already had a good grasp of what was going on in the space. It was this malais of “amazing things” that made me realize why it’s really time to take action – and Bruce Sterling to cast just enough “Gothic Hi-Tech” to make it solidify”"

We have the tools, we have the power

The tools we’re all using and building with have been in active use for several years now. We have our wikis, blogs, social networks, mobile devices, media devices, connectivity, realtime communications, hardware interfaces, API’s, and more. We have all created an amazing toolset that has been used to create many varied, and some quite crazy, applications, worlds, communities, or systems.

Reboot Actions

And if we have these mature tools, with many choices and the ability to quickly pull them together to accomplish nearly everything – we have to grow up and realize that these are not just toys or hacks nymore. These are the very tools that can, and are already, making the world of the future.

And we, the technologists, designers, thinkers, citizens of the next generation that are now in control. We have grown up with these tools, and in many ways we’re already using them to change governments, raise communities, run businesses, and live in our world.

Act now

For me, what I took away is to take responsibility and consideration for what I choose to do. Hacks and toys are fun – but as Bruce said, “if it’s not beautiful enough to show your friends, and doesn’t have a narrative attached to it, throw it away”.

Work on things that matter, and make them work by focusing on them like they matter. Your actions will make a difference, and if they don’t – you’re doing it wrong. Put it down, and move onto something else. Collaborate and work together to achieve great, actionable outcomes. You’re an amazing person with many talents, and we can all use amazing people like you. What action are you going to evoke?

by Andrew at June 29, 2009 03:42 PM

June 28, 2009

Jay "jwren" Wren

There is more than one way to linq that

Eric Gunnerson has a post in which he responds to Justin Etheredge regarding “Is Programming A Generic Skill?

I’ll just say that I agree with them both. There are differences between ability, proficiency and mastery.

A Java programmer can jump into C# and be an able C# programmer immediately. It will take time to become proficient and even more time to develop mastery.

I am proof of this with python. I’ve been an able python programmer for over 10 years now(actually closer to 15), but I never spent enough time in python to call myself proficient and I’m certainly far from a master.

But the thing that Eric said which triggered me to write this is not the generic skill discussion with Justin, it is instead a remark that Eric said about Perl, “… because of TMTOWTDI”.

C# is very much becoming afflicted with There is More Than One Way To Do It. It certainly is both the language and library.

Consider LINQ. LINQ to Objects is a new way to do something which everyone has done differently in the past. When new programmers are exposed to linq, I often hear the question “When do I use linq?” The answer I give is typically “whenever you would use a for loop or foreach loop and if you can’t, figure out how you can".

If we throw away the ‘idiomatic code” to which Eric refers, then a giant bucket of TMTOWTDI is thrown in our face. Do we use properties or fields, events or delegate fields?

For public interfaces, FxCop helps a great deal with guidelines for these things and helping to learn the idioms of the language and framework, but for other things, you are left to yourself. That is why reading others source code is so important. (see the weekly course code)

Expand into libraries and TMTOWTDI explodes. From MSFT alone there is Remoting, Web Services (asmx), WSE, WCF, RIA Services, ASHX, ASP.NET Data Services, all of which have some overlap. Then for data access there is ADO.NET, Linq2Sql, Entity Framework. Even within ADO.NET alone, TMTOWTDI. Do you use a reader? Table Adapter with DataSets? Strongly Typed DataSets?

Open to non MSFT and TMTOWTDI explodes again, to the point where I won’t bother listing anything. There is too much.

I think that library TMTOWTDI will always exist. Even Python has SqlObject, SqlAlchemy and ORM as parts of other frameworks like Zope and Django. But language TMTOWTDI is reasonably well mitigated in Python. This is stated in a single line in PEP20 – The Zen of Python

There should be one—preferably only one –obvious way to do it.

C#, perhaps because it was not a goal and because of its C/Java/Delphi roots, has never had that. There has always been TMTOWTDI in C#.

by jrwren at June 28, 2009 04:47 PM

June 27, 2009

Jorge Castro

Resurrecting Apt Zeroconf


I have been toying with a bunch of apt-proxy-like things since I read jdub’s blog about approx. apt-cacher-ng seemed to be working but tends to wonk out on occasion. I decided to try squid for a bit (because then I could use it to cache other things, not just debs).

So after a while of messing with this stuff I decided “this is dumb, why aren’t the computers just maintaining themselves, I am doing too much work for this crap.” I didn’t want to go computer to computer setting a proxy and I didn’t want to mess around with a transparent proxy so I was just annoyed. (And lazy!)

apt-zeroconf was doing this nice and automatically in the past but it was dead upstream and the website disappeared. Maybe if someone fixed this up this would be a nice little solution for home users with multiple PCs. Ends up that Jeremy Austin-Bardo had written a blueprint and a spec. So I gave him a call and now we have started a project to resurrect apt-zeroconf.

Here it is.

The idea is simple. On your home machines you check a box in the gui someplace, and then all your machines share their apt packages with each other. Which means that on release day you upgrade one machine, and then when you upgrade the others you don’t have to redownload everything again. Nice huh? Combine this with deb delta syncing and you’ve got a nice little bandwidth saving solution.

The project is small so some of the guys from the Michigan LoCo will be looking into this as their summer project. If you know python and avahi we could use your help. Also, something changed in pyinotify that we can’t figure out, so help there would be appreciated. Branch away and feel free to join the team and mailing list for updates.

by jcastro at June 27, 2009 02:50 PM

June 26, 2009

Jorge Castro

Ubuntu Boot Performance coordination with Debian


I’d like to point out Robbie Williamson’s summary of the combined Debian and Ubuntu boot performance sprint, which was held at the Canonical office in Millbank, London, UK.

Though we (as in Ubuntu developers) typically have a presence at Debconf this is the first time I can recall (In my admittedly short memory) a targeted sprint specifically designed for Ubuntu/Debian collaboration on a specific feature. I look forward to seeing the discussions that come out of Debconf9 on this as well as admiring the tartans. I’ll see you guys in Spain!

debconf9-going-to

by jcastro at June 26, 2009 09:06 PM

June 25, 2009

Jorge Castro

Cut less.


David has blogged the set of 100 papercuts that we’re shooting to fix for Karmic. As you can see here they are divided into 10 milestones of 10 bugs each. Now we have a nice concrete list of bugs that are attainable.

Please see Jean-Louis Dupond’s bug as an example of Doing It The Right Way(tm) by working upstream. On a related note, the word “Ubuntu” is no longer considered a misspelling.

Please feel to dig into any of these and help the cause.

by jcastro at June 25, 2009 02:48 PM

June 23, 2009

Jorge Castro

In absolute awe ….


The new Iron Maiden documentary Flight 666 is fantastic. I rented it from Netflix and it was one DVD. To my absolute joy, the formats page tells me there is a 2 DVD set which includes the entire live set on a second disc. I will be ordering it as soon as I finish telling you all about how great this movie was.

People think that Maiden’s “heyday” was in the 80’s; but Maiden is more popular than ever, selling more records and selling out more shows than they ever did in the 1980’s. Their popularity in Latin America is just unbelievable. Those of you that have seen the “Rock in Rio” set where they play in front of a quarter-million people will understand the scale of how huge this is. There is one pivotal scene at the end of their show in Columbia that literally almost made me cry, the Buffalo News explains it best:

But “Flight 666” is more concerned with just what that music has meant to a few generations of music lovers around the planet. The film’s most moving scene depicts a young South American Maiden fan clutching a pair of drummer Nicko McBrain’s drumsticks, clinging to the barricade well after the band has left the stage and the lights have come up, and weeping uncontrollably.

The scene is about 2 minutes long and really moved me. It’s amazing what music can do to inspire people. Have you seen it? Leave a comment below. UP THE IRONS.

by jcastro at June 23, 2009 04:21 AM

June 22, 2009

Mark Ramm

TurboGears 2.0.1 now available on pypi

Since the beginning (nearly) of TurboGears 2.x development we use a private index to store all our dependencies and point people to it for installation. This was nice because it helped us control our dependency tree and make sure installation of our unstable software was as easy as possible.

Since we had released a stable 2.0 version, followed by a 2.0.1 bugfix, we really were lacking a real pypi install mechanism. This is now a thing of the past! You can install a full blown TurboGears2 environment in one simple command:

easy_install tg.devtools

and this will fetch everything using normal lookups from the pypi. I hope this will help people out there.

At the same time I’d like to ask for help in that domain: If you are using TurboGears2 and find out that some dependency that needs compilation is not found in a compiled state (either on pypi or on our index), please help us:

  1. By sending a compiled version of the egg to me (florent aide, you’ll find me on the mailing list easily)
  2. By pointing us the missing dependency (send a mail in the turbogears or turbogears-trunk mailing list)
  3. Or even better: try to become a maintainer for the specific dependency, that you know will always be missing for your architecture, and let us know about that great news. The whole open source community will become better, your karma (the real one, not the one you can admire on ohloh) will bump-up and you’ll be forever remembered on endor.

Now this leaves us with one more thing to do: finish the web site for turbogears that is currently in a poor state. If you would like to help us on the engine, please let us know in the mailing lists or via private message. If you want to help-out with content, please let us know also and we’ll be more than glad to give you an editor account and some directions to get some content online in this new website.

Cheers all,

Florent.

by Florent Aide at June 22, 2009 08:21 PM

June 21, 2009

Jorge Castro

Reporting bugs upstream


I checked out Joseph Schmidt’s blog post on reporting bugs upstream and I thought I would respond to clear some things up and explain how we do things around here in Ubuntu land.

Josephs starts off with “I am not trying in any way to pick on Ubuntu. They are just keeping statistics in a way I can put some numbers behind my rant.” Heh, ok, fair enough. However, we do have an Upstream Report where we do break this down by package. This is way more useful to study than the page of ~800 or so pile of bugs.

It would be easy to point at a big pile of bugs and come to conclusions. But let’s look at some of these bugs. Some of these are old, they might be fixed in ubuntu but not in another component; I see a bunch that can be resolved (they’re stale and rotting), I see a bunch that just aren’t very good bugs to begin with. Still, it’s a pile of bugs that need to be fixed or resolved.

However, it’s not just about numbers, it’s about quality and context. If today we told all the bugsquad members to automatically forward every Banshee bug we get to upstream we would overwhelm them with badly reported bugs and actually hurt the project. What we strive to do is to act as a good filter for upstreams so that when they get a forwarded bug report from one of our triagers they get the information they need to fix the bug. Doing this with consistency across an entire project is hard which is why we are always doing training classes during openweek and hug days, targetting upstreaming bugs during hug days, and we even have a page that I trudge through nearly every day where people are leaving links in comments but not linking. I usually send them a mail explaining how to link bugs.

This last week we had a Hug Day with the Empathy folk. Look at that list of bugs, those aren’t a pile, those are a specific targeted set of bugs in context with the hug day – we want to be efficient and get the most bang for the buck, that means looking at “the pile” and prioritizing and figuring out which ones upstream wants to see the most. How do we know which ones upstream wants? Having a QA relationship with the upstream is a great start. In this case we have a wonderful upstream who works with our desktop team to make this work. This is a great example of teamwork, we have many others. We also have some poor ones I am sure. (And if you are an upstream who feels we suck at this, let me know immediately)

What else are we doing? As it turns out, many incoming bugs tend to be of poor quality. It’s not the person’s fault, a good bug report is an acquired skill that needs practice! We have a great tool called Apport that fires off when an app crashes. It has the capabilities to gather information from the user and stick it in a bug report. It’s handy. We want more people to use it because it cuts down on the mundane bug ping-pong discussion. “What version, what distro?” etc. We are making an even more concerted effort to increase apport usage among our users so that the bugs coming in start off being better. When I ask upstreams what they think of apport crashers bugs forwarded to them the result is usually very positive.

Please remember that we are very, very sensitive to turning on something that will autospam an upstream bugtracker, and in my opinion, rightfully so. Forwarding bugs to upstream isn’t fixed with a shotgun, it’s fixed with a scalpel. It takes time to go through those and make sure the right ones get forwarded. We have two guys in Ubuntu that are really good at this, they’re the top 2 reporters of bugs for GNOME last year. This is the kind of activity we want to see across the board and doing this properly is very important to Ubuntu and Canonical – if you’re an upstream and you feel like we can improve in this area, please get a hold of me.

by jcastro at June 21, 2009 03:12 PM

June 18, 2009

Jay "jwren" Wren

How useful are your error messages?

F.cs(334,8): error CS0539: ‘I.M’ in explicit interface declaration is not a member of interface
F.cs(20,15): error CS0535: ‘C’ does not implement interface member ‘I.M(out string)’

This is a fun example of a poor error message, and I don’t mean because I named my file F, my interface I, my method M and my class C.

Its poor because the underlying code looks like this:

interface I { bool M(out string); }

class C:I { void M(out string); }

Sure, this is obvious now what is going on, I have void, but I should have bool, but my error message doesn’t include that when it shows the type signature.  Now consider what happens when interface I is in an assembly which is given to me. I do not have its source, and there is no documentation. My means of finding the signature of this method are three fold:

  1. lean on visual studio press F12 to go to reference of the interface and VS shows me type signatures
  2. use reflector
  3. monodis mylibrary | grep MethodName

I usually use #1, which is probably why I’ve never seen how horrible this compiler error message is until today. Today, I used #3.

* monodis is from Mono

by jrwren at June 18, 2009 07:13 PM

Jorge Castro

Jams and Showcases galore …


You might have noticed that we’re announcing things a little earlier in a cycle. We’ve got two events coming up that are great for individuals and teams. The first one is the Ubuntu Global Jam. Astute observers will remember this as the event formally known as the Ubuntu Global Bug Jam. We decided that we could make this event even better by including any kind of thing your LoCo can come up with. So you can do a jam on docs, translations, or whatever suits your group best. Maybe an installfest? A trip down to the local University to give talks to students? Anything, just let us know how we can help.

For creative folks we’re returning the Free Culture Showcase. Those of you looking for inspiration can check out the winners last cycle.

by jcastro at June 18, 2009 01:56 PM

June 17, 2009

Jay "jwren" Wren

Internet Explorer 8 in Windows 7 is Not All Bad

The number one feature that has been in Opera for longer than I can remember, and in Firefox via add-in or by default for nearly as long, is that of restoring a session when the browser or system crashes.

I lean on this feature. I use browser tabs as a todo list. Sometimes I have to-read tabs open in my browser for only minutes, and other times those to-read tabs are around for weeks and into months.

Internet Explorer was a no-go on this feature, until I noticed it today.

My laptop (I blame hardware – or poor Dell drivers) did not go to sleep when I shut the lid this evening. After a 5 mile bike ride and a 12 mile car ride home in a well insulated back pack, the laptop was frozen and pretty warm when I got home and unpacked. I had to reboot.

As soon as I logged in I remembered that I had left an Internet Explorer window open with something I wanted to read. I cursed because I thought I would have to find it and I usually struggle finding things in browser “history”.

I was surprised when I was greeted with a “restore last session” prompt from Internet Explorer.

Good job on a great feature, Internet Explorer team.

Will I be using IE as my default browser? Absolutely Not. RequestPolicy and NoScript are required browser add-ins for my daily browser usage.

by jrwren at June 17, 2009 02:05 AM