cynik_
I think I might still push for build (or maintain the ability to heavily customize) for things that are particularly important for areas the company aims to have a strong advantage in/are business critical.
Building Developer Tools
How I Build Developer Tools
Approaching Debugging
Approaching Debugging
A Simple Neural Network (200 loc, rust)
Now trying to make it a permanent daily habit.
An eagerly executing coroutine to consume the original generator and put it in a queue, and a new simple generator that yields values from the queue till it's told to stop.
I'm not sure if this matches the behavior of the original library for task cancellation though.
def eager_gen(gen):
end_marker = object()
queue = asyncio.Queue()
async def consumer():
try:
async for val in gen:
await queue.put(val)
except Exception as e:
await queue.put((end_marker, e))
else:
await queue.put((end_marker, None))
async def new_gen():
while True:
item = await queue.get()
if isinstance(item, tuple) and item[0] == end_marker:
break
yield item
if item[1]:
raise item[1] from None
_task = asyncio.create_task(consumer())
return new_gen()
[Edit] This would also make a good decorator.Firefox's profiler looks pretty cool, I wish it could also accept catapult traces as is -- it doesn't seem to be the case. Now I know of:
- chrome://tracing - Firefox's profiler - Perfetto: https://ui.perfetto.dev/#!/ - Speedscope: https://www.speedscope.app/ - Brendan Gregg's flamegraph generator
to help visualize traces. Are there other good ones?
Panopticon – A Python Tracer
My [Emacs] Writing Setup
The unreasonable effectiveness of sys.settrace (and sys.setprofile)
Heuristics for Learning Tools
Approaching Debugging
An Incomplete Notebook Style Guide
1. Small Gods, Terry Pratchett (this might actually be more than 10 years ago, but I'll still list it) I really like this one because it emphasizes the value of caring about the _core_ of anything instead of the _trappings_ that will spring up around it. Keeping this book in mind reminds me to focus on the thing instead of the appearance of the thing.
2. On Writing Well, William Zinsser I'm a programmer, and I've often found that improving my ability to write clearly translates directly to programming well: On Writing Well is the best – and warmest – book I've read on writing nonfiction.
3. Incerto, NN Taleb This series forced me to revisit several assumptions. Something that still resonates is valuing anything – particularly books – that has aged well across several years, because it's clearly valuable; and to discount the new shiny.
4. The Pragmatic Programmer, Andy Hunt & David Thomas I started an open source project in my 3rd year at college – as part of Google Summer of Code; inevitably every release would break something and I started hungering for skills that would let me create new releases _without_ breaking the world every time. I stumbled across the pragmatic programmer in my 4th year, and immediately started applying it on my project. This carried through to work and helped me a lot early in my career.
5. The Art of Doing Science and Engineering, Richard Hamming There are so many gems in this book: from the emphasis on fermi numbers for quick approximations, to a simple demonstration of the distance covered by a random walk as opposed to the distance covered by choosing a direction, to asking the question: "Am I working on the most important thing I could be? If not, why not?". He also predicted that great programmers will have one thing in common with great writers – clarity of thought.
There are some books I'm reading right now that I suspect will end up on this list: Psychology of Intelligence Analysis (available at https://www.cia.gov/library/center-for-the-study-of-intellig...) – for making better decisions with limited data; and The Power of Choice – to allow me to pay attention to the non-technical parts of doing valuable work.
Always Include Units
Making Poet, an Emacs theme
This is my first time trying and I'm enjoying it a lot.