Read the discussion on HN. A full-thread summary is not available yet.
aosabook
500lines
JavaScript2014–2025
aosabook / 500lines
500lines
500 Lines or Less
36Distinct people
39Mentions
0Explicit recommenders
29.6KGitHub stars
What to know before exploring
What it is
500 Lines or Less
GitHub
Where it is used
No documented product use was verified in the last source check.
What people are saying
No recommendation phrase was found in the indexed comments.
No classified warning is attached to this page. Read the discussions before treating silence as approval.
Also in these discussions
No other repository is repeatedly linked in the same discussions.
This week on Hacker News
Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 10:49:33 PM UTC.
Mentions over time
HN mentions by year39 dated mentions
Observed mentions: 2014-04-17 17:54:44 UTC to 2025-02-10 12:20:28 UTC.
Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.
View mention counts and date ranges
| Period | Start (UTC) | End (exclusive, UTC) | Mentions | Submissions | Comments |
|---|---|---|---|---|---|
| 2014 | 2014-01-01 00:00:00 UTC | 2015-01-01 00:00:00 UTC | 9 | 1 | 8 |
| 2015 | 2015-01-01 00:00:00 UTC | 2016-01-01 00:00:00 UTC | 5 | 1 | 4 |
| 2016 | 2016-01-01 00:00:00 UTC | 2017-01-01 00:00:00 UTC | 11 | 1 | 10 |
| 2017 | 2017-01-01 00:00:00 UTC | 2018-01-01 00:00:00 UTC | 1 | 0 | 1 |
| 2018 | 2018-01-01 00:00:00 UTC | 2019-01-01 00:00:00 UTC | 3 | 1 | 2 |
| 2019 | 2019-01-01 00:00:00 UTC | 2020-01-01 00:00:00 UTC | 3 | 2 | 1 |
| 2020 | 2020-01-01 00:00:00 UTC | 2021-01-01 00:00:00 UTC | 3 | 1 | 2 |
| 2021 | 2021-01-01 00:00:00 UTC | 2022-01-01 00:00:00 UTC | 1 | 0 | 1 |
| 2022 | 2022-01-01 00:00:00 UTC | 2023-01-01 00:00:00 UTC | 2 | 0 | 2 |
| 2023 | 2023-01-01 00:00:00 UTC | 2024-01-01 00:00:00 UTC | 0 | 0 | 0 |
| 2024 | 2024-01-01 00:00:00 UTC | 2025-01-01 00:00:00 UTC | 0 | 0 | 0 |
| 2025 | 2025-01-01 00:00:00 UTC | 2026-01-01 00:00:00 UTC | 1 | 0 | 1 |
From the project README
An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
500 Lines or Less
"What I cannot create, I do not understand."
-- Richard Feynman
This is the source for the book 500 Lines or Less, the fourth in the
Architecture of Open Source Applications series. As
with other books in the series, all written material will be covered by the
Creative Commons - Attribution license, and all code by the MIT License: please
see the license description for details. In addition, all
royalties from paid-for versions will all go to Amnesty International.
The production of this book has been made possible by the financial support of
PagerDuty.
Mission
Every architect studies family homes, apartments, schools, and other common
types of buildings during her training. Equally, every programmer ought to
know how a compiler turns text into instructions, how a spreadsheet updates
cells, and how a database efficiently persists data.
Previous books in the AOSA series have done this by describing the high-level
architecture of several mature open-source projects. While the lessons learned
from those stories are valuable, they are sometimes difficult to absorb for
programmers who have not yet had to build anything at that scale.
"500 Lines or Less" focuses on the design decisions and tradeoffs that
experienced programmers make when they are writing code:
Why divide the application into these particular modules with these
particular interfaces?
Why use inheritance here and composition there?
How do we predict where our program might need to be extended, and how can
we make that easy for other programmers?
Each chapter consists of a walkthrough of a program that solves a canonical
problem in software engineering in at most 500 source lines of code. We hope
that the material in this book will help readers understand the varied
approaches that engineers take when solving problems in different domains, and
will serve as a basis for projects that extend or modify the contributions
here.
Contributors
Name
Affiliation
Project
Online
GitHub
Mike DiBernardo
Wave
editorial
@mdibernardo
mikedebo.ca
MichaelDiBernardo
Amy Brown
indie
editorial
amyrbrown.ca
@amyrbrown
amyrbrown
Allison Kaptur
Dropbox
byterun
@akaptur
akaptur
Audrey Tang
g0v.tw, Socialtext, Apple
spreadsheet
@audreyt
audreyt
Brandon Rhodes
Dropbox
contingent
@brandon_rhodes
brandon-rhodes
Carl Friedrich Bolz
King's College London
object model
cfbolz.de
@cfbolz
cfbolz
Cate Huston
Image Filter app
www.accidentallyincode.com/
@catehstn
catehstn
Christian Muise
University of Melbourne
flow-shop
@cjmuise
haz
Daniel Jackson
same-origin-policy
Daniel Rocco
BrightLink Technology
contingent
@drocco007
drocco007
Dann Toliver
Bento Box
dagoba
danntoliver.com
@dann
dxnn
Dessy Daskalov
Nudge Rewards
Pedometer
www.dessydaskalov.com
@dess_e
dessy
Dethe Elza
blockcode
dethe
Dustin Mitchell
Mozilla
cluster
djmitche
Erick Dransch
Modeller
@ErickDransch
EkkiD
Eunsuk Kang
same-origin-policy
Greg Wilson
web-server
@gvwilson
gvwilson
Guido van Rossum
Dropbox
crawler
@gvanrossum
gvanrossum
A. Jesse Jiryu Davis
MongoDB
crawler
@jessejiryudavis
ajdavis
Jessica Hamrick
University of California, Berkeley
sampler
www.jesshamrick.com
@jhamrick
jhamrick
Leah Hanson
Google
static analysis
@astrieanna
astrieanna
Leo Zovic
event-web-framework
Malini Das
Twitch
ci
malinidas.com
@malinidas
malini
Marina Samuel
Mozilla
ocr
www.marinasamuel.com
@emtwos
emtwo
Ned Batchelder
edX
templating engine
nedbatchelder.com
@nedbat
nedbat
Santiago Perez De Rosso
same-origin-policy
Taavi Burns
Previously at Points, now at PagerDuty
data-store
@jaaaarel
taavi
Yoav Rubin
Microsoft
In-memory functional database
@yoavrubin
yoavrubin
Technical Reviewers
Amber Yust
Andrew Gwozdziewycz
Andrew Kuchling
Andrew Svetlov
Andy Shen
Anton Beloglazov
Ben Trofatter
Borys Pierov
Carise Fernandez
Charles Stanhope
Chris Atlee
Chris Seaton
Cyryl Płotnicki-Chudyk
Dan Langer
Dan Shapiro
David Pokorny
Eric Bouwers
Frederic De Groef
Graham Lee
Gregory Eric Sanderson
James O'Beirne
Jan de Baat
Jana Beck
Jessica McKellar
Jo Van Eyck
Joel Crocker
Johan Thelin
Johannes Fürmann
John Morrissey
Joseph Kaptur
Josh Crompton
Joshua T. Corbin
Kevin Huang
Maggie Zhou
Marc Towler
Marcin Milewski
Marco Lancini
Mark Reid
Matthias Bussonni
Read the full README on GitHubWhat Hacker News says
11 sourcesThe source for the book is available at https://github.com/aosabook/500lines
In 500 Lines or LessThis is an important point. Fully generalized, though, and we find idiosyncrasies in every application domain.
Maybe starting with a project like this would help? https://github.com/aosabook/500lines
In Ask HN: What is your best advice for a developer to write better code?Interesting article!
I would just like to point out that concurrent downloads can be handled much more efficiently in Python > 3.4 thanks to the asyncio library.
For an example, look at Guido van Rossum's crawler [0].
[0]: https://github.com/aosabook/500lines/tree/master/crawler
In Replacing Celery with Elixir in a Python ProjectThese are attributes that everyone can, on honest personal judgement, can mistake to possessing themselves to varying degrees. But it might be a useful list to read through when stuck at a problem that is simply not giving way.
Unless we have the chance to learn from and be coached directly by a master, what would be helpful is narratives on how they think and solve problems.
The best I have so far come across in a book is "Coders At Work". https://github.com/aosabook/500lines promises to be another. Rich Hickey did great service by talking pragmatically about the meta aspects of programming through Hammock Driven Development and Simple is not Easy. Dijkstra's and Alan Perlis' writing that has been gaining a resurgence in popularity is also of a similar ilk. http://damienkatz.net/2005/01/formula-engine-rewrite.html also is an intriguing s
Read the rest
tory.
From: https://github.com/aosabook/500lines/blob/master/ci/code/hel...
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(request)
response = s.recv(1024)
s.close()
Is that correct use of TCP? It seems to rely on response not being fragmented.
In 500 Lines or LessOfftopic. Why, in github, is the README always below the repository files, if the first thing you want to read about a project is the README?
Edit: Could we take the convention on HN to always link to the README in a github repo? In this case that would be:
https://github.com/aosabook/500lines/blob/master/README.md
In 500 Lines or LessI was able to build the PDF on Fedora 23 [1]. Ended up with no front page but the content is there. Not sure if it's supposed to be like that or not.
I also attempted to build the ePub and HTML versions but that didn't work. Commented about this on issue #134 [2].
[1]: https://github.com/aosabook/500lines/files/288427/500L_pdf.z...
[2]: https://github.com/aosabook/500lines/issues/134
In 500 Lines or LessHi, I'm the editor of 500Lines. Thanks for posting this! A few notes:
- Code golf was strictly discouraged throughout the review process. When authors were faced with implementing functionality poorly to fit more in, we generally cut scope instead.
- 500 lines was selected as a limiting criteria because it is easy to specify and understand. You will see that the chapters written e.g. with Clojure do "more" (for some definition of more), but that does not make the lessons learned in the other chapters less interesting.
- The "or less" moniker is grammatically a bit offensive but sounds cute on paper, so we kept it.
- If you'd like to learn more about the philosophy or story behind this volume, Ruby Rogues hosted us a little while ago: https://devchat.tv/ruby-rogues/256-rr-reading-code-and-the-a...
- The print version of this book (and the
Read the rest
official launch on aosabook.org) should happen sometime in the next 4-6 weeks. You can follow this issue if you'd like to know when that happens: https://github.com/aosabook/500lines/issues/212
The 'Fewer' has the advantage of being grammatically correct, but it loses the pleasant alliteration :)
This is a working title; we'll use this input at late-binding when we finalize what we're going to call this.
https://github.com/aosabook/500lines/issues/55
In 500 Lines or LessGuido van Rossum, the creator of Python, wrote a web crawler as a motivating example for asyncio. You can find the code for it here:
https://github.com/aosabook/500lines/tree/master/crawler
And a detailed post about its design, co-written with A. Jesse Jiryu Davis, here:
http://aosabook.org/en/500L/a-web-crawler-with-asyncio-corou...
In Show HN: Python 3.5 Async Web Crawler Example