Friday, January 29, 2016

The back button concept is good and bad. I find it hard to know (a) exactly what will happen when I press it in all situations and thus (b) exactly when to use it to get what I want to happen, to happen. So I end up pressing it when I shouldn't, and not pressing it when I should. Grn.
Nice how Chrome puts the same bookmark into the bookmarks as many times as I bookmark it. No kind of nuance to the ux what-so-evar.
"building such functionality into the program strikes us as a misguided effort that is likely to confuse the user."

Thursday, January 28, 2016

i made this. and, er, this.

(well, i mean, somebody else made the site that let me make that. and somebody before them drew the comic. but, ya know...)
Somehow I think most of those words don't mean what they think they mean, or that there are apparently at least 2 different universes of connotations for them. And that in order to clean the Cat in the Hat ring around the tub, they are throwing the baby out a the same time. Just because there are (yes, truly, honestly, horribly, evilly) bad static type disciplines doesn't mean the best answer is to jettison static type checking entirely. If you ask me. Which you didn't. But I told you anyway. So there.
I wanted to vent and write a post about issues in Android L's UX around phone numbers (among other things) but then I sort of realized how to sum it up: There are a lot of user interfaces these days -- not solely picking on Android, believe me / all too unfortunately -- where the nuance is in all the wrong places. There is tricky stuff like animation or customized 'non-standard' look and feel all over the place, but the end result is to actively make the user experience worse.

Consider the volume controls. They are a train wreck on all devices. But one thing in particular will serve as a case in point for what I'm trying to get at: When I'm on speakerphone, the volume apparently cannot go down to zero. But there's no visible indication of that restriction in the volume bar UI. Also missing is any way for me to know how close I am to the button press that would actually mute, were I allowed to mute.

So there are 2 subtle things that could be nuances incorporated into the UI, and thus the whole UX, around this that are completely and utterly missing. Instead I guess people spent their time worrying about animations zooming around, I dunno. (The one thing I can never, ever, at all, remotely fathom about all these things: did they literally never ever use the thing themselves? Completely mind boggling. (In certain cases I am pretty sure they literally do not, e.g. the work-outsourced 401k vendor web site oh lord the blood the blood!))

Wednesday, January 27, 2016

I would like to make a modest proposal: If you are going to ship a demo/tutorial/sample/example app for somebody to use in order to start learning how to make use of some new, unfamiliar, and (at least under the covers) pretty complicated thing, it would be best to make sure that the very first and only thing the app did was to only put up a dialog box saying, "Unknown Error" and nothing else other than an "OK" button.
If Google Calendaring is really the best we've got, then I say dust off and nuke the place from orbit: it is the only way to be sure.
On some of the Google web sites, you get a 9-grid icon that you can click on to get a pop-up dialog box that contains icon links to other Google tools/properties. Yet when you are in Google Docs editing a file, that widget isn't there. So, like, that's just great?!
UX is a tricky thing. Apparently. Consider the seemingly simple task to presenting dates. I feel like I see it done wrong more often than done right. For example, somehow the meme of showing 'relative' dates ("128 days ago") has spread far and wide. Personally I find it to be a bad thing, at least when it is presented w/out any numeric date-(and time)-stamp along with it. I was just skimming a list of documents on a Google Sites site, trying to see what the most recent docs were. There wasn't a way to sort by date that I saw (?!) so I was eyeballing it (pardon my French). I saw only one thing in 2016, but then realized that one of the entries lacked a date-time-stamp but said something like, '14 hours ago'. Oh. Great. Yeah. Thanks a lot. Oy veh.

Tuesday, January 26, 2016

Have I mentioned that Secret Coders was really popular with some kids I know? Good job, authors! Like, the kids are mad that the 2nd book isn't out yet, is how good it was! They really got sucked into it. And even really did the programming!
> [in reference to a nepotism based, take-the-money-and-run, hatchet-job web site.]
> Oh sweet Lord it just keeps getting more hideous.

yeah. it is such a weird feeling. like, you know it will be bad, so you aren't expecting to be surprised. but then each of the new things that is bad just gets put on the pile, and you actually DO feel each straw as it goes on, and the single tear wells in the corner of your eye. you can't really begin to explain to the other people how insane it all is, they don't seem to really understand or see or feel or grasp the weight of it all, as if their brain literally physically lacks that particular lobe or something. and you realize there's actually no end in sight, it will never actually get any better, and it will only continue to be bad if not worse. where is there to go? to run? to hide? to recover? to escape? nowhere. that's where.

I have long said (like, since 2000 at least) that any video player that doesn't have a way to speed things up (1x, 1.25x, 1.5x, 2x, at least) is frankly a piece of crap that obviously has no interest in what the end user actually wants to actually do in life. Likewise, video formats.
I find Android 5 to be kind of an epic fail. The tabs ui doesn't work well at all, and is actively broken in several regards. The Gmail app is just awfully full of weird broken missing lame type things. The entire Ux around contacts is kind of a freaking nightmare. Etc. It sorta just underscores and reinforces my belief that humanity doesn't deserve to get in contact with any "higher" alien intelligences. I would expect such beings to have explicitly walled us off to make sure our complete ineptitude doesn't get out into the wider universe in some disturbing virus like fashion. Maybe we could just sum up The History of Human Ux in a book titled, "When Stupid Wins"?

Monday, January 25, 2016

'A tacky, dated box and messy looking unpalatable chocolates with an artificial taste landed this brand at the bottom of the bunch. "1982 wants its chocolates back," said one judge, "I didn't think I could hate chocolate so much," noted another.'
There are several aspects of the Android 5 app find & install experience that are horrible, horrible blights in the history of human development.
Why do people make those scrolling ad things on their own web sites? So that it scrolls away from the thing I'm actually interested in? I try to boycott any site with that kind of UX any more.

Friday, January 22, 2016

"He seems to be committed religiously to Wikipedia's arcane rules of behaviour, and is not letting logic stand in his way. I have appealed to several WP people, but am getting stonewalled."
I love/hate the video conferencing part of Penguins of Madagascar. I mean, why does every video conferencing system suck so much when it comes to really basic things like muting? Why? What is so hard about getting this even vaguely less utterly horribly train wreckingly wrong?
If I cannot test a gift out w/out having to e.g. destroy the packaging such that it no longer looks like a nice gift, then I pretty much completely and utterly 110% hate the group that did that. E.g. Adonit.

Thursday, January 21, 2016

"IMHO multiples most things just complicates matters creating a lot more bugs fine if your dealing with mature code (eg sharding/ Service Fabric) not so fine if you have to write it.. I have worked a lot over the years with multiple points of failure and in most cases prefer a simple single point to a complex system with multiple points.  I saw a good bench mark 10-15 years ago that any distributed systems requires 3 * the effort  , i still use this today ( and build a lot of distributed systems) .."

[sic]
Oh, an irony-shit sandwich, how delightful. I am somewhat happily surprised to see the comments pointing it out. I am not alone?!
"Real, actual tree structures are just incredibly rare."
Somebody please fund me to make the world's most awesomely great diff tool. Anything and everything we've had to date is just nowhere near what we should have, if our art & industry had any shred of self respect. (But of course that is a true statement about just about every tool involved in software development.)
Good luck trying to find out what any particular command line flag to GCC might actually mean. Especially the single letter flags.

Tuesday, January 19, 2016

Keynote seems a lot like How Not To Do It when it comes to UX? Dunno.
Why doesn't Keynote come with a template that knows Objective-C syntax coloring?

Oh! If you copy and paste from Xcode, the coloring does come through. Crazy.
"The internationalization problem was solved by allowing the encoding of strings not only in ISO-8859-1, but also in Unicode." it is to weep?
Maybe the DCI folks are on the right track: getting away from ad hoc polymorphism.

http://stackoverflow.com/questions/3131865/why-does-string-valueofnull-throw-a-nullpointerexception

Friday, January 15, 2016

In an ideal world... if it doesn't come with unit tests from the get-go (as in, docs should come with unit tests), it is kinda a bunch of annoying bullshit.

