Some CSS tips for the day: CSS Tips.
Category Archives: Design
Visual design rules you can safely follow every time
Some interesting rules of thumb for user interface design: Visual design rules you can safely follow every time.
One note I want to make for later on is to use #222222 instead of #000000 and #F2F2F2 instead of #FFFFFF.
5 Best Vector Graphics Editors for Linux
Today I reviewed: 5 Best Vector Graphics Editors for Linux. Will play with Inkscape first I guess…
This one turned up in my feed today: There’s More to Design Than Data and Rationality. I feel like the author is discovering postmodernism. It made me realise that when people discover things they have the feeling like they’re the first (but they’re probably not).
Found some interesting reading on autonomic computing.
Catching up on my Kevlin Henney:
- Agility ≠ Speed – Kevlin Henney
- Refactoring to Immutability – Kevlin Henney
- Talking Architecture With Kevlin Henney
- ‘Declarative Thinking, Declarative Practice’ – Kevlin Henney [ ACCU 2016 ]
Surrogate Key and Natural Key
In Database Design 25 – Surrogate Key and Natural Key the presenter Caleb Curry agrees with my view that if you expose your surrogate keys they become natural keys. See around t=5:00.
Bad web services API
I’m reading RESTful Web Services Cookbook and on page 17 the author gives this example:
# Request POST /user/smith HTTP/1.1 Host: www.example.org Content-Type: application/xml;charset=UTF-8 Slug: Home Address <address><street>1, Main Street</street><city>Some City</city></address> # Response HTTP/1.1 201 Created Location: http://www.example.org/user/smith/address/home_address ...
There are two problems with this: the first is that “POST /user/smith” has the semantics “register address”, so it would be better if that was clear; the second is that some of the input to the business process is in the XML payload, while some of it is in the HTTP headers (viz Slug). It would be better if all the input was in the payload.
So how would I design this service?
# Request POST /api/v1/processor HTTP/1.1 Host: www.example.org Content-Type: application/x-www-form-urlencoded action=register_address&user=smith&street=Main+Street&city=Some+City&type=home_address # Response HTTP/1.1 303 See Other Location: http://www.example.org/user/smith#home_address
Actually in my designs the /api/v1/processor could be anything, including /user/smith, because the business process is indicated in the request ‘action’ with is submitted with POST. Just like God intended. Idempotency, optimistic concurrency control, authentication, authorisation, auditing, version control, all that good stuff implemented with business logic via business process for ‘register_address’.
Nielsen Norman Group
A well designed website: Nielsen Norman Group… :)