Labnotes

Published on

Design Objective

Building Products This is fantastic, go and read it right now. I can’t tell which is the best quote, so I’ll pick one at random:

When exploring solutions for a particular problem, go broad before going deep. Brainstorm 10, 20, 50 solutions for the problem before getting into the mindset of picking a “winner”. The first 5 ideas will be the obvious ones. Creativity happens when you start to explore the 11th, 20th, or 50th idea.

How We Lost 47% of Our Users After a Redesign Removing elements from the UI doesn’t necessarily make it simpler. Sometimes the opposite is true, the user struggles to make sense of the UI:

By trying to make the service simple and minimalistic we complicated user’s experiences. Getting rid of a few tiny details dissolved the whole sense of a queue and availability was lost, leading to a bunch of unanswered questions and reduced usage.

Get Dumb and Grow Rich, Leading Your Company Article How one person uses ignorance to design better products. It’s a profile piece, so rather long read, but worth it.

39 studies about human perception in 30 minutes

For the last several years, I’ve wondered about what we actually know from scientific studies about how humans perceive graphics. … This is an extreme distillation of these studies.

Inline validation in forms — designing the experience “For the default behavior I propose a hybrid — reward early, punish late — approach”

Hey, You Have Given Me Too Many Knobs! Understanding and dealing with over-designed configuration in system software, or as they call it, “over-delivered (or under-exploited) flexibility represented by configuration parameters”. (PDF)


Tools of the Trade

Falsehoods Programmers Believe Handy collection of “Falsehoods Programmers Believe About X.”

The Art of Closing

I’ve talked to maintainers from several different open source projects … and they all agree one of the hardest parts of being a maintainer is saying “No” to patches you don’t want. To make this rather unpleasant experience of closing someone’s patch request easier I have a few ways of going about it.

Typosquatting programming language package managers If you place blind trust in package managers, I’ve got some bad news for you:

In the thesis, the well known programming languages Python, NodeJS and Ruby were attacked. All their package managers were found to be vulnerable to typosquatting attacks.

Joe Walnes:

omgees!!! Unix has a built in JavaScript module bundler:

$ cat file1.js file2.js file3.js > app.js

Jeff Waugh:

Why do people find DNS so difficult? It’s just cache invalidation and naming things.


Lingua Scripta

Functional Programming in JavaScript (disclosure: I did receive a free copy of the book to review)

Functional Programming in JavaScript teaches JavaScript developers functional techniques that will improve extensibility, modularity, reusability, testability, and performance. Through concrete examples and jargon-free explanations, this book teaches you how to apply functional programming to real-life development tasks

Making your JavaScript Pure A short introduction to writing pure functions in JavaScript.

rtsao/babel-preset-es2015-node This preset automatically determines which version of node you are using via process.version and sets the minimum necessary babel-preset-es2015 plugins accordingly.

The Shocking Secret About Static Types Mirrors my experience:

Bottom line: You want to reduce bugs? Use TDD. You want useful code intelligence tools? Use static types.

ErikWittern/TODOit The JavaScript framework for hassle-free TODO application development.


Lines of Code

Mastering Programming Want to be a better software developer? Hang this on your office wall and practice it daily:

The theme here is scaling your brain. The journeyman learns to solve bigger problems by solving more problems at once. The master learns to solve even bigger problems than that by solving fewer problems at once. Part of the wisdom is subdividing so that integrating the separate solutions will be a smaller problem than just solving them together.

Justin Searls:

So often:

  1. The team is going slow because the code is to hard to work with
  2. The code is hard to work with because the team went too fast

((Jason Scott))) "This is most bug reports"


Peopleware

The Virtues of Laziness and Impatience Don’t confuse “working long hours” with “working hard”; when we stretch the work week, we fill it up with low quality work:

Laziness and impatience. We focus so we can go home, and we encourage going home because it forces us to constantly focus. This is how great teams scale.

Product Management in Two Steps

It turns out there are, in fact, very good reasons to follow rules that you are pretty sure won’t work. Pain points often need to be felt to be fully understood. The rules that are likely to be omitted from a “bespoke” process are often the ones that an organization needs the most, precisely because they will be the most painful to implement.


Techtopia

Joel Latto "This is some @internetofshit stuff right here."


Locked Doors