http://stackoverflow.com/questions/33759162/unit-tests-for-copywithzone-method

That mobile UI buttons have no way for me to find out what the button would do were I to tap it before I actually tap it (e.g. tooltips) sorta sucks.
"Secondly, one may presume that engineers, being engineers, possess superior attention to detail and heightened level of communications, two vital aspects in sustaining healthy relationships."

Should I laugh or cry? Yes.

http://www.electronicproducts.com/Education/Career/Do_engineers_make_excellent_spouses_Divorce_rates_by_engineering_specialty.aspx
Whenever I try to do anything sorta remotely complicated in a single in in Bash (for x in blah ; do ; done combined with maybe a pipe or sed or some backticks or xargs) it quickly devolves into not remotely working how I want it to, but instead spewing out errors that show things have gone terribly, terribly wrong. And figuring out what specifically - presumably usually something about whitespace, or newlines, or IFS or whatever - is the problem is a nightmare in and of itself. There's no debugger I know of, etc. So all in all I think the claim that Unix is this shangri-la of just being able to pipe things together is sorta just bunkum, from any halfway respectable usability perspective.
Hm. If only our programming languages let us write actual math!

https://docs.python.org/2/library/sets.html#set-objects
If the ads load faster than the content, then I consider the site an ethical failure - I mean, as an end user.
Text selection in Android 5 and Win Phone 8.1 & 10 are all just heaping piles of UX dog feces.

Thursday, January 14, 2016

A named tuple / 'bean' class in Objective-C takes something like 39 lines of code (even if readonly). Other languages are often not much better. Do you still wonder why the alien civilizations are staying the hell away from us?
How Not To Document Things #73

 * @define XCTAssertLessThan(expression1, expression2, ...)
 * Generates a failure when ((\a expression1) >= (\a expression2)).
It's good to be the king! Piss boy?!

http://www.urbandictionary.com/define.php?term=sherlocked
Testify!

https://github.com/torvalds/linux/pull/17#issuecomment-5654674
Here's a really sweet spot of Objective-C iOS coding: Trying to have a dictionary (e.g. NSMutableDictionary) where the keys are enums (e.g. NS_ENUM), and the values are doubles (e.g. NSTimeInterval).
Reason #742 Why The Aliens Are Explicitly Avoiding Contacting Humans.

http://stackoverflow.com/questions/4527893/iphone-store-nstimeinterval-on-a-coredata
CODE vs. DATA: FIGHT!

http://lambda-the-ultimate.org/node/5295#comment-91323

'it is very simple and controls mutation and consistency - these things are so important and the relationship to the business that deserve to be on a pedestal'

Wednesday, January 13, 2016

"Put another way, separating objects in the present from objects in the past allows helps clarify which data races matter."

Tuesday, January 12, 2016

Android somehow manages to present entirely new brokenness to me day in day out it seems. Just today the Gmail app on my Android 5 Moto E decided that pulling the list down shouldn't start the refresh, it should just do the "top of list" effect. I had to leave the app and come back to get it to work. It is the kind of i-just-saw-the-hack-behind-the-curtain thing that is just sorta depressing.

(P.S. just for comparison, I have a Lumina 635 on which I ran Windows Phone 8.1 and now 10, and... wow. Those really make Android and iOS look like perfect halo-wearing cherubic endorphin pills.)
"I was pretty firm on no data access code in the domain as i have seen what a lot of devs will do  to make things work. This is where many projects IMHO go down hill"

eg projects
      Handler/ Facsade ( references all others)
      DataInfrastructure (Repository<T> , references domains - you can do it without it eg with a factory function Func<IAggregate> so only handler has access to the domains  )
            SqlData 
      DomainInfrastructure ( basically IEvent ,  IAggregate and some saga helpers , does not reference other projects) 
      DomainA  Just aggregates and entities  ( references only Domain infrastructure and events)
      DomainB  Just aggregates and entities ( references only Domain infrastructure and events)
      SharedEvents
      CrudDomain (uses DataInfrastructure)
      ReadDomainA (uses DataInfrastructure)             
      ReadDomainB
cough cough semantic versioning cough cough ahem.

https://opensource.com/life/14/9/why-python-4-wont-be-python-3

Friday, January 8, 2016

Look, I don't actually want to be rain on a parade. I don't actually want to spend a good 25% of my life seeing bad ux. I don't want to have to blog about it to try to get some kind of mental relief from the mental pressure that builds over time from all the slings and arrows.

It is truly amazing how when I'm on vacation and not using computers full time that (a) there's still a zillion things I have to do that use technology and that have some kind of bad abrasive ux in them, inevitably; (b) how hard it is to get back into the swing of things because of the onslaught of horrible things that I'd managed to forget.

When Toffler talked about Future Shock he got it sort of wrong for people like me: it isn't that we have too much change in terms of the rapid tech development, it is that every single tech thing apparently has to have some utterly egregiously bad UI/UX/IA/etc. things in it. There's just no escape. A wonderfully horrible daily blend of Franz Kafka, Woody Allen, Stanislaw Lem, Milan Kundera, Thomas Pynchon, Max Berry, et. al.

I say all that to preface how I go into some web app (a wiki) and there's a giant table, and the browser (Chrome) fails to have a horizontal scrollbar for it. So I guess I have to do some combination of maximizing the window size and shrinking the zoom factor.

But when I go to zoom the window in Mac OS X 10.10, with Option-click-the-green-lozenge, the window zooms only vertically.

(I would like to repeat that in all caps and then check myself into an asylum, but I'm somehow managing to skirt that and stay on the side of self restraint.)

Thursday, January 7, 2016

My gut feeling has always been that I distrust comparing things only by their hashes.

http://valerieaurora.org/review/hash/node9.html

When I wrote my lame home-grown backup-dedup system, I used MD5_lengthinbytes instead of just MD5 hardy har har. Fortunately since I use it mainly for family photo backups I guess I'm less likely to have a malicious file.

http://valerieaurora.org/hash.html

"...in our work, we discovered that the amount of logic in conventional programming is in fact reducible, because much of the logic in conventional programming has to do with the synchronization of data, rather than with business logic."
"Forget about “a good offence”. The best defence in this situation is to plan to capacity, because that’s the best measure of flow of value you have. While you figure out how to deal with all the other problems, you really should take your team’s velocity seriously, and stop treating it like a configuration setting you can change at will. It just doesn’t work that way. Instead, when you see how slowly (sorry) value is flowing out of your team, plan accordingly. Don’t just beat them over the head. Don’t just tell them to work harder. Plan accordingly while you look for ways to help the team improve their work systems."

Huh, and rainbows, and unicorns? I mean, yeah, if I were the boss I'd be trying to aim for all that. But I personally haven't ever seen it work out that way. Actually making money is hard.

Tuesday, January 5, 2016

"My conclusion is that situation is an existential threat that requires strong, bordering on ruthless, leadership from highly technical people with authority over product decisions."
"In defense of Haskell, the goal is to understand the problem well enough to come up with an as elegant solution as possible. It is a worthy goal, and can be a useful constraint, but a lot of programming falls outside of that goal."
I am not/surprised at how lame the search feature is in Netflix.

Saturday, January 2, 2016

Some so-called progress is, I think, not really so much.

https://blogs.gnome.org/mclasen/2013/08/05/scrolling-in-gtk/
I truly, truly despair that we use file name extensions to determine how to interpret the data inside.
If you are making a user interface for a high stress, high throughput situation, where the users are not trained to use your stuff, it would be nice if:
  1. When I press on the first button to get started, you don't put up a progress/loading spinny saying "loading". Pre cache the entire UI or at least the first and second pages.
  2. When the process of doing whatever it is I have to do is done, you did not then put up 2 pages of loading/finishing before indicating me I can move on in life / the next person who uses the terminal won't get my data (at least in theory, anyway).
  3. When you offer controls for modifying hardware, you do not have both virtual and physical buttons and only the virtual buttons work.