Labnotes

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."

Published on


Design Objective

Have Software Developers Given Up?

I think our industry has a real quality problem.

I don’t entirely know what the solution is.

Buttons in Design Systems 12 tips for setting up a system that endures.


Tools of the Trade

datamade/parserator A toolkit for making domain-specific probabilistic parsers. You create a custom NLP model that ‘learns’ from patterns in real data, and then uses that knowledge to process new strings automatically.

Nicolás Bevacqua:

Boilerplates, generators, et al. always fail to solve the underlying complexity problem. Simpler API UX should be preferred where possible.

uvloop: Blazing fast Python networking What happens when you combine Python 3.5 with Node’s event loop?

Node.js process load balance performance Nginx did very well. Node cluster not so hot, but the simplest to setup. When you need the most performance, consider iptables.

Angular is an ORM for the DOM Boom.

"The weird things humans do with spreadsheets" #csvconf


Lingua Scripta

Let’s Learn JavaScript Closures Everything you wanted to know about JavaScript closures and didn’t know who to ask.

Build modular application with npm local modules npm supports a variety of ways to declare module dependencies, the least known being the local one.


Lines of Code

Node.js and Socket.IO: How Security Fails When 'null' Is 'false'

Although it can be argued that Socket.IO uses the TLS API in Node.js incorrectly by sending null instead of true, I believe the root of the problem is that the TLS module in Node.js doesn’t follow the principle of fail-safe defaults.

Crashes only on Wednesdays Sit back and grab a drink: it’s time for the story of one of my favorite bugs.

All Natural Code:

Remember, if you can’t pronounce the name of a function, it’s not natural! printf(), strcat()- these are all harmful toxins found in viruses

Cards against compilers!


Architectural

The Bug in the Physical Building

This is exactly the kind of thing that happens when you try to build something complex that hasn’t been attempted before. A series of independently sound design decisions can lead to catastrophe. Doubly so when the original requirements contain special cases.

Anna Filina:

“Why don’t you use this easy approach?”

“This legacy has 1,500,000 lines of messy code.”

Don’t assume people are dumb and consider context.


Peopleware

Hiring Juniors

Companies are addicted to hiring the top 5% or 10% of developers and ignoring the rest. There is a lot of great talent in the remaining group of developers, just waiting to be mentored.

I need terrible female engineers

Being expected to be either a “perfect super-human” or a “girl who can’t code” puts a huge amount of pressure on women. I’m suggesting that showing women it is okay to not fall into those categories would help the tech industry feel more inclusive as a whole.

Malory Isn’t the Only Imposter in Infosec On doing everything right, yet feeling like an imposter.

Moving Past the Scaling Myth Maybe Agile doesn’t scale and that’s OK:

I think that we need to get used to the idea that scaling is different than what we may think it is. We should expect something analogous to phase transitions.

Jessica Rose:

I always start a talk with a general idea and an overarching narrative. Tech is so great, but you’ll need human stories to attach to it.


Startup Life

Is the Tech Bubble Popping? Ping Pong Offers an Answer The rise and fall of the sales of ping pong tables, and the startups that love them.


Techtopia

The Humans Hiding Behind the Chatbots Behind the artificial intelligence personal assistants and concierges are actual people, reading e-mails and ordering Chipotle.


None of the Above

Web Developer? Work for Adult Swim Of course Adult Swim has an online quiz for web developer. Of course it’s hilarious.

The Secret to Giving Away Secrets

So don’t be afraid to teach non-bakers about baking. Or non-designers about design. We can all appreciate a good loaf of bread (or a well-designed product).

On the (Small) Number of Atoms in the Universe

Space is big. Really big. You just won’t believe how vastly, hugely, mind-bogglingly big it is.

But sometimes "number of atoms in the universe” gets used in contexts where it is an inappropriately small number.

Hacking Technology’s Boys’ Club Ellen Ullman’s early journey to the heart of Silicon Valley and her radical vision for its future.

The Geographical Oddity of Null Island This spot is a hive of activity in the world of geographic information systems (GIS). As far as digital geospatial data is concerned, it may be one of the most visited places on Earth! This is Null Island.

Teacher writes inspirational messages on desks before students take Common Core tests

Published on

Design Objective

Designing a Better Notes App — Design + Sketch App Designing a simple note-taking app: from rough idea, through UX mapping, to low-fi UI sketches, and finally hi-fi interactive prototype.

A* - A Truly Iterative Development Process

In A*, the product owner has no vision of the solution, only a vision of the problem, and a clear idea of how we’ll know when that problem’s been solved. … They don’t describe a software product, they describe the world around that product, and how it will be changed by what we deliver. We ain’t done until we see that change.

7 Things Every Designer Needs to Know about Accessibility Covers the major things you need to know in order for your products to meet the minimum of Section 508 and the Web Content Accessibility Guidelines 2.0.

The Web isn’t uniform

As an active empathy practitioner I imagined what the ongoing no JavaScript Web browsing experience could be. While the percentage of these users might be relatively low, we fail to remember that until the scripts load, that scenario is true for all of us.

Build Your User Base with These Human Behavior Hacks

So back in the day, a bunch of economists were trying to predict how people and markets would behave assuming they’d use rational criteria. What they found is that it basically never happened,” says Alvarez. “Instead, people were being driven by what researchers considered ‘supposedly irrelevant factors’ (or SIFS). It turns out these ‘irrelevant’ factors are everything.

Tools of the Trade

can-zone Zones provide a way to hook into the behavior of the JavaScript event loop.

@kventil "Docker."

Lines of Code

hugh geoff true

the one where writing a commit message makes you realise your solution isn’t actually very good so you find a better one

Noah Sussman:

Beware of bugs in the above code. I have only googled the SO answers, not clicked on them.

Architectural

“The Art of Computer Programming” by Donald Knuth

… it strikes me that whoever chooses the constraints of the target development environment is choosing the playing field for our future innovations.

Programming Wisdom:

“Without requirements or design, programming is the art of adding bugs to an empty text file.” - Louis Srygley

Mannish Agarwal:

As programmers,our most useful skill isn’t so much knowing how to solve a problem as knowing how to explore a problem we haven’t seen before

Peopleware

Being A Developer After 40

As long as your heart tells you to keep on coding and building new things, you will be young, forever.

Sarah Mei:

Junior, mid-level, senior developers: I just realized what the actual difference is.

Junior devs need help figuring out how to do things. They don’t have the research skills to get things done on their own.

Mid-level devs have figured out the how & are starting to get the why, though they don’t communicate their ideas very well.

Senior devs long since figured out the how and the why. They have their own ideas and can get other people to go along with their ideas.

There’s a limit to how much impact 1 person writing code has. Senior-level impact is when you can change how other people write their code.

Work/Life

Why I Hire People, Not Skills

Intelligence and experience are valuable, but a scrappy person who fits well on the team can learn fast.

F*** You, I Quit — Hiring Is Broken

I wrote this story to share my tech interview experience during past several months and why I’ve decided to stop looking for a job.

Landing an internship has become way more important and complex than anyone's acknowledging No one wants to be the first full-time employer anymore of new college graduates who haven’t worked or interned anywhere. On the race to lock up the best interns early in their undergraduate career.

Locked Doors

SecuriTay:

“Everyone should run their own services, fight centralization!” How about no, that’s what got us millions of unpatched Wordpress sites.

Recreate the famous "decrypting text" effect from the movie Sneakers (1992)

Techtopia

Bots are awesome! Humans? Not so much

What I learned about humans and AI while sifting through those conversations is fascinating and also a little disturbing.

When the next Twitterbot loses it, remember that its tweets are protected

The Dutch example illustrates what police might do in the event of a “true threat” from a Twitterbot. The Tay debacle suggests that a Twitterbot could produce speech so hateful that local, state, or federal government might want to prohibit it.

None of the Above

William Shakespeare, Playwright and Poet, Is Dead at 52 A modern day obituary. Brilliant.

An Amateur vs. ISIS: A Car Salesman Investigates and Ends Up in Prison The story of one man’s deepening obsession with a terrorist group is a reminder of how the Internet provides easy portals to distant, sometimes dangerous worlds. It shows the complications for law enforcement agents who confront an overeager amateur encroaching on their turf.

PodRide a practical and fun bicycle-car An all-weather bicycle!

Published on

How to Use Math Words to Sound Smart


Design Objective

Bots won't replace apps. Better apps will replace apps. Remember when on-demand/sharing economy was the Next Big Thing, and everyone went there, and then it turned out that it only works well in a few specific markets? Well …

Not only is “conversational UI” a red herring, but as we look more closely, we’ll can even see places where conversational UI has breached its limits and broken down.

The Future of Technology Is In Your Ear When you are away from keyboard — even if it’s just a few feet, or a pocket away — that opens the door for new interactions: conversation UI but with sound instead of text.

Designing complex products The two-fold challenge with complex products:

Complexity in product design tends to rear its head in two ways 1) the complexity of managing people and opinions. And 2) the complexity of designing the product itself.

How designers can use unit testing to build resilient and happy design systems

Because one of the most challenging parts of creating a sustainable design system across a large organization is getting other teammates to use it, establishing a collaborative process up to the moment of integration can make it easier. When people collaborate on something, their buy-in is increased.