Hacking the Mitsubishi Outlander PHEV hybrid Apparently you can run an internet search to find cars around you, access their WiFi network, and send them an alarmoff() command. Carhacking is the new carjacking.

Hacker News Onion: Announcing Let’s Decrypt, A SSL Certificate Authority Backed By The NSA


None of the Above

Self-Proclaimed 'Thought Leader’ Gives Talk on 'Thought Leadership'

How “Silicon Valley” Nails Silicon Valley

“Real startups go through all the shit you see on the show, as well as even crazier shit,” Roger McNamee, a venerable venture capitalist and a consultant to the show, told me. “If anything, the writers might have to leave out true things in order to seem more realistic.”

Why the World Is Drawing Battle Lines Against American Tech Giants

Nobody knows yet who will win these fights. The American tech giants are huge, but they need the blessing of national governments, and those blessings aren’t coming easily.

Published on

Design Objective

Jobs to be Done: from Doubter to Believer Fantastic presentation by Sian Townsend about JTBD, and how Intercom uses them to build a better product. Goes along with the book.

According to the Apple world clock app, the time is 4:56AM and it's 79 degrees Fahrenheit at UTC.


Tools of the Trade

GitHub Dark Switch off the lights on GitHub for a pleasant reading experience.

hueniverse/metaphor If you want to add Slack-like smart embeds to your app: Open Graph, Twitter Card, and oEmbed metadata collector.

A Facebook Sixth Sense This post discusses the process of reverse engineering private FB APIs: I didn’t realize how powerful the available tools are for debugging React apps.

Reverse Engineering for Beginners Topics touched: Oracle RDBMS, Itanium, copy-protection dongles, LD_PRELOAD, stack overflow, ELF, win32 PE file format, x86-64, critical sections, syscalls, TLS, position-independent code (PIC), profile-guided optimization, C++ STL, OpenMP, win32 SEH.

Laura Eck "The cat stack is an important data structure every purrgrammer should know and understand."


Lingua Scripta

Async and Await Overview, lessons learned & future directions.


Lines of Code

Mannish Agarwal:

If you can’t tell what a code does by glancing at the naming conventions & several code lines, then the code is too complicated

Simple!

Bug in large-flows.py decoder · Issue #51

Thanks! Fixed in 80ad7a3. The developer responsible for this bug has been promoted to middle management and should no longer be a problem.

Bob Ross, Game Dev on Twitter:

Sometimes you have to break the code first in order to make it better.

Kumail Hunaid: "Chuck Norris gave programming a shot"


Architectural

Growing Your Tech Stack: When to Say No Should you add this new technology to your stack? To answer this question, take a look at the risk profile of that technology: e.g dev tools carry a low risk profile, databases are high risk profile.

Tech and Culture Musings: Coffee and its Effects on Feature Creep “And that’s how I set out to simplify ordering Starbucks and created an internal banking system.”


Devoops

Noah Sussman:

it takes a village to deploy a changeset

/usr/sbin/sad on Twitter:

Subscribe to our daily newsletter: “Which Services Don’t Rotate Their Logs”


Peopleware

Ask vs guess culture in the office

Naturally, thinking about how you and your family or friends fit into the Ask vs. Guess dichotomy works wonders for learning how to deal with others, but what about when you’re at work?

Welcome to the Executive Team. It’s Messy Here

It can give me goosebumps when I see the individual who disagreed the strongest leave the room and execute on the decision with crazy enthusiasm. Be that person. Disagree and commit. Commit hard.

James: ‏"Attitudes in two different industries"


Techtopia

Mary Meeker's 2016 Internet Trends Report At 213 slides quite a handful, but choke full of interesting data points.

My favorite, though: tune in to slide 107, to learn that phone calls are on the decline, people would rather text (chat/social media/etc) than talk to a business.

Then on to slide 128: voice interface is the next big thing, and what is your business doing about it?!?

Scott Hanselman on Twitter:

Tech people on vacation: “I’m out of the office on vacation this week. My emails may be delayed by as much as 15 to 20 minutes.”


Locked Doors

What’s driving Silicon Valley to become ‘radicalized' Apparently, protecting people’s privacy is now deemed “radicalized”.

Bait and Switch: The Failure of Facebook Advertising

The main point here however has been proven: fraudsters can create ads that appear to point to legitimate sites, and then drive tens of thousands of clicks through to their landing pages.

