Tuesday, October 18, 2016

php. for reals.

From Taking PHP Seriously:
Most programmers who have only casually used PHP know two things about it: that it is a bad language, which they would never use if given the choice; and that some of the most extraordinarily successful projects in history use it. This is not quite a contradiction, but it should make us curious. Did Facebook, Wikipedia, Wordpress, Etsy, Baidu, Box, and more recently Slack all succeed in spite of using PHP? Would they all have been better off expressing their application in Ruby? Erlang? Haskell?
I think it's a great article. I think so many developers underestimate things because they don't feel "engineer-y" enough. Bespoke complexity that grows up because the tools were too simplistic for the task at hand is not always that much worse than the complexity of opaque systems that are hard to debug. Transparency (in this case, the ease of following codepath execution), accesibility/ease of setup, tight code-run loops, having a ton of baked-in utility functions without pursuing versioning hell... these are great things.

Friday, October 14, 2016

if your nose runs and your feet smell you must be umopepisdn

Less-than-earthshaking update:

Playing with the look of this blog. For a long while I just had it mirror the oversized image of alienbill.com. Now I'm mirroring the starkness of kirk.is, but I'm not sure it's really working.

Anyway, keeping notes on day-to-day things is crucial for most developers. For a few weeks I've tried a new angle on it, a single note in Evernote (I generally prefer the minimalism of Simplenote, but I use that for my personal stuff and like keeping the work stuff separate) called the "UPSIDEDOWN LOG". I'm experimenting with reverse chronological order (even for intraday additions), I just like how the past recedes into the distance and I don't have to scroll to the bottom all the time to add new stuff.

Monday, October 10, 2016

itunes store search: "100 matches ought to be enough for anybody"

Back to being "Kirk's UI Gripe Blog"...

Man, iTunes store search is so pathetic. Supposedly a while back they had a power search mode, but now it's just keywords. You can't search for just a song title, for instance, you're going to get any artist or album who has the same name. Even better - their version of "All Results" cuts off at 100. So if there are over 100 non-title matches for a song you're trying to find a good cover of, and the song's title is later in the alphabet, there's no way the song you're looking for will show up on the list.

Even more insulting is the message after those 100 items:
"Less relevant items are not displayed. To narrow your results, use more specific search terms."

I would if you'd let me, jerky.

Friday, October 7, 2016

fixing wordpress plugins

Yesterday I had a venture in the extraordinarily un-glamorous world of Wordpress.

A friend accidentally "white screen of death"'d her company's site. Apparently, it can be a really bad idea to hit "Update All Plugins" (maybe especially if you are running an older version of PHP? Not quite sure.)

I admit, I'm a better developer than admin, which was that this called for.  Still, I decided to give it the old college try.

I was grateful that the shared GoDaddy site still offered normal ftp and better yet, ssh access.

I saw there was a boiler plate Wordpress index.php. Oddly I could run "php index.php" from the shell and a more or less normal looking site was generated. So after putting the regular index.php safely aside,  for a while I replaced it with the content of running php in the shell... not perfect (both in terms of missing theme and showing bare [plugin] slugs) but better than a blank screen or a "Under Construction" link.

What To Do When A WordPress Plugin Causes An Error was a helpful link. Things were so bad that the plugin admin page was also white screening, but I admire how hackable it is... each plugin was represented by a subdirectory in a general plugins folder - and to deactivate a plugin, you can just remove there. We did that, and the admin page returned (as did the main functionality, so I put the default index.php back) Then, you can put all the plugin folders back, but, oddly, but usefully, they're all deactivated. At that point we turn them on one by one (making sure we knew which directory entry they corresponded to - usually it's obvious but in a few cases we had to click on the link), found the one that was killing stuff, and left it out.

Anyway, I appreciate how Wordpress has a lot going on, but you can still follow the logic...

Thursday, October 6, 2016

amazon deploys new software to production every 11.6 seconds

At my work's devfest, I learned that Amazon deploys new software to production every 11.6 seconds. This video describes some of the history and the infrastructure patterns that support that:

What astonishes me the most (not that the video gets into it too much) is how decoupled everything must be to make that work; they must have some brilliant way of handing versioning and/or handoff as a user crosses from one application to another.

Tuesday, October 4, 2016

an ecosystem out of control

Great Medium piece, How it feels to learn JavaScript in 2016. (It has a link to a reddit discussion where I found some like souls.)

It really is out of control. And that article catches the intimidation factor of it all.

I was never good at foreign language, which I attribute to my poor memorization skills and how language tends to be taught in the USA. But I had a motivation problem: every other class I took in high school and college offered to teach me something new. Foreign language was just new names for everything old. (I accept that if a learner keeps at a language until they internalize it, they will likely be rewarded with new outlooks and ways of thinking--to quote the poet Jack Gilbert "A man said no person is educated who knows only one language, for he cannot distinguish between his thought and the English version." -- but my lack of language chops keeps me far from that kind of rich understanding.)

Anyway, that's what this new ecosystem feels like, new words for everything old. In 1996, discovering Perl CGI was empowering; ditto jQuery and modern CSS in 2010. But this stuff? So little of it really lets me doing anything new. Some of it is more concise, sure, but that brevity is just a veneer over giant swaths of code I'll never understand, and god help me if I screw up using the framework-flavor-of-the-month and have to backtrack to what I did wrong... bespoke code certainly invites complexity, but at least it's YOUR complexity.

Some frameworks do offer new functionality impossible in the old world, like server-side rendering that might help with speed or webscrapers, and some toolkits pull their weight for stuff like running tests. And I certainly find some frameworks (like React) more appealing than others (like the client-side JSP taglib nature of Angular) but overall, I wish more developers would think about how hard it is to keep track of all this stuff, and prefer simplicity, ease of mental-modeling, and transparency to coolness and "power".

(See also: The State of JS survey. Really interesting seeing what things have a high "have used, would not use again" rating. Most notably for me, Angular 1.X)

Sunday, October 2, 2016

industrial design!

O'Reilly's Understanding Industrial Design is pretty hip; a high level overview of the history of industrial design and some implications for the more virtual arts.  The chapters a history, then go into the topics centered around the goals of being sensorial, simple, enduring, playful, thoughtful, sustainable, and finally beautiful.

It seems to be on hiatus from its daily update schedule, but the site Little Big Details, mentioned the books, seems awesome... I love that stuff, and I think finding low-hanging fruit is something I do well.

Good quote cited in the book:
"Less isn't more; just enough is more."
-Milton Glaser
Finally, in the playful section the book mentioned Naoto Fukasawa's clever tea bag marionette:

 "This concept comes from the motion of dipping a tea bag in hot water, which reminds him of a marionette dancing. The handle on this human-shaped tea bag looks like a marionette handle too. When the bag is dipped in hot water, the leaves swell to fill the bag, creating a deep-hued roll. Repeating the dipping action, the user is engaged in a wondrous world of puppet play. Thus, design intrigued with the unconscious emerges through the medium of an action."