LDC 1.15.0-beta1, responsive design rant
Posted 2019-03-11
Blog
Articles- terminal.d gets clipboard functions, ldc 1.20 out.
- DConf keynote speaker announced: Lua architect Roberto Ierusalimschy, Named args DIP discussed
- February 3, 2020
- Adam's terminal suite explained
- Understanding mixin templates, terminal.d improvements
- My attribute-by-default proposal. Also dmd 2.090 came out.
- DConf 2020 announced: June 17-20 in London. @safe by default debated. Adam did: Android, JNI, WebSocket in arsd libs
- tar.xz, --DRT tip, dom bug fixes, more Android and JNI, link to old phobos docs
- LDC 1.19 - Android, AVR. My rant on tests, update on JNI and COM.
- Walter's string interpolation proposal is OK but not great. My Android thing nearing beta release. dub downtime explained.
- Android project update, introduction to arsd.jni
- New pattern about interface contracts
- Adam shares Windows console secrets - DO NOT USE chcp!!
- Adam's rant on benchmarks
- Socket tutorial
- November 4, 2019
- October 28, 2019
- arsd package updates, forum nonsense
- Update on Android
- Adam does iOS "goodbye world"
- September 30, 2019
- D turns 20, Adam rants on software freedom
- Named arg DIPs and my thoughts on code organization
- September 9, 2019
- I wrote about mixin templates vs string mixins on Stack Overflow
- August 26, 2019
- Bug bounty in D again - my hot take, on reusing code, a fun picture, my tentative plan for the next month
- Time invested is worth a lot
- cgi.d's new scheduler, static this tricks
- July 29, 2019
- July 22, 2019
- Solving vs managing problems
- A big week in the arsd repo
- July 1, 2019
- June 24, 2019
- June 17, 2019
- CRTP thoughts, named arguments DIP review, DConf videos now on youtube
- musings on hybrid CT/RT tests, some more progress on new web framework
- a little more webassembly
- May 20, 2019
- Adam's string interpolation proposal
- DMD 2.086 live, GCC 9 with D support formally released, DConf coming soon, links to posts on builder pattern and disallowing implicit conversions with templates, and 2d array op overloads
- template constraint error improvements coming?
- dmd 2.086 beta, dstep 1.0 released, Adam works on memory usage
- obj-c and webassembly report, tips on is expressions linked.
- new ldc, new dmd, dpp on the blog
- D's future discussed in forums
- LDC beta, DConf blog link, Adam introduces gamehelpers.d
- March 18, 2019
- LDC 1.15.0-beta1, responsive design rant
- dmd 2.085.0 released
- Obj-C interop and D without druntime code to copy/paste
- dmd beta, more info coming next time, demo of new web framework initial prototype
- automatic web interface discussion, reflection tips and tricks
- Adam busy with weather and a move, lots of community announcements
- January 28, 2019
- Working on official blog 2018 retro, C++ new wrapped, dmd reading zips?
- dmd obj-c growing, Adam static foreaches an interface to RPC
- dmd 2.084, hope for future, but busy non-D week for me
- IDE tools released, my cgi.d gets new features
- DConf announced, tip, Adam rants: mouse trap
- This Week in D is back!
New LDC beta came out, DConf proposal deadline passes, old DIPs get status updates. Adam rants about responsive design.
Core D Development Statistics
In the community
Community announcements
See more at the announce forum.
What Adam is working on
I added unix socket support to cgi.d's main http and cgi handlers. It was actually trivial - just a different command line arg, and then a slight change in the connection manager constructor - but may be fairly useful to reverse proxy users. In particular, nginx can do a scgi proxy with a unix socket and this may be easier to use with your firewall and filesystem permissions.
Otherwise, my week has been a lot of day job work and some helping people in the IRC channel. If you are stuck on a D problem and are making no progress after trying for like 20 minutes, stop by #d on freenode and ask us. I'm frequently keeping an eye on the channel and know a lot of D's quirks that trip people up, so - assuming me or one of the other experienced folks are online (don't trust the user list, I leave my user logged in while I'm not on the computer, so answers may not come immediately even if it shows us as in there) - asking in there might turn your hour of frustration into just a couple minutes of of chatting to get pointed in the right direction for a fix.
As for the upcoming week, I am considering adding macro support to adrdox. Yes, I have rallied against user-defined macros at length before, but there's a few small places where they are useful, and I think if I limit their capabilities, I can make it work for those without making a big mess like in normal, unconstrained ddoc. I'll let you know next week.
Adam's UX Rant
With responsive UIs being more popular than ever, including on native programs now, I feel the need to point out something I find very important that so many applications get wrong: responsive design should aim to enhance your site's usablity, not break it.
A common thing to do with responsive code is to hide elements when the window gets smaller. This may feel like you are preserving usability - sacrificing "unnecessary" detail in order to protect the core functionality of your application. But, what if one of those unnecessary details actually IS necessary to the user?
Without the responsive code, the user might be able to use viewport zooming or scrolling to access it. It would be awkward, sure, but it would work. On the other hand, if you just remove it, now instead of poor usability, you have no usability. That's a step backward.
(Similarly, I get annoyed with some websites that reorganize as I resize the window... there's times when I, as the user, resize and rearrange windows hoping to hide irrelevant stuff to me, especially in a non-rectangular manner. And this kinda annoys me sometimes, but... eh, I'd say overall my loss there is other users' gains, so I'm kinda ok with it. And in theory, a web browser UI could offer both worlds, but a native developer might need to keep it in mind.)
I suggest that instead of hiding or removing elements, instead try rearranging elements. I like to go more vertical and just let the user scroll to it if they want. (And actually, that isn't a bad design in general for a lot of applications; simple lists for data and forms is often more accessible for users with weaker vision or hand control difficulties too. Very predictable and easy to use with screen magnifiers and keyboard controls, as well as users on narrow screens.)
Of course, eventually I need to apply this to my arsd.minigui module. But I have a lot of work to do there anyway.