breaking into a wordpress site without knowing wordpress/php or infosec at all This is how easy it is to break into WordPress. But if you look closely at the underlying vulnerability (path traversal), you can find code like that in many other applications/languages/frameworks.

The impossible task of creating a “Best VPNs” list today Know what kind of security/private VPN may but probably doesn’t provide.


None of the Above

asia ✨: "so tell me a little bit about yourself"

What do normal and abnormal heart rhythms look like on Apple Watch? On the difference between ECG and PPG, 5 second samples, and what a watch can tell about you about your heart. Also, looking for participants to study whether watches can predict stroke.

Tobias Ahlin on Twitter:

Dear Google Trends users. You can’t infer usage of things from search volume. Please stop. Sincerely, common sense.

Campaign Seeks to End Stigma Around Disabilities Through Provocative Signs That’s pretty brilliant: ads that expect you to agree with a stigma, thereby recognizing your cognitive bias.

The Trailers for Ghostbusters (2016) and the Art of Editing Comedy This is why I like British comedies more than American comedies.

Jason Long: "I mocked up an Instagram feature request."

Published on


Tools of the Trade

stylelint A mighty, modern CSS linter that helps you enforce consistent conventions and avoid errors in your stylesheets.

Fizz Buzz in Tensorflow Funny response to a silly interview.

Bill Wake:

Got a LinkedIn endorsement for Subversion today. I was really happy until I remembered it’s also the name of a source code mgmt tool.


Lingua Scripta

Trace | Visualized Monitoring for Node.js Microservices Node.js monitoring service with distributed tracing (a la Dapper). No agents to install, so works on every PaaS/IaaS.

Tracing de-optimizations in NodeJS When you really need to squeeze every bit of performance.


Lines of Code

Death of a Language Dilettante

Even something as blatantly broken as the pre-ES6 scoping rules in JavaScript isn’t the fundamental problem it’s made out to be. It hasn’t been stopping people from making great things with the language. Can programming language theory even be trusted as a field? And what criteria do you use for choosing a programming language?

5 Common Misconceptions About TDD & Unit Tests

Your code should be modular enough that it’s easy to keep I/O dependent modules at the edges of your program, leaving huge parts of the app that can be easily unit tested, but if you feel like you’re forcing modularity just for the sake of testing, and not because it actually makes your app architecture better, you should rethink your testing strategy.

How Many Bugs In Your Code Really?

If 5 get reported, then double the bug count in your database. If your tracking says 1 bug/KLOC, you probably have about 2/KLOC.

If none get reported, then your code is probably riddled with bugs you don’t know about (or have chosen to ignore.)


Peopleware

The Curse of Culture Because company culture is an emergent behavior:

The implications of this definition are profound: culture is not something that begets success, rather, it is a product of it.

Could a neuroscientist understand a microprocessor? Do we have the tools to understand how the brain works? This paper puts them to the test by trying to analyze how a CPU works:

We show that the approaches reveal interesting structure in the data but do not meaningfully describe the hierarchy of information processing in the processor. This suggests that current approaches in neuroscience may fall short of producing meaningful models of the brain.


Techtopia

sarah jeong on Twitter:

Google/Oracle are saying they’ll come together to write instructions to open the files. Alsup is saying it has to be very simple.

I can hear the attorneys conferring right now. This is going to be the most expensive tech support memo ever written

Anna Marquardt "Banking tips"


Locked Doors

Yes, The Pentagon Still Uses Floppy Disks For Nuclear Launches

“This system runs on an IBM Series/1 Computer—a 1970s computing system— and uses 8-inch floppy disks,” according to the GAO report.

On the plus side, it’s not connected to the Internet.

Kevin Fu "I like this nuanced definition on safety vs. security espoused by Robert Bates of @mentor_graphics"


None of the Above

"Saw a pigeon having a job interview earlier. I hope he got it."

I created Godwin's Law in 1990, but it wasn't a prediction - it was a warning

But the fact is, I designed Godwin’s Law not to be predictive, but to be "memetic” — not to show that debates would invariably become overheated but to spur debaters to invoke history mindfully, with deeper analysis rather than with glib allusion0

