coding

Will Faught

March 2019

Why Dependent Haskell Is The Future Of Software Development

I’m really interested in dependent types, and hope this comes to fruition!

coding haskell

Will Faught

1 minute

December 2018

“8 Common Mistakes That Get Developers Fired”

Andrew McDermott: A tech employee, who I’ll call Alan, was watching anime porn at work. Not satisfied with simply watching it, he decided it was time to start printing his porn — on a color laser printer, no less. He printed it on transparencies which, as it turns out, weren’t compatible with the laser printer. They melted inside the printer. Alan has just ruined a very expensive new printer. Then to make matters worse, he takes the printer apart in a misguided attempt to try and fix things himself.

coding

Will Faught

1 minute

November 2018

The Math Of Software Engineer Contributions

Michael Church on the “math” of software engineer contributions in an organization: Teams, in general, have four categories into which a person’s contribution can fall: dividers, subtracters, adders, and multipliers. Dividers are the cancerous people who have a broad-based negative effect on productivity. This usually results from problems with a person’s attitude or ethics– “benign incompetence” (except in managers, whose job descriptions allow them only to be multipliers or dividers) is rarely enough to have a “divider” effect.

coding management

Will Faught

2 minutes

October 2018

Why GitHub Added Management

Melissa Mittelman on why GitHub added management to its workforce: While the old times created a strong sense of camaraderie, employees didn’t know who to direct questions to, either about uncomfortable confrontations with colleagues or about their own performance. “Without even a minimal layer of management, it was difficult to have some of those conversations and to get people feeling like they understood what was expected of them, and that they were getting the support that they needed in order to do the best work,” says Avalos, who’s since been promoted to chief business officer, the only C-level position besides CEO.

coding holacracy management

Will Faught

1 minute

The Problems With Holacracy

Vladimir Oane explains holacracy: Holacracy is a system designed to move companies away from rigid corporate structures and toward decentralized management and dynamic composition. As envisioned, under a holacracy teams largely self-organize, and individuals operate with a fair amount of autonomy. Ideally, this puts work at the forefront and lets a company’s organizational structure support that work, rather than the other way around. As Tom Thomison, a partner at HolacracyOne — the company teaching this system — puts it, “Nothing gets in the way of the work.

coding management

Will Faught

2 minutes

How Scrum Goes Awry

Robin Message on how Scrum goes awry: The Product Owner in a scrum is typically someone from the business or product side of the business. They are not there to advocate for technical priorities; and indeed, this is fair enough, because someone needs to advocate for business and customer value. Scrum intends them to be “responsible” and “accountable” for the product backlog, and therefore to work with others to create backlog items, but in practice, they are typically the sole person creating the backlog.

agile coding scrum

Will Faught

2 minutes

The Two Faces Of The Agile Manifesto

Robin Message on the mismatch between the parts of the agile manifesto concerned with technical craft and those concerned with project management: So, to summarise, almost every method and technique that was represented at the Agile manifesto was concerned with technical craft. XP is a methodology for software development, and as such, seven of the twelve practices are about how the software is written (pair programming, TDD, continuous integration, refactoring, simple design, system metaphor, coding standards).

agile coding scrum

Will Faught

1 minute

Google’s Management Upheaval

James Whittaker on Google’s reaction to Facebook becoming more valuable to advertisers than Google: Larry Page himself assumed command to right this wrong. Social became state-owned, a corporate mandate called Google+. It was an ominous name invoking the feeling that Google alone wasn’t enough. Search had to be social. Android had to be social. You Tube, once joyous in their independence, had to be … well, you get the point. Even worse was that innovation had to be social.

coding management

Will Faught

2 minutes

Valve Humiliated Your Corporate Culture

Michael Church on the self-organizing employees of Valve: The game company Valve has gotten a lot of press recently for, among other things, its unusual corporate culture in which employees are free to move to whatever project they choose. There’s no “transfer process” to go through when an employee decides to move to another team. They just move. This is symbolized by placing wheels under each desk. People are free to move as they are capable.

coding

Will Faught

1 minute

Open Allocation Is Tech Companies’ Only Real Option

Michael Church on open allocation: When open allocation is in play, projects compete for engineers, and the result is better projects. When closed allocation is in force, engineers compete for projects, and the result is worse engineers. When you manage people like children, that’s what they become. Traditional, 20th-century management (so-called “Theory X”) is based on the principle that people are lazy and need to be intimidated into working hard, and that they’re unethical and need to be terrified of the consequences of stealing from the company, with a definition of “stealing” that includes “poaching” clients and talent, education on company time, and putting their career goals over the company’s objectives.

coding

Will Faught

2 minutes

Big Macs Vs. The Naked Chef

Joel Spolsky: But the rules and procedures only work when nothing goes wrong. Various “data-backed Web site” consulting companies sprouted up in the last couple of years and filled their ranks by teaching rank amateurs the fourteen things you need to know to create a data-backed Web site (“here’s a select statement, kid, build a Web site”). The last line cracked me up. The moral of the story: Beware of Methodologies.

agile coding

Will Faught

1 minute

Good Agile, Bad Agile

Steve Yegge: Up until maybe a year ago, I had a pretty one-dimensional view of so-called “Agile” programming, namely that it’s an idiotic fad-diet of a marketing scam making the rounds as yet another technological virus implanting itself in naive programmers who’ve never read “No Silver Bullet”, the kinds of programmers who buy extended warranties and self-help books and believe their bosses genuinely care about them as people, the kinds of programmers who attend conferences to make friends and who don’t know how to avoid eye contact with leaflet-waving fanatics in airports and who believe writing shit on index cards will suddenly make software development easier.

agile coding

Will Faught

1 minute

Keep Your Commits Atomic

Sean Patterson: Commit each fix or task as a separate change Only commit when a block of work is complete Commit each layout change separately Joint commit for layout file, code behind file, and additional resources Invaluable advice for keeping a sane commit history.

coding git

Will Faught

1 minute

How To Write A Git Commit Message

Chris Beams: A project’s long-term success rests (among other things) on its maintainability, and a maintainer has few tools more powerful than his project’s log. It’s worth taking the time to learn how to care for one properly. What may be a hassle at first soon becomes habit, and eventually a source of pride and productivity for all involved. In this post, I am addressing just the most basic element of keeping a healthy commit history: how to write an individual commit message.

coding git

Will Faught

1 minute

Scrum Disempowers Developers

A reply to someone saying someone else had a bad experience with Scrum because they did Scrum wrong: That sounds ridiculously similar to people hanging on to communism/socialism: “the principles are sound, it just hasn’t been implemented as intended”. Except, just like communism, Scrum has never and will never be implemented “as intended” because that’s contrary to our collective evolutionary gifts, and against a developer’s desire to find satisfaction in good craftsmanship.

agile coding scrum

Will Faught

1 minute

March 2018

Current Year

but it’s const final static private abstract unsigned int CURRENT_YEAR = 2018 LOL.

coding

Will Faught

1 minute

Wirth, Oberon And Simplicity

The use of self-compilation speed as a benchmark seems like a great way to target and then maintain a balance between complexity and the performance benefits of optimizations in a compiler. Complex optimizations where the cost of optimization in terms of code complexity, outweigh the benefits of faster binaries could be clearly recognised with such a metric. An interesting idea for seeing the tradeoffs between compiler design/implementation complexity and speed.

coding go oberon

Will Faught

1 minute

What I Learnt From Building 3 High Traffic Web Applications On An Embedded Key Value Store.

Anthony Alaribe: Firstly, a NoSQL key value store is fast, much faster than a comparable relational database. Its speed comes from its simplicity. A key value database stores a data record using one primary key. The key means the record is uniquely identifiable, and can be directly accessed. Other than this, it’s up to the developer to architect any more complexity in accessing data. I love the Dark Side meme.

