This is part of my blog, which I have long since stopped maintaining. The page has been preserved in case its content is of any interest. Please go back to the homepage to see the current contents of this site.
For those looking for a quick introduction to laying out Graphical User Interface components using Java’s Swing technology, this guide may prove helpful. (But probably not.)
Swing Components all have a few common properties that affect how they are laid out on the GUI. These are:
alignmentX and alignmentY do nothing whatsoever.
maximumSize sets the largest size the component can be when rendered, unless the Layout Manager feels like messing with you.
minimumSize sets the smallest size the component can be, although this only holds when Venus is in Capricorn.
preferredSize sets the exact size that a component will try to be, provided you have entered the secret unlock codes which are known only to Larry Ellison and the Illuminati.
Swing components are arranged inside their parent panels by Layout Managers. Many layout managers are available to achieve certain common layouts. They include:
FlowLayout arranges components in a straight horizontal line, hiding any that it can’t be bothered to display because your box was too small for them.
BoxLayout places all components in either a horizontal or vertical line, expanding to fit them all, but resizing the child components for the lulz.
BorderLayout places components on the top, left, bottom or right-hand side of the panel. If you place two on the same side, they duel to the death until only one survives.
GridLayout arranges components in a grid with fixed size cells. If the component in one of the cells happens to be huge for some reason (e.g. you did not enter the Illuminati secret unlock code), your entire parent panel expands until it consumes the universe.
GridBagLayout represents the eternal influence of the Outer Gods in the affairs of man. Ï̷̫̥̣͈ͯ̌a̱̮̼̣̞͇̬͚ͧ́̉̆ͭͭ͜I̻̝̰̟͕̖͎ͦ̏ͫ̀͗̋͢ã̶̧̭͚͖ͤ͑́̎ͩͅ!̙͉͙̫̋̋͠ ̹͓̝̹͙͉̲͉̰́̽̐̈ͭ͆̎!̛̘̖̺̺̦̙ͦ͗̂͗̈͊͝ f̦̬̲͇̥̗̙̬͆ͦͦ̀̒̕G̸̩̹̞̫̈ͨ͒͆͞r̶̤͆̋i̴̮͖̦̙̤͈̗͍̎͛ḑ̗̰̘̔ͥ͆͢B̻͇͎̣̰͓̀̇͒ͬ̈́͂ͣ̚͠͠ä̲̮̰͚̬͑̎́g̷̲͔̬͓̙̙̑̂ͧ͢L̶̛͍͎̝̲͐̃a̴͈̤̖͚̠̼̳̺̬͊ͥ̕͡ẏ̶̹̃̌͛̀ǒ̴̙̜̭͖̆͆ͮ̀ͫ͌ͤ͠u̶̥͈̝̱̺͖̔̿͗̊ͦ̒̋ͩ́t͖̤̻̥̟̻̻̹̞̻̎͒̅͂͗͑̽̎ͩ̇̇̔̉̌̃ ̵͕̘̬̳͆̒̈́ͭͦ̚͠’̷̘̔͋ͦ͂͝t͍͉͒̄ͨ̓ͧ̋̀h̲̣̜̱̳̝ͣ̓ą̶̸̜͎̝̹̭̹͒̐̄͊ͯ̐g̯̹̔̍ͦ͡n̩͚̞͆͌ͬ̐!̞̪͎͙̼͇͌͊̌
I hope that helps.
Dear Sid Meier,
Where did it all go so wrong?!
Figure 1. EVERYTHING THAT IS WRONG WITH FACEBOOK
Occasionally, I read a piece of writing that sums up my thoughts so well, so exactly, that I sit and try to blog something comparable and just fail. Try as I might, I can’t outdo the original. I’m not sure what Pastebin.com’s retention policy is, so just in case, here it is in full:
We, the Web Kids
by Piotr Czerski (translated by Marta Szrede)
There is probably no other word that would be as overused in the media discourse as ‘generation’. I once tried to count the ‘generations’ that have been proclaimed in the past ten years, since the well-known article about the so-called ‘Generation Nothing’; I believe there were as many as twelve. They all had one thing in common: they only existed on paper. Reality never provided us with a single tangible, meaningful, unforgettable impulse, the common experience of which would forever distinguish us from the previous generations. We had been looking for it, but instead the groundbreaking change came unnoticed, along with cable TV, mobile phones, and, most of all, Internet access. It is only today that we can fully comprehend how much has changed during the past fifteen years.
We, the Web kids; we, who have grown up with the Internet and on the Internet, are a generation who meet the criteria for the term in a somewhat subversive way. We did not experience an impulse from reality, but rather a metamorphosis of the reality itself. What unites us is not a common, limited cultural context, but the belief that the context is self-defined and an effect of free choice.
Writing this, I am aware that I am abusing the pronoun ‘we’, as our ‘we’ is fluctuating, discontinuous, blurred, according to old categories: temporary. When I say ‘we’, it means ‘many of us’ or ‘some of us’. When I say ‘we are’, it means ‘we often are’. I say ‘we’ only so as to be able to talk about us at all.
1. We grew up with the Internet and on the Internet. This is what makes us different; this is what makes the crucial, although surprising from your point of view, difference: we do not ‘surf’ and the internet to us is not a ‘place’ or ‘virtual space’. The Internet to us is not something external to reality but a part of it: an invisible yet constantly present layer intertwined with the physical environment. We do not use the Internet, we live on the Internet and along it. If we were to tell our bildnungsroman to you, the analog, we could say there was a natural Internet aspect to every single experience that has shaped us. We made friends and enemies online, we prepared cribs for tests online, we planned parties and studying sessions online, we fell in love and broke up online. The Web to us is not a technology which we had to learn and which we managed to get a grip of. The Web is a process, happening continuously and continuously transforming before our eyes; with us and through us. Technologies appear and then dissolve in the peripheries, websites are built, they bloom and then pass away, but the Web continues, because we are the Web; we, communicating with one another in a way that comes naturally to us, more intense and more efficient than ever before in the history of mankind.
Brought up on the Web we think differently. The ability to find information is to us something as basic, as the ability to find a railway station or a post office in an unknown city is to you. When we want to know something - the first symptoms of chickenpox, the reasons behind the sinking of ‘Estonia’, or whether the water bill is not suspiciously high - we take measures with the certainty of a driver in a SatNav-equipped car. We know that we are going to find the information we need in a lot of places, we know how to get to those places, we know how to assess their credibility. We have learned to accept that instead of one answer we find many different ones, and out of these we can abstract the most likely version, disregarding the ones which do not seem credible. We select, we filter, we remember, and we are ready to swap the learned information for a new, better one, when it comes along.
To us, the Web is a sort of shared external memory. We do not have to remember unnecessary details: dates, sums, formulas, clauses, street names, detailed definitions. It is enough for us to have an abstract, the essence that is needed to process the information and relate it to others. Should we need the details, we can look them up within seconds. Similarly, we do not have to be experts in everything, because we know where to find people who specialise in what we ourselves do not know, and whom we can trust. People who will share their expertise with us not for profit, but because of our shared belief that information exists in motion, that it wants to be free, that we all benefit from the exchange of information. Every day: studying, working, solving everyday issues, pursuing interests. We know how to compete and we like to do it, but our competition, our desire to be different, is built on knowledge, on the ability to interpret and process information, and not on monopolising it.
2. Participating in cultural life is not something out of ordinary to us: global culture is the fundamental building block of our identity, more important for defining ourselves than traditions, historical narratives, social status, ancestry, or even the language that we use. From the ocean of cultural events we pick the ones that suit us the most; we interact with them, we review them, we save our reviews on websites created for that purpose, which also give us suggestions of other albums, films or games that we might like. Some films, series or videos we watch together with colleagues or with friends from around the world; our appreciation of some is only shared by a small group of people that perhaps we will never meet face to face. This is why we feel that culture is becoming simultaneously global and individual. This is why we need free access to it.
This does not mean that we demand that all products of culture be available to us without charge, although when we create something, we usually just give it back for circulation. We understand that, despite the increasing accessibility of technologies which make the quality of movie or sound files so far reserved for professionals available to everyone, creativity requires effort and investment. We are prepared to pay, but the giant commission that distributors ask for seems to us to be obviously overestimated. Why should we pay for the distribution of information that can be easily and perfectly copied without any loss of the original quality? If we are only getting the information alone, we want the price to be proportional to it. We are willing to pay more, but then we expect to receive some added value: an interesting packaging, a gadget, a higher quality, the option of watching here and now, without waiting for the file to download. We are capable of showing appreciation and we do want to reward the artist (since money stopped being paper notes and became a string of numbers on the screen, paying has become a somewhat symbolic act of exchange that is supposed to benefit both parties), but the sales goals of corporations are of no interest to us whatsoever. It is not our fault that their business has ceased to make sense in its traditional form, and that instead of accepting the challenge and trying to reach us with something more than we can get for free they have decided to defend their obsolete ways.
One more thing: we do not want to pay for our memories. The films that remind us of our childhood, the music that accompanied us ten years ago: in the external memory network these are simply memories. Remembering them, exchanging them, and developing them is to us something as natural as the memory of ‘Casablanca’ is to you. We find online the films that we watched as children and we show them to our children, just as you told us the story about the Little Red Riding Hood or Goldilocks. Can you imagine that someone could accuse you of breaking the law in this way? We cannot, either.
3. We are used to our bills being paid automatically, as long as our account balance allows for it; we know that starting a bank account or changing the mobile network is just the question of filling in a single form online and signing an agreement delivered by a courier; that even a trip to the other side of Europe with a short sightseeing of another city on the way can be organised in two hours. Consequently, being the users of the state, we are increasingly annoyed by its archaic interface. We do not understand why tax act takes several forms to complete, the main of which has more than a hundred questions. We do not understand why we are required to formally confirm moving out of one permanent address to move in to another, as if councils could not communicate with each other without our intervention (not to mention that the necessity to have a permanent address is itself absurd enough.)
There is not a trace in us of that humble acceptance displayed by our parents, who were convinced that administrative issues were of utmost importance and who considered interaction with the state as something to be celebrated. We do not feel that respect, rooted in the distance between the lonely citizen and the majestic heights where the ruling class reside, barely visible through the clouds. Our view of the social structure is different from yours: society is a network, not a hierarchy. We are used to being able to start a dialogue with anyone, be it a professor or a pop star, and we do not need any special qualifications related to social status. The success of the interaction depends solely on whether the content of our message will be regarded as important and worthy of reply. And if, thanks to cooperation, continuous dispute, defending our arguments against critique, we have a feeling that our opinions on many matters are simply better, why would we not expect a serious dialogue with the government?
We do not feel a religious respect for ‘institutions of democracy’ in their current form, we do not believe in their axiomatic role, as do those who see ‘institutions of democracy’ as a monument for and by themselves. We do not need monuments. We need a system that will live up to our expectations, a system that is transparent and proficient. And we have learned that change is possible: that every uncomfortable system can be replaced and is replaced by a new one, one that is more efficient, better suited to our needs, giving more opportunities.
What we value the most is freedom: freedom of speech, freedom of access to information and to culture. We feel that it is thanks to freedom that the Web is what it is, and that it is our duty to protect that freedom. We owe that to next generations, just as much as we owe to protect the environment.
Perhaps we have not yet given it a name, perhaps we are not yet fully aware of it, but I guess what we want is real, genuine democracy. Democracy that, perhaps, is more than is dreamt of in your journalism.
“My, dzieci sieci” (“We, the web kids”) by Piotr Czerski (translated by Marta Szrede) is licensed under a Creative Commons Uznanie autorstwa-Na tych samych warunkach 3.0 Unported License
Originally posted at: http://pastebin.com/0xXV8k7k
Contact the author: piotr[at]czerski.art.pl
Snow drifts lazily to the ground outside, lit sodium orange in the glare of streetlights and the lit-up logo of the self-storage place across the dual carriageway. It settles briefly, knowing all too well that the breeze off the ocean will melt it away before morning.
Somewhere a radio is playing; frequency-modulated static over the sleepy drawl of a late-night DJ and the songs of decades long gone. Nothing stirs in the house, just me and the tap-tap-tap of fingers on keys.
It is a moment outside time in a place adrift from the world.
But tomorrow the streets will be clear and the dance will begin again, leaving only the trickles of snow that linger in shadows and the endless radio haze.
In just about every supermarket in the country, and doubtless others too, one can buy little glass bottles of liquid food colouring and essences such as vanilla and almond. They’re tiny, light, can easily fall out of cupboards, and can cause permanent staining if they fall and smash.
Except that… they’re not glass.
Somehow I have lived out all my life so far convinced that these were tiny, fragile glass bottles that had to be meticulously placed in the cupboard to avoid your floor being permanently green. Until, grabbing a bag of flour from my baking cupboard without paying attention, one of these bottles fell to the floor – and bounced.
Sometimes it’s the simplest design decisions that can avert disaster and bring a smile (in this case, of relief) to people’s faces.
The other day, a bout of online drama made me wonder if it wouldn’t be a good idea to make my online activities a little more private – hide my Twitter feed, for example, and maybe un-friend some people on Facebook to restrict it to just my “core” friends.
Do I actually want to know what 281 people are doing?
But in doing so, I thought for probably the first time about the direction Facebook has taken with regards to friendships and viewing friends’ updates.
Firstly, unlike Twitter, when someone you know “friends” you on Facebook, the socially acceptable thing to do is to accept. Rather than saying “it’s great that you’re interested in me, but I’m not as interested in you, so I won’t ‘follow’ you back,” Facebook mandates a two-way interest. So if someone “friends” you, you either have to ignore them (and feel slightly guilty about it) or commit yourself to seeing their updates.
Secondly, Facebook is becoming less of a place to catch up with friends, and more of an identity service (which has been accelerated with the new Timeline profiles). Your Facebook profile defines you; tells others who you are and who you know. This adds to the impetus to “friend” people you don’t really care about that much – you’re not so much expressing an interest in another person as defining who you are. And that, of course, also lumbers you with looking at their updates all the time.
It’s obvious that this is a common issue, and rather than backpedal or restrict the way Facebook wants to take its service, their response has been to add complex filtering options that let you block specific users and apps, view only updates from various groups, and recently, adding an automated filter that tries to guess which updates you’ll want to see.
Personally, I prefer using Facebook via the API (using SuccessWhale) which avoids the automated filter, but I must still block the updates of people I don’t care much about manually. I’d quite like to cull my Facebook friends list down to just those whose updates I actually care about. But is doing so a reasonable way of reducing my information overload – or willingly damaging an identity that I spent the last four years trying to curate?
In one of my previous blog posts, “Designing for Granddad”, I examined some of the user interface features that cause my grandfather issues when using his computer, and left a few hanging questions as to how we software designers can make our apps less confusing to the novice computer user.
As is my unfortunate habit, I spent some of today checking out how work had progressed on the GNOME-shell and Ubuntu Unity desktop environments. (I enjoyed the eye candy for around three hours before reverting to the UI of least resistance.) Various complexities in their interfaces irritate me and seem to have provoked the wrath of a community of largely experienced computer users. This got me thinking about how I would go back the other way, and design a desktop environment for absolute novice computer users – one without many of the frustrations of modern software.
The Gnome-Shell Interface
My ideas, roughly distilled into a sort of ‘design manifesto’, are:
One activity at a time. Here I actually agree with Gnome-shell and Unity’s focus on full-screen applications, avoiding unrelated yet overlapping windows.
Never hide the means to change activities. Both Gnome-shell and Unity hide their application switcher during normal use, requiring at least a mouse movement or a click to get it back.
Don’t change state with mouse position. Novice computer users often have trouble controlling the mouse. Unity’s auto-hiding dock and Gnome-shell’s “hot corner” could prove frustrating, particularly the latter which completely changes the display when hit.
No system trays. The distinction between the taskbar and system tray is not well-defined and can be confusing. Gnome-shell is a particularly bad offender here, with not one but two tray-like areas.
No notifications (unless they help). Pop-ups confuse and scare novice users. If at all possible, the app should use a sane default rather than asking a question, and do nothing rather than displaying information. If a pop-up does appear, it should be helpful and clearly worded.
Stateless apps and background services. The user wants to get their e-mail. Reading e-mail is a legitimate activity, but leaving a mail client open so that they are notified of new mail is not. Use background services so that it doesn’t matter which apps are running.
Zero tolerance on UI clutter. While UX people like me may sometimes deplore clutter and idolise minimalism on aesthetic grounds, for the novice user, every bit of clutter is something that they feel like they should know how to use.
Explain things clearly. Keep words to a minimum, but ensure that the user always feels confident that they know what clicking a given element will do.
Undo everywhere. Offer an “undo” option wherever possible. If you’re dealing with small but important items (such as e-mail), consider offering a non-destructive way of getting e-mail out of the user’s face – “archive” instead of “delete”.
Use icons and words together. Novice computer users may be young or old, and users of any age may have poor vision or may not speak the language in which the interface was written. These may result in users finding either icons or words easier to understand on a control. Providing both, by using clear iconography and simple text together, helps to alleviate this problem.
I’ve mocked up a couple of interfaces to show a desktop environment that adheres to these principles. The first shows the “desktop”, taskbar and an example notification:
The second shows the mail app with example messages:
Is there anything you particularly like or hate about the mockups or the design principles behind them? Bear in mind that if you consider yourself tech-savvy or a software designer yourself, you’re probably not the target audience for this desktop environment – pretend to be your mother or grandfather for a minute and see how you feel about the suggestions I’ve made.
I’m happy to go further with these designs if you think it’s useful, and of course your own ideas and suggestions are more than welcome. The comments section is yours!
For anyone wondering, the mockups in this post were generated with Mockingbird, an excellent UI mocking web-app.
As a former supporter of the Liberal Democrats, I found my support leaning toward Labour due to the Lib Dems’ ongoing disastrous coalition with the Conservative party. But in truth, the Labour party are just a convenient political marker for some of my opinions on economic and social policy. What I really care about, I suppose, is progress – changing things that are broken, trying new ideas until we discover something that makes the country work better.
But all three main parties now label themselves as “Progressive”. (I suppose “regressive” isn’t much of a vote-winner.) The minor parties mostly have limited agendas that make it impossible to support them to the exclusion of all others. Who, then, do I vote for? The truth is probably that none of the UK’s political parties are as progressive as I would like, but more than that – a politician being progressive on my behalf isn’t really what I want at all.
I want to design the future.
Then I want to engineer the future.
Then I want to sit back and think “bloody hell, we made that.”
That’s what gets me out of bed and halfway across the county five mornings a week, what keeps me sketching interfaces and gets me through design meetings, what keeps me coding and soldering and getting covered in grease and salt-spray.
I’m not pretending that I could engineer the future of this country by myself, or that I should have any more of a say than the other sixty million of us, but I’d like to at least have some input besides a simple vote. As far as I’m aware, there exist only two ways of having this kind of input – sell your soul for a career in politics, or be ignored on e-petitions.
All of this leads me to the conclusion that having our voice heard and our experience utilised on our own terms is not something that a nation state can offer its citizens. Our voices are heard and our experience utilised by our families and friends; at our places of work – tribes of a few hundred people at most – but not on a national scale.
Is there some useful way for citizens to help engineer their future at the state level, or are we relegated to having that kind of influence only in our hundred-strong social tribes? Are there any countries that are significantly better at this than ours, countries that progress with heavy citizen involvement? Am I dreaming of an impossible society, and most importantly of all, should I go to bed and sleep it off instead of filling the internet with my ranting?
Slate’s recent article, “2011 Was a Terrible Year for Tech”, coins the term “mom-bomb” for the moment that technology journalists declare a gadget so easy-to-use that it is actually useful to people who aren’t technology journalists:
He begins by praising the gadget’s intuitive interface and its easy setup process, but eventually he finds that mere description doesn’t adequately convey the product’s momentous simplicity. That’s when he drops the mom bomb: This thing is so easy that even my mom could use it.
I’m blessed with parents that, by and large, ‘get’ technology. Their VCR never flashed 12:00 (and now they have a DVD recorder); they both have Android phones that they can happily e-mail from. My grandparents are a different story, of course. Two of them have almost never used a computer, but my Granddad has a nice new shiny one and uses it regularly. But as the article points out, what tech journalists and we tech-savvy users think is simple and ‘user-friendly’ often falls far short of the ‘mom (or granddad) test’.
A few observations spring to mind:
- Moving photos from a digital camera to a computer is one of the simplest tasks non-‘tech-savvy’ users often want to do. But when you plug in a digital camera, Windows 7 helpfully pops up this dialog:
Do I want to “Import Pictures and Videos” using Windows, or using Windows Live Photo Gallery? What’s the difference? Do I want to “Copy pictures to [my] computer”? Do I want to “Download images”? Where will the photos go? Will they still be on the camera? I just want to see my photos, so I click “Open device to view files”, but what the heck is “DCIM”?
- I set Google as his browser homepage, and since then, he has been getting his news not from the BBC News bookmark I created, but using the ‘News’ link on Google’s own menu that appears at the top of its pages:
…which is great, except that Google can change that menu at any time. And of course they are doing exactly that:
To my granddad, and many other novice internet users, the distinction between bookmarks – which only change if you want them to – and web page navigation menus – which can change at the webmaster’s whim – is not necessarily clear.
It’s my family duty to be tech support, and occasionally I am called upon to fix things that have actually gone wrong. But more often than not, I am called upon to try to rationalise a simple task that is unexpectedly complex to perform. This complexity has usually arisen because the software’s developers and most vocal users are so immersed in common UI paradigms that they just don’t notice that the complexity exists. For the novice user, on the other hand, even your software’s installation wizard is complexity they’d rather not deal with.
The Slate article is right to cite Facebook’s user interface as a particularly onerous example of software complexity. Feeds, live updates, inboxes, hidden inboxes, walls, profiles, Timeline, comments, likes, tags – some users need and revel in that level of complexity, but a significant number just want to, say, see what their kids are up to. I’m nervous that one day soon, my granddad will ask me to set him up with a Facebook account. I’ll dutifully comply, log him in, and give him this:
Where does one even begin? There are multiple feeds, multiple menus, pop-up and pop-down boxes. How do you add one of these “status” things? How do you add a friend? How do I send a message to someone? What’s public and what’s private? Why is there so much stuff?
In the world of User Experience (UX) design, we spend so much time thinking about how software will be used and by whom – personas, use cases, red routes and all the rest. But in the majority of software I see when working with novice users, it seems that either the novice user has not been considered, or their persona is paid lip service while the latest excitingly complicated new features are bolted onto the software.
As creators of software and of user experiences, I know we can do better than this.
Do you have any thoughts on how we can design better for the novice user? Just want to vent about an app with a particularly poor UI, or about a relative with a particularly poor grasp of computing? Fire away in the comments below!
It’s getting on for two years since I first drunkenly mocked a film in “By the Numbers” style. I’m now onto my eighty-third and slowly but surely running out of ideas and interesting things to mock. I think a round hundred would be a good place to stop, so I’m taking suggestions as to what the next sixteen films should be, and particularly what I should end on.
A film to end on is particularly troublesome, as I’ve already given one film a rating of negative aleph omega, and the review of Dragonball Evolution probably marks the apex of the “over 9000” running joke. All suggestions are very much appreciated!
Suggestions so far have included:
- The Room (which Dan has been on at me to review for months now)
- The Princess Bride
- Plan 9 from Outer Space (often cited as the worst film ever made)
- Mystery Science Theater 3000: The Movie (possibly the most meta choice)
Any more? :)