Labnotes

Published on

@LASTEXITshirts Too soon?

This week we build a lightsaber app and revisit the PC XT; Node.js reactions do tumblr dot com; we practice naming things; and learn to not prematurely optimize; let AIs talk amongst themselves; we turn the gears on Ferrero Rocher.


Tools of the Trade

iTerm2 Version 3 Just entered beta with many new and exciting feature:: shell integration, session restoration (tmux without tmux!), password manager, even inline images:

Sci-Fi swords and Progressive Web Apps Using the Motion Events, Web Audio and Service Worker APIs to build a lightsaber app that works in any browser.

All Origins Open source alternative to AnyOrigin.com with support for gzipped content. You can use it to fetch data from any website, bypassing same-origin policy, e.g.:

$.getJSON('http://allorigins.pw/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
    alert(data.contents);
});

Issue and Pull Request templates Github now allows you to set a template for new issues and pull requests, to help contributors add the right details at the start of the thread.

sindresorhus/refined-github Chrome extension that simplifies the GitHub interface and adds useful features.

straker/html-tagged-template Proposal to improve the DOM creation API using template literals. I'd love to see this added to the DOM:

html`<input type="number" min="${min}" max="${max}" name="number" class="number-input" ${ (disabled ? 'disabled' : '') }/>`;

html`<div class="row">  
  <div class="col">
    <div>${text}</div>
  </div>
</div>;  

Cache API The Cache API (part of Service Workers), what it is and how to use it.

Introducing Vector Networks Interesting way to deal with vector graphics.

The IPv6 Numeric IP Format is a Serious Usability Problem "Visually parsing an IP address should not feel like visually comprehending C++ templates."

@noahsussman "Hi, this goes in ~/.gitconfig. You're welcome."

[alias]
  whatever = commit -a --fixup HEAD
  whatevs = commit -a --fixup HEAD
  fuck = commit -a --fixup HEAD
  wat = commit -a --fixup HEAD

IBM PC XT running Windows 1.01 This is pretty cool. It's a JavaScript simulation of a PC XT running Windows 1.01. Try and use Notepad, it's as fast as any modern text editor.

@JennyBryan Sometimes I miss XML. Not.

This is your spreadsheet.
This is your spreadsheet on XML


Lingua Scripta

An update on strong mode An update on the strong mode experiment in V8, what worked and what didn't, and why it's going away.

JdeH/Transcrypt Python to JavaScript transpiler.

warning: possible EventEmitter memory leak detected. 11 listeners added. Of course there's a Node.js reactions dot tumblr dot com.


Lines of Code

Naming Things This is something that happens to me a lot. In the process of trying to figure out better variable/function names, I slowly discover the story behind the code, and then rewrite the code to tell that story. What I end up with is more coherent, easier to read, and often even performs better.

In this example, a big pile of "what does this even do?" turns into an obvious fetchRegisteredUsers().then(updateRegisteredUsersTable) -- you don't need to know JavaScript to figure out what it does.

Why Quantity Should be Your Priority And this applies to code, design, documentation, pretty much everything. Or as my wife says, "I'm not made of magic, I'm made of practice".

Let me elaborate: quantity should be a higher priority than quality, because it leads to higher quality. The shorter path to maximized quality is in maximized quantity, and executing on the feedback after each finished product. (Some may say that this is a less refined form of deliberate practise.)

I no longer understand my PhD dissertation Math, with its single letter variables, terse syntax, and "let's just drop all these steps for brevity" ... not so different from programming after all:

“The result now follows easily…” may have made sense back when, but now the author-turned-confused reader can profess that it most certainly does not follow easily, at least in his own mind.

Codeology Turns your Github projects into 3D ASCII art. This is what Zombie.js looks like.


Architectural

Write code that is easy to delete, not easy to extend. This. So much this:

To avoid paying for a lot of code, we build reusable software. The problem with code re-use is that it gets in the way of changing your mind later on. ...

To write code that’s easy to delete: repeat yourself to avoid creating dependencies, but don’t repeat yourself to manage them. Layer your code too: build simple-to-use APIs out of simpler-to-implement but clumsy-to-use parts. Split your code: isolate the hard-to-write and the likely-to-change parts from the rest of the code, and each other. ... Don’t try to do all of these things at the same time, and maybe don’t write so much code in the first place.

Should I Optimize? Calculates whether code is worth optimizing, based on your hourly salary and EC2 instance pricing. Tape this to the office wall: "Are you going to save more than 412 hours of instance time?"


Peopleware

Why Do Employers Rarely Offer Explanations to Rejected Candidates? Cue #notallcandidates:

Just know that a big part of the reason why you can't get insight into your interview performance is likely due to the loud, unprofessional, and often vocal minority who have pretty much ruined it for everyone else.


Techtopia

A Conversation Between Two AIs When two AIs try to schedule a meeting for their humans:

As you can see, the AIs communicate with one another in natural language as a lingua franca. It seems — what’s the AI analog of dehumanizing? — for them to have to put up with such a primitive form of communication. But I suppose it what’s they’re stuck with until the singularity.

@assaf "Damn kids today, never off their phone"


None of the Above

@RyanJohnNelson This, I definitely have to try at home:

That Ferrero Rocher can rotate like gears is probably the most important thing I've learned today.

@BrennenTaylor

thank god I don't have to hunt for my food i don't even know where tacos live

The Shortest Mystery You’ve Ever Watched A creative whodunit that fits into a 6 seconds Vine. See if you can spot the murderer:

Rent A Minority When you can't tell the difference between satire and real life ...

A Tiny Game of Pong The Apple Watch app you've been waiting for since 1972 has finally arrived: Pong!

Kommute Offline reader for any website, so you can keep reading Hacker News while on BART.

@ErinJoanSnyder "WITNESS ME IMMORTAN TUBBS!"

Published on

How to download and print NASA’s 14 brilliant travel posters at home

This week we remove the center line; we find a way to blame others; we struggle to name things; we pick on locking algorithms; we kill some dependencies; the Fitbit pregnancy test; we hack a toilet; the myth of meritocracy; and resistence is futile.


Design Objective

White centre lines are being removed from roads in the UK—for safety No idea why it works, but it does:

The TfL white paper found that drivers tend to slow their driving by up to 4mph on roads with no center lines.

...

The white paper’s authors admitted that they did not know for sure the exact cause of the slowing traffic, but they suggested that "center lines and hatching can provide a psychological sense of confidence to drivers that no vehicles will encroach on ‘their’ side of the road.”

@redheadjessica

"Our interface is cluttered and confusing.. Let’s turn labeled buttons into icons for extra confusion!"


Tools of the Trade

jayphelps/git-blame-someone-else "Blame someone else for your bad code." Haha. Totally want to use this next:

.bzvol is missing TL;DR Adobe Creative Cloud will delete the first hidden folder at the root of your drive. What a creative feature!

htop htop goes 2.0 and is now cross-platform with native support for OS X.

Yes, you can rely on Amazon’s new game engine during the zombie apocalypse TIL Amazon's new game engine is not a safety-critical system, but may still be used in the event of a Zombie apocalypse:

However, this restriction will not apply in the event of the occurrence (certified by the United States Centers for Disease Control or successor body) of a widespread viral infection transmitted via bites or contact with bodily fluids that causes human corpses to reanimate and seek to consume living human flesh, blood, brain or nerve tissue and is likely to result in the fall of organized civilization.

@tmcw So true:

years after our deaths strangers will find our open github issues and casually ask any progress here


Lingua Scripta

Developing inside a node_modules folder If you ever need to develop/test/fix a Node module as it's being used by another project.

Squeeze the juice out of Node An exploration of how Node.js handles HTTP connections.

A New Day for Express! TL;DR StrongLoop promises to stop being a dick, hands Express over to the Node.js Foundation.


Lines of Code

@ayende Maybe naming variables "i" and "j", not such a good idea after all:

These types of bugs are really freaking hard to figure out

@drmabuese #lesscode

The good programmer's most important skill: avoid programming. Massage the problem until there's not much left to do. Keep code base small.

@archiloque "When coding, naming things is a hard problem"

@assaf "Code comments"


All at Once

The Deadlock Empire An interactive game that will teach you about the trappings of concurrency: race conditions, deadlocks, and other evils. Also, how to use critical sections, locks, semaphors and friends.

Redlock discussion A rebuttal to the rebuttal to an article picking on Redlock, a naive implementation of distributed locks for Redis. You may pick a few things about distributed systems and clocks from this thread.


Architectural

How to build stable systems "An incomplete opinionated guide". My favorite opinion:

Optimize for sleep. The system must avoid waking people up in the middle of the night at all costs. Operations as well as developers.

Kill Your Dependencies Though written for Ruby, it's relevant to :

Some software engineering rules:

  • No code runs faster than no code.
  • No code has fewer bugs than no code.
  • No code uses less memory than no code.
  • No code is easier to understand than no code.

@jaz303 Apropos:

You are in dependency hell
> north
You can't go that way. Exits: north-v0.9, north-v1.0
> north-v0.9
CONFLICT: north-v0.9 requires feet-v1.2

JavaScript fatigue fatigue We call it "bleeding edge" for a reason. Newer technologies are never mature, you'll spend a lot more time with little progress -- working hard with nothing to show for leads to burn-out -- "JavaScript fatigue" is a choice, and you can easily avoid it:

  • Wait for the critical mass. You can often afford to get started by reading the opinions of people you trust and wait it out until new ideas prove themselves.
  • Stick to things you understand: don’t use more than 1–2 new technologies per project.
  • Do exploratory toy projects: I like creating small projects that explore technologies or aspects of technologies.

@coreyhaines Absolutely:

I like to say that a big part of a startup CTO’s job is to keep software from being built.


Techtopia

How this company tracked 16,000 Iowa caucus-goers via their phones What you buy, where you live, and who you're likely to vote for:

So on the night of the Iowa caucus, Dstillery flagged all the auctions that took place on phones in latitudes and longitudes near caucus locations. It wound up spotting 16,000 devices on caucus night ... It captured those mobile ID’s and then looked up the characteristics associated with those IDs in order to make observations about the kind of people that went to Republican caucus locations (young parents) versus Democrat caucus locations. It drilled down farther (e.g., ‘people who like NASCAR voted for Trump and Clinton’) by looking at which candidate won at a particular caucus location.

Man Finds Out Wife Is Pregnant Via Reddit's Analysis of Her FitBit Data Speaking of things you can do with data online:

reek/anti-adblock-killer Ads -> ad blockers -> anti ad-blockers -> anti ad-blocker killer.

@lukeman Hopefully not down the toilet:

POÄNG is a Swedish word that loosely describes the sound of an iPhone falling out of your pocket every time you sit down.


Locked Doors

Hackers take control of a TOILET using bog-standard computer skills The Internet of Shit is upon us. I'm not laughing. Ok, maybe a little.

This meant they could take control of the toilet, allowing them to flush it at an awkward moment or even surprise people by unexpectedly aiming a jet of water at their nether regions.

@Duncrow

/S/imple
/M/alware
/T/ransfer
/P/rotocol


Culturally Speaking

The One Video Every Silicon Valley Investor Should Watch The money quote:

“We really don’t need the charity of anybody in this country. This country needs the insights of our cultures to make money, to be successful.”

Gender bias in open source: Pull request acceptance of women versus men If you've been paying attention, there's nothing surprising about this:

Surprisingly, our results show that women's contributions tend to be accepted more often than men's. However, when a woman's gender is identifiable, they are rejected more often. Our results suggest that although women on GitHub may be more competent overall, bias against them exists nonetheless.

Against “Don’t Read the Comments” We were right, but now we're wrong:

We’ve made a habit out of telling people not to read the comments online. But what started as a cynical in-joke has become a bad habit, and an excuse for enabling abuse across the web.


None of the Above

@grahamfarmelo This sums up the state of education in the US:

"Those who can teach, teach. Those who can't teach.... "

Gravitational Waves Detected, Confirming Einstein’s Theory Major news for science geeks, that have been looking forward to this day for 100 years now. This video explains what gravitational waves are, and why it took 1.2 billion and 99 years to detect them.

OK Go - Upside Down & Inside Out Making its own waves, OK Go's latest video, shot in zero G.

ShprAlex/SproutLife Sprout Life adds reproduction, mutation, and evolution to Conway’s Game of Life:

Organisms collide with each other and disrupt each other's ability to produce seeds. The pressures of producing seeds and competing with other organisms can lead them to evolve to an unlimited complexity. As it turns out, managing collisions with both friends and foes has a greater impact on an organism's success than simply being faster to create offspring.

@skepchicks "Resistance is futile."

Published on

@skywalkertwink "wHO DID THIS"

This week we explore existential UIs; we discover Emacs for Vim people; there's a better way to handle JS exceptions; "remote dynamic linking"; we visit the malware museum; times were tough before the GoPro; these are not the batteries you are looking for ...


Design Objective

Is this the perfect save icon?

The key thing is, if you really need an icon just make sure that it is simple, identifiable and consistent.

It’s unclear what the future will hold for the floppy disk icon. Maybe there is an argument that you don’t really need to know that it’s a floppy disk at all? You just need to know that pressing this weird boxy symbol means to manually save something.

The Secret UX Issues That Will Make (Or Break) Self-Driving Cars The hardest problem in UX science?

The Price Of Not Using UX Patterns But you already knew that:

When users are accustomed to using a pattern, even a minor change in that pattern can be very expensive in performance terms. In fact, the minor change is confusing in two ways: (1) since the difference is minor, it can go unnoticed, hence , and (2) since the user is already well-trained with the standard pattern, their knowledge masks the new pattern and inhibit learning.

@assaf Existential UI


Tools of the Trade

Spacemacs Emacs for people who love Vim.

tuvistavie/atomic-chrome Use Atom to edit text area in Chrome.

Noun Project for Mac 100,000+ icons in easy to search, minimal app.

The Keybase filesystem Big news for the security minded: frictionless sharing of public signed directories, and sharing private end-to-end encrypted directories:

Every file you write in there is signed. There's no manual signing process, no taring or gzipping, no detached sigs. Instead, everything in this folder appears as plaintext files on everyone's computers. You can even open /keybase/public/yourname in your Finder or Explorer and drag things in.

...

Soon, you'll be able to throw data into /keybase/private/yourname,pal@twitter, even if that Twitter user hasn't joined Keybase yet. Your app will encrypt just for you and then awake and rekey in the background when that Twitter user joins and announces a key.

Veertu Minimal virtual machine for OS X: this app is all of 18MB, simple UI, easy on battery usage, purchase/update from app store, thanks to the native OS X virtualization framework (VMNet).

draft-ietf-appsawg-http-problem-03 RFC for standardizing how HTTP APIs use JSON to communicate errors, henceforth known as "problem details".

What success really looks like in open source How to help open source projects succeed, and it starts by moving away from the myth of the bazaar:

From far away, successful Bazaars look like moneyless anarchic systems, but up close, the bulk of responsibility falls on a couple of people, who are usually being paid to do the work.

@HenryHoffman

I fucked up Git so bad it turned into Guitar Hero

Async CSS w/ link[rel=preload] Interesting technique for async loading CSS:

<link rel="preload" href="http://scottjehl.com/css-temp/slow.php" as="style" onload="this.rel='stylesheet'">

npm addict "Your daily injection of npm packages"

p-e-w/maybe Run a command and see what it does to your files without actually doing it!

@mhoye

"Unix will give you enough rope to shoot yourself in the foot. If you didn't think rope would do that, you should have read the man page."

@simula77 "Browsing the fiction section..."


Lingua Scripta

Functional Refactoring in JavaScript How to use functional programming to make your code more expressive.

@ericclemmons This:

Since using const everywhere I find that "let" means I need to put that logic in function and return instead. Or a reducer.

@kentcdodds "ES2016 in a tweet"

[1, 2, 3].includes(2) === true

3 ** 2 === 9

Promise Rejection Events Sample Unhandled rejection event handlers - that's a mouthfull - arrive in Chrome 49. For the uninitiated, like windows.onerror but for rejected promises (also async/await without a try/catch).

@nzgb Perfect!

ProTip: confuse your team mates with expressions like a >= b ? a => b : b => a

@haoel "The right way process JavaScript exception."


Lines of Code

The Unreasonable Effectiveness of Dynamic Typing for Practical Programs TL;DR static analysis won't save you as much time as you'll spend dealing with types (Vimeo).

@SoManyHs Presented without irony:

Duck typing

@mattgreenrocks This limit affects everything you develop:

coupling/cohesion are the physics of software construction: they form an upper bound on how fast you go

@iamdevloper Feels so familiar:

The software development process

i can’t fix this

*crisis of confidence*
*questions career*
*questions life*

oh it was a typo, cool


Architectural

https://news.ycombinator.com/item?id=11028885 This is how every successful company evolves its tech stack:

... the founder chooses a tech stack based on whatever he knows best and will let him write a v1 quickest - whether it be Java (Google), Perl (EBay), PHP (Facebook), or Common Lisp (Reddit). The first few employees collectively say that the founder is an idiot, choose a different tech stack (usually whatever's hot right now - probably Go or Node.js at this time, Python or Rails in 2005), and rewrite the whole product. They hire an experienced VP who says that the first few employees are idiots ...

@harrisj Not quite as bad as punch cards:

Back in my day we didn’t have no newfangled JSON APIs. It was all FTP and uphill both ways.

@juliepagano From a real job listing:

New favorite job title that sounds ridiculous without context. “Kafka Infrastructure Engineer”

@schmichael Properly labeled:

Microservices don't sound as appealing when you call them "remote dynamic linking.'


Locked Doors

The Malware Museum Collection of malware programs, usually viruses, that were distributed in the 1980s and 1990s on home computers.

How a Lone Hacker Shredded the Myth of Crowdsourcing What happens when someone decides to play adversary to a crowdsourced effort.


Techtopia

‘Error 53’ fury mounts as Apple software update threatens to kill your iPhone 6 Which camp are you in?

  1. @geoffreyfowler "Latest battle in the right to repair our gadgets: iPhone software updates that brick unofficial home button fixes"

  2. @charlesarthur "Apple stops NSA, China, crooks meddling with TouchID during repair"

@MarkHarrisNYC Re: rumors that Twitter will start using an algorithm:

Nobody in the world has a lower opinion of you than the algorithm that compiles "Other Stories You Might Enjoy."

@assaf "Times were tough before the GoPro ..."


None of the Above

Thomas101/wmail A Mac app for Google Inbox/GMail. Support multiple accounts, unread notifications, open source.

@Karishad

Sure they were free with the product...but I don't trust cheap Chinese made rechargeable batteries named "SoonFire"

@afilina "Gamers will understand."

Published on

This Photograph of the NYC Winter Storm Looks Like an Impressionist Painting

Back from vacation. This week we add a feature and "it should be pretty easy"; gulpfile is lore; 2 unit tests and 0 integration tests; framework is a unit of time; USA vs USB; the server has gone to "the cloud".


Design Objective

SVG Path animated Text Cool.

Super Mail Forward : an email that evolves as you forward it A silly thing you can do with HTML email by exploiting email client quirks.

@iainthomson "What computer users see in security warning boxes"

@GonzoHacker

We choose to do this not because it's easy, but because a product manager said it "should be pretty easy."


Tools of the Trade

jiahaog/nativefier Create a desktop application for any web site. Uses Electron and works on Windows, OSX and Linux.

Jam3/devtool Runs Node.js programs through Chromium DevTools.

dspinellis/gi Git-based issue management. Interesting because it's a Bash script, a well designed one, good way to learn some Bash.

ellotheth/pipethis "I would have called it stop-piping-the-internet-into-your-shell, but that seemed too long"

A Visual Introduction to Machine Learning Very slick and quite informative.

ben174/git-draw Click and draw your Github heatmap.

Browser Fairy If you're using multiple browsers, e.g. one for work and one for personal use (OS X).

ncrocfer/whatportis Command line tool to search port names and numbers.

@HenrikJoreteg

Avoid framework fatigue, JS fatigue, and ${otherFatigue} by building things instead of talking about building things 🎉

@patio11

The gulpfile we use is lore passed down to us. We do not understand & cannot reproduce it; we only know that changing it risks catastrophe.


Lingua Scripta

Does Curry Help? TL;DR JavaScript is not Haskell, and arrow functions are idiomatic in JS:

In JavaScript, the concept is alien. Most developers I’ve talked to find it difficult to grasp and hard to read. While you could argue it makes code simpler, it’s not close to hand enough to benefit many teams.

2016 - the year of web streams Streams are coming to the DOM, here's a quick intro.

@gavinjoyce Console output is no free lunch.

It sounds crazy, but disabling npm's progress bar yields a 2x npm install speed improvement for me

rstacruz/pnpm An incomplete, but faster alternative to npm, with an interesting file structure:

pnpm maintains a flat storage of all your dependencies in node_modules/.store. They are then symlinked whereever they're needed. This is like npm@2's recursive module handling (without the disk space bloat), and like npm@3s flat dependency tree (except with each module being predictably atomic).

@garethr This.

npm: when people said bundler or maven downloaded the internet this was not praise nor a feature request

@mcclure111

The blast doors were sealed, the oxygen depleting. They begged the ship's AI to explain. "Object object", was all the silvery voice replied.


Lines of Code

@rundavidrun "Show this to anyone who argues about whether that refactoring effort is worth the investment."

@garybernhardt

As you remove mutation, OO disappears, which is exactly what I've found over the last five years. (Assuming you don't use inheritance.)

@BobRossGameDev

If you're having a hard time programming, maybe try cleaning your desk or doing some stretches. Often times, the little things help.

Melody’s Guide To Programming Languages Haha.


Architectural

Seven Deadly Annoyances of API Design Naming. Naming. Naming. Bad docs. Versioning. Over complication. XML.

@HenrikJoreteg

Never underestimate an engineer’s ability to over-engineer something that probably didn’t need to exist in the first place.

@zachleat

proposal: make “framework” a standard unit of time

“I’ve been working at this job for 4.6 frameworks”


This is just a Test

How to do test reviews Readability, Maintainability and Trust.

Review EVERY piece of unit testing code, and use the following points as a simple check list of things to watch out for. (you’ll find this is mainly useful when working in statically types languages such as Java or C#).

@ThePracticalDev "2 unit tests. 0 integration tests"


Devoops

@sadserver

What's your favorite server monitoring tool and why is it your users?

@J4vv4D

"We have a problem."

"Remember, there are no such things as problems, only opportunities."

"Well then, we have a DDoS opportunity"


Locked Doors

@thegrugq "We do client side filtering."

High-severity bug in OpenSSL allows attackers to decrypt HTTPS traffic Another day, another OpenSSL security vulnerability.

ShmooCon: LastPass design elements create perfect Phishing opportunity The problem with password managers that live in the browser.

AWS Certificate Manager – Deploy SSL/TLS-Based Apps on AWS Another major step towards $0 HTTPS certificates.

Amazon’s customer service backdoor Customer support is the weakest security link in many of the services we use:

For users, be extremely careful with the information you share. Even big companies like Amazon can’t keep it safe, they’re far from the worst.

The Web Never Forgets: Persistent Tracking Mechanisms in the Wild "We present the first large-scale studies of three advanced web tracking mechanisms — canvas fingerprinting, evercookies and use of “cookie syncing” in conjunction with evercookies." (PDF)

@mikko


Peopleware

@corey_latislaw

Some days getting dressed is scope creep.


None of the Above

@rfbrazier

“How likely are you to recommend this survey to a friend?”

AdNauseam Instead of blocking ads, attack at the source:

Working in coordination with your ad blocker, AdNauseam quietly clicks every blocked ad, registering a visit on the ad networks databases. As the data gathered shows an omnivorous click-stream, user profiling, targeting and surveillance becomes futile.

Cat Cosplay of the Feline variety Is a thing that exists.

The Best Damn Coffee Product Hunt for coffee lovers.

@jreuben1 How coffee works:

Inside the Eye: Nature’s Most Exquisite Creation

@KFRGFrogatelli

My mom asked me how to screenshot on her phone. I laughed and then remembered she taught me how to use a spoon and toilet.

@carlfish

A few years later, the parents in this book had the awful job of explaining how the server had gone to "the cloud".

Published on

@sarah_edo "Time to throw a *software party*"

This week we're throwing a software party; the hardest problem in computer science is "npm complete"; how we stopped teaching kids about recursion; artisinal, small batch, uptime; we find the Internet's biggest blind spot; fix your SSH; and cats taking selfies.


Tools of the Trade

Medis Beautiful Management Application for Redis (OS X)

No, I Don't Want To Configure Your App! Even software designed strictly for developers should just work:

“Oh goddess, finally!” you exclaim, exasperated. You feel as if a major weight had been lifted from your shoulder, but you’re too frustrated with how bad computers are to think properly about this. “Now I can actually move on and get some work done,” you conclude, grumbling.

Eliminating Known Vulnerabilities With Snyk Snyk makes it easy for you to find, fix and monitor for known vulnerabilities in Node.js.

variadico/noti Trigger a notification when a terminal process finishes (OS X/Linux).

Safari 9.1 iOS 9.3 and OS X 10.11 betas support <picture> element, CSS variables, no-delay taps, and much more.

@bitemyapp

It's weird to me that programmers even assume all resources for learning a discipline that is very well paid should be free.

TheMozg/awk-raycaster Pseudo-3D shooter written completely in awk using raycasting technique.

@searls

TIL if you can't get your shrinkwrap.json file to work, the problem is said to be "npm complete"


Lines of Code

A software developer's guide to clean code Great rule for naming things:

The larger the scope, the more important to get the name right. Don't concatenate your variable and function names, you're not going to run out of bytes! But self-describing code is just about understanding the intent. It's also about refactoring and improving your code flow. Imagine if you did a standard "Search & Replace" for all references of variable "x" or even worse "a" or "b". A world of fun awaits as you undo your changes and revert to manually changing all instances of that variable.

@manisha72617183

Writing correct code at scale is essentially impossible.The best we can do is write simple code w/ as little undocumented magic as possible.

@tomaspetricek

Ouch. "50 million accountants use monads in Excel. They just don't go around explaining monads to everyone..." @Felienne #ndclondon

@soopa

Steps in mastery of a programming skill: 1. Can I do this? 2. Can I do this more easily? 3. Can I do this more elegantly? 4. Can I not do this?

@librarythingtim "Why kids today don't understand recursion."


Architectural

Tear Down This Wall! When IT needs grow, the common knee jerk reaction is to throw more coupling at it:

Ok, NOW you have a problem. Because now you’ve got coupling. And coupling is a much worse enemy than duplication. The number of systems doesn’t matter nearly as much as the amount of coupling you have between them.

@tef_ebooks

it's for craftsmen who need artisanal, small batch, uptime


Peopleware

Elaconf Keynote by Saron Yitbarek "Punching your feelings in the face." Fantastic talk.

How I Stumbled Upon The Internet’s Biggest Blind Spot Open source software, necessary, but not getting the investment it needs:

What could go wrong? Well, this, or this, or this. People getting burned out and quitting. Bugs or security vulnerabilities that go undetected. But also, people just making less stuff. Society moving a little more slowly.


Locked Doors

OpenSSH: client bugs CVE-2016-0777 and CVE-2016-0778 Patch your SSH config, while waiting to patch your SSH client:

echo 'UseRoaming no' >> /etc/ssh/ssh_config  

TrendMicro node.js HTTP server listening on localhost can execute commands Friendly reminder that anti-virus software is often buggy and makes your computer less secure.

@jsoltero

Two factor authentication is great until you put the second factor in the washing machine.

@old_sound "I've built my own crypto"


None of the Above

@rrhoover "1/This cat is taking a selfie"

@JohnLyonTweets

Tips for improving concentration: - Make a list of tasks. - Take on one task at a time. - Take On Me was a fun song. - Ooh I found the video.

The Reductive Seduction of Other People’s Problems

If you’re young, privileged, and interested in creating a life of meaning, of course you’d be attracted to solving problems that seem urgent and readily solvable. Of course you’d want to apply for prestigious fellowships that mark you as an ambitious altruist among your peers. Of course you’d want to fly on planes to exotic locations with, importantly, exotic problems.

The resolution of the Bitcoin experiment Turns out, building distributed solutions at scale is a people problem:

Bitcoin has no future whilst it’s controlled by fewer than 10 people. And there’s no solution in sight for this problem: nobody even has any suggestions. For a community that has always worried about the block chain being taken over by an oppressive government, it is a rich irony.

Ruggie™ - The World's Best Alarm Clock Alarm clock that won't stop until you get out of bed and step on it.

Kittens VS BB8 Droids