coding
Will Faught
Home
Will Faught
Why Dependent Haskell Is The Future Of Software Development
I’m really interested in dependent types, and hope this comes to fruition!
1 minute
“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.
1 minute
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.
2 minutes
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.
1 minute
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.
2 minutes
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.
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).
1 minute
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.
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.
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.
2 minutes
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.
1 minute
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.
1 minute
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.
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.
1 minute
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.
1 minute
but it’s const final static private abstract unsigned int CURRENT_YEAR = 2018 LOL.
1 minute
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.
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.
1 minute
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.
1 minute
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
1 minute
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
1 minute
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
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
1 minute
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
1 minute
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
1 minute
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.
1 minute
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.
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.
1 minute
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
1 minute
Notes On Distributed Systems For Young Bloods
A really great list of basic ops and engineering lessons learned the hard way.
1 minute
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.
1 minute
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.
2 minutes
A great introduction to Haskell: Learn You a Haskell for Great Good!
1 minute
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
2 minutes
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.
1 minute
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
1 minute
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
1 minute
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
3 minutes