Design for Humanity

The first time you meet someone, your first thought isn’t “How do they function?” it’s “How do they make me feel?” And when you’re asked about that person later, you describe their personality: “She’s relaxed, smart, witty. She makes me laugh.”

Designing with Science A small team is given a big problem to solve: presenting a trove of analytics data in easily digestible form.


Tools of the Trade

GitHub - dustinspecker/awesome-eslint A list of awesome ESLint plugins, configs, etc.

We don’t know how to build conversational software yet

For now, at least, startups can build a defensible business by getting their hands dirty and building better conversational software the inelegant way. In a few years, that could become a lot easier, and that will change the landscape all over again.

LazyDOM — an experiment to bring virtual DOM to the browser natively TL;DR React-style virtual elements are fast but cannot be consumed like real Elements, LazyDOM elements are fast like React elements, but can be consumed like real DOM Elements because they lazily proxy to one.

How to implement SRI in your build process Subresource Integrity is a very simple way to secure static assets hosted on servers you have no control over. Here are some tips for adding SRI to your build process.

Alephbet/gimel Run your own A/B testing backend using AWS Lambda and Redis HyperLogLog.

The Annotated Programmer Off-beat code annotations that need to exist:

@Undocumented This annotation is an expression of the API developer’s frustration that they inherited this code without having any idea of what it is for, what is is doing, and how it is (or is not) doing its job.


Lines of Code

Studying the Language and Structure in Non-Programmers’ Solutions to Programming Problems Fascinating study about the way in which non-programmers describe solutions to common programming problems (PDF):

The majority of the statements written by the participants were in a production-rule or event-based style, beginning with words like if or when.

Most popular languages require iterative operation on the objects, one at a time, while the participants strongly preferred to use set and subset expressions, or plurals, to specify the operations in aggregate.

Cheng Lou

Lisp: everything’s data

Smalltalk: everything’s an object

Haskell: everything’s computation

JavaScript: everything’s a library


Architectural

Hacker News Onion

How LinkedIn Scaled To Billions Of Unread Messages


Peopleware

Born for it On the lack of diversity in tech, and how we fooled ourselves into this situation:

It’s startling to realise that the pressure of the software crisis, the resulting hiring practices and these two psychologists from the 60s might have shaped this whole image, while so many people are still assuming that it’s ‘just natural’.

The Novelty Effect Hack yourself with this one neat trick:

Once you know about the novelty effect, you can use it as as form of existential judo. When I start a new writing project I’ll download a new word processor specifically to trigger the effect, knowing in advance that it’ll only last a few weeks or months, but what the heck—it’ll be fun while it lasts. The novelty effect is a blast for tool users!

Mistakes at Work Are Not Sins 100%

Software development is a difficult activity and software developers will make mistakes. They shouldn’t be crucified for making honest mistakes. It’s part of the learning. Great managers don’t cheat their employees of personal growth and development opportunities.

Avoiding the Trap Learning to recognize burnout before it hits you.

Unintuitive Things I’ve Learned about Management (Part 2)

Ultimately, you need to have faith in yourself and do what resonates with you. And when you reflect back on those outcomes, you need to recognize and learn from your mistakes.


Startup Life

My startup failed, and this is what it feels like… Although a rollercoaster that ended with the company shutting down, this is a story of true grit, a founder that won’t give up, and found a way to route around one obstacle after the other. This is what it takes to be successful.

What US Software Companies Should Understand About The Rest Of The World A rant from outside the Silicon Valley echo chamber:

Rather than dealing with really difficult issues (getting product on time, fixing bugs, etc), you’d rather fantasize about viral ad campaign that will triple your business, so that you don’t have to deal with problems that you weren’t able to fix so far.


Locked Doors

#126109 CSV Injection in business.uber.com CSV injection?

Reversing the petya ransomware with constraint solvers

The malware is different & unique from typical ransomware as it does not encrypts file. Instead it encrypts the MFT (Master File Table) on NTFS volumes.


None of the Above

Yes, the jet-powered hoverboard is real, and yes, the creator has crashed it

The Victorians who flew as high as jumbo jets

It was one of the most foolhardy flights in history, and only a stroke of luck at 37,000ft prevented them drifting up to their deaths at the edge of the atmosphere.

The Twitter That I Used to Know Tara Hunt on where Twitter lost its way, how it turned from the world’s largest water-cooler into yet another popularity contest, and what we can do to reclaim the old Twitter.

Emotional Responses to Corporate Text Messages, Vol. 3 Conversing with bots.

Have you tried turning it off and on again?