Star Wars Episode IV in one picture An adaptation of Star Wars Episode IV in a style that was inspired by infographics. One story in one piece of 123 meters length. Mind blowing!

Crying

Between Feb 2014 and Oct 2015, I cried 394 times on 216 unique days. More than half of the sessions were related to relationships/breakups, and about 40% occurred in public. I was particularly prone to crying at doctors’ offices, during therapy, at airports, and on public transportation.

Why do we have allergies? A conspiracy of the tissue—epipen industrial complex? Or nature’s way of protecting us? From what?

"I just found out that '4' used to mean 5 and now I don't know what to believe any more"

Published on

paul haine "I’m so angry these mock ‘90s Lucasarts games by Andrew Scaife don’t exist"


Design Objective

Developers, Learn To Say No. Saying “No” is not the end of the conversation, but the start of an informed design:

See what is happening now? A conversation, a real dialogue between business and technology. And now you know why it happened: because you said ‘No.’

Thoughts about (sketching) practice Practice. Often:

Now turn off your computer and get practicing. Just a little every day. Be curious. Have fun. And don’t forget to get yourself into trouble every now and again :)

Ada Rose Edwards:

A high end phone will behave similarly to a low end phone when power is low or the phone is hot because the ‘big cores’ turn off.

The Shape of Things — Welcome to Thington Understanding how people interact with things is the key to designing useful products. For example, people say they want this: “When I get home, turn on some lights.”

But what they actually want: “When I arrive home and it is dark outside then turn on the sitting room lights, kitchen lights, lamp by the TV and the kitchen sink light. But don’t do it when there’s someone else at home because it would disturb them.”

How To Be More Organized While Designing UI The benefits of building a library of UI components:

Use something from your library first and if it doesn’t work, create a new object. This makes your work more consistent. You will never have 6 types of almost the same text color again.


Tools of the Trade

sitespeedio/coach The coach helps you find performance problems on your web page. Think of the coach as a modern version of YSlow.

A Guide to Bayesian Statistics Exactly what it sounds like, specifically for people who don’t have strong background in statistics.

A Guide to Spam Traps + How to Avoid ThemLitmus Blog Building an application that sends emails? Read these guidelines to work around spam traps:

A spam trap looks like a real email address, but it doesn’t belong to a real person nor is it used for any kind of communication. Its only purpose is to identify spammers and senders not utilizing proper list hygiene.

Fast.com Simple internet download speed test.

Google supercharges machine learning tasks with TPU custom chip The result is called a Tensor Processing Unit (TPU), a custom ASIC we built specifically for machine learning — and tailored for TensorFlow.

Kevin:

Just when you feel bad that you can’t use latest version of library X you hear someone is still using CVS for source control #perspective


Lingua Scripta

5 JavaScript “Bad” Parts That Are Fixed In ES6 Learn to use some of the best features in ES6 that fix some of the worse features in ES5.

Minimum Viable Async with Node 6 Chrome is getting async/await, hopefully Node 6 soon enough, and in the meanwhile here’s a minimum viable setup using Babel.js.

7 Surprising Things I Learned Writing a Fibonacci Generator in JavaScript Avoid recursion, allow parameters to limit the length of your generators, memoized infinite generators can blow the heap size limits, and more.


Lines of Code

Refactoring a javascript video store

The simple example of calculating and formatting a bill for a video store opened my refactoring book in 1999. If done in modern Javascript, there are several directions you could take the refactoring. I explore four here: refactoring to top level functions, to a nested function with a dispatcher, using classes, and transformation using an intermediate data structure.

What we learned from Google: code reviews aren’t just for catching bugs

We believe that our adherence to code reviews helps us rehearse our cultural priorities: have high standards (especially with respect to security), be open to being wrong on any topic, and remember to contextualize our individual goals in terms of how it affects our teammates, company, and customers


Architectural

Johannes Brodwall:

Reuse: Sometimes you’re standing on the shoulders of giants, and sometimes the giant is standing on your toes.

Will Farrington: "Eventually you stop shaving the yak and just become one with it"


Peopleware

Designing Inward

We talk a lot in our industry about using design methodologies to get more in touch with our users … But it’s equally important to turn that lens inward every once in awhile and to get in touch with each other, to find out what we think and how we’re feeling about working together, to improve our collective user experience.

Principles of Successful Software Engineering Teams

No team is created equal. Establishing tenets to guide software engineering teams is vital to their success. What follows is a list of items highlighting important principles of a successful team’s philosophy.

Abstractivate: Tradeoffs in Coordination Among Teams The CAP theorem applied to software development:

Every organization is a distributed system, even when we sit right next to each other. Coordination makes joint activity possible, but not free. Be conscious of the tradeoffs as your organization grows, as consensus becomes less useful and more expensive.

Hiring Software Engineers

Do yourself — and everybody you work with — a favor. When you hire, devote all the time, energy, and brain cells you can to bringing the best possible people on board.

Project Include Project Include is an open community working toward providing meaningful diversity and inclusion solutions for tech companies.

The Future of Work in 5 Charts


None of the Above

Day 29: They suspect nothing

McSweeney’s: Mathematical Word Problems for Introverts.

At the grocery store, John bought 13 lemons that cost 89 cents each. He normally would not buy so many lemons, but he spotted a coworker from afar and panicked. How much did John pay for these unnecessary lemons?

The Minimalist Animation of ‘Archer’ Producer Neil Holman and art director Chad Hurd detail the limited but highly stylized animation techniques they wield to devastatingly hilarious effect on their hit FX animated

Published on

Design Objective

Tone It Down — Write for grown-ups Personality and humor great nice, but your app’s UI should first and foremost help users get the job done. Front-load the valuable content, then if you must, tuck something funny or cute.

Guillermo Rauch:

“Paste and match style” should be the ⌘V default, and “Paste and preserve style” should be the one with the weird ^⌘⌥⇧⎋⇪V shortcut.

Sarah Drainer: "Design in the real world: this is iSmart's device upside down :)"

Tools of the Trade

Announcing SyntaxNet: The World’s Most Accurate Parser Goes Open Source

Parsey McParseface is built on powerful machine learning algorithms that learn to analyze the linguistic structure of language, and that can explain the functional role of each word in a given sentence

My URL isn’t your URL

There’s no unified URL standard and there’s no work in progress towards that. I don’t count WHATWG’s spec as a real effort either, as it is written by a closed group with no real attempts to get the wider community involved.

Lingua Scripta

Simplified JavaScript Jargon A community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem in a few simple words. Much appreciated.

Idiosyncrasies of NaN with Lewis Ellis NaN stands for Not a Number, but did you know that NaN is also Not a Nan? Why’s that?

Intent to implement async/await functions Async/await functions coming to V8!

Lorenz Attractor in 112 Bytes of HTML + JS Extreme golfing that relies on the latest JS syntax features. Will work in some browsers (e.g Chrome 50) not others.

Lines of Code

focus:

Nesting syntax ranked by aerodynamic potential:

< >
( )
{ }
[ ]
| |
begin end

Epic conference goodie by Arolla

Architectural

Succeeding by Eliminating the Smells of Waste Tackle the seven wastes of Lean Software Development: partially done work, extra features, relearning, handoffs, delay, task switching, and defects.

Surviving the Framework Hype Cycle Avoid framework fatigue by getting off the treadmill. If there’s one takeaway, it is: “No one upvotes the plateau of productivity”

Will Farrington:

OH: “There’s the old system that’s deprecated and then there’s the new system that doesn’t actually work.”

Karanbir Singh:

on irc : “security teams dont celebrate a new release, we celebrate EOL’s”

Jeff ♨ Darcy:

The group was divided on whether to use Paxos or Raft.

Peopleware

Run Meetings That Are Fair to Introverts, Women, and Remote Workers Few simple tricks to overcome bias, and give more people the chance to realize their full potential — not just the few who are able to easily make their voices heard.

Techtopia

How Bots Were Born From Spam The history of automated tools vying for your attention.

None of the Above

Gaming PC vs. Space Heater Efficiency

The Increasing Problem With the Misinformed Takes a hard look at the failing of modern day journalism: news as entertainment, repeating instead of interpreting, and the dangerous ‘neutral and unbiased’ myth.

Paul Kidd:

It is an offence under Australian law to drop a nuclear weapon on Australia from space (Space Activities Act 1998 (Cth) s 44(1)(b)).

The maximum penalty is ten years jail and/or a fine of $108,000.

Paul Fenwick "A Google recruiter sent me an email using the skills listed on my LinkedIn Profile."