Tag Archive / devices

  • A Brief Note on Responsive Design and Constraints

    (In response to Adam Silver’s Stop using device breakpoints)

    There are two points that I like to add –

    The relationship between Constraints, Content, and Context

    Content

    Content will always affect Constraints (i.e. breakpoints) and vice versa.

    What I do is a) use the familiar set of breakpoints as initial guesses and b) treat them as assumptions that need to be tested and verified.

    If you’re getting more breakpoints, maybe you need to reconsider your initial ones. Some may just need to be:

    1. Moved or
    2. Removed completely

    Experience

    This is probably more a developer than designer problem(?) but depends on your background. It comes down to hands-on knowledge of various devices.

    1. Don’t assume the device you have on hand is the one [definite] solutions. Just because you have an iPhone doesn’t mean everyone else does…sounds sensible but you’ll be surprised how many people don’t follow that advice. I have experience because most of my work involved non-American clients (more likely to see a Samsung than an iPhone).
    2. Comes back to testing on multiple devices – using BrowserStack (or other simulators) helps testing for both iOS/Android devices or just get a few old/borrowed devices on hand.

    The idea here is to get use to the idea of breakpoints as initial guides, not fixed points.

  • Future Imperfect

    As I’m writing this, it’s a rainy morning in Vancouver, Canada. Nothing new. Spending time with friends that I don’t see but once a year near my birthday. In this case, I’m here to attend the IA Summit conference this week. This is my first non-US conference since IxDA Interaction 13 in Toronto.

    Looking back at that conference there were a number of things that stood out. A number of them became influential years later. One of them was a short lecture by a designer named Nate Archer called “Beyond Responsive”.

    Nate Archer: Beyond Responsive from Interaction Design Association on Vimeo.

    Well, four years later, those words seem prescient right now. The world has been filled with all sorts of devices that we access the web. More than just the trio of phone/tablet/desktop. Basically, any device that has access to the web is an access point – from watches to 4000K TVs. But there is another way of looking at this. Instead of “devices”, let us consider going in the direction of “inputs”. Responsive design appeared not just with mobile devices but devices which are also touch-enabled. Now, mobile devices are as ubiquitous as any household device, front-end developers like myself have to deal with coding for interactions that take place on touchpad as much (or even more) than mouse/keyboard. (Though we could be doing a better job at the keyboard then we are currently doing.)

    [Note: touch-enabled devices are not necessary phones/tables and doing feature support for touch is still a bit tricky]

    In some respects, the beautiful lie of responsive design is that the constraints are visual, via breakpoints and media queries? But what if those constraints aren’t visual. CSS has hidden artifacts describing inputs – media types. If one would look at the specs (https://www.w3.org/TR/CSS21/media.html#media-types), the following types are supported:

    screen, print, speech/aural, handheld, tty, etc.

    Screen is the most familiar with print/speech following. But there’s tty? From the spec, tty refers to devices like terminals and teletypes. The later was a telecommunication device that has long since disappeared with the advent of email. But back in the day, it was considered important enough to be considered in the W3C CSS spec. Now think about the future. Someday, will we may consider mouse/keyboard interactions as obsolete as teletype?

    Now, we are seeing the advent of AI interfaces – sophisticated interfaces that allow access to the same information like we do with mouse/keyboard and touch.

    Which comes back to the conference I’m attending, IA Summit. This year’s topic is artificial intelligence and information architecture. The main job of a front-end developer is building interfaces for acquiring information. Obviously, things will change in the next couple of years. But change into what?

  • Gesture-Based CSS Selectors

    [This is a short, informal proposal of a concept, with a more extensive version in the near future. However, this should be enough for starting discussion on its value/implementation.]

    What are Gesture-Based Selectors?

    Gesture-based CSS selectors are a combination of the current set of CSS selectors/pseudo-selectors to include new set of gestures currently being used in mobile (tap, tap hold, swipe, etc.). The main goal is to give basic interactivity to elements without JavaScript support.

    The closest analog would be the same sort of relationship with CSS3/JavaScript animation. In the current methodology:

    • CSS3 – basic/simple animations, removing the need for JavaScript resources
    • JavaScript/JavaScript Library via Events – complex animations, requiring more functionality beyond CSS3 animations

    Initially, this was just focused to touch gestures. However, this can be also be extended to other "gestures" such as the current JavaScript events "click", "mouse(over/out)", "key(up/down)", etc. This will allow for non-touch gestures → keyboard, voice/speech, inputs from any other devices, etc.

    CSS/Gesture Selectors Format

    The concept is to have these represented in CSS code by the following selector (in two versions, using the mobile gestures swipe left and tap hold as examples):

    1. selector:gesture-(gesture name)

      Similar to :hover, :focus pseudo-selectors (using current

      Examples:
      div:gesture-swipeleft { CSS code }
      a:gesture-taphold { CSS code }

    2. selector[gesture=”gesture name”]

      Similar to attribute selectors, introduced in CSS 2.1 but in use more with CSS3

      Examples:
      div[gesture=”swipeleft”] { CSS code }
      a[gesture=”taphold”] { CSS code }

    Constraints/Problems

    At this point, three initial problems appear:

    1. New Devices/Platform w/ Gestures – some sort of path/procedure needed for recognization of new gestures that is open and flexible. I recommend the following for an initial path:

      Device/Platform Support → JS event support → CSS/gesture selector available

      This will allow for the availibility for selectors mention above. However, there is the problem of device-specific gestures, which could mean that certain selectors will be available for only those devices. Currently, the touch events are only available on touch enable devices. If a [front-end] developer was writing code for a non-touch enabled device, the JS support would be non-existant -> no CSS/gesture support

    2. Gesture Uniformity – if a gesture gains support across platforms/devices, the related CSS selector should never be prefixed as we currently have for CSS3 features like animations or tranforms, ie "-iphone","-android", etc. I recommend this because unlike CSS3 features, these are OS based issues ("native"). The selectors will be device/platform "neutral" – let platforms/devices be solely responsible for interpretation.
    3. Computer Processing – if this gets implemented, how does this effect processor/power usage. How does the current set of CSS3 features (transitions/animations) deal with different computer processing power (hardware accelerators?)

      If this gets added to the current set – will there be a bigger demand for hardware processing? What would this mean for small, less powerful devices? (the drive behind iPhone design and construction).

      Overall – This is an issue that will need to be taken up post-proposal, with people more knowledgeable than me.

    In summary,

    1. Creation of CSS/gesture selectors to allow for basic interactivity, without the need of JS events
    2. Providing a “path” to allow for more gestures, not just current but for future devices/platforms and be platform/device independent.

    Flickr – Scans of hand-written notes from Polaris notebook

  • Today, I’m Blowing Up My Code

    Seriously. http://twitter.com/#!/iwilsonjr/status/124622801914171392

    This is not a joke.

    If you are laughing at this, I understand. It still won’t change anything.

    Let me explain.

    In 2009, through contact with interaction designers, I saw the coming wave that we now call mobile. That wave moved so fast that it took everyone by surprise. Today, designers and developers are dealing with this via responsive design and other techniques.

    Now, what does it have to do with me. One day recently, I was tasked to revised some code I made in late 2009. Now, it was good by those standards but it has a few faults. Not perfect but usable and everyone was satisified.

    At the time, it was "Job done. Go to sleep."

    But I didn’t.

    (more…)

  • Prologue from Chicago

    What does one write about on a two hour plane trip to Chicago?

    coding, mobile, Shadout Mapes, Churchill, and John Lennon

    Important? What does this mean?

    Well, you’ll find out in the next blog entry…