Archive for the ‘General’ Category

Things software development teams should know about design

Friday, February 6th, 2015

I wrote a quick, unpolished list of things that development teams should know about design (and designers). It’s worth sharing with a larger audience, so here it is:

  1. programmers and managers need to fully embrace design — without “buy-in”, designing is futile (as it’ll never get implemented properly — or, often, implemented at all)
  2. design is an iterative process involving everyone — not just “the designer”
  3. in all stages of the project cycle, design must be present: before, during, and after
  4. design isn’t just eye-candy; functionality is even more important (text/content is part of design too)
  5. designers are full team members (and should be treated as such), not some add-on
  6. design issues should have high priority too (if something is unusable or even sometimes looks unusable, then people can’t use the software)
  7. designers are developers too (in fact, anyone who contributes to making software is a developer — not just programmers)
  8. good software requires design, documentation, project management, community engagement, marketing, etc. — in addition to programming
  9. “usability” != “design”; design is about creating something useful (and/or pretty), whereas usability is discovering how well something works — usability tests are useful to see if a design works, but usability test alone usually won’t point a way to fix issues… design helps fix problems after they’re discovered, and helps to prevent problems in the first place
  10. a lot of designers are quite tech-savvy (especially us designers already in the open source world), but many aren’t — regardless, it’s okay to not know everything (especially about programming corner-cases or project-related esoterica)
  11. think about the people using the software as people using the software, not as “users” (using the term “users” is degrading (similar to “drug ‘users'”) and sets up an “us-versus-them” mentality)

Tux update: black and white vector line-art

Tuesday, April 2nd, 2013

Many months ago, I released a high-quality vector version of Tux that I made in Inkscape as SVG and PNG.

Tux - color PNG previewSomewhat recently, I needed to make a black and white version for a project.

You can get both the color and black and white versions in both SVG and high-res PNG at the Tux github repository.

These versions of Tux are licensed under the public domain, but if anyone asks, Larry Ewing made the Tux mascot in the Gimp and I made these versions in Inkscape.

“Patches accepted” is harmful: How to improve your volunteer introductions

Thursday, March 14th, 2013

“Patches accepted.” It’s one of the most offensive things you can say to people who genuinely want to help with your project.

Why you should reconsider using the phrase

Not everyone is a programmer. Even those of us who do know how to program might not meet your expectations, and we would likely waste hours (or sometimes even days) writing and formatting a patch exactly how you might like it. And even then, we might be rejected again and again.

Instead: You, an expert programmer, could spend a little bit of time to thoughtfully discuss an idea and possibly consider implementing it. All of us who are better at things other than programming could possibly help you out in other ways too.

The pain of perfect patches

Developers often assume everyone should write perfect code in their project’s language, to their coding style (tabs? spaces? how many spaces? K&R? KNF? how many comments? what types of comments?). Thinking that everyone will send you free code exactly how you like it is not only arrogant; it dismisses other contributions.

Software is much more than the code that goes into it

Contribution is more than just patches; design, documentation, marketing, translation, localization, security audits, testing, discussion, and advocacy all are crucial for software to be good software.

“Patches welcome” ends any kind of meaningful discussion for potential other contributors.

Simple solutions: words & phrases

The words we all use matter. There are often special meanings in phrases we choose.

“Contributions are appreciated” is much better phrase to say than “patches accepted”. It’s not only what you say, though — it’s also what you mean, and we all need to shift our mindsets too.

The differences can be summed up simply:

  1. Be inclusive — people can help out in many different ways.
  2. Be thankful — everyone’s time is valuable, and they could choose to spend theirs doing something else entirely. Instead, they decided to talk with you and spend a bit of their time on your project, to try to help.
  3. Community participation is not only about code.

Sometimes you simply can’t work on an idea or fix a bug in your project due to various constraints, such as lack of time, being sick, or even a lack of skill. That’s okay; everyone has moments like these. If you’re up-front with people, they will likely understand and may think of you and your project more highly with the explanation. (Every once in a while, someone else may even see that there’s help needed and jump in because of your pleasant conversation too.)


If initial conversations are handled correctly, it could be the start of a beautiful symbiotic relationship to make your software better.

Adwaita for Firefox, the GNOME 3.x integration theme, updated!

Wednesday, March 14th, 2012

Today, I updated the Adwaita Firefox theme (the theme to make Firefox look like a GNOME 3 app). There’s a stable version for Firefox 10 (which is old as of yesterday), 11 (the new Stable), and Aurora (which will become 12).

For you bleeding edge types, there’s a Nightly version, which happens to have a refreshed UI to match with GNOME 3.4. It’s even more awesome.

Both versions have bugfixes and features.

Note: Make sure to download the version which matches your browser. If you don’t, your tabs will look odd and little random stuff might look slightly broken.

If you’re using Firefox 10, 11, or Aurora (12):

Nightly-using folks only:

(If you’d rather get it from the official Mozilla add-ons server, there will be a small delay. Patrick Ulbrich (pulb) will be submitting the stable version soon.)

In case you’re wondering what it looks like, here are screenshots of the Nightly version of the theme, styled to GNOME 3.3 / 3.4:

Desktop Summit 2011, Berlin

Wednesday, August 3rd, 2011

I’ll be at the Desktop Summit and I’m looking forward to seeing you all there! Let’s all go out for a beer and talk design (and other stuff too, of course)!  (;

Desktop Summit ad-hoc tips

Monday, August 1st, 2011

For those attending the Desktop Summit in Berlin, you may want to go head and set up tools like bananajour, SparkleShare, and etherpad-lite now on your laptops to be able ad-hoc develop & share files regardless of network quality.
Locally-ran web based tool for sharing git repos over bonjour (w/ publishing & discovery)
SparkleShare is a collaboration and sharing tool that is designed to keep things simple and to stay out of your way. (git based)
An Etherpad based on node.js (much easier to setup than the normal etherpad; also friendlier on your system resources)

A few tips for learning & practicing photography

Monday, July 18th, 2011
(I originally posted this on Google+, but figured it’s blog-worthy.)

• Keep shooting; you’re always practicing to get better, no matter how long you’re doing photography (:

• Bring a camera (of some sort) with you — the best camera is the one you have in your hands (if you leave your SLR at home, then your cell phone is your current “best camera”)

• Learn about the rules of composition… throughout time and experience, you’ll learn when to bend/break the rules (you can always practice with different ways of framing the shot and deciding which is best in review).

• The “rule of thirds” is a good tip, where the subject is located approximately ⅓ of the way in fro the sides (top, bottom, left, right). If it’s a ⅓ from two sides, it’s usually even more interesting. Don’t fall into the trap of thinking that every photograph has to abide by this “rule”.

• Fill the frame with your subject. Usually, the most compelling photographs have the subject taking up a lot of space in the picture. Get close, then get closer. (Again, as w/ the “rule of thirds” above, this isn’t always true, but it is often.)

• Nailing the correct exposure is nice; histograms (which show you a chart of dark parts on the left to bright parts on the right) help you out… and the camera’s guess at the “right” exposure is a guess to balance the picture to a medium grey (your camera can help with exposures, but you should override the camera at times)

• Learn how ISO sensitivity, aperture (f/stop), and shutter speed are related… if you adjust one, you’ll have to adjust one or both of the other two if you want to maintain a similar exposure.

• ISO sensitivity is a balance between noise and the ability to record brightness in a scene. The lower the ISO, the less noise (to an extent). High ISOs are used for low light and action shots. You will get a little noise at higher ISOs, but it’s not bad. Noise is okay (to a point). Some of the best pictures in all of history are quite noisy.

• The aperture is also know as the f/stop. It probably works the opposite as what you might assume. Smaller numbers make the aperture (the controllable hole to let in light) wider, so more light floods the camera. Larger numbers make the hole smaller, permitting less light into your camera. Aperture is mainly there to control the “depth of field” (DoF) which basically means “how much of the scene is in focus at one time”. A smaller aperture (bigger hole for the light to pass through) means more light and shallow depth of field… so you’ll have nicer background blurs (“bokeh”). If your lens is fully open (smallest aperture), your images will be a little soft (which is okay, but it’s good to note)… you can bump up the aperture a little to make it less soft. Larger apertures (smaller hole) make more things in focus, but at the cost of shutter speed (the time to take the picture). Larger apertures may also make dust on your sensor more visible, and, due to technical reasons, should probably not be much higher than f/8 – f/11 on most digital SLRs, else you’ll start to lose image quality (although it’s okay).

• Shutter speed is the time it takes to shoot a picture. It’s a fraction, except for long shots. 2 (2/1 seconds) is a long time, 1/20 is short, 1/200 is a lot quicker. You’ll want to have it be quicker than the reciprocal of your len’s length in mm if you’re hand-holding shots. For example, if you have a 50mm lens (or a zoom lens at approximately 50mm), make your shutter speed at least 1/50 or faster, else your hands & arms may introduce a camera shake blur. You can adjust the ISO and aperture to balance this out, if there isn’t enough light where you are. The longer your shot, the more light you let into the camera.

Quick recap of balancing ISO, aperture, shutter speed:
Dark ←→ Light
• ISO: small number ←→ large number
• Aperture (f/stop): large number ←→ small number
• Shutter speed (time): large number ←→ small number (remember: it’s fractional, so it’s 1/_X_, so X should be larger here when you want a smaller number)

Also, quick recap of what each does:
• ISO: sensitivity boosting (but adds noise)
• Aperture: amount of light to let in (more light = shallower focus, less light = more of the scene in focus at one time)
• Shutter speed: how quickly your camera shoots (faster lets in less light, but you can get action shots, slower means more prone to blurs from camera shake or action)

Quick recipes using the above info:
• Portraits: small-numbered aperture, lens length between 85 – 105mm typically (both to maximize a shallow depth of field to make the person or object stand out from the background). Also use nice lighting, but that’s a HUGELY different, detailed topic.
• Sports & action shots: Maximize your shutter speed, to make it as quick as possible. You can do this by cranking up the ISO and you can also reduce your aperture setting (making it a large hole) to let in more light, to counter-balance the shutter setting.
• Nature scene: High apertures are key here, as you probably want everything in focus. Sometimes this means sacrificing time, so it might be so slow that you cannot hand-hold it with a nice ISO (like 100 or 200, whichever your camera’s “native” ISO is), so people often use tripods… especially on cloudy days and during sunrise, sunset, and nighttime. You’ll probably also want to use a circular polarizer filter, which reduces scattered light (and cancels out reflections, makes color “pop”, etc.). Polarizers also reduce the amount of light coming into your camera, so adjust accordingly.

• You can experiment with shots and not worry about anything above that you might not understand yet. Just pointing and pushing the button is enough, but understanding how things work can really help you get the shot you want.

• Shooting in raw means you can adjust more things after taking the picture. It’s a lot more flexible and even allows you to correct mistakes. It also has a lot more data than JPEG, and does not use lossy compression, so your images won’t have JPEG artifacts. You’ll want to use Apple’s Aperture or Adobe’s Lightroom (I use and prefer Lightroom).

Again: Get out there and shoot, shoot, shoot! Feel free to experiment, especially with digital photography, where extra shots don’t cost you money for film and processing.

(However, despite this, I suggest not shooting the same thing in the same way more than once if you can help it. Think about each shot. There is a cost of your time afterward, on the computer.)

Also, you don’t have to upload everything you take a picture of. Even the best photographers in the world sometime take crappy photographs. You don’t see their awful shots, however. They just take a lot and show you the best. (: