You are viewing banana

LiveJournal is an on-line diary. It used to be excellent but I don't like it any longer. You can find me at jbanana.dreamwidth.org nowadays.


Kingdom of Banamia
kevcyn
The banner for this page is should come out in some suitable font. The one I can see is KellyAnnGothic.
Recent 29 entries

J's LJ friends


Recent entries
Calendar
Profile
Update
Logout
LJ home
Random LJ user

Monday, June 17th, 2013


5:00 pm alistapart_rss

This week's sponsor: Igloo Software

http://feedproxy.google.com/~r/alistapart/main/~3/mMOKelnXCko/alistapart

http://www.igloosoftware.com/campaigns/alistapart

Igloo is now free with up to ten people, helping you work better with your team and your clients. Get your (responsive!) Igloo, and start sharing blogs, calendars, files, forums, microblogs and wikis today. And as your Igloo grows, it’s only $12/person each month.


respond to this

3:00 pm alistapart_rss

Ughck. Images.

http://feedproxy.google.com/~r/alistapart/main/~3/UHauHAHdSDY/

http://daverupert.com/2013/06/ughck-images/

» Ughck. Images.

In a follow-up to his ALA article Mo’ Pixels, Mo’ Problems, Dave Rupert talks about all the progress we've made toward responsive image solutions — by which he means no progress has been made.


respond to this

Sunday, June 16th, 2013


9:25 pm jbanana_dw

Ups and downs

http://jbanana.dreamwidth.org/64346.html

Life gives with one hand and takes away with the other. As many marvellous things as there are in life (and there are loads, from physical safety to intellectual stimulation) and as much as I want to be thankful for all those things, I'm worn down by wading through the treacle of day to day occurrences.

Other people have to be negotiated with, compromised with and taken into account. They want different things, and they have needs and desires. Dealing with them all takes energy away from actually doing things.

Events overtake intentions, and the physical world gets on and does its thing despite what one might want, and despite how inconvenient its actions might be.

Can I sit under a fig tree until I've figured out how the universe wants me to deal with this, please?

I'm not keen on figs, though, and I have a lot of other stuff that I need to be doing...

comment count unavailable comments


respond to this

6:48 pm qcjeph_tumblr

mroobit: Fan art of Jeph Jacques’ Claire from QC. I kind of...

http://jephjacques.com/post/53147271915



mroobit:

Fan art of Jeph Jacques’ Claire from QC. I kind of adore her and I love her puns.  I may also be seen making her same pun grin at times.

I already spent more time on this than I intended (being that it was just going to be a warm-up), so I didn’t end up drawing the object she was going to be leaning against.


respond to this

12:00 pm timb_ongoing

Unmapped Lands

The-Unmapped-Lands

I ran across Theresa Couchman on The Setup (always recommended), which convinced me to buy The Unmapped Lands, and wow, is it ever fun.

There is a whole lot of stuff in this book; probably more than really necessary, because the people in it are so interesting. I was actually sort of hoping Ms Couchman would ease off on the action a bit and just run with them a bit, but I never wasn’t entertained. Let’s see, we start with a hardass witch in Albany, NY, and then we get a demon and a smart rat and an Intuitive and a Magician and an alternate-reality portal and a grimoire and dragons and giant spiders and, yeah, there’s more, but you get the idea. It’s even coherent, mostly.

It’s her first & only book. Discovering someone with this much talent just getting started, what a stroke of luck.


respond to this

Saturday, June 15th, 2013


3:40 pm ia_blog

Cost to Store All US Phonecalls Made in a Year in Cloud Storage so it could be Datamined

http://blog.archive.org/2013/06/15/cost-to-store-all-us-phonecalls-made-in-a-year-in-cloud-storage-so-it-could-be-datamined/

http://blog.archive.org/?p=6954

Because of recent news reports, I wanted to cross check the cost feasibility of the NSA’s recording all of the US phonecalls and processing them.

These estimates show only $27M in capital cost, and $2M in electricity and take less than 5,000 square feet of space to store and process all US phonecalls made in a year.   The NSA seems to be spending $1.7 billion on a 100k square foot datacenter that could easily handle this and much much more.    Therefore, money and technology would not hold back such a project– it would be held back if someone did not have the opportunity or will.

Another study concluded about 4x my data estimates others have suggested the data could be compressed 10:1, and the power bill would be lower in Utah.   A Google Doc version of the spreadsheet and a cut and past version:

number of call-minutes per person per month 300 minutes (estimate from my family’s usage)
sides in a phonecall (caller+receiver) 2 since most calls are domestic, only need to record a call once for each reciever/caller pair
number of people in the US 315,000,000 https://www.census.gov/
number of bytes/sec in a phonecall 8,000 this is the uncompressed number, could be compressed to 1/2 to 1/4 easily
cost of a Petabyte (PB) of “cloud” storage $100,000 this is basically what the Internet Archive pays. Petabyte = 1,000 terabytes
Square feet of datacenter space per petabyte 16 2 feet wide by about 8 feet including corridor between racks
Power to run a PB 5 kilowatts
Cost per KWhr $0.15 California costs (higher than much of the country, could be 1/2 in other places)
number of bytes/min in a phonecall 480,000 calculated from above
number of bytes/month for a person 144,000,000 calculated from above
number of bytes/month for the US 22,680,000,000,000,000 calculated (divided by 2 because there is a caller and reciever, don’t need to double count)
number of PB/month for the US 23 calculated
number of PB/year for the US 272 calculated
Cost to store all phonecalls made in a year in the “cloud” $27,216,000
Square feet to store all phonecalls 4,355
Cost of datacenter power for all phonecalls for a year $1,788,091


respond to this

Sunday, June 16th, 2013


12:00 pm timb_ongoing

Golang Diaries I

Go-Love-Hate

Some of the most popular things on this blog have been diaries I’ve written as I explore my way through a new technology or hobby. I’m picking up the Go Programming Language, whose HQ is (significantly) at golang.org and which I’m going to refer to as “Golang” for reasons which should become obvious. Whatever you thing of Golang, it’s apparently got some momentum and some seriously smart people are working on and in it; so this may actually be of service to the community.

At this point, I should tip my hat to Mark Pilgrim, who taught me that a really good time to write about something is while you’re still discovering it, before you’re looking at it from the inside.

Big Gripes

My leading gripes with Golang right now probably aren’t the biggest problems with the language; rather, the biggest obstacles to learning it.

First, the name. “Go” has too many meanings and is among the world’s lousiest Google search disambiguators. After a few painful instances of searching for things like “go array literals” and “go repl” I got into the habit of sticking with Golang; and so will this diary.

The second big gripe is that Golang has neither an IDE nor a REPL. I don’t think, in 2013, that I should insult my readers’ intelligence by explaining why these are good things for a programming language to have.

I have sort of a REPL workaround, a little Golang program called c.go in which I can try coding idioms and type go run c.go; Golang’s compiler is very fast and its diagnostics are really good. But it’s not a real REPL; I can’t build up exploratory state.

Illustrated Love Letter

So here’s a little code fragment that I’ll use to illustrate a few things about Golang that seem nice to me. Well, and some minor gripes too.

type Vector []float64

func (v Vector) MeanAndSignum() (mean float64, signum []int) {
        total := 0.0
        signum = make([]int, len(v))
        for i, value := range v {
                total += value
                switch {
                case value < 0.0: signum[i] = -1
                case value == 0.0: signum[i] = 0
                case value > 0.0: signum[i] = 1
                }
        }
        mean = total / float64(len(v))
        return
}

Let’s step through this line-by-line.

 type Vector []float64

A Golang type is not a class, it’s more like a C typedef. Which is easy to understand, and probably one of the reasons why Golang is fast.

 func (v Vector) MeanAndSignum() (mean float64, signum []int) {

There’s a lot of stuff to unpack here:

Golang isn’t object-oriented. So while nothing is an object, anything can be the target of a method. The leading (v Vector) means that if you’ve got a Vector named foo, you can write foo.MeanAndSignum() to call this function. And that inside the body of the function, you can refer to the receiver of the function as v; quite reminiscent of self in Python.

The fact that MeanAndSignum is capitalized means that it’s exported; visible outside whatever package you’ve defined it in.

The (mean float64, signum []int) is really clever. It says that this method returns two values (yes!) and simultaneously defines names for them that you can use inside the function. Then when you return, whatever the current values are is what gets returned. I like this a lot. This also illustrates Golang’s idiosyncratic declaration rhythm (name then type) and even more idiosyncratic array-declaration syntax.

 total := 0.0

The := says I’m declaring a variable, and please infer its type from the right-hand-side of the statement. I could also have said var total float64 = 0, but this is super-readable.

 signum = make([]int, len(v))

I don’t have to declare signum because I did that up in the function declaration. make is a built-in that allocates an empty whatever; once again, I admit I haven’t entirely warmed up to the array syntax. I’m also unconvinced that the distinction between := and = is essential; feels like unnecessary ceremony.

 for i, value := range v {

Now this is really sweet. The for/range construct gives you both the array index (in i), and the value (in value). Of course, there’s syntax for ignoring either. Very handy.

 total += value

Nice C-flavored code (there’s even ++) but look, Ma, no semicolons!

 switch {
 case value < 0.0: signum[i] = -1
 case value == 0.0: signum[i] = 0
 case value > 0.0: signum[i] = 1
 }

Isn’t that a nice compact switch idiom? Definitely C-done-right. Of course, in some other languages switches are expressions that return values, sigh.

 mean = total / float64(len(v))

Yeah, it’s statically typed, so you have casting. I’m not sure why it was a good idea to invent a new syntax, but this one seems OK. I’m also not sure why, since you have type inference, you can’t also have type auto-conversion, even Java would do the right thing without a cast. But no biggie.

 return

See, because you named the return values in the declaration, you don’t need to mention them explicitly here. But if you want you can have traditional return statements including the values.

Nits & Whining

Maybe I’ll come to realize eventually that these aren’t problems, but they’re irritating me at the moment.

  • Golang will not let you compile if there’s an import or declared variable that’s unused. OK, I understand that Cleanliness Is Next To Godliness, but this is seriously slowing me down; probably a third of my attempts to run my damn program fail because I’ve forgotten to remove debugging apparatus, or I’ve sketched in a variable but not used it yet. How about a compiler switch or something?

  • There doesn’t seem to be a way to declare a constant array, what in a Java class I’d call final static String[] COLS = {"Red", "Blue"};

  • In fact, I still find array declarations and literals egregiously weird, for example [...]. I’m really hoping it starts to feel natural, because I’ve rarely managed to type in an array declaration right first time so far.

Responsive!

I filed a bug on June 6th, and it was fixed on the 12th. Gotta love that.


respond to this

Friday, June 14th, 2013


12:00 pm timb_ongoing

findIDP Tech Choices

FindIDP-Tech-Choice

I’m building a service that uses a bunch of heuristics to, given an email address, figure out which Identity Provider (IDP) you should try to use to log that address in. I’m doing it in Go. Here’s why.

The Context

You can read about about the whys of the thing in Project findIDP. But here’s the how:

  • You get an email address.

  • You do a whole bunch of network retrievals; glance at the domain’s MX record, try WebFinger, ask some well-known providers whether they host the domain.

  • People can go online and select their own IDP for email addresses they control. There’s a dorky little 3-column database for that.

  • It’s protocol-independent; I would hope to support lots of IDPs and flavors, probably via Backbone.js.

So logically it’s pretty easy, except for: The database might have a lot of records, the query load might get really high, and the logic is all asynchronous and concurrent.

Options

My thinking went like this:

  • Life is too short for server-side Java.

  • I’ve done my last few in Ruby, and I’m fine with that but it’s time to broaden the horizons; also I’m a little worried about scaling if this thing catches on.

  • Python would be fine but if I’m going to learn something new, I want new and different.

  • I would love to do this in Erlang, or even better, Elixir. But...

  • The things that life is too short for include sysadmin shit, so I don’t want to think about server instances and subnets and that whole trail of tears. I want something I can run on a mainstream commercial PaaS cloud.

Having followed that line of thinking, the two options that looked best to me were NodeJS on Heroku, and Go on App Engine.

From that point of view, the choice was pretty easy. First of all, while Node is totally elegant and I’m a Heroku fan, I’ve just never managed to warm up to JavaScript. Secondly, Go is said to be psychologically comfy for C programmers, and I was one of those for a whole lot of years. Third, while App Engine has some odd performance quirks, if you treat it right you should have no trouble with a billion rows in the database or really big number of queries per second.

And since I work here, I can probably avoid, you know, paying.

Progress

So I started poking around early last week and had the service running four days later, just checking the MX and WebFinger so far. Except for there’s no WebFinger out there to check. Whatever.

I haven’t fallen in love with Go the way I did when I started using C in the Eighties or Java in the nineties or Ruby last decade. Yeah, I’m that old. I have a list of Go things I like and others I dislike and I’ll write about them. But pretty clearly, it’ll be OK for this job.

Why I’m Smiling

I’d never seen Go before. So life is pretty good when you can wade into the swamp of unknown infrastructure and get a result the same week.

But here’s the real happiness: I have choices! I’m dead sure that this could’ve been made to run just fine using at least one other PaaS combo. And if I were willing to become a cloud sysadmin, lots more choices.

Choices are good on the data side too. I have simple flattish tuples, and I haven’t for a moment considered going relational. Whatever hosting option I picked, there’d be a decent post-SQL data store; probably more than one.

There’s never been a better time to be a developer.


respond to this

Thursday, June 13th, 2013


2:32 pm qcjeph_tumblr

Welcome to Flavor Country: On the dangers of democracy

http://jephjacques.com/post/52882891186

Welcome to Flavor Country: On the dangers of democracy:

flavorcountry:

This happened in a dream I had:

  • I am working in the White House
  • The American people have somehow managed to elect a tiger Vice President
  • Like an actual, literal tiger
  • The White House is now its hunting ground
  • WE CAN’T SHOOT THE TIGER BECAUSE IT’S THE VICE PRESIDENT OF THE UNITED STATES…


respond to this

4:37 pm alistapart_rss

Google Changes Rankings of Smartphone Search Results

http://feedproxy.google.com/~r/alistapart/main/~3/2cKmN-l1KtU/changes-in-rankings-of-smartphone_11.html

http://googlewebmastercentral.blogspot.com/2013/06/changes-in-rankings-of-smartphone_11.html

» Google Changes Rankings of Smartphone Search Results

Google has started decreasing the ranking of sites with misconfigured mobile content redirects and errors. Highly recommended for any developer who cares about site rankings in Google (i.e. all of them).


respond to this

Wednesday, June 12th, 2013


12:00 pm timb_ongoing

Native Mock Orange

Native-Mock-Orange

Wikipedia does not list this among the common names of Philadelphus_lewisii but that’s what we call it. At the moment it is a wild eruption of blossoms and perfume, actually managing to outshine the roses, which are in full-on attack mode too.

The flowers are too many to count.

Philadelphus lewisii in bloom

Since they are mostly white, they wear the colors the sun drapes them with, depending on the time and the angle.

Philadelphus lewisii blossoms Philadelphus lewisii blossoms

I find that I almost never touch the white balance on the pictures coming out of the Fuji X-E1; which is particularly impressive with this kind of shot.


respond to this

12:00 pm timb_ongoing

Good Internet Baseball

Internet-Baseball

I was in OpenID meetings at Microsoft all day Tuesday, and started driving home to Vancouver at 4PM. This a fairly painful route at that time, but the Blue Jays and White Sox, via MLB on the Nexus 7, reduced the pain considerably.

The problems included an accident on 405 (but there’s always an accident on 405) and that Skagit-river bridge that fell down last month (but the detour isn’t terrible). Still, a lot of stop-and-go. If you could just keep going you could do the trip in under 3 hours; it took me a just over 4.

So right there in the Microsoft parking lot, I pulled up the MLB app on the N7 and checked out what was on; then tuned into the Toronto pre-game show. I was going to have been a Blue Jays fan this year, but they’ve been so awful; still, I enjoy listening to Jerry Howarth.

I have a little 1-Amp adapter for the car power which can’t charge the N7 but can keep it running for a long, long time. Its speaker is kinda low-fi but plenty loud enough even on the highway.

When I pulled into Vancouver the game had just switched into extra innings; so when I got home to the fast WiFi, I sat down to enjoy the game on the N7 screen (damn, MLB gets a fine picture on that screen; just razor-sharp) along with pizza and a pilsener. It ended just in time for me to read my 7-year old the evening’s instalment of Narnia.

As for the game; well, it was a little ridiculous. The Sox handed it to Toronto on a plate, what with a couple of crucial errors and the plain farce of Maicer Izturis (5’8”/170lb) knocking the ball loose from Tyler Flowers (6’4”/245lb). Still, Wang may be a viable band-aid on the Jays’ bleeding starting-rotation neck wound, and it was nice to watch Janssen work; he might be a premier closer if the Jays had more save opportunities.

MLB gets the Internet better than all the other sports franchises put together. I spend a hundred and change a year for the service, and it’s worth every penny. And the N7 is a terrific baseball platform.


respond to this

Friday, June 7th, 2013


12:00 pm timb_ongoing

Project findIDP

Why-findIDP

What happened was, I got an invite to Poetica, the new startup by Good Internet People Blaine and Maureen. (Poetica has a strong central idea and is aesthetically a treat.) The login experience was unlike anything I’d seen.

The screen had just one blank space: “Type your email address.” So I picked my address at our textuality.com family domain, where mail happens to go through Google apps.

The next thing I saw was the approval screen from Google saying “OK to use your identity to log into Poetica?” Then there I was, signed-in and seeing the new-user experience. Very, very slick; and of course no passwords involved. Go there, try it yourself, even if you don’t have a Poetica account; put in a few email addresses and watch what happens.

So I asked Blaine how it’d guessed which Identity Provider (IDP) and he said “MX record. But we try lots of other things too.” He listed a few, then wrote Fixing Sign-in, where he digs a little deeper.

So, I thought about this, and decided that:

  • This is good behavior and should be encouraged;

  • in fact, it should be offered as a service,

  • with an open-source implementation if anyone doesn’t want to rely on the service,

  • and should be protocol-independent, so it’ll work with Persona and SAML and OpenID and whatever comes next,

  • and it should let humans drop by and set the IDP for any email address they can prove they own,

  • and the code would be pretty easy to write for anyone comfortable with DNS and OpenID and HTTP and WebFinger and JSON/XML wrangling,

  • but maybe a little boring, so the people who are qualified wouldn’t bother, and the people who aren’t might find it scary.

So I think I’ll write it. I went and bought findIDP.com/.net/.org. I bounced the idea off Blaine and he didn’t think it was crazy. I don’t think it’ll be expensive to run; but if it is, I can probably get Google or the OpenID foundation or someone to cough up some dough, and who knows, maybe you could run ads on it.

Also I’m a little bored with client-side Java and server-side Ruby; feel like trying out some new technologies.


respond to this

Wednesday, June 12th, 2013


6:55 am dev_dot_opera

Understanding 3D Transforms

http://dev.opera.com/articles/view/understanding-3d-transforms

In this article we'll dig in to 3D transforms in detail, looking at the fundamental differences between 3D and 2D transforms, the 3D transforms available, and some demos that show how these work.


respond to this

6:54 am dev_dot_opera

Better performance with requestAnimationFrame

http://dev.opera.com/articles/view/better-performance-with-requestanimationframe

This article discusses how you can (and should) improve the performance of your animations, using the requestAnimationFrame API instead of the old setInterval/setTimeout methods, and how requestAnimationFrame is used.


respond to this

3:51 am artima_feed

ScalaTest 2.0.M6 Preview

http://www.artima.com/forums/flat.jsp?forum=270&thread=352051

The 2.0.M6 milestone release of ScalaTest is coming soon. It is a major release with many new features. In this post, I give a preview of the new features, and ask for feedback.


respond to this

Tuesday, June 11th, 2013


3:41 pm alistapart_rss


respond to this

2:04 pm jbanana_dw

Link of the day

http://jbanana.dreamwidth.org/64205.html

Nice story about how the Thatcher years could have been so different...

...plus the best blog comment I ever did read.

http://www.legaltechnology.com/latest-news/margaret-thatcher-jaffa-cakes-me/

comment count unavailable comments


respond to this

6:04 am artima_feed

ScalaCheck: The Definitive Guide PrePrint released

http://www.artima.com/forums/flat.jsp?forum=270&thread=352017

This new book explains the big ideas behind ScalaCheck, a property-based testing library for Scala, and shows how to use it effectively to write tests at the higher level of property specifications.


respond to this

Monday, June 10th, 2013


8:27 pm qcjeph_tumblr

QUESTIONS

http://jephjacques.com/post/52667802191

I know you’ve dealt with depression a lot in the past. I’m currently quite depressed, and one of the biggest issues for me is I can’t shake the feeling that my life is now completely pointless. I try to spend time with family and friends and tell myself that they care, but I have few friends left at the moment and anytime I convince myself someone cares it only gives me a brief period of slight improvement until I fall back into feeling pointless. Any thoughts on fighting this feeling? Thanks!

That is one of the prime symptoms of depression unfortunately! I’m not sure how great the advice I have to offer is, but the two main things you have to do are to seek professional help and remember that it is an illness in your brain making you feel that way, not the way things actually are. You may need therapy or drugs or a combination thereof to help you overcome it, so I strongly suggest you talk to a professional.

Jeph, I was talking to a friend about Twokinds, by Thomas Fischbach, specifically R34. I couldn’t help but wonder if you’ve ever done or considered doing R34? I don’t want this to sound like a request or anything, just genuinely curious ^_^

I would be really uncomfortable drawing porn of my characters. They feel like my kids to me.

With all the comics you’ve done, have you ever accidentally reused a comic title?

Probably. I just come up with the titles at the last minute as I letter the strips, and while I usually check my archive to make sure they’re unique, sometimes I forget.

Would you find it an interesting side project to do a history of AnthroPCs and their civil rights movement?

I’m sure it would be interesting, but I’d rather just tell jokes.

I feel like we should be tattoo bros since we were both tattooed by the same dude. Can we be tattoo bros?

only if there is a secret handshake involved

Sorry if this has come up before but when does/did QC turn 10?

It turns 10 on August 1st! I am pretty excited.

Hey, I wanted to ask, when you first started Questionable Content, did you start with a tablet or no?

Yep, it’s always been done entirely digitally.

Hi Jeph, I’m attempting my own webcomic. I love the art side of things and developing characters but am just terrible at writing. Any tips on writing good dialogue?

I’m not sure I have much useful advice, the main thing is to practice and try to give each character a separate “voice.” One of the advantages of working in a serial medium such as comics is you have lots of time to let your characters develop naturally, and as you become more familiar and comfortable writing them their dialogue will evolve along with everything else.

What kind of job could Pintsize get in his current chassis?

Butt Rubber

You know those questions like “Why are we here?” “Is there such a thing as free will?” “Why would a just and loving god allow so many awful things to happen?” You know, the kind of deep and profound philosophical questions that only God would know the answer to. If your characters ever got the chance to personally ask you those questions, what would you tell them?

I would go to the hospital because if my characters start talking to me I am probably having a stroke or something

so i finally decided to give deathmole a listen (not that i didn’t like your music or anything but i’m so bad at procrastinating when it comes to music) and MAN. i LOVE it holy crap. it sounds like you have a lot of fun making these tracks.

Thanks! The only thing I enjoy more than making comics is making music.

Real question for you this time, sir. How do you feel about the new Queens of the Stone Age and Daft Punk albums? Also about the story where Josh Homme made Elton John dinner whilst recording for one of the tracks?

I don’t really listen to QotSA but I like the new Daft Punk a lot!


respond to this

5:00 pm alistapart_rss

This week's sponsor: Typekit…

http://feedproxy.google.com/~r/alistapart/main/~3/rc5WFsaUP5g/

http://typekit.com/?utm_source=grok&utm_medium=sponsor&utm_content=gkge130201&utm_campaign=general&count=3

Desktop fonts in Adobe Typekit

Four years ago, we set out to on a goal to bring great typography to the web. Now, we’re taking the next step in our evolution: desktop fonts and web fonts together in a single Typekit subscription.

On June 17, we’ll be making 175 beautiful font families from the Typekit library available for desktop use. You’ll be able to sync them to your computer and use them in all your applications for web mockups, print design, word processing, and more.

Want a sneak peek? Ben made a screencast showing how it works. Let us know what you think!


respond to this

Sunday, June 9th, 2013


5:52 pm qcjeph_tumblr

Iain Banks 1954-2013

http://jephjacques.com/post/52576357846

I can’t think of a single author who has had a more profound effect on my work than Iain Banks. His science fiction novels, particularly the Culture series of books, are the template upon which all of the sci-fi elements of my comic are based.

The stories themselves run the gamut of emotion- bleak, hilarious, triumphal, anarchic, frightening. You never know quite what you’re in for with each book, sometimes not until you’ve finished it and had a chance to look back and think “wait, WHAT just happened?” To me that was always part of the appeal.

Banks’ Culture novels tend to focus on the dark side of the anarcho-utopian far-future society he invented, and with good reason- that’s where the interesting stuff happens. But the vision of the Culture as a whole is what really got my attention and continues to fascinate me and inform my work. The idea of a post-scarcity society where AIs and humans and aliens freely intermingle is nothing new, but the color, clarity, and energy with which Banks portrays his is simply magical. To say nothing of the ship names.

Learning of his illness hit me as hard as it hit any other fan of his work. Not three days ago I was lamenting to a friend that soon we would be without one of the seminal (in my opinion) voices of modern science fiction. I had no idea how soon that would come to pass. RIP Iain, thank you so much for everything.

If you’re unfamiliar with Banks’ work, here’s a short list of my favorite novels of his.

Look To Windward

Player of Games

The Hydrogen Sonata

The Algebraist*

Surface Detail

Consider Phlebas

*not a Culture novel, but still a really fun standalone story


respond to this

4:27 pm jbanana_dw

Vegetating

http://jbanana.dreamwidth.org/63749.html

I planted some veg in the garden. When I've tried this before, the slugs ate the lot. This time I have some parsnips, runner beans, tomatoes, spring onions and strawberries. I've put six beer traps for slugs around it all. Let's see how that goes...

comment count unavailable comments


respond to this

Saturday, June 8th, 2013


2:37 am qcjeph_tumblr


respond to this

Thursday, June 6th, 2013


12:00 pm timb_ongoing

Civilization

Community-Centres

I’m writing this in the library at Renfrew Park Community Centre, waiting while my son’s at a martial-arts class. Just walking in here, I got all choked up.

I guess most places in North America have these scattered around. Quite likely lots of other places round the world too, only I’ve never been to any because they’re emphatically for locals, usually. They’re where you find gyms and meeting rooms and swimming pools and rinks and libraries, in some combination.

In Vancouver, they’re pretty well all busy all the time. There are aerobics and yoga and swimming and karate and committees happening here. And in the library, lots of people online and lots of people reading and some just taking refuge from the mean streets, hanging out. Lauren asked me to look for a movie and it wasn’t here, but I accidentally picked up Home Fires by Gene Wolfe, No Enemies, No Hatred by Liu Xiaobo, and African Guitar Summit.

Nothing about the centre is luxurious, but it’s comfy and convenient and has staff to help people out; mostly unpestered and bored on a Thursday evening. There is a woman with a field-hockey stick looking at manga, and another in a wheelchair in the mysteries, and a muscular guy with aggro tatoos reading Franklin the turtle to a toddler.

I’m sitting in a beat-up but OK soft chair using the WiFi (you have to have a library card) which is klunky to get on, and fades in and out a bit, but good enough to blog and write code by.

My city taxes aren’t terribly high, and still we have enough to provide this. I am lucky, so lucky, swimming in the water of a working civic society where we take not-terrible care of each other; and have community centres.

Like David Brin says: “I am a member of a civilization.” Yup.


respond to this

6:33 pm artima_feed

Akka Concurrency by Derek Wyatt Published!

http://www.artima.com/forums/flat.jsp?forum=270&thread=351929

Derek Wyatt's Akka Concurrency is in print and shipping! This book picks up where the Akka documentation leaves off, exploring the how and the why of Akka. It is an entertaining and insightful guide that will teach you how best to program with actors and futures.


respond to this

3:23 pm artima_feed

Use Uncertainty As a Driver

http://www.artima.com/forums/flat.jsp?forum=270&thread=351309

Uncertainty is normally seen as something you must either suppress or avoid. Of this many people appear, well, certain. That you should embrace it and use it to help determine schedule and design is not immediately obvious.


respond to this

11:30 am alistapart_rss

Karen McGrane on Content: The Alternative is Nothing

http://feedproxy.google.com/~r/alistapart/main/~3/8N_c-7U9_M0/the-alternative-is-nothing

http://alistapart.com/column/the-alternative-is-nothing

The history of technology innovation is the history of disruption. New technologies become available and disrupt the market for more-established, higher-end products.

We’re witnessing one of the latest waves of technological disruption, as mobile devices put access to the internet in the hands of people who previously never had that power. Always-available connectivity through PCs and broadband connections has already transformed the lives of people who have it. Mobile internet will do the same for an even larger population worldwide.

Despite examples from countless industries where disruption has taken place, it’s easy to pretend that it won’t happen to the web. Today’s mobile internet is janky. It’s slow. It’s hard to navigate. It offers only a paltry subset of what’s available on the desktop. It’s hard to imagine anyone truly preferring it.

Clayton Christensen, author of The Innovator’s Dilemma, argues that lower quality and less-than-adequate performance is, in fact, at the heart of what makes disruptive innovation happen:

In industry after industry, Christensen discovered, the new technologies that had brought the big, established companies to their knees weren’t better or more advanced—they were actually worse. The new products were low-end, dumb, shoddy, and in almost every way inferior. But the new products were usually cheaper and easier to use, and so people or companies who were not rich or sophisticated enough for the old ones started buying the new ones, and there were so many more of the regular people than there were of the rich, sophisticated people that the companies making the new products prospered. Christensen called these low-end products “disruptive technologies,” because, rather than sustaining technological progress toward better performance, they disrupted it.
Larissa MacFarquahar, The New Yorker

Disruptive technologies aren’t competitive at the start

In terms of quality, disruptive technologies don’t compete. They often have a less-polished design or are crafted of lower-quality materials, equivalent functionality (like bandwidth or memory) costs more compared to earlier products, and they don’t perform as well on key metrics.

People often point at the failings of the mobile internet as rationale for why it won’t overtake the desktop web. “No one will ever want to do that on mobile” gets used to justify short-sighted decisions. Truth is, we can’t predict all the ways that people will want to use mobile in the future. Jason Grigsby, co-author of Head First Mobile Web (with Lyza Danger Gardner) says “We can’t predict future behavior from a current experience that sucks.”

Disruption happens from the low end

Disruptive technologies take off because they create a new market for a product. People who previously could not afford a particular technology get access to it, in a form that (at least at the start) is less powerful and of lower quality. These people aren’t comparing between the more established technology and the new one. They have no other alternative.

McKinsey estimates that the mobile internet could bring billions of people online:

However, the full potential of the mobile Internet is yet to be realized; over the coming decade, this technology could fuel significant transformation and disruption, not least from the possibility that the mobile Internet could bring two billion to three billion more people into the connected world and the global economy.
Disruptive technologies: Advances that will transform life, business, and the global economy

Disruptive technologies eventually improve

Over time, the quality of low-end technology improves. As more and more people buy into a cheaper, less-capable technology, more attention and focus goes toward refining it. Eventually, it overtakes its larger, more capable predecessor.

This is the challenge we face in mobile right now. Mobile won’t always be a secondary device or a limited, on-the-go use case. Mobile will be the internet. Comparing its shortcomings to what the desktop web does well is missing the point. Mobile will be better than the desktop—but it will succeed on what it does uniquely well.

McKinsey estimates the astonishing potential economic upside of the mobile internet:

We estimate that for the applications we have sized, the mobile Internet could generate annual economic impact of $3.7 trillion to $10.8 trillion globally by 2025. This value would come from three main sources: improved delivery of services, productivity increases in select work categories, and the value from Internet use for the new Internet users who are likely to be added in 2025, assuming that they will use wireless access either all or part of the time.
Disruptive technologies: Advances that will transform life, business, and the global economy

Today, the mobile internet provides a lousy experience. For billions of people coming online across the world, it will be their first (and only) way to access the web. The history of disruptive innovation shows that it’s okay if the mobile internet provides a less-than-adequate experience today. Most mobile internet users won’t be comparing between the desktop web and the mobile web. For these people, the alternative is nothing.

Tomorrow, the mobile internet will provide a better experience. It’s up to us to make it happen.

 


respond to this

Tuesday, June 4th, 2013


12:00 pm alistapart_rss

Designing for Breakpoints

http://feedproxy.google.com/~r/alistapart/main/~3/zFkOLCNW-WE/designing-for-breakpoints

http://alistapart.com/article/designing-for-breakpoints

Jeremy Keith notes that what happens between the breakpoints is just as important as the breakpoints themselves—perhaps even more so. While I agree with this, we do have to start somewhere. In a way, this part of the process reminds me of storyboarding, or creating animation keyframes, with the in-between frames being developed later. We’re going to do that here.

Let’s say you’ve chosen three basic design directions from your thumbnails. Think about what your major breakpoints will look like (Figure 7.6). And here’s the key: try to come up with as few major breakpoints as possible. That might sound crazy, since we’re talking about responsive design. After all, we have media queries, so let’s use about 12 of them, right? No! If a linear layout works for every screen and is appropriate for your particular concept, then there’s no need for different layouts. In that case, simply describe what will happen when the screen gets larger. Will everything generally stay the same, with changes only to font size, line height and margins? If so, sketch those. For these variations, make thumbnails first, explore some options, and then move on to larger, more detailed sketches. Use your breakpoint graph as a guide at first and make sketches according to the breakpoints you’ve estimated on your graph.

When thinking about major breakpoints, remember to think about device classes. If you’re thinking about smartphones, tablets, laptops/desktops, TVs, and game consoles, for example, you’re heading in the right direction. If you’re thinking in terms of brand names and specific operating systems, you’re on the wrong track. The idea is to think in terms of general device classifications and, sometimes, device capabilities. Capabilities are more important when designing web applications, since you should be thinking about what screens will look like both with and without any particular capability.

Rough sketches of major breakpoints can help you determine:

  • Whether or not more major breakpoints are needed
  • Which design choice will be the most labor intensive; you might opt for a design that will better fit within time and budget constraints
  • Whether or not a particular device class has been neglected or needs further consideration
  • What technologies you’ll need to develop the design responsively
Figure 7.6: Most websites need very few major breakpoints.

So where and when will you sketch minor breakpoints? In the browser, when you do your web-based mockup. You’ll find out why and how in the next chapter. In the meantime, simply focus on making sketches of the state of your web pages or app screens at the major breakpoints of each design.

At this point, don’t worry too much if you notice that the initial breakpoints on your breakpoint graph simply won’t do. Those were just a starting point, and you’re free to revise your estimate based on your sketches. You might even decide that you need an extra breakpoint for a given design and record that in sketch form; you can add that breakpoint to your graph. This is a cycle of discovery, learning, and revision.

Think about your content while sketching

While sketching, you’ll certainly be thinking about the way things should look. My experience is that much UI sketching of this type revolves around the layout of elements on the screen. I’ve found it useful to keep thinking about the content while sketching, and to consider what will happen to the content in various situations. When designing responsively, it can be useful to consider how you’ll handle the following content in particular:

  • Text
  • Navigation
  • Tables

Oh, sure, there are many more things to consider, and you’ll end up creating your own list of “things to do some extra thinking about” as the project progresses. For now, let’s take a look at the items listed above.

Text

Before you say, “Hey, wait a minute, didn’t you just tell me that I didn’t have to draw text while sketching?” hear me out. While sketching, there are a couple of text-related issues you’ll need to tackle: column width and text size, both of which are relevant in proportion to the screen and the other elements on the page.

Column width is fairly obvious, but it can be difficult to estimate how wide a column will be with actual text. In this case, sketching on a device might give you a better idea of the actual space you have to work with. Another method I’ve used is just to make a simple HTML page that contains only text, and load that into a device’s browser (or even an emulator, which while not optimal still gives a more realistic impression than lines on paper). When the text seems too large or too small, you can adjust the font size accordingly. Once it seems right, you’ll be able to make your sketches a bit more realistic.

Think about the size of links—not only the text size, but also the amount of space around them. Both of these factors play a role in the touchability or clickability of links (and buttons): large links and buttons are easier targets, but slightly smaller links with plenty of space around them can work just as well. That said, there’s a decent chance that no matter what you choose to sketch, you’ll end up making changes again when you create your mockups.

This is the great thing about sketching that I can’t repeat often enough: you’re going to refine your design in the browser anyway, so the speed with which you can try things out when sketching means you won’t have to do detail work more than once (unless your client has changes, but we all know that never happens).

Navigation

Navigation is another poster child for sketching on actual devices. The size issues are the same as with links, but there’s a lot more thinking to do in terms of the design of navigation for various devices, which means navigation might change significantly at each major breakpoint.

Think back to Bryan Rieger’s practice of designing in text first, and ponder what you would do before the very first breakpoint if you had only plain HTML and CSS at your disposal—in other words, if you had no JavaScript. That means no, you can’t have your menu collapsed at the top of the screen and have it drop down when someone touches it. If you have your menu at the top, it’s in its expanded form and takes up all the vertical space it normally would.

This is a controversial enough subject, with even accessibility gurus in disagreement: JavaScript, after all, is currently considered an “accessibility supported” technology. But this isn’t necessarily about accessibility. It’s about thinking about what happens when a browser lacks JavaScript support, or if the JavaScript available on the device is different than what you’d expect. Your content will be presented in a certain way before JavaScript does its thing with it, no matter what the browser. So why not think about what that initial state will be?

In the chapter on wireframes, I talked about my preferred pattern for navigation on the smallest screens: keep it near the bottom of the screen and place a link to that navigation near the top of the screen. JavaScript, when available and working as expected, can move that navigation up to the top and create the drop-down menu on the fly.

But a pattern is not design law, so how you choose to handle the smallest screens will depend on your project. If I had only a few links in my navigation, I might very well put the menu at the top from the very start, and there it would stay at every breakpoint.

Remember that JavaScript and CSS let you do a lot of rearranging of stuff on the screen. That knowledge should empower you to safely design a great page with plain HTML and use JavaScript and CSS to spice it up any way you like. This is the essence of progressive enhancement.

Tables

Tables! Oh, the bane of the responsive designer (or wait, is that images? Or video? Or layout? Ahem). Tables are tough to deal with on small screens. I’d love to tell you I have all the answers, but instead I have more questions. Hopefully, these will lead you to a solution. It’s good to think about these while you’re sketching.

First of all, what types of tables will you be dealing with? Narrow? Wide? Numerical? Textual? Your content inventory should give you enough information to answer these simple questions. Once you’ve considered those, try to categorize the types of tables you have into something like the following classes (Figure 7.7):

  • Small-screen-friendly tables, which you’ll probably leave as they are, because they’re small enough and will work fine on most small screens.
  • Blockable tables, which you can alter with CSS so that each row in the table functions visually as a block item in a list (Figure 7.8).
  • Chartable tables, which contain numerical data that can be transformed into a chart, graph, or other visualization that will take up less space on a small screen.
  • Difficult tables, which are hard enough to deal with that you’ll need to come up with a different plan for them, sometimes even on a case-by-case basis. These are our enemies, but unfortunately, are the friends of our clients, who all love Microsoft Excel. Oh well.
Figure 7.7: There are several different types of tables, and different ways of dealing with them on small screens. (Sources: mobilism.nl and eu-verantwoording.nl)
Figure 7.8: One way of dealing with small screen tables is to treat each row as a block.

Thinking again in terms of progressive enhancement, the base design should probably just include the whole table, which means that the user will have to scroll horizontally to see the whole thing in many cases. On top of this, we can employ CSS and JavaScript, when they’re available, to do some magic for us. Blockable and chartable tables can be blocked with CSS and charted with JavaScript. Plenty of designers and developers have experimented with many different options for tables, from simply making the table itself scrollable to exchanging columns and rows.

The fun part is that what you do on small screens isn’t necessarily what you’ll do on larger screens. That’s why now—when all you have to do is sketch and it won’t take much time—is the time to think about the changes you’ll be making at each breakpoint.

What to do if you get stuck

Every designer gets stuck at some point. It’s no big deal unless you treat it like one. There are countless ways to deal with it, from asking yourself what if questions (“What if it weren’t a table, but a list?” is what I asked myself before “blockifying” the attendees table for the Mobilism site) to the cliché taking a shower, which you hopefully do on a regular basis anyway. The reason this chapter focuses so much on sketching is because the act of drawing itself can actually stimulate your brain to come up with more ideas, provided you push it hard enough by sketching past your comfort zone of first-come ideas.

If your problem is that you’re stuck creatively, there are many inspiring books and resources to get your creative engine started during the bitter cold of designer’s block. Although there are plenty of resources on design and creativity itself (try such classics as Edward de Bono’s Lateral Thinking), the greatest inspiration can come from sources outside the realm of design.1 Trying to combine things that normally aren’t combined can lead to surprising results. It’s a simple little trick, but I’ve often used Brian Eno and Peter Schmidt’s Oblique Strategies to force me to take a different approach.2 Worst case, it’s a lot of fun. Best case, you’ve got a great idea!

If your problem is that you’re not sure how to handle something in the context of responsive design, there’s no harm in researching how others have solved problems like yours. Just be sure to use your creativity and tailor any ideas you might find to your own situation; after all, you’re a designer. At the time of this writing I find Brad Frost’s This Is Responsive to be one of the most exhaustive collections of responsive design patterns and resources available.3 You can spend hours going through there and you’ll certainly come across something that will get you unstuck.

Excerpted from Responsive Design Workflow by Stephen Hay. Copyright © 2013.
Used with permission of Pearson Education, Inc. and New Riders.


respond to this


Recent 29 entries

LiveJournal