coding go performance

Will Faught

1 minute

January 2018

The Naming Of Hosts

The other day I was thinking about how many RFCs there are, and how likely it is that someone has actually read them all and understands how all Internet technologies work. Then I ran across this, and was enlightened.

coding internet rfc

Will Faught

1 minute

September 2016

SQL Injection Can Compromise The OS

TIL that if your server has even one SQL injection vulnerability, the entire operating system can be compromised. Eye-opening!

code coding engineering hacking programming software sql

Will Faught

1 minute

August 2016

Go Raised The Bar

Go raised the bar for new language distributions: UTF-8 code Testing, benchmarking, and profiling built in Single command line tool Build tool that leaves code directories clean Package manager Package doc browser Standard code style and formatter Fast builds Language spec with grammar and thorough library documentation Uniform, batteries-included standard library Concurrency support and automatic parallelism, sync and atomic libs, race detector Interfaces, not inheritance Vendoring support Cross compilation Static linking only for simple deployments Tabs, not spaces No semicolon line terminators Trailing commas in lists to minimize diffs Static types Default values for uninitialized variables Built-in comparisons and hashing Safety (e.

code coding engineer engineering go program programming raise the bar software swift technology

Will Faught

1 minute

FizzBuzzEnterpriseEdition

FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes. So funny.

coding enterprise funny java programming satire

Will Faught

1 minute

Why Some Diversity Thinkers Aren’t Buying Tech Industry’s ‘Pipeline’ Excuses

“Diversity thinkers”? Who comes up with that terminology? The pipeline is a valid argument because that’s exactly what’s happening. Anyone who disagrees ought to first take a look in the mirror: have you ever bought your kid a gender-specific toy? A doll for a girl? An action figure for a boy? Because if so, that’s the problem right there. The problem is you. The problem is social. The problem is parents holding their girls back by only giving them “girly” things.

coding computation computer science computers computing feminism npr planet money programming tech technology

Will Faught

1 minute

July 2016

Aphyr Tests Redis With Jepsen

Aphyr on Redis correctness: So you’re running a distributed Redis install, and have realized that the design of Redis Sentinel (or, for that matter, any other failover system on top of an asynchronously replicated primary-secondary design) means you can lose a lot of data when a partition occurs. What can you do? From an operations perspective, I recommend you try to understand the Sentinel consensus algorithm. I don’t, and I’ve read it a dozen times.

aphyr coding database jepsen programming redis

Will Faught

1 minute

Check Sudoku Solutions

My Golang program to check whether Sudoku solutions are correct. It works for any valid Sudoku board size (1x1, 2x2, 4x4, 9x9, 16x16, etc.)

coding engineering go programming software software engineering sudoku

Will Faught

1 minute

June 2016

Io Language

Io looks like a nifty language.

coding io language programming software

Will Faught

1 minute

February 2016

The Wrong Abstraction

Great tip from Sandi Metz on how abstractions can worsen code: When the abstraction is wrong, the fastest way forward is back. This is not retreat, it’s advance in a better direction. Do it. You’ll improve your own life, and the lives of all who follow.

coding

Will Faught

1 minute

December 2015

Logfmt

Brandur: If you’ve ever run an app on Heroku, you may have come across log messages produced by the Heroku router and wondered about their untraditional formatting […] This curious format is unofficially known as “logfmt”, and at Heroku we’ve adopted it as a standard to provide some consistency across internal components. […] At its core, logfmt is just a basic way of displaying key/value pairs in such a way that its output is fairly easily readable by a human or a computer, while at the same time not being absolutely optimal for either.

coding logfmt logging

Will Faught

1 minute

Fabric: Twitter’s Mobile Development Platform

Since the birth of mobile apps, we’ve witnessed an explosion of mobile development tools. Today, many of these tools still require countless hours on the developer’s part to implement: creating different accounts, configuring the SDKs, among others. With Fabric, you’ll never have to worry about tedious configurations or juggling different accounts. We let you get right into coding and building the next big app. Interesting. I would consider using this if I knew how to make apps.

apps coding fabric twitter

Will Faught

1 minute

November 2015

Common Crawl

A free source of web crawler data. Neat!

coding crawl web

Will Faught

1 minute

October 2015

Packing Lightmaps

Jim Scott at blackpawn.com: Pop Quiz: You have 765,618 lightmaps for a scene and very few of them have power of 2 dimensions, what do you do? If your answer was to rescale them and call CreateTexture 765,618 times please slap yourself. If your answer had anything to do with glTexImage2D, you might want to leave now. What you really want to do is smush them all into a couple larger textures, and this text will show you one way of doing it.

algorithms binpacking coding lightmaps

Will Faught

1 minute

Get The Fuck

Brilliant.

coding thefuck

Will Faught

1 minute

August 2015

Notes On Distributed Systems For Young Bloods

A really great list of basic ops and engineering lessons learned the hard way.

coding

Will Faught

1 minute

May 2015

Simple String Comparisons Not Secure Against Timing Attacks

Stack Exchange user cpast explains the security flaw in doing simple string comparisons for passwords and other sensitive information that enables timing attacks: The problem here is that generic string comparison functions return as soon as they find a difference between the strings. If the first byte is different, they return after just looking at one byte of the two strings. If the only difference is in the last byte, they process both entire strings before returning.

coding

Will Faught

1 minute

April 2015

Four Days Of Go

A funny and perceptive take on the Go programming language and the Go team. In other words, Go represents a kind of Machiavellian power play, orchestrated by slow-and-careful programmers who are tired of suffering for the sins of fast-and-loose programmers. The Go documentation refers quite often to intolerable 45-minute build times suffered by the original designers, and I can’t help but imagine them sitting around and seething about all those unused imports from those “other” programmers, that is, the “bad” programmers.

coding go

Will Faught

2 minutes

October 2010

Free Online Haskell Book

A great introduction to Haskell: Learn You a Haskell for Great Good!

coding haskell technology

Will Faught

1 minute

September 2010

John Backus

My favorite computer science paper is Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs by John Backus. It struck me because it reflected my own thoughts on contemporary languages. I started to compile quotations from the paper, but found I was quoting more than not, so instead I’ll just give you a taste by quoting the very beginning. If this piques your interest, I highly recommend reading the paper; it’s very readable, insightful, and prophetic.

coding john backus languages papers technology

Will Faught

2 minutes

HTML5

Just skimmed an overview of HTML5. Love the new canvas and the new input form elements, like colors, emails, URLs, and searches. I’m glad they ditched the crufty stuff like <center>. I wish there was help for animations.

coding html html5 technology

Will Faught

1 minute

Git

If you’re a programmer and you’re not using a distributed version control system, you’re doing yourself a disservice. Learn why Git is better than your version control system and then learn how it works.

coding git technology version control

Will Faught

1 minute

August 2010

Essays For Programmers

I’ve come to love reading essays by Paul Graham and Joel Spolsky about programming and the business of programming. Their writing is excellent, their topics interesting and practical, their substance deep and intelligent, their style natural and accessible, their meaning clear and concise. I especially enjoy reading Graham because he demonstrates the practical advantages of functional programming, and Lisp in particular, through anecdotes of his own experience starting a software company and wiping the floor with his competitors.

coding essays joel spolsky lisp paul graham technology

Will Faught

1 minute

Paul Graham

There are lots of great quotations from his essays. I’ll update here as I find new ones. From The Other Road Ahead: In the desktop software business, doing a release is a huge trauma, in which the whole company sweats and strains to push out a single, giant piece of code. Obvious comparisons suggest themselves, both to the process and the resulting product. and: When you release only one new version a year, you tend to deal with bugs wholesale.

coding essays languages paul graham technology

Will Faught

3 minutes

π