Sunday, January 20, 2019

Snowflake Sociology

"Snowflake" isn't a term I enjoy using: it's derogatory, demeaning, and can be used as a dismissive approach to ideas we don't like. Until you're snowflaked, it's an easy thing to not like.

I was finally snowflaked awhile back. I sat on it for some time, but given today's general political and conversational climate, I wanted to discuss the experience. Someone asked a Stack Overflow question I thought was very clear in its intent, roughly:
I can't seem to wrap my head around the logic for writing a function that looks something like eight(times(five)) in JavaScript.
 They want a math DSL, and they provided examples:
  • eight(times(five)) should return 40
  • three(plus(two)) should return 5
I mean... this is obvious. To me. Not to Ryan and Amy. They asked for clarification, I told them both it seemed very straight-forward what was being asked. Their hangup (at first)? "Eight isn't a verb, so it can't have behavior."

What? Are all method names verbs? (No.) Are all method names in a DSL verbs? Most assuredly not (attr_accessor is not a verb, it's a declarative assertion of intent). To me, it was crystal clear what was being asked (and apparently it was equally clear to the two people that answered it).

I was accused of being condescending and misogynistic. Many people have accused me of being condescending; when you're far enough along on the spectrum to be diagnosable, it happens. Not proud of it, but it happens. Misogynistic?! To anybody that actually knows me the idea is laughable. I was insulted, and badly. It hurt. It was embarrassing.

Could I have expressed my opinion that I thought the question was obvious in a better way? Possibly (and probably, but honestly, it wouldn't even register with most people). Could I have said something like "It seems like they're asking for a DSL; given the provided examples I think the intention is to treat the function names like mathematical operators." I could have just said that and let it be.

I didn't: I said it was "obvious" what was being asked. That was the mistake. Why? Because when something isn't "obvious" to someone, and it is to someone else, it can make the other person feel stupid. This can escalate quickly (as it did).

I have a different view of things: if something is obvious to someone else, and not to me, it means I have a knowledge gap. I don't like knowledge gaps. I might feel shame: one of my traits is that I know things. It partially defines who I am. When I don't know something, it diminishes who I am in some way. It's a non-functional emotional behavior (that I'm working on).

That I didn't know something doesn't trigger an external redirection of that shame, however: I don't take out my (perceived) shortcomings on the person that brought it up, at least not in a public forum. And I certainly don't accuse other people of being biased in any way (if they're being a jerk I'll call them on that, though).

Here's the thing: nobody likes to be wrong. People like to be told they're wrong even less. Some people lash out when they're told they're wrong, or that something might be obvious to somebody else.

There's always a balance. Online intent is very easy to mis-judge. The word "obvious" can be a trigger.

Lesson learned.

Back yet again!

As part of a blogging/writing blitz I'm back on this platform as well as others.

I'll be blogging here, as well as one of the bloggers at the Maker's End Blog, discussing a wide variety of topics, generally related to technology, but occasionally stretching far afield into general Making, society, crafting, and so on.

A few of the upcoming topics will include:

* JavaScript
* Embedded Systems
* Projects/Builds
* Technology Landscape
* Automating creative workflows
* Refactoring (with specific examples, usually from Stack Overflow)
* Code Quality Issues and Metrics
* IoT
* Integrations

As always, I'm open to suggestions for topics.

I just built the Pimoroni Keybow keyboard; check out the build and review (and build video). It's a pretty slick 12-key auxiliary keyboard powered by the Raspberry Pi Zero WH with an RGB LED under each key. It acts like a standard keyboard (USB HID) and I'm pretty excited to experiment with it.

Also, stay tuned for excerpts from an upcoming Maker's End book series, the Inspiration Series, which will cover a number of embedded platforms including the Arduino, various Adafruit boards, Sparkfun QWIIC boards and components, and some DFRobot boards and parts. First out of the gate will be the Arduino Inspiration book, a project-based Arduino tutorial, with a goal of inspiring relative newcomers to the world of artistic expression using technology.

Friday, October 20, 2017

Cura 3 on OS X Crashes on Startup

This one was easy to fix, although I'm not sure what the consequences will be.

On startup the new version of Cura would start to open (evidenced by Activity Monitor process) then close. I decided to delete my existing Cura app data since (a) need to recalibrate the printer anyway, (b) getting an additional new printer anyway, and (c) didn't know what else to try.

Navigate to ~/Library/Application Support/ and look for anything Cura-related. In my case, there was a Cura folder with a directory for the two previous versions I'd had installed.

Go ahead and delete those, you didn't want them anyway.

My Cura 3.0 now starts just peachy.

Coming Soon

I have a number of projects, both software- and hardware-related, coming down the pike right quick now. Think Raspberry Pi 0W, Raspberry Pi 3, NodeMCU, IoT, Elixir/Phoenix, Kafka, AWS, Nerf gun mods/hacks, and so on. I'm open for business in a new workspace, with new tools, and new mindset.

Let the games begin.

Tuesday, August 11, 2015

Pirate Stack


(A)RRR(GH): React, Relay, RethinkDB.

The stack is mine. I win the internet.

Wednesday, August 05, 2015

Styling Atom Editor UI Elements

I'm in the process of switching to Atom as my daily text editor (from Sublime Text 3) and needed to have my UI element font much smaller. Doing this in Atom is blissfully easy, just edit your styles.less file and you're done. The trick is understanding which elements you want to style.

Most elements I needed re-sized are easy:

The styles.less is accessible directly in your $HOME/.atom directory, or through Atom itself in Settings -> Themes.

Saturday, June 06, 2015

CoffeeScript IIFEs

Immediately-Invoked Function Expressions are an easy way to hide your variables, preventing collisions with your code or the code of others. In JavaScript you'll see the following a lot:

In CoffeeScript the syntax can be the same; enclose the function in parens, and put parens after it to call it. It's ugly, though:

CoffeeScript has the do keyword, though, and it provides a cleaner way to do this:

If you're passing an argument the ugly way you'd put the closing paren at the same level as the IIFE's code block; this looks a little wonky to me, and the trailing paren looks lonely (odd for a Lisp person to say, huh?

The do version requires the variable to be set at the point of the do. I think I still prefer this method, but it reads a little funny to me: