Aquí pongo las cosas que no dan para un post pero quiero conservar y compartir.
Links:
Lectura:
- The art of solving problems with Monte Carlo simulations [ggcarvalho.dev]
- Safe heaven [medium.com]
- Why “Idea” People Are Risky and What to Do About It [betteroutcomes.xyz]
- Startup options are much better than they look [benkuhn.net]
- Poor in tech [megelison.com]
- Being Poor [scalzi.com]
- Software isn’t bloated [nindalf.com]
- My thoughts about the Principal role [galiglobal.com]
- On Reading Non-Fiction [substack.com]
- Human Nature, Signals, and Countersignals [robkhenderson.com]
Lectura:
- Log-structured merge-tree [wikipedia.org]
- What is an SSTable [stackoverflow.com]
- Understanding LSM Trees: What Powers Write-Heavy Databases [yetanotherdevblog.com]
- Fed up with the Mac, I spent six months with a Linux laptop. The grass is not greener on the other side [cfenollosa.com]
- Programming is hard [dorinlazar.ro]
- Lisp as an Alternative to Java [norvig.com]
- How Going Back to Coding After 10 Years Almost Crushed Me [betterprogramming.pub]
- Screw it, I’ll host it myself [markozivanovic.com]
- Learning COBOL: A Journey for the Modern Programmer [monadical.com]
- You Don’t Need GUI [github.com]
- Tree.h in OpenBSD: dependency-free intrusive binary tree [github.com]
- A reading list for new engineering managers [jacobian.org]
- Learning from incidents: getting Sidekiq ready to serve a billion jobs [scribd.com]
- Programar es de pobres [elconfidencial.com]
- Extinction Burst [youarenotsosmart.com]
- Learn C in Y minutes [learnxinyminutes.com]
- SQLite the only database you will ever need in most cases [unixsheikh.com]
- Brag documents [jvns.ca]
- Why SOLID Principles are not a solid solution for Software Design [towardsdatascience.com]
- How to navigate directories faster with bash [github.io]
- Resources for Amateur Compiler Writers [c9x.me]
- Framing - social sciences [wikipedia.org]
- 99 Additional Bits of Unsolicited Advice [kk.org]
- Software infrastructure 2.0: a wishlist [erikbern.com]
Videos:
- How databases scale writes: The power of the log [youtube.com]
Misc:
- unix4lyfe [unix4lyfe.org]
- darkhttpd [unix4lyfe.org]
- WebBook about browsers [browser.engineering]
- Google Word list [google.com]
- Conversation [news.ycombinator.com]
- Tetris-os [github.com]
- OsDev Wiki [osdev.org]
- Beej’s Guide to C Programming [beej.us]
Hace una semana di un “workshop” en la empresa donde trabajo sobre Redis. Fue poco más de una hora. Es muy básico, con un poco de conocimiento en bases de datos relacionales debería ser bastante sencillo tener una idea básica de Redis.
Lo subí para compartirlo con los asistentes. Si sabes un poco de Redis puede serte útil para dar tú el “workshop”.
Lectura:
- Learning without Burnout [junglecoder.com]
- Warming up to Unit Testing [junglecoder.com]
- How to Deal with Difficult People on Software Projects [howtodeal.dev]
- Writing Small CLI Programs in Common Lisp [stevelosh.com]
- No one gives a shit what programming language you use [georgestocker.com]
- HOWTO BACKDOOR CURL [haxx.se]
- Frameworkless Movement [frameworklessmovement.org]
- Worse is better [wikipedia.org]
Misc:
- Practical Cryptography for Developers [nakov.com]
- Compiling a Lisp, the series [bernsteinbear.com]
Lectura:
- Questionable advice: the trap of the premature senior [charity.wtf]
- Why isn’t email spam soled using Proof of Work yet? [ycombinator.com]
- usbkill the OpenBSD way [zakaria.org]
- Joeyh offgrid’s notes [joeyh.name]
- Streetlight effect [wikipedia.org]
- The lava layer anti pattern [blogspot.com]
- Panmixia [wikipedia.org]
- The Algernon argument [gwern.net]
- A Week With Plan 9 [substack.com]
- The Mu Computer in 2020 [akkartik.name]
- Oberon OS Walkthrough [ignorethecode.net]
- SOP - Script-Oriented Programming comparison [rigaux.org]
- Why I still Lisp [medium.com]
Videos:
- Jonathan Blow - Preventing the Collapse of Civilization [youtube.com]
- DevTools hacking: Let’s build an IDE for Serenity! [youtube.com]
Lectura:
- Code’s Worst Enemy [blogspot.com]
- The Minimalist Programmer [medium.com]
- LEGOs, Play-Doh, and Programming [jamisbuck.org]
- EnablingAttitude [martinfowler.com]
- Simplify: move code into database functions [sive.rs]
- Personal Finance [co.uk]
- Verilog [wikipedia.org]
- Normalization of non-deviance [levels.io]
- Death by 1000 layers: the perils of over-abstraction in Java [quantcast.com]
- End user programming [inkandswitch.com]
- Giving more tools to software engineers: the reorganization of the factory [erikbern.com]
- Why I’ve Been Merging Microservices Back Into The Monolith At InVision [bennadel.com]
- The Grep Test [jamie-wong.com]
- How to trade money and time [meteuphoric.com]
- Computer science is not software engineering [swizec.com]
- Math for programmers [blogspot.com]
- Luhn algorithm [wikipedia.org]
- How Complex Systems Fail [complexsystems.fail]
- Programming language generations [wikipedia.org]
- Against essential and accidental complexity [danluu.com]
Videos:
Misc:
- JavaMoney [github.io]
Lectura:
- What is wBTC and How to Mint/Stake It [endofthechain.com]
- What is Compound Finance and $COMP? [endofthechain.com]
- This is how I git [haxx.se]
- Taleb on Benford’s Law I [twitter.com]
- Chomsky hierarchy [wikipedia.org]
- Definite clause grammar [wikipedia.org]
- Adaptive parsing [hmc.edu]
- The IDE Divide [osteele.com]
- We need less powerful languages [me.uk]
- What distinguishes great software engineers? [washington.edu]
- Norris numbers [teamten.com]
- Those Who Study History Are Doomed To Repeat It [teamten.com]
- Shor’s algorithm [wikipedia.org]
- How browsers work [taligarsiel.com]
- Array programming [wikipedia.org]
- Exotic Programming Ideas: Effect Systems [stephendiehl.com]
- Cult to John Frum [wikipedia.org]
- You Don’t Want to Think Like a Programmer [dadgum.com]
- Want to Write a Compiler? Just Read These Two Papers. [dadgum.com]
- Productivity advice [spakhm.com]
- EPROM Memory [wikipedia.org]
- What if FIRE doesn’t work? [monevator.com]
- How SHA-2 Works Step-By-Step - SHA-256 [qvault.io]
- How Developers Stop Learning: Rise of the Expert Beginner [daedtech.com]
- Hopefully More Controversial Programming Opinions [dadgum.com]
- The Origin of the Shell [multicians.org]
- Stop Mapping Stuff in Your Middleware. Use SQL’s XML or JSON Operators Instead [jooq.org]
Videos:
- 15 Sorting Algorithms in 6 Minutes [youtube.com]
- How to Detect Fraud Using Benford’s Law [youtube.com]
- Turing Complete - Computerphile [youtube.com]
- On The Turing Completeness of PowerPoint [youtube.com]
En desarrollo de software se utiliza el término “buenas prácticas” para denominar al conjunto de técnicas necesarias para llevar a cabo con éxito un proyecto de software.
He estado pensando en la naturaleza de las “buenas prácticas”. En una discusión técnica es un término que no aporta nada. Al igual que ocurre con los términos “importante”, “urgente” el añadir “buenas” delante de “prácticas” es altamente subjetivo. Por sí mismo no tiene ninguna validez, asignar a una “práctica” el atributo de “buena” no cambia la práctica.
Depende de la experiencia y el foco de cada desarrollador podrá pensar en una serie de “buenas prácticas” imprescindibles para el proyecto. ¿Pero el proyecto de software tendrá más éxito cuantas más “buenas prácticas” adoptemos? No. Adoptar “buenas prácticas” por adoptarlas no tiene sentido, muchas quizá no apliquen al contexto, otras no aportaran mejoras y otras tendrán aporte negativo.
Las prácticas tendrán -adaptadas para un proyecto particular- un aporte positivo o negativo. El aporte podrá ser compuesto o exponencial (asimétrico).
Lectura:
- The open source paradox [antirez.com]
- How to do what you love [paulgraham.com]
- Teaching our five year old to code by cheating [baugues.com]
- Parallel tracks [substack.com]
- Computers Are Hard: hardware with Greg Kroah-Hartman [medium.com]
- New grad vs senior dev [ericlippert.com]
- Tell Me About A Time You Sacrificed Quality To Hit A Deadline: How About Never? [thehftguy.com]
- Parsing propositional logic in 33 lines of Racket [micahcantor.xyz]
- The eigenvector of “Why we moved from language X to language Y” [erikbern.com]
- When to use a DI Container [ploeh.dk]
- Dependency injection is not a virtue [dhh.dk]
- An example of software development writing that irks me [wozniak.ca]
- Discipline doesn’t scale [sicpers.info]
- Real Programmers Don’t Use PASCAL [codeproject.com]
- Hands-Free Coding [joshwcomeau.com]
- We chose Java for our High-Frequency Trading application - HN Comments [ycombinator.com]
- Latency experiment [roq-trading.com]
- Frontrunning in Decentralized Exchanges, Miner Extractable Value, and Consensus Instability [sci-hub.se]
- The Grand Unified Theory of Software Architecture [go.ro]
- John Carmack on Inlined Code [number-none.com]
- Algorithms books recommended by Dennis Yurichev [yurichev.com]
Videos:
- Video: C Programming on System 6 - Intro [jcs.org]
- A Tour of Acme [swtch.com]
- What is the Curse of Lisp? [youtube.com]
- Why “senior software engineer” isn’t worth it… as an ex-Google tech lead [youtube.com]
Misc:
- Digital gardeners [github.com]
- Utterances - Github issues CMS [utteranc.es]
Lectura:
- Why are there so few C compilers?
- Are all C compilers identical? [quora.com]
- How Much Lifestyle Creep is Okay? [wikipedia.org]
- How to get promoted
Videos:
Misc:
- Rakhim braindump [rakhim.org]
- V Lang [vlang.io]
- The Power of Prolog [github.com]
- Math for programmers [yurichev.com]
Lectura:
- The Differences Between Splunk, Kibana and Graylog [thehftguy.com]
- OSINT Amateur Hour [secjuice.com]
- An Intro to Compilers [nicoleorchard.com]
- How we moved our Faster Payments connection in-house [monzo.com]
- A cult I almost joined - Lisp [archive.org]
- Making Wrong Code Look Wrong [archive.org]
- My blog is a digital garden, not a blog [joelhooks.com]
- What every computer science major should know [might.net]
- dorking - how to find anything on the Internet [alec.fyi]
- How to set up Tiny Tiny RSS on OpenBSD [xosc.org]
- The High Cost of Caring [maxdeviant.com]
- The only way to learn in public is to build in public [mentalnodes.com]
- A gardening guide for your mind [mentalnodes.com]
- Ideas for Programmers Looking Beyond Web Development [carolchen.me]
- Awesome Risk Quantification [github.com]
- Purity vs Referential transparency [stackoverflow.com]
- Technical Debt Doesn’t Exist [thehftguy.com]
- Bad code isn’t Technical Debt, it’s an unhedged Call Option [higherorderlogic.com]
- Resign Patterns [nishitalab.org]
- My financial story - Retire in Progress [retireinprogress.com]
Videos:
- How to write BNF and EBNF grammar [youtube.com]
Misc:
- Scheme implementation in Ruby [rubygems.org]
- Kevin On Demand! [takedown.com]
- Learn Anything [learn-anything.xyz]
- XXIIVV - Digital garden [xxiivv.com]
- Mental nodes - Digital garden [mentalnodes.com]
- Nanopass Compiler Library [github.com]
- The Programming Language Pascal [pascal-central.com]
El monkey patching trae problemas pero estaba mirando por curiosidad como hacerlo en Lisp. Un ejemplo, que el símbolo de sumar reste:
1 ]=> (define (+ . args-list)
(apply - args-list))
;Value: +
1 ]=> (+ 1 1)
;Value: 0
Lectura:
- Contributing to Ruby MRI [kirshatrov.com]
- On Coding, Ego and Attention [josebrowne.com]
- An Investment To Die For [ofdollarsanddata.com]
- What Risk Isn’t [ofdollarsanddata.com]
- How to Write Technical Posts, so people will read them [reasonablypolymorphic.com]
- Write code that is easy to delete, not easy to extend [programmingisterrible.com]
- Patrick Bateman is a Buddhist Hero [dataswamp.org]
- Google developer documentation style guide [google.com]
- Making beautifulsoup Parsing 10 times faster [thehftguy.com]
- I hate patterns [archive.org]
- Ruby is harmful [cat-v.org]
- Java Enterprise Evolution - Java EE vs J2EE vs Jakarta EE [baeldung.com]
- The Cold War Bunker That Became Home to a Dark-Web Empire [newyorker.com]
- Relativismo vs Universalismo software [crearsoftware.com]
Misc:
- Travel tips by Kirs [github.com]
Structure and Interpretation of Computer Program es un libro “clásico” de la informática. La primera edición es de 1985. Se usaba para enseñar a programar en el MIT. Aunque algunos lo consideran obsoleto y favorecen otros libros como How to Design Programs.
Son 5 capítulos, he acabado el primero.
- Me parece un libro terrible para aprender a programar si lo que se quiere es programar.
- Las matemáticas necesarias no son de un gran alto nivel aunque sí se necesita una base mínima.
- Si ya sabes programar (como es mi caso) pero no tienes una gran “madurez matemática” el reto de los ejercicios es la parte matemática y no la parte de programación.
- Introduce conceptos generales de los lenguajes de programación que ya conocía pero verlos de forma aislada, con tiempo, y sin aplicación práctica es un ejercicio fabuloso.
- Las dudas (y los ejercicios) están resueltas en Internet.
- Lips y derivados (Scheme en este caso) son interesantes e intuitivos.
- Está orientado a estudiantes de ingeniería tradicionales cuando quizá no había ni facultades de informática. Conocimientos fuertes en cálculo.
Hay una frase de Taleb que dice:
When you use a ruler to measure the table, you are also using the table to measure the ruler.
Me venía mucho a la cabeza por esa dualidad programación-matemáticas.
Mi motivación para empezar con este libro era aproximarme a la computación desde un punto de vista más cercano a la academia.
Lectura:
- Strings in go [golang.org]
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets [joelonsoftware.com]
- The Computer Scientist Who Can’t Stop Telling Stories [quantamagazine.org]
- Epigrams on Programming [uni-tuebingen.de]
- Write tests. Not too many. Mostly integration. [kentcdodds.com]
- How VC works [substack.com]
- Things I Wished More Developers Knew About Databases [medium.com]
- Do I Need to Go to University? [github.io]
- Most tech content is bullshit [aleksandra.codes]
- Anti-consumerism [wikipedia.org]
- A framework for Engineering Managers [engineeringladders.com]
Videos:
- To Microservices and Back Again [youtube.com]
Misc:
Lectura:
- HTTP Blog Server : 100 Lines of C in a Closet [notryan.com]
- Law of triviality [wikipedia.org]
- Esto pasa mucho en las reviews de código. La broma de “+3 líneas 17 comentarios, +546 -87 líneas, todo ok”
- Against unnecessary databases [beepb00p.xyz]
- Test Driven Development [github.com]
- Polish notation [wikipedia.org]
- Conocía la notación polaca al echarle un ojo al temario para la FCA, me he acordado al ver cosas sobre Lisp.
- SPA fatigue [macwright.org]
- Teach Yourself Programming in Ten Years [norvig.com]
- One-pass Compiler [keleshev.com]
- Hardware security module [wikipedia.org]
- ISO 8583 - international standard for financial transaction card originated [wikipedia.org]
- Instrumentation in Go [gbws.io]
- Why Failed Predictions Don’t Matter [ofdollarsanddata.com]
- Write like you talk [paulgraham.com]
Videos:
- Simple Firmware Reverse Engineering [youtube.com]
- TW Hangouts - Is TDD dead? [youtube.com]
- Miguel Anxo Bastos - La Revolución Francesa [youtube.com]
- Architecting a Modern Financial Institution [youtube.com]
Misc:
- gs-lang [github.com]
- Online compilers WYSIWYG [godbolt.org]
- OpenBSD handbook [openbsdhandbook.com]
- Awesome scalability [awesome-scalability.com]
- Exobrain [beepb00p.xyz]
- Everything I Know [nikitavoloboev.xyz]
- Alfred my mind [github.com]
- 100 ideas for computing [github.com]
- roadmap.sh [roadmap.sh]
Últimamente me he estado interesando por los sistemas operativos ya que supone una oportunidad para usar lenguajes de “bajo nivel” (si aceptamos C como lenguaje de bajo nivel). Empecé un curso de Linux y me di cuenta que había muchas cosas que no sabía sobre el funcionamiento de los sistemas operativos. Descubrí Xv6. Es un sistema operativo mínimo que se puede virtualizar con QEMU. Es más sencillo que MINIX y de kernel monolítico. Tiene un manual donde explica en 100 páginas el funcionamiento del sistema. El código es C y es sencillo.
Aproveché también para pasar re-escribir algunas de las GNU core utils para xv6. Hay varios forks y proyectos con modificaciones/extensiones (GUI, en otras arquitecturas…) que resultan más sencillas de explorar que proyectos reales.
No estoy 100% seguro pero uno de los profesores detrás de Xv6 es Robert Morris que es el “precursor” de los virus con El gusano morris.
Lista de enlaces sobre el contenido que me ha gustado/recomiendo/provoca-interés durante el mes. Hay partes que he consumido superficialmente, otras al completo y otras no pueden ser consumidas (Misc). He cogido la idea de la newsletter de Gwern.
Lectura:
- Linux Kernel Teaching [github.io]
- Orthographic ligature [wikipedia.org]
- Discussion: At Uber, we’re moving many of our microservices to “macroservices” [lobste.rs]
- OpenBSD Ports - Working with Ports [openbsd.org]
- CodeOtaku’s Open Source Progress Report [codeotaku.com]
- Writing your own toy compiler [gnuu.org]
- Stop Making Students Use Eclipse [nora.codes]
- Technical reasons to choose FreeBSD over GNU/Linux [unixsheikh.com]
- (political) Why you should migrate everything from Linux to BSD Parte 1 y Parte 2
- Your statement is 100% correct but misses the entire point [blogspot.com]
- Linux From Scratch [linuxfromscratch.org]
- Dapper, a Large-Scale Distributed Systems Tracing Infrastructure [googleapis.com]
- Distributed tracing at Uber [uber.com]
- 5 reasons why i am done with long-term travel [againstthecompass.com]
- Finding Great Developers [joelonsoftware.com]
- YMMV definition [onlineslangdictionary.com]
- Slow database test fallacy [dhh.dk]
- Test induced design damage [dhh.dk]
- A Conversation with the Creators Behind Python, Java, TypeScript, and Perl [thenewstack.io]
- Unix Admin. Horror Story Summary, version 1.0 [ac.uk]
Videos:
- Write and Submit your first Linux kernel Patch [youtube.com]
- How I got engineering jobs at Apple & Nokia with no degree [youtube.com]
Misc:
- Kernel newbies [kernelnewbies.org]
- SerenityOS [github.com]
- Xv6, a simple Unix-like teaching operating system [mit.edu]
- MirageOS [mirage.io]
- Hack The Kernel [ops-class.org]
- Labs for Rust OS [gts3.org]
- Learning operating system development using Linux kernel and Raspberry Pi [github.com]
- xv6 meets raspberry pi [github.com]
- 8-bit system simulator [twitter.com]
- Programming from the Ground Up [gnu.org]