Skip to content

Latest commit

 

History

History
1816 lines (1753 loc) · 240 KB

programming.md

File metadata and controls

1816 lines (1753 loc) · 240 KB
gitea include_toc
none
true

Programming

Table of contents

News

  • 🦄 Lobsters - Lobsters is a technology-focused community centered around link aggregation and discussion
  • 🔥 DEVURLS - a developer news aggregator.
  • InfoQ - news, videos, books for software developers
  • SlideShare - featured software related presentations on SlideShare
  • DZone - programming & devops news
  • /r/programming - everything about programming on reddit
  • Player FM - Programming podcasts
  • Player FM - Software Development Podcasts
  • Devoxx - Devoxx Youtube Channel
  • Stack Overflow Blog - listen in on what’s new with the world’s largest developer community.
  • Coding Blocks - podcast and website for learning how to become a better software developer, covers a wide variety of programming best practices | the rhythm is sometimes slow
  • Code as Craft - Etsy' blog for craftsmen
  • feststelltaste (Markus Harrer) - About Legacy Systems, Software Analytics and the Fundamental Problems of Software Engineering
  • TIOBE Index
  • Methods & Tools Editor Blog - Software Development Ideas + links
  • Zach Holman - Blog of Zach Holman, Founder of During, previously at GitHub and Gild.
  • Software Engineering Radio - The Podcast for Professional Software Developers
  • O'Reilly Media - Ideas | What's on the radar
  • dev-books - top of most mentioned books on stackoverflow
  • hellerve/programming-talks - Awesome & Interesting Talks concerning Programming
  • Itamar Turner-Trauring - Get a better job ; articles about health & work life balance, programmer productivity, problem solving, etc.
  • Simple Programmer - Robert Whitcomb's Blog about soft skills + health & work-life balance for programmers
  • programming is terrible - Blog of Thomas Figg (tef) | lessons learned from a life wasted
  • The Holy Java - Building the right thing, building it right, fast
  • Code Simplicity - Max Kanat-Alexander's Blog. Code Simplicity focuses on the idea of simplicity: simple things, simple thoughts, and simple ideas that can make the world of computing a better place.
  • The Changelog - [Podcast] Conversations with the hackers, leaders, and innovators of open source.
  • Industrial Logic Blog - leveraging safety wisdom in workspace from manufacturing, psychology, culture change and Agile and Lean developmen
  • GOTO Blog - Created for developers, by developers, GOTO is focused on bringing together the best minds in the software community and the most interesting topics to light.
  • /r/coolgithubprojects - Keep track of new cool github projects
  • The Changelog - Top posts
  • Unix Sheikh - Articles and thoughts about open source, BSD and GNU/Linux system administration, and programming - the pragmatic way.
  • daily.dev - The Homepage Every Developer Deserves | daily.dev is the fastest growing online community for developers to stay updated on the best developer news.

Learn

Low-code/no-code platforms mean anyone can code, right? Wrong. This is a dangerous thought for enterprises.

  • Nathan Coulter (Poor Yorick) - (2018) Tips for writing quality software. Archive : Web archive
  • Kevin London - (2015) Code Review Best Practices
  • Kevin London - (2015) 10 Software Talks to Listen to on Your Way to Work
  • MyBroadband - (2018) How programmers learn to code | What programmers want
  • Fagner Martins Brack (fagnerbrack) - (2016) The Angry Programmer | How an engineer can be competent and incompetent at the same time
  • Devoxx Belgium - (2017) The Top-100 rated Devoxx Belgium 2017 talks
  • The Cathedral and the Bazaar - [Book] Musings on Linux and Open Source by an Accidental Revolutionary
  • Antonio Bello - (2017) Learning Techniques for Programmers, by Programmers
  • Antonio Bello - (2016) Freelance Software Development: Is It For You?
  • Antonio Bello - (2016) Freelance Software Development Tips
  • DZone - Developer Personality Test
  • Sijin Joseph - (2014) Programmer Competency Matrix
  • Alvaro Videla - (2014) A Programmer's Role, about what clean code was like in 1967 Bonus : (1967) [PDF] Original publication What Programmer Does
  • Gregg Caines - (2009) The Lost Art of Prototyping
  • Gregg Caines - (2010) Quality Is the Constraint
  • Steve McConnell - (1996) Software Quality at Top Speed
  • Steve McConnell - (2012) Real Quality For Real Engineers
  • Steve McConnell - (1996) Teach Programming Principles, Not “Tools and Tips”
  • Steve McConnell - (1998) Dealing With Problem Programmers
  • Steve McConnell - (1997) Achieving Leaner Software
  • Steve McConnell - (1997) Software’s Ten Essentials
  • Steve McConnell - (1996) How to Defend an Unpopular Schedule
  • Giedrius Majauskas - (2009) Programmer mindset: 5 traits of programmers that have a chance to become good ones
  • Dan Milstein - (2013) Coding, Fast and Slow: Developers and the Psychology of Overconfidence | about inability of developers to predict how long a project will take.
  • Laura Klein - (2015) Your Job Is Not to Write Code
  • Adam Pittenger - (2013) Love what you build. Build what you love.
  • Jim Bird - (2014) Feature Toggles are one of the worst kinds of Technical Debt
  • Jez Humble - (2011) Make Large Scale Changes Incrementally with Branch By Abstraction
  • Paul Hammant - (2007) Introducing Branch By Abstraction
  • Paul Hammant - (2017) Trunk Based Development : This site attempts to collect all the related facts, rationale and techniques for Trunk-Based Development together in one place, complete with twenty-five diagrams to help explain things. All without using TBD as an acronym even once twice.
  • Martin Fowler - (2009) FeatureBranch | and dangers of feature branching
  • Martin Fowler - (2010) FeatureToggle | feature toggles as an alternative to evil feature branching
  • Fernando Rubbo - (2013) Feature toggles: good or bad
  • John Sonmez - (2014) Why Software Developers Suck at Estimation
  • John Sonmez - (2014) 5 Ways Software Developers Can Become Better at Estimation
  • Richard Clayton - (2017) Serverless isn't Effortless | Lessons we learned in our first serious Serverless project.
  • Richard Clayton - (2014) Software Engineering is not a Job. It's a Profession.
  • Jun Auza - (2010) Popular quotes on programming
  • Marco Kuiper - 27 inspiring top notch programming quotes
  • James Flight - (2018) Critical thinking in software development, the word ‘should’, and why you shouldn’t listen to Martin Fowler
  • Nicolò Pignatelli - (2018) This is not the DRY you are looking for
  • Kode Vicious - (2010) Broken Builds | Frequent broken builds could be symptomatic of deeper problems within a development project.
  • Kenneth N. Lodding, Nasa - (2004) Hitchhiker's Guide to Biomorphic Software | The natural world may be the inspiration we need for solving our computer problems.
  • Lewis Menelaws - (2018) How to Fix Burnout as a Developer
  • Tom MacWright - (2018) Advice to the newish programmer
  • Keon Kim - Computer Scientist's Trivia | for programmers to understand how long a certain operation takes in and out of a computer.
  • donnemartin/system-design-primer - Learn how to design large-scale systems. Prep for the system design interview.
  • Increment Staff - (2017) What it’s like to be a developer at …
  • Itamar Turner-Trauring - (2017) Why you should have the skills of a generalist, but market yourself as a specialist
  • Itamar Turner-Trauring - (2017) When AI replaces programmers
  • Itamar Turner-Trauring - (2017) Staying competitive as a developer
  • Itamar Turner-Trauring - (2016) Work/life balance will make you a better software engineer
  • Itamar Turner-Trauring - (2016) Stagnating at your programming job? Don’t quit just yet!
  • Marcus Blankenship - (2017) Why your programmers just want to code
  • Shaun Finglas - (2016) Why You Should Do Code Katas
  • Lieven Vaneeckhaute (denshade) - (2015) Measuring programmer competency
  • Jakub Holý - (2016) It Is OK to Require Your Team-mates to Have Particular Domain/Technical Knowledge
  • Jakub Holý - (2016) Don’t add unnecessary checks to your code, pretty please!
  • Thomas Figg (tef) - (2016) Write code that is easy to delete, not easy to extend.
  • Ashton Kemerling - (2014) The Swordsman and the Software Engineer | It’s easy to believe that specializing and focusing will make you better than your peers
  • Ashton Kemerling - (2014) Disdain | the accomplished engineer knows that completing a task is not about the number of hours spent, but the quality
  • Andrew Hunt and David Thomas - (1999) Programming by Coincidence | Don’t Program by Coincidence. Extract from The Pragmatic Programmer book
  • Jakub Holý - (2012) Programming Like Kent Beck
  • Fred Hébert - (2017) Everything is Terrible : how fundamental components can end up causing us problems. Target audience : Developers who enjoy cynicism. Bonus : Slides
  • Steven A. Lowe - (2018) Big benefits from tiny types: How to make your code's domain concepts explicit
  • Christian Maioli Mackeprang - (2018) How terrible code gets written by perfectly sane people
  • Esther Schindler - (2016) 8 Ways to Become a Better Coder

“The code works” isn’t where you stop; it’s where you start

  • Esther Schindler - (2016) 3 Ways Devs Can Help Ops: An Operations Perspective
  • Esther Schindler - (2016) 3 Way Ops Can Help Devs: A Developer Perspective
  • David Albert - (2013) Fundamental qualities of good programmers
  • Software Engineering Tips - (2012) Signs that you're a bad programmer
  • Software Engineering Tips - (2012) Signs that you're a good programmer
  • Software Engineering Tips - (2010) So you've just been hired by an IT department...
  • Software Engineering Tips - (2010) Programming Tips
  • JanVanRyswyck/awesome-talks - list of online talks that are worth watching, mostly about software development
  • James Wade - (2017) What's involved in a code review?
  • Julian Cohen - (2017) Secure Engineering Guidelines | Some best practices for building and trusting software.
  • Preslav Mihaylov - (2017) Understanding Standard Input and Output
  • Jennifer Riggins - (2018) On Call Rotations: How Best to Wake Devs Up in the Middle of the Night
  • Graham Lee - (2017) Falsehoods programmers believe about programming
  • Alon Altman - (2015) Falsehoods Programmers believe about Gender
  • Patrick Louys - (2017) Become a better developer in 2018
  • Joel Kemp - (2017) Work for an employer that builds something you love
  • Zach Alexander - (2016) 10 Tech Movies to Get You Coding Again
  • rondy - Effective Engineer - Book Notes. Bonus see also The Effective Engineer website and Effective Engineer Blog
  • Jeremy Phelps - (2017) Why you're having trouble hiring developers
  • Erik Dietrich - (2013) How Developers Stop Learning: Rise of the Expert Beginner
  • Chris Mague - (2017) Things you need to know about giving tech talks
  • Erik Dietrich - (2017) Side Hustle Ideas for Software Developers
  • Dr. Tom Murphy VII, Ph.D. - [PDF] A C89 compiler that produces executables that are also valid ASCII text files
  • Fred Hébert - (2017) Tout est Terrible | a very cynical view of technology
  • John Sonmez - (2016) Episode #71: Soft Skills: The software developer's life manual
  • melissa mcewen - (2017) Coders Should Fear What Happened To Writers | meaning only those in top coding jobs are rewarded well
  • Lou Bichard - (2018) Overcoming Programmer Career Obstacles With A Stoic Mindset
  • Angela Stringfellow - (2017) Mistakes to Avoid on Your DevOps Resume: Tips from 20 DevOps Leaders and Hiring Managers
  • Tim Ottinger - (2014) Avoid Rework Through Behavior-Driven Development | eXamples and features specification should be written in a formal way that is easily automated / increasing the signal-to-noise ratio in your communication
  • Joshua Kerievsky - (2005) [PDF] (2002) Stop Over-Engineering!
  • panic - gallery of programmer interfaces (UIs)
  • Joe Forshaw - (2017) Message-Oriented Programming
  • Andrew Turley - Important Considerations about Pony programming language, based on this tweet
  • Pony Docs - Introduction Tutorial about Pony : an open-source, object-oriented, actor-model, capabilities-secure, high-performance programming language.
  • Simon Brown - (2018) Today's software developers are the ivory tower architects of tomorrow
  • Lewis Menelaws - (2018) How to Fix Burnout as a Developer

A lot of people (especially entrepreneurs) are so obsessed with how fast they will become successful that they will sacrifice their mental health in order to constantly push themselves.

  • Ben Northrop - (2018) The Reality of Reuse | we're hard-wired to want to make decisions quickly and we take too many shortcuts
  • John Sonmez - (2015) SE Radio Episode 245: John Sonmez on Marketing Yourself and Managing Your Career
  • Jeff Atwood - (2004) Why I'm The Best Programmer In The World* | it's not our job to be better than anyone else; we just need to be better than we were a year ago.
  • Jeff Atwood - (2015) Recommended Reading for Developers
  • Graham Lee - (2018) What’s better than semver?
  • Graham Lee - (2018) It’s about the thinking
  • Katacoda - Learn new technologies right in your browser | Interactive Learning and Training Platform for Software Engineers
  • Rosetta Code - Rosetta Code is a programming chrestomathy site. The idea is to present solutions to the same task in as many different languages as possible
  • Stephen Mann - (2018) Don't Do This in Production
  • Jeff Atwood - (2006) The Ten Commandments of Egoless Programming
  • Mark Heath - (2017) STABLE tactics for writing SOLID code
  • The Codeless Code - An illustrated collection of (sometimes violent) fables, concerning the Art and Philosophy of software development
  • Robert C. Martin - (2017) Just Following Orders | Reminder: Doing your job does not mean that you just follow orders. The courts are going to hold you to a high ethical standard, even if your employer does not.
  • Ben Halpern - (2018) Write clean code and avoid the distractions of emerging technology | stay excited by the trends, but be impassioned by the small improvements you can make in the quality of your work.
  • victorlaerte/awesome-it-quotes - a list of awesome IT quotes. The aim is to collect all relevant quotes said over the history of IT.
  • Jeff Knupp - (2014) How 'DevOps' is Killing the Developer
  • James Somers - (2017) The Coming Software Apocalypse | A small group of programmers wants to change how we code—before catastrophe strikes.

“Computing is fundamentally invisible,” Gerard Berry said in his talk. “When your tires are flat, you look at your tires, they are flat. When your software is broken, you look at your software, you see nothing.” “So that’s a big problem.”

Laziness: The quality that makes you go to great effort to reduce overall energy expenditure. Impatience: The anger you feel when the computer is being lazy. Hubris: The quality that makes you write (and maintain) programs that other people won't want to say bad things about.

Look for jobs that excite you, for jobs you think you can do with just a little ramp-up time. And then apply for those jobs, knowing that most of them will ignore you—but it only takes one yes to get an exciting new job, and an exciting new opportunity to learn new skills.

  • Brendan D. Gregg - (2017) Brilliant Jerks in Engineering
  • DEV - What are some fundamentals of security every developer should understand?
  • DEV - (2018) What is your personal Programming ethics?
  • ACM Ethics - (1997) The Software Engineering Code of Ethics and Professional Practice
  • Coding Blocks - (2018) [Podcast] Deliberate Practice for Programmers
  • Exercism - Get really good at programming. | Develop fluency in 55 programming languages with our unique blend of learning, practice and mentoring. Exercism is fun, effective and 100% free, forever.
  • Joe Zack - (2018) 4 reasons why the “10x Developer” is so controversial

0 Productivity is hard to measure 1 Tiny sample size 2 Well, common sense…. 3 The study was done over 50 years ago

  • If you can’t measure it, you can still reason about it
  • 10x programmers are rare
  • Programming is about choices
  • Ada Nduka Oyom - (2018) On Becoming a Technical Writer
  • Vadim Kravcenko - (2018) Growing your interns | eventually you will become Senior Developers and will need to nurture your own interns.
  • Programming quotes
  • George Gritsouk - (2014) Code Hierarchy of Needs | Maslow would not approve of this.
  • stanislaw/SoftwareDesignHeuristics - heuristics found to be useful in software engineering practice. We call “heuristics” everything that helps us to write better code given we keep them in mind.
  • charlax/professional-programming - A collection of full-stack resources for programmers.
  • Arnaud Lemaire - [Videos] 🇫🇷 [FR] (2019) Entre industrialisation et artisanat, le métier de développeur. | a very good and accurate talk of software craftsmanship
  • Bryan Cantrill - (2018) Assessing software engineering candidates
  • David Winterbottom - (2017) Little-known words relevant to software development

Example: VERSCHLIMMBESSERN - (German) - to make something worse while attempting to make it better and many others...

  • Jakub Holý - Craft : About the craft of software development and why it matters. Bonus : Archive of previous version about code quality only ; Code (And Design) Quality And Why Should We Care.
  • Martin Fowler - (2019) Is High Quality Software Worth the Cost?
  • Literate programming - is a programming paradigm introduced by Donald Knuth in which a program is given as an explanation of the program logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which a compilable source code can be generated.
  • Literate programming links - articles about literate programming
  • 1x Engineer - a non-exhaustive list of what qualities make up a 1x engineer.
  • Worse is better - It is the subjective idea that quality does not necessarily increase with functionality—that there is a point where less functionality ("worse") is a preferable option ("better") in terms of practicality and usability. Software that is limited, but simple to use, may be more appealing to the user and market than the reverse.
  • Remote Mob Programming - A summary of the essentials of successful Remote Mob Programming
  • Dave Rupert - (2018) The Eponymous Laws of Tech | A compendium of tech-related laws, fallacies, and other wisdom
  • Gergely Orosz - (2019) Talk First, Code Later

the "talk first, code later" approach is an un-intuitive tool that speeds development up and leads to better communication between engineers and teams. Everyone would have saved so much time, if only we communicated first and wrote code only after.

Many novices fall into the same trap of not understanding the problem that is trying to be solved, and are too concerned about the implementation. Teaching novices how to think about solving problems is extremely important in improving and honing in the craft.

I feel very much like the “Ghost-Writer” at times, mixed with "The DIY specialist". But anyway, I feel we are all those types at once, it depends on the day, on the task, on the team we work with.

  • Gandalf Hudlow - (2020) Developers can't fix bad management
  • MIT - The Missing Semester of Your CS Education (MIT course)
  • Chris The Data Guy - (2021) Don’t Write Code for a Startup | Confessions of a serial startup software developer
  • prathyvsh/pl-catalog - A catalog of some of the cool programming languages out there, for enthusiasts
  • Erik Dietrich - (2012) How To Keep Your Best Programmers
  • Unix Sheikh - (2022) Is the madness ever going to end?
  • Rajasegar Chandran - (2018) Egoless Programming

Egoless programming is a concept introduced by Gerald Weinberg in The Psychology Of Computer Programming. The idea is that programmers must fight the natural tendency to treat their programs as part of themselves, and therefore to reject all criticism. Rather, they should do their best to treat their designs & implementations as objects independent of themselves, and to view criticism dispassionately on its merits.

  • Daniel Irvine - (2016) The egoless programmer
  • Bertrand Le Foulgoc - 🇫🇷 [FR] Egoless Programming
  • Wikipedia - Egoless programming
  • WikiWikiWeb - Egoless Programming
  • Jeff Huang - (2019) This Page is Designed to Last : A Manifesto for Preserving Content on the Web
  • Mathieu Corbin - 🇫🇷 [FR] (2022) Test technique lors du recrutement
  • Swizec Teller - (2021) Why null checks are bad
  • Eli McGarvie - (2022) 13 Best Tech Documentaries For Developers | You can't go wrong with these developer documentaries...
  • Bohdan Balov - (2022) The Roadmap of a Lead Software Engineer | Experience and knowledge you need to gain to become a lead software engineer
  • How old is it? - How long has react, vue, ember, etc. existed? | This is a handy tool for tech recruiters who ask for fifteen years experience in technologies that have only existed for three months.
  • Spencer Baugh - (2022) Prefer to change the code rather than write a workaround
  • Spencer Baugh - (2021) Write code, not configuration
  • Raphael Gaschignard - (2022) Precision In Technical Discussions
  • While working with the same people in the same problem domain for a long time, it's extremely common for people to take shortcuts when describing usage of a technical system.

Stickers

Tools

  • ThoughtWorks - Technology radar : trends, insights into tools, frameworks, languages, techniques & platforms shaping the future
  • StackShare - trending tools, find which tools other companies are using
  • StackShare - trending technology stacks, find which stacks others companies are using
  • skywinder/github-changelog-generator - Automatically generate change log from your tags, issues, labels and pull requests on GitHub.
  • marionebl/commitlint - Lint commit messages
  • Conventional Commits - The Conventional Commits specification proposes introducing a standardized lightweight convention on top of commit messages. This convention dovetails with SemVer, asking software developers to describe in commit messages, features, fixes, and breaking changes that they make.
  • Langserver.org - is a community-driven site, maintained by Sourcegraph, to track development progress of LSP-compatible language servers and clients. | The Language Server protocol is used between a tool (the client) and a language smartness provider (the server) to integrate features like auto complete, go to definition, find all references and alike into the tool
  • b4b4r07/gomi - 🗑️ Replacement for UNIX rm command!
  • asdf-vm/asdf - Extendable version manager for multiple languages | Manage multiple runtime versions with a single CLI tool, extendable via plugins
  • First Round Review - (2019) Empathy-Driven Development: How Engineers Can Tap into This Critical Skill. See also Empathy-Driven Development

“You can’t say the word ‘empathy’ at a software company. No one will take you seriously.”

  • Leadership garden - (2019) Kill your heroes
  • Leadership garden - (2017) Engineering managers, stop coding!
  • Principles.dev - Open-source Software Engineering and Leadership principles | Make better decisions using principles - For Software Engineers and technical leaders who want better results.
  • /uses - A list of /uses pages detailing developer setups, gear, software and configs.
  • daily.dev - The Homepage Every Developer Deserves | daily.dev is the fastest growing online community for developers to stay updated on the best developer news.
  • Key Values - Find engineering teams that share your values. Select your top values and find teams you'll click with.

Programming challenges

  • Colin Hughes - Project Euler proposes a series of challenging mathematical/computer programming problems
  • Nick Parlante - CodingBat : practice your programming skills (exercices in java and python)
  • Programming Praxis - A collection of etudes, updated weekly, for the education and enjoyment of the savvy programmer
  • Hacker Rank - coding challenges (to make yourself ready for coding interviews
  • /r/dailyprogrammer - programming challenges on reddit
  • /r/codegolf - Challenges to test your code shortening skills. Not necessarily practical, but fun!
  • Code Golf - a game designed to let you show off your code-fu by solving problems in the least number of characters. It is written in Go and is open source, patches welcome!
  • danistefanovic/build-your-own-x - 🤓 Build your own ... (insert technology here)
  • Advent of Code - is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
  • donnemartin/system-design-primer - Learn how to design large-scale systems. Prep for the system design interview.
  • Antonio Bello - (2016) How To Be a Better Developer with Programming Challenges
    • 7DRL Challenge 2019 - In 2005, the roguelike community established a yearly event, the 7DRL Challenge, in which developers are challenged to create a roguelike in seven days. This allows one to have the shared misery of knowing you are not the only one tracking down a bad pointer at the 167th hour. The annual event occurs during a week in early March.
  • Dwitter.net - is a challenge to see what awesomeness you can create when limited to only 140 characters of javascript and a canvas.
  • Hacker Rank - Bash challenges (bash, grep, sed, awk ...)
  • Hacker Rank - Linux Shell challenges, funny but nothing fancy
  • Commandline Challenge - Linux Shell challenges
  • LOWREZJAM 2019 - The goal of the jam is to create a game with a resolution of 64x64 pixels or less. You can use whatever programming language or tools that you wish.
  • Hacknet - a hacking game simulator (not free), potentially boring (move to hackmud)
  • h a c k m u d - hackmud, a hacking game simulator (not free) with programming challenges
  • Exercism - Get really good at programming. | Develop fluency in 55 programming languages with our unique blend of learning, practice and mentoring. Exercism is fun, effective and 100% free, forever.
  • a11yphant - Learning web accessibility made easy | Learn web accessibility, one step at a time, broken down into manageable pieces, called challenges. You won't need to read large amounts of text to complete those. Instead, you will learn by applying the concepts in code. Get started with your first web accessibility challenge and improve your skills.
  • Proge - Guess the Programming Language

API

Assembly

C/C

  • Mike Acton - (2014) [Slides] Data oriented design principles and c
  • Angel 2D - Angel 2D : A cross-platform 2D game prototyping framework based on OpenGL and C++. Looks dead...
  • SFML - SFML is a simple, fast, cross-platform and object-oriented multimedia API. Written in C++ and provides bindings for various languages such as C, .Net, Ruby, Python.
  • Vicky Chijwani - (2014) Common C++ Gotchas
  • Chris Wellons - (2014) Interactive Programming in C
  • Chris Wellons - (2014) How to build DOS COM files with GCC
  • Chris Wellons - (2017) A Tutorial on Portable Makefiles
  • Chris Wellons - (2017) How to Write Portable C Without Complicating Your Build
  • svaarala/duktape - Duktape : embeddable Javascript engine with a focus on portability and compact footprint
  • RMB Consulting - A ‘C’ Test: The 0x10 Best Questions for Would-be Embedded Programmers
  • Bartlomiej Filipek - (2017) How not_null can improve your code?
  • Stack Overflow - What is your favorite C programming trick?
  • Stack Overflow - Hidden features of C
  • Kenneth Finnegan - (2008) Programming Tips in C
  • Cprogramming.com - C and C++ Programming Tips
  • Phillip Khandeliants - (2017) Speeding up the Build of C and C++ Projects
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.
  • Dr. Tom Murphy VII, Ph.D. - [PDF] A C89 compiler that produces executables that are also valid ASCII text files

Calm programming / Slow programming

See also Clean code and Slow programming principles

I dedicate this section to the work I'm busy at, about how going faster in short term can cost you quality, money and confidence in long term. Studying relationships between quality, productivity, thinking fast & slow, slowing down, and the craft of programming.

The only way to go fast is to go well. Every time you yield to the temptation to trade quality for speed, you slow down. Every time. Robert C. Martin

  • John Sonmez - [Video] (2016) Being A Slow Developer... Am I Screwed? | on slow programming, clean code & productivity. Don't rush, do it right, do it clean then do it fast.
  • George Gritsouk - (2016) Legacy Code | The noblest pursuit of our weekdays | slow programming
  • Slow Programming - Programming has become a pursuit of profit over personal knowledge. The craft of programming has developed into a rapid rush to the finish line via bootcamps and brief tutorials.
  • Derek Sivers - (2016) I’m a very slow thinker
  • Dan Milstein - (2013) Coding, Fast and Slow: Developers and the Psychology of Overconfidence | about inability of developers to predict how long a project will take.
  • Raph Lee - (2019) Understand, Design, Build: A Framework for Problem-Solving
  • Mike Donghia - (2010) Enjoying Life in the Slow Lane

here are some easy steps to escape the rat race and enjoy a slower, simpler, happier life:

  • Choose 3 things to accomplish each day.
  • Learn to say “no.” Stop taking on more responsibility.
  • Be unproductive.
  • Only check your email twice a day.
  • Embrace quality over quantity.
  • Find a Hobby.
  • Spend time with people you love.
  • 1x Engineer - a non-exhaustive list of what qualities make up a 1x engineer.
  • Loris Cro - (2019) I Want Simple, Not Just Easy

You've surely read plenty about how simple is good, but what's wrong with easy?

the "talk first, code later" approach is an un-intuitive tool that speeds development up and leads to better communication between engineers and teams. Everyone would have saved so much time, if only we communicated first and wrote code only after.

  • Collaboration, it turns out, gets harder in proportion to two things: the level of coherence you demand from the output, and the complexity of the processes that create it.
  • Collaboration that creates incoherence is easy. You all just do whatever you want. Equally, collaboration on things that are not complex is easy. You can all see whether the log has been chopped or not, there is limited room for debate.
  • On the other hand, lets say that instead we first come up with a clear overarching plan for what we’re doing. This makes it much more likely the outcome will be coherent. But the price we pay is having to handle the complexity of the entire challenge all at once.
  • You are moving too fast. Overwhelmed with everything, good or bad, happening around.
  • Life is too short (really) to zoom past it.
  • People who survive (and grow) are the ones who stay in the moment, concentrate and strive to deliver their best.
  • Quality never comes from rushing through things.
  • Just because you can do so many things doesn’t mean you should attempt all of them.
  • Rushing too fast through these is a risk, it is a killer. You never savor the moment, be in the present and enjoy the process. You end up ‘doing’ so much that there is no time to ‘ruminate’
  • The faster you react, the less you think. Not always, but often.
  • It’s fine to disagree, it’s fine to push back, it’s great to have strong opinions and beliefs, but give my ideas some time to set in before you’re sure you want to argue against them.
  • There’s also a difference between asking questions and pushing back. Pushing back means you already think you know. Asking questions means you want to know. Ask more questions.
  • So next time you hear something, or someone, talk about an idea, pitch an idea, or suggest an idea, give it five minutes. Think about it a little bit before pushing back, before saying it’s too hard or it’s too much work. Those things may be true, but there may be another truth in there too: It may be worth it.
  • We need to put care into our systems. We need to build checklists and peer review and resilience into the way we express our carefulness.
  • It seems ridiculous that a surgeon needs to write her name (with a Sharpie) on the limb that she’s about to operate on, but this simple system adjustment means that errors involving working on the wrong limb will go to zero.
  • Instead of reacting to an error with, “I need to be more careful,” we can respond with, “I can build a better system.”
  • If it matters enough to be careful, it matters enough to build a system around it.
  • See also Martin Fowler's tweet - "Don't teach people to be careful, instead get them to build systems that resist faults"
  • Logan Mayville - (2018) How Being Busy Kills Productivity | How doing less can help you be more productive
  • Focus on results; not time : Time tracking is unavoidable in some instances, but rather than the rule by which companies operate, it should be used as a secondary metric to the results they achieve. Rather than give an employee a 2-hour window to do a job, have her do it right the first time (bonus points for documenting the process), then review and adjust your future plans based on time tracking data.
  • Improve systems : Improving systems helps remove busywork from an employee’s day, but it also makes things easier for the customer.
  • Whether you’re getting a lot of satisfaction from being busy or just feeling exasperated, don’t forget to occasionally stop and ask yourself: Is this the best use of time?

Egoless programming is a concept introduced by Gerald Weinberg in The Psychology Of Computer Programming. The idea is that programmers must fight the natural tendency to treat their programs as part of themselves, and therefore to reject all criticism. Rather, they should do their best to treat their designs & implementations as objects independent of themselves, and to view criticism dispassionately on its merits.

  • While working with the same people in the same problem domain for a long time, it's extremely common for people to take shortcuts when describing usage of a technical system.

Clean code and best practices

See also Calm programming / Slow programming

News

  • Coding Blocks - podcast and website for learning how to become a better software developer, covers a wide variety of programming best practices | the rhythm is sometimes slow
  • The Holy Java - Building the right thing, building it right, fast
  • Clean Coder Blog - articles by Robert C. Martin (Uncle Bob)

Learn

The only way to go fast is to go well. Every time you yield to the temptation to trade quality for speed, you slow down. Every time. Robert C. Martin

we need high design quality for stuff that is critical to our products and less design quality for stuff that isn't critical.

  • Joshua Kerievsky - (2010) What’s Wrong With Clean Code? | When Cleaning Is Not Enough

Clean frequently and remodel occasionally to produce an excellent design.

  • John Sonmez - [Video] (2016) Being A Slow Developer... Am I Screwed? | on slow programming, clean code & productivity. Don't rush, do it right, do it clean then do it fast.
  • Jeff Atwood - (2004) We Make Shitty Software.. With Bugs! | Software is a process, it's never finished, it's always evolving.
  • Jakub Skałecki - (2017) How to write excellent Dockerfiles
  • Jakub Skałecki - (2017) Automatic code quality checks with git hooks
  • Matthew Setter - (2018) Best Practices When Versioning a Release
  • Stephen Mann - (2018) Don't Do This in Production
  • Matt Butcher - (2018) Be Nice And Write Stable Code
  • Brandur Leach - (2018) In Pursuit of Production Minimalism
  • Birat Rai - (2017) Step 8: The Boy Scout Rule ~Robert C. Martin (Uncle Bob)

“Leave Things BETTER than you found them.” ~ Robert Baden Powell

  • Chesterton's fence - the principle that reforms should not be made until the reasoning behind the existing state of affairs is understood.
  • Mark Heath - (2017) STABLE tactics for writing SOLID code
  • Rule of three (computer programming) - only refactor when similar code is used three times (and more)
  • Johannes Brodwall - (2018) Forget about Clean Code, let’s embrace Compassionate Code | Make people Awesome. Clean Code may help or hurt that goal. Learn to see the difference.
  • Trung Thanh Le - (2017) [Slides] Connascence - How to detect code smell
  • Ben Halpern - (2018) Write clean code and avoid the distractions of emerging technology | stay excited by the trends, but be impassioned by the small improvements you can make in the quality of your work.
  • Sandi Metz - (2016) The Wrong Abstraction
  1. duplication is far cheaper than the wrong abstraction
  2. prefer duplication over the wrong abstraction
  • John D. Cook - (2008) Reusable code vs. re-editable code
  • progrium/bashstyle - Let's do Bash right! Collection of Best practices acquired from experience for Bash
  • Kat Dober - (2018) New to Ansible? Check Out Our Best Practices Guide
  • sloria - The Best of the Best Practices (BOBP) Guide for Python
  • The Hitchhiker’s Guide to Python! - This handcrafted guide exists to provide both novice and expert Python developers a best practice handbook to the installation, configuration, and usage of Python on a daily basis.
  • George Gritsouk - (2016) Legacy Code | The noblest pursuit of our weekdays | slow programming
  • Slow Programming - Programming has become a pursuit of profit over personal knowledge. The craft of programming has developed into a rapid rush to the finish line via bootcamps and brief tutorials.
  • stanislaw/SoftwareDesignHeuristics - heuristics found to be useful in software engineering practice. We call “heuristics” everything that helps us to write better code given we keep them in mind.
  • Arnaud Lemaire - [Videos] 🇫🇷 [FR] (2019) Entre industrialisation et artisanat, le métier de développeur. | a very good and accurate talk of software craftsmanship
  • Terraform Best Practices - [Book] free book with most of best-practices and recommendations for Terraform users. Bonus Source code examples
  • Anton Babenko - [Videos] (2019) Codifying infrastructure with Terraform for the future | be aware of principles related to management of Terraform resources, Terraform modules best-practices and some CI/CD principles applicable to infrastructure management and deployments.
  • Matej Jellus - (2018) Write good git commit message
  • Martin Fowler - (2019) Is High Quality Software Worth the Cost?
  • Literate programming - is a programming paradigm introduced by Donald Knuth in which a program is given as an explanation of the program logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which a compilable source code can be generated.
  • Literate programming links - articles about literate programming
  • Yevgeniy Brikman - (2019) Terragrunt: how to keep your Terraform code DRY and maintainable | Terragrunt is helpful at solving problems such as :
  • the lack of locking for Terraform state
  • the lack of a way to configure your Terraform state as code.
  • how to keep your Terraform code DRY and maintainable...
  • Loris Cro - (2019) I Want Simple, Not Just Easy

You've surely read plenty about how simple is good, but what's wrong with easy?

  • Bill Clark - (2018) A Taxonomy of Tech Debt
  • antonbabenko/terragrunt-reference-architecture - Terragrunt Reference Architecture - This repository contains rather complete infrastructure configurations where Terragrunt is used to manage infrastructure for Acme Corporation.
  • Anton Babenko - [Slides] (2019) Terraform modules and some of best-practices | Slides of his talk at DevOps Singapore meetup in March 2019
  • Fernanda Martins - (2020) [Slides] The hitchhiker's guide to terraform your infrastructure
  • Anton Babenko - (2019) [Video] Terraform best practices with examples and arguments
  • Horia Coman - (2020) Jupiter Dev Log 3 - Lint All The Things
  • CloudSkiff - (2019) Terraform Code Quality | Key Steps to a good quality for your Infrastructure Code.
  • Thomas Nyambati - (2017) How to Avoid Handover Nightmares | I totally adhere to those principles in my daily work... they are well known but still deserve a reminder :-) ...
  • Keep things simple.
  • Document everything.
  • Adopt workflow and best practices.
  • Employ separation of concerns.
  • Avoid using personal accounts or credentials.
  • Automate as much as you can.
  • Write good code.
  • Prioritize Clarity : The first step to writing clear code is to make it a priority.
  • Develop a sense for clarity : requires knowing what clear code looks like.
  • Edit : Reading back over what you just wrote will help give ideas for how to improve it.
  • Start by explaining : start by explaining what needs to be done as though you are telling it to another person (or rubber duck). Write it down. Take that explanation and transform it into code.
  • Comments : Code can’t self-document if it isn’t there. If you decide to not write some code and don’t leave a comment explaining why, there will be nothing left to explain what you were thinking!
  • Don’t mix levels : Mixing levels of abstraction makes the reader jump between thinking about what is being done and how it is implemented.
  • Break out functions | 🦆 self-comment here : It's true to some extent, but breaking a code in too many functions can also force jumping a lot between code locations. So I would say it depends on the semantic and scope distance between those functions.
  • Don’t break out functions : DRY starts to go too far when two functions that happen to share a handful of lines become a target for deduplication. The test for whether some pieces of code should be deduplicated is simple: would anything bad happen if one was changed without also changing the other? If the answer is yes, then make a single source of truth for it. If not, consider leaving it alone. | 🦆 self-comment : exactly... what I just wrote above :-)
  • Avoid configurable functions : Prefer many functions to a few, configurable functions, i.e It’s much better to have multiple functions, each of which does just one thing.
  • Don’t prematurely optimize
  • Phil Eaton - (2020) The case for comments in code

More so than all other tools (issue tracker, code management system, etc.) comments in code have the greatest chance of still being around and easily searchable if they haven't been deleted.

  • Dan Moore - (2021) Think first about what problem this is solving and for whom

every time you pick up a new Jira ticket or sit down to complete a new requirement, I suggest that you ask yourself the following questions:

  • Who does this solve a problem for?
  • What is the problem they’re trying to solve?
  • How does this ticket solve it?
  • Make yourself a favor and call that maintenance.
  • Software do not have a technical debt problem, software simply requires maintenance.

The fastest option eventually wins. Would your project survive if a competitor came along and was ten times faster?

  • kettanaito/naming-cheatsheet - Comprehensive language-agnostic guidelines on variables naming. Home of the A/HC/LC pattern.
  • Jérôme Beau - (2021) Developers Bad habits | You don’t want to do that
  • Matjaz Trcek - (2016) Antipatterns in software development
  • learnk8s - Kubernetes production best practices | A curated checklist of best practices designed to help you release to production
  • diegolnasc/kubernetes-best-practices - A cookbook with the best practices to working with kubernetes.
  • PHP The Wrong Way - In the world of PHP programming, a set of trends are massively being propagated by some people (in their books and on websites) as “Modern PHP” while all other approaches are frowned upon as backward, stupid, or just plain wrong. This website has been created in an attempt to present a pragmatic view on PHP programming. A view dictated by experience and practical consequence rather than popular trends, theory, or academic dogma.
  • Web Usability Checklist - Catch common usability problems before user testing
  • Swizec Teller - (2021) Why null checks are bad
  • [Steve Barnegren](https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code - (2022) There’s No Such Thing as Clean Code
  • Spencer Baugh - (2022) Prefer to change the code rather than write a workaround
  • Spencer Baugh - (2021) Write code, not configuration
  • Raphael Gaschignard - (2022) Precision In Technical Discussions
  • While working with the same people in the same problem domain for a long time, it's extremely common for people to take shortcuts when describing usage of a technical system.

Tools

  • Clean Code Cheat Sheet v2.4 - (2014) cheat sheet for clean code
  • Salvatore Gentile/cscs - A curated list of Coding Style Conventions and Standards. Discovered via DevHub
  • dockerlint - Linting tool for Dockerfiles based on Dockerfile Reference and Docker Docs
  • mcandre/linters - list of linters and introduction to static code analysis
  • mre/Awesome Static analysis - A curated list of static analysis tools, linters and code quality checkers for various programming languages
  • JSONLint - JSON validator
  • YAML Lint - The YAML Validator
  • EditorConfig - EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs. The EditorConfig project consists of a file format for defining coding styles and a collection of text editor plugins that enable editors to read the file format and adhere to defined styles. EditorConfig files are easily readable and they work nicely with version control systems.
  • mvdan/sh - sh : A shell parser, formatter and interpreter (POSIX/Bash/mksh)
  • pre-commit/pre-commit - A framework for managing and maintaining multi-language pre-commit hooks.
  • Tom Preston-Werner - Semantic Versioning 2.0.0
  • Conventional Commits - The Conventional Commits specification proposes introducing a standardized lightweight convention on top of commit messages. This convention dovetails with SemVer, asking software developers to describe in commit messages, features, fixes, and breaking changes that they make.
  • marionebl/commitlint - Lint commit messages
  • Pl/Sql tidy - Online PL/SQL formatter
  • jessfraz/dockfmt - Dockerfile format and parser. Like gofmt but for Dockerfiles.
  • Terragrunt - Terragrunt is a thin wrapper that provides extra tools for keeping your configurations DRY, working with multiple Terraform modules, and managing remote state. | DRY and maintainable Terraform code.
  • analysis-tools-dev/static-analysis - static analysis tools for all programming languages, build tools, config files and more. See also: the official website which is based on this repository and adds rankings and user comments for each tool.
  • btford/write-good - Naive linter for English prose for developers who can't write good and wanna learn to do other stuff good too.
  • amperser/proselint - a linter for English prose.
  • get-alex/alex - Catch insensitive, inconsiderate writing.

Whether your own or someone else’s writing, alex helps you find gender favoring, polarizing, race related, religion inconsiderate, or other unequal phrasing in text.

  • Semgrep - Static analysis at ludicrous speed. Find bugs and enforce code standards
  • Semver check - More and more projects try to follow Semantic Versioning to reduce package versioning nightmare and every dependency manager implements its own semantic versioner. Composer and NPM for example don't handle version constraints the same way. It's hard sometimes to be sure how some library version will behave against some constraint. This tiny webapp checks if a given version satisfies another given constraint.
  • Harshit Mehndiratta - (2021) Top Kubernetes YAML Validation Tools
  • Amit Saha - (2020) Validating Kubernetes YAML for best practice and policies
  • Artur Śmiarowski - (2018) 23 guidelines for writing readable code
  • The Chief I/O - (2020) Kubernetes YAML: Enforcing best practices and security policies in CI/CD and GitOps pipelines

Naming conventions

  • Javin Paul - (2014) 10 Programming Best Practices to Name Variables, Methods, Classes and Packages
  • kettanaito/naming-cheatsheet - Comprehensive language-agnostic guidelines on variables naming. Home of the A/HC/LC pattern.
  • Jonathan Boccara - (2017) How to choose good names in your code
  • IMStudio - (2021) Naming Rules: one of the hard things in Computer Science
  • Jérôme Beau - (2021) Programming: Naming | Where are you talking from?
  • Lane Wagner - (2021) Naming Variables the Right Way | bugs are due to the poor naming of variables way more often than you would expect.
  • Jason Swett - (2018) Variable name anti-patterns
  • Tom Benner - (2023) A book about the naming things in software engineering

Tools

  • Method Namer - Can't think of a good method name? Try this
  • CodeElf - Search over Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Project, GitLab to find real-world usage variable names | A search tool helps dev to solve the naming things problem. Source code : unbug/codelf

Conferences

In Belgium

Anywhere

  • Red Hat Events - Conferences, online events, on-demand webinars, and more
  • Jenkins World - usually in USA, but by 2018 will also occur Jenkins World Europe
  • Linda Rosencrance - (2018) The best cloud and IT Ops conferences of 2018
  • DevOps Con - The Conference for Continuous Delivery, Microservices, Containers, Clouds and Lean Business
  • AnsibleFest - brings together Ansible users, developers and industry partners to share best practices, case studies and Ansible news.
  • GOTO - Created for developers, by developers, GOTO Conferences are focused on bringing the best minds in the software community and the most interesting topics to light.
  • DevOps Conferences 2018
  • John P. Mello Jr. - (2018) The best DevOps conferences of 2018

Learn

Correctness

  • Hoare logic - is a formal system for reasoning about the correctness of computer programs
  • Cormac Flanagan - (2003) [Slides] [PDF] Axiomatic Semantics
  • Ranjit Jhala - (2010) [PDF] Axiomatic Semantics
  • Ken Slonneger - Axiomatic Semantics
  • Operational semantics - is a category of formal programming language semantics in which certain desired properties of a program, such as correctness, safety or security, are verified by constructing proofs from logical statements about its execution and procedures, rather than by attaching mathematical meanings to its terms (denotational semantics).
  • Caitie McCaffrey - (2016) The Verification of a Distributed System | A practitioner's guide to increasing confidence in system correctness
  • Literate programming - is a programming paradigm introduced by Donald Knuth in which a program is given as an explanation of the program logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which a compilable source code can be generated.
  • Literate programming links - articles about literate programming
  • Eyar Zilberman - (2021) A Deep Dive Into Kubernetes Schema Validation
  • Harshit Mehndiratta - (2021) Top Kubernetes YAML Validation Tools
  • Amit Saha - (2020) Validating Kubernetes YAML for best practice and policies
  • Stéphane Robert - 🇫🇷 [FR] (2021) Regula l’outil d’Analyse Statique pour l’Infra As Code

Database

# backup :
pg_dumpall > db.out
# restore :
# (might requires some DROP DATABASE xxx if you do want to replace existing data with same db and table names)
psql -f db.out postgres

Debugging

Elixir

  • David Schmitz - [Slides] (2016) Elixir - Easy fun for busy developers | Elixir combines Ruby's love for programmers with the absolute power that is the Erlang platform.

Erlang

News

Learn

  • Alex Ott - books review on Erlang
  • Functional Geekery - Functional Geekery Episode 114 – Fred Hébert with introduction to Erlang, productionization as a phase of software, property testing, “Everything is Terrible”, and much more.
  • PropEr Testing - Fred Hébert talking about ins and outs of Property-Based Testing, with focus set on Erlang’s PropEr framework, a freely available testing tool based on Quviq’s Quickcheck framework.
  • Learn You Some Erlang - [Book] Online book. Reading this tutorial should be one of your first steps in learning Erlang
  • h4cc/awesome-elixir - list of amazingly awesome Elixir and Erlang libraries, resources and more
  • uhub/awesome-erlang - list of awesome Erlang frameworks, libraries and software.
  • drobakowski/awesome-erlang - list of awesome Erlang libraries, resources and shiny things.
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.

Gamedev

News & Communities

  • GameDev - game development articles
  • Stack Exchange - Q&A & discussions about Game development
  • /r/gamedev - everything about game development on reddit
  • Indiedevhour on Slack - Community of Indie game developers and hobbyists
  • Indie Game Developers on Slack - Independent game developers group
  • Gamasutra - articles about art and business of making games
  • Gergo Vas - The Best-Looking Isometric Games
  • Pixel Joint - Highest Rated Pixel Art | Pixel Joint is all about the pixel art community. The site was started in September 2004
  • Pixelation - A standalone forum dedicated which hosts lots of studies and deeper discussions of pixel art.
  • 7DRL Challenge 2019 - In 2005, the roguelike community established a yearly event, the 7DRL Challenge, in which developers are challenged to create a roguelike in seven days. This allows one to have the shared misery of knowing you are not the only one tracking down a bad pointer at the 167th hour. The annual event occurs during a week in early March.
  • Retronator Magazine - Pixel Art, Gaming & Saturated Colors
  • LOWREZJAM 2019 - The goal of the jam is to create a game with a resolution of 64x64 pixels or less. You can use whatever programming language or tools that you wish.

Tools

  • libGDX - libgdx : Desktop/Android/HTML5/iOS Java game development framework
  • Indie DB - games made with libGDX
  • faiface/Pixel - Pixel : A hand-crafted 2D game library in Go.
  • Angel 2D - Angel 2D : A cross-platform 2D game prototyping framework based on OpenGL and C++. Looks dead...
  • SFML - SFML is a simple, fast, cross-platform and object-oriented multimedia API. Written in C++ and provides bindings for various languages such as C, .Net, Ruby, Python.
  • Plastic SCM - (2017) Distributed Version Control for big projects. Discovered via Garry' blog
  • Open Source Game Clones - inventory of open-source remakes of great old games
  • Modd.io - a one minute game maker proof of concept, with ability to join others games online or fork their projects to create your own
  • Video Game Preservation - An archive of commercial video game source code.
  • Chris Wellons - (2014) How to build DOS COM files with GCC
  • Tzvi Freeman - (1997) Creating A Great Design Document
  • ellisonleao/magictools - 🎮 📝 A list of Game Development resources to make magic happen.
  • Character Generator - Create a character sprite sheet for your game using 100% open art.
  • Godot Engine - Free and open source 2D and 3D game engine

Learn

  • Gaylord - (2014) [FR] 🇫🇷 [Interview] Un des créateurs d’Out There vous explique comment écrire un bon jeu
  • Jeff Bradberry - (2015) Introduction to Monte Carlo Tree Search
  • Kelton Sears - (2016) How Two Brothers From Silverdale Made The World’s Most Complex Video Game | about Dwarf Fortress
  • Liz England - (2014) The Door Problem | funny article about complexity of modern game development
  • Brandon Sheffield - (2017) Developers share their most memorable dirty coding tricks
  • JR Heard - (2016) Procedural Dungeon Generation: A Drunkard's Walk in ClojureScript
  • JR Heard - (2016) Procedural Dungeon Generation: Cellular Automata
  • La boite verte - 🇫🇷 [FR] Les illustrations en pixel art de Octavi Navarro
  • Blake Reynolds - (2015) A Pixel Artist Renounces Pixel Art
  • NeoGaf - (2016) How where when Metal slug sprites made? | Interesting thread on NeoGAF
  • Bill Clark - (2018) A Taxonomy of Tech Debt
  • Frank Force - (2019) I’m only making business card sized games now
  • Mikołaj Stolarski - (2015) Principles Of HTML5 Game Design
  • Josh Ge aka Kyzrati - (2019) Level Design and Shaping a Cogmind Experience | A complete rundown of the entire process behind designing and building a new map for the world of Cogmind, and explaining how it integrates with gameplay.

Git :octocat:

News

  • DEV - Git related articles on dev.to()

Learn

The subtree merge allows you to merge another repository (let’s call it “Project B”) into your own, but into its own subdirectory. It takes a bit of effort to set everything up the first time, but after that a pull from the other repository is all that is needed to update.

The git-new-workdir script has been superseded by the git-worktree command added in Git 2.5. This article is there now for historical reference.

Imagine a workflow so sophisticated that you couldn’t break the integration branch even if you tried

  • Michelle Young - (2017) Trunk-based Development vs. Git Flow
  • fa.linux.kernel newsgroups archives - (2008) [Messages] Linus Torvalds against git rebase
  • Safia Abdalla - (2018) Tips for reading new codebases
  • Egwuenu Gift - (2018) Useful Tips for writing better Git commit messages
  • Kenichi Shibata - (2017) Git Push and Pull Tips and Tricks
  • Paul Hammond - (2010) [Slides] Always ship trunk | Managing change in complex websites
  • Ross Harmes - (2009) Flipping Out | Flickr on feature flags
  • Lemi Orhan Ergin - (2018) [Slides] Git Anti-Patterns: How To Mess Up With Git and Love it Again. Bonus : Video
  • Vincent Driessen - (2010) A successful Git branching model
  • Zach Holman - (2015) Utter Disregard for Git Commit History
  • IcaliaLabs/guides - Monolithic vs Micro Repos
  • Matt Butcher - (2015) Why We Should Not Return to Monolithic Repositories
  • Avi Cavale - (2016) Our journey to microservices: mono repo vs multiple repositories
  • mozilla.dev.developer-tools - Discussion about Multiple repos vs Monolithic repo
  • Gregory Szorc - (2014) On Monolithic Repositories | in favor of monolithic repos
  • Aaron Schlesinger - (2015) Why We Should Use Monolithic Repositories
  • Nathan Leiby - (2017) Mo Repos, Mo Problems? How We Make Changes Across Many Git Repositories
  • ezekg/git-hound - Git plugin that prevents sensitive data from being committed.
  • dxa4481/truffleHog - Searches through git repositories for high entropy strings and secrets, digging deep into commit history
  • Dan Kelch - (2017) Git Good: Improve Your Version Control Skills
  • EugeneKay/git-jokes - jokes about git
  • Boris Serebrov - (2014) Git - how to revert multiple recent commits
  • Git Docs - Git Tools - Signing Your Work
  • Jakub Skałecki - (2017) Automatic code quality checks with git hooks
  • Git How To - is a guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it.
  • Matthew Brett - The curious coder’s guide to git
  • Steve Losh - (2013) Git Koans
  • Vadim Samokhin - (2018) Gitflow is a Poor Branching Model Hack | gitflow sucks
  • Paul Christie - (2018) What to do when you commit to the wrong Git branch
  • Mark Lodato - A Visual Git Reference
  • tiimgreen/github-cheat-sheet - A list of cool features of Git and GitHub
  • List of All ASCII Emoticons - A massive list of all the ASCII emoticons discovered on the interweb.
  • dysfunc/ascii-emoji - Essential ASCII Emoji
  • Matej Jellus - (2018) Write good git commit message
  • David Winterbottom - (2018) Advanced pull-request crafting.
  • Keavy McMinn - (2015) How to write the perfect pull request
  • Nikita Prokopov aka tonsky - (2014) Reinventing Git interface
  • GitHut - A small place to discover more about the usage of programming languages in GitHub.
  • Vincent Tunru - (2016) A Grip On Git | A Simple, Visual Git Tutorial
  • Alex Chan - (2018) A Plumber’s Guide to Git
  • Federico Kauffman - (2018) Automatically managing personal and work git configurations
  • Seth Robertson - (2013) On undoing, fixing, or removing commits or mistakes in git | A git choose-your-own-adventure!
  • Seth Robertson - (2013) Commit Often, Perfect Later, Publish Once: Git Best Practices
  • MorganGeek - My cheatsheet for Git
  • What the Commit - A random commit message generator. | some inspiration for your next git commit message | NSFW :-D
  • rponte/get-latest-tag-on-git.sh - Getting latest tag on git repository
  • gitignore.io - Generate useful .gitignore files for your project. See also Source Code
  • github/gitignore - A collection of useful .gitignore templates
  • ikatyang/emoji-cheat-sheet - A markdown version emoji cheat sheet | This cheat sheet is automatically generated from GitHub Emoji API and Unicode Full Emoji List.
  • Thomas Paul Mann - (2021) No code reviews by default | How one built an engineering culture based on trust that allows us to move incredibly fast without requiring code reviews.
  • Elisabeth Irgens - (2021) - Why I Won’t Approve Your PR | in-house development has been influenced too much by the GitHub open source PR driven development process. A process driven by zero trust doesn’t fit well in a team with trust.
  • Choose an open source license - An open source license protects contributors and users. Businesses and savvy developers won’t touch a project without this protection. GitHub wants to help developers choose an open source license for their source code.
  • Csaba Okrona - (2014) Git tips from the trenches
  • Mislav Marohnić - (2014) Every line of code is always documented.
  • Mislav Marohnić - (2020) Git is simply too hard | whatever comes next should be closer to how humans think
  • Fossil - Fossil Quick Start : This is a guide to help you get started using the Fossil Distributed Version Control System quickly and painlessly.
  • Fossil - Fossil Versus Git | an overiew, by Fossil, of all of that similarity and interoperability aside and focus on the important differences between the two, especially those that impact the user experience.
  • Git Best Practices - Commit Often, Perfect Later, Publish Once - Best Practices vary from environment to environment, and there is no One True Answer, but still, this represents a consensus from #git and in some cases helps you frame the discussion for the generation of your very own best practices. Bonus Source code
  • vim-fugitive - fugitive.vim: A Git wrapper so awesome, it should be illegal
  • vim-gitgutter - A Vim plugin which shows git diff markers in the sign column and stages/previews/undoes hunks and partial hunks.

Dotfiles / Aliases

See also Shell aliases

GitHub

News

Learn

Solve your own problem, everything else will follow However, most developers make zero money off open source. Zero. Show your solution to other people as soon as possible Package it and distribute it as soon as possible (note to self) Don’t be scared, ashamed, or discouraged to make it paid Don’t let anyone tell you how much you should charge for your work value your work and believe that despite the fact that haters are loud, you’re still gonna get a lot of customers who would gladly pay for what you made.

  • Ben Balter - (2014) 15 rules for communicating at GitHub
  • GitHub - Topics on GitHub
  • GitLogs - definitive list of top resources of GitHub
  • Ah shhgit! - Find GitHub secrets in real time | Shhgit finds secrets and sensitive files across GitHub code and Gists committed in near real time by listening to the GitHub Events API. Bonus : Source code
  • GitHut - A small place to discover more about the usage of programming languages in GitHub.
  • GitHub - Discover repositories : Recommendations are based on your stars and people you follow
  • GitHub Explore - Project showcases, discover interesting repositories
  • Christophe Porteneuve - [Video] Collaboration best practices with Git and GitHub - Slides
  • Gitdude.com - code improvement tips posted as a comment on your Github commits
  • lorey/top-regional-repositories - The most-relevant GitHub repositories for all countries and many cities worldwide.
  • Gary Ewan Park - Control your GitHub releases with GitVersion and GitReleaseManager
  • Amit Agarwal - What You Can Do With Gists on Github?
  • Jason Chen - 45 Github Issues Dos and Don’ts
  • Zach Holman - (2011) How GitHub Uses GitHub to Build GitHub
  • Tom Forbes - (2019) Testing my dotfiles with Github actions
  • github/gitignore - A collection of useful .gitignore templates
  • Chen Harel - GitHub’s 10,000 Most Popular Java / Ruby / JavaScript Projects: Here are the Top Libraries They Use
  • Jesse Newland - Kubernetes at GitHub
  • Danny Hermes & Thomas Tayloron - (2022) How We Write GitHub Actions in Go

Tips

Tools

Golang / Go

News

Misc

Groovy

  • Stack Overflow - how to pipe multiple shell commands
  • Hubert Klein Ikkink - (2009) Groovy Goodness: Working with Lines in Strings
  • Tess Thyer - Calling Other Processes From Groovy
  • Joerg Mueller - (2010) Executing shell commands in Groovy
  • Groovy - learning section of the Groovy website.
  • Iván López Martín - (2014) [Slides] Metaprogramming with groovy
  • Gregory Dickson - (2017) Why Groovy is so groovy or a beginners guide to hacking Groovy
  • Jenkins Wiki - Groovy Hook Scripts
  • PLEAC-Groovy - implementation of the Solutions of the Perl Cookbook in the Groovy language
  • Groovy web console - a website for sharing and executing Groovy programming snippets of code!
  • MorganGeek - groovy cheatsheet / tips | My cheatsheet for Groovy
  • Faheetah - Jenkinsfile idiosynchrasies with escaping and quotes : Examples of weirdness of Jenkinsfile / Groovy syntax
  • Denny Zhang - (2018) CheatSheet: Jenkins & Groovy
  • Groovy Docs - Syntax : String summary table
  • Go Proverbs - ⭐️ Go Proverbs — A collection of pithy sayings to post on your team’s wall (perhaps?) so they remember some handy principles of idiomatic Go | a set of Simple, Poetic, Pithy principles that every Go developer should keep in mind when working with the programming language. Related jboursiquot/go-proverbs

Haskell

  • Miran Lipovača - [Book] Learn You a Haskell for Great Good! and for free
  • Alex Ott - books review on Haskell
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.

Java

News

Learn

  • Hugo Matilla/Effective-JAVA-Summary - Summary of the book Effective Java 2nd Edition by Joshua Bloch
  • John Hanley - Collected Java Practices
  • Nick Parlante - CodingBat : practice your java skills
  • Lieven Doclo - Why I Never Use the Maven Release Plugin
  • findJAR - a JAR search engine to help developers finding JAR libraries containing specific Java classes.
  • Spring Initializr - bootstrap your application now : Generate Maven / Gradle projects with Groovy / Java / Kotlin and Spring Boot
  • Google - Google Java Style Guide
  • oci-pronghorn/GreenLightning - Small Java HTTP/s server many times faster than Netty or NGINX
  • Chen Harel - GitHub’s 10,000 Most Popular Java / Ruby / JavaScript Projects: Here are the Top Libraries They Use
  • Encyclopedia of things considered harmful - Java Sucks
  • Oracle - (2014) [PDF] Evolving the JVM: Principles and Directions / Oracle about challenges faced with implementation of new features for Java and JVM
  • Javin Paul - (2012) Best Practices while dealing with Password in Java
  • Michael G. Schwern - a questionable comparison between Perl and Java
  • Venkat Subramaniam - [Video] Hilarious presentation : Java 8 Language Capabilities, What's in it for you?
  • Alex Zhitnitsky - (2014) 15 Tools Java Developers Should Use After a Major Release
  • James Ward - (2014) Java Doesn’t Suck – You’re Just Using it Wrong
  • Lawrence Kesteloot - (2014) I started to form a strange idea: That Java is the right language for all jobs.
  • Sam Atkinson - (2014) Why I hate Spring
  • Javin Paul - (2014) 10 Programming Best Practices to Name Variables, Methods, Classes and Packages
  • Javin Paul - (2013) 10 Exception handling Best Practices in Java Programming
  • Javin Paul - (2012) 10 Object Oriented Design Principles Java Programmer should know
  • Javin Paul - (2011) 10 Best Practices to Follow while writing Code Comments
  • Aleksey Shipilëv - One Stop Page | interesting resources about Java (performance, benchmarks, memory, good/bad practices...)
  • Lukas Eder - (2014) Ten subtle best practices when coding Java
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.
  • Dustin Barnes - (2014) Java Release Process with Continuous Delivery | maven-release-plugin sucks
  • Nicolai Parlog - [Slides] (2019) Java 9 To 13
  • dekorateio/dekorate - Java annotation processors for Kubernetes
  • Kotlin Docs - Comparison to Java Programming Language
  • kwart/jd-cmd - Command line Java Decompiler

Java EE

  • Arjan Tijms - (2016) The state of portable authentication in Java EE, end 2016 update
  • Arjan Tijms - (2012) Implementing container authentication in Java EE with JASPIC
  • Tom Alcott - What's new in WebSphere Application Server V9?
  • Tom Alcott - WebSphere Liberty core versus Liberty profile
  • GoogleContainerTools/jib - 🏗 Build container images for your Java applications.

JavaScript

News

Learn

Tools

  • JSONLint - JSON validator
  • BundlePhobia - find the cost of adding a npm package to your bundle
  • jwilber/roughViz - Reusable JavaScript library for creating sketchy/hand-drawn styled charts in the browser.
  • antonmedv/fx - Command-line tool and terminal JSON viewer 🔥
  • JavaScript Rising Stars - If you took a break to escape the JavaScript fatigue, you are in the right place!
  • Bundlephobia - find the cost of adding a npm package to your bundle
  • nvm-sh/nvm - Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

Lisp

  • L(λ)THW - Learn Lisp The Hard Way
  • Alex Ott - books review on Lisp
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.

Machine Learning

See also Robots

Mobile Development 📱

  • Pratul Kalia - Using git to generate versionName and versionCode for Android apps
  • The Android Arsenal - inventory / categorized directory of libraries and tools for Android
  • Will Verduzco - Decompile, Edit, and Recompile in One Tool with APK Studio

PHP

  • PHP The Wrong Way - In the world of PHP programming, a set of trends are massively being propagated by some people (in their books and on websites) as “Modern PHP” while all other approaches are frowned upon as backward, stupid, or just plain wrong. This website has been created in an attempt to present a pragmatic view on PHP programming. A view dictated by experience and practical consequence rather than popular trends, theory, or academic dogma.

Programmer humor

Note: ça m'arrive régulièrement d'investiguer chaque sujet en ouvrant pas mal de tabs... et en + de multi-task... mes collègues s'étonnent souvent du grand nombre d'onglets que je gère.

Prolog

News

  • PrologHub - Blog - is dedicated to bringing together the Prolog community to share ideas and knowledge.

Learn

Graph

Logtalk

Plugin

Tools

Python

  • Nick Parlante - CodingBat : practice your python skills
  • Python Software Foundation - PEP 8 : Style Guide for Python
  • Valentin Bryukhanov - PEP 8 code checker
  • OpenStack/python-jenkins - python-jenkins : a python wrapper for the Jenkins REST API
  • OpenStack/python-jenkins - [PDF] python-jenkins documentation
  • pycontribs/jenkinsapi - A Python library to automate most common Jenkins operations
  • pypi/feedparser - Parse Atom and RSS feeds in Python.
  • Google - Google Python Style Guide. Deprecated : use pyguide.md in place
  • python-cx_Oracle - cx_Oracle - Python Interface for Oracle Database
  • 353Solutions - Python to Go CheatSheet
  • chrisallenlane/cheat - cheat allows you to create and view interactive cheatsheets on the command-line. You can obviously improve the existing ones with your own content. It's also inspiring for shell aliases creation
  • Rob Harrigan - (2017) Supervised Classification: An Introduction and Preprocessing
  • Itamar Turner-Trauring - (2016) Maintainable Python applications: a guide for skeptical Java developers
  • Nick Humrich - (2017) Yes, Python is Slow, and I Don’t Care | A rant on sacrificing performance for productivity.
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.
  • Jan Ivar Beddari - (2016) Building a Team CLI with Python: One Alternative to ChatOps
  • JR Heard - (2018) Truthiness and Short-Circuit Evaluation in Python
  • Michal Charemza - (2016) Say no to more optional arguments
  • jira-python Docs - Jira-python lib usage examples
  • sloria - The Best of the Best Practices (BOBP) Guide for Python
  • The Hitchhiker’s Guide to Python! - This handcrafted guide exists to provide both novice and expert Python developers a best practice handbook to the installation, configuration, and usage of Python on a daily basis.
  • PyCQA/bandit - Bandit is a tool designed to find common security issues in Python code.
  • Raivat Shah - (2019) Understanding Python Virtual Environments
  • Boto Docs - Boto is the Amazon Web Services (AWS) SDK for Python. It enables Python developers to create, configure, and manage AWS services, such as EC2 and S3. Boto provides an easy to use, object-oriented API, as well as low-level access to AWS services.
  • Murtaza Gulamali - (2017) How to manage your Python projects with Pipenv
  • santinic/pampy - Pampy: The Pattern Matching for Python you always dreamed of | Pampy is pretty small (150 lines), reasonably fast, and often makes your code more readable and hence easier to reason about. There is also a JavaScript version, called Pampy.js.
  • MorganGeek - My cheatsheet for Python
  • Horia Coman - (2020) Jupiter Dev Log 3 - Lint All The Things
  • Alex Mitelman - (2021) Python Best Practices for a New Project in 2021
  • pipx - Install and Run Python Applications in Isolated Environments
  • Brandon Rhodes - (2018) Python Design Patterns | evolving guide to design patterns in the Python programming language.

Reverse engineering

Ruby

  • LZone - RVM Cheat Sheet
  • Chen Harel - GitHub’s 10,000 Most Popular Java / Ruby / JavaScript Projects: Here are the Top Libraries They Use
  • Launch School - [Book] Open Book Shelf : Introduction to Programming with Ruby
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.

Rust

  • New Rustacean - a podcast about learning Rust
  • mre/Idiomatic Rust - Guidelines for writing elegant Rust programs
  • sharkdp/fd - A simple, fast and user-friendly alternative to find.
  • Andrew Gallant - ripgrep is faster than {grep, ag, git grep, ucg, pt, sift}
  • BurntSushi/ripgrep - ripgrep combines the usability of The Silver Searcher with the raw speed of grep.
  • lk-geimfari/awesomo - list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc.
  • nushell/nushell - A modern shell written in Rust
  • Loris Cro - (2019) Why Go and not Rust? | What's the role of Go in a universe where Rust exists?
  • Lib.rs - Command line utilities | List of Rust applications/libraries/crates
  • vim-racer - Vim plugin with support for Racer (Rust Code Completion utility)
  • Seena Burns - (2017) Vim Setup For Rust
  • Amos Wenger - (2022) A Rust match made in hell | an extended demonstration of how well Rust can work for you
  • Shane Miller & Carl Lerche - (2022) Sustainability with Rust
  • rust-analyzer - Bringing a great IDE experience to the Rust programming language. Rust-Analyzer is an implementation of Language Server Protocol for the Rust programming language. It provides features like completion and goto definition for many code editors, including VS Code, Emacs and Vim
  • John Arundel - (2020) Rust vs Go
  • Dave Rolsky - (2022) Frontend Rust Without Node
  • Eric S. Raymond aka ESR - (2017) Why ESR Hates C++, Respects Java, and Thinks Go (But Not Rust) Will Replace C. See also : The big break in computer languages
  • Command Line Applications in Rust - Documentation on how to use the Rust Programming Language to develop commandline applications. See also : Source code