background preloader

Programming

Facebook Twitter

Why You Should Write Living Documentation. David Leal (@ior3k) shares some thoughts on the documentation process.

Why You Should Write Living Documentation

Update: Part 2 of the Series: How to Write Living Documentation If you are a software developer, I hope by now you have realized that you're much more than a "code monkey". If that weren't the case, you'd be translating between a detailed description of a given process, written in natural language, and some programming language that the computer could understand.

Toward a better programming. This post is based on my talk, "Finding a way out", from Strange Loop 2013 When I built the original prototype of Light Table I didn't have any grand purpose or goal in mind.

Toward a better programming

I simply had some ideas on how programming could be better and I wanted to see how hard they would be to build. Until fairly recently, it never dawned on me that I've actually spent the past decade trying out ideas on how programming could be better, from web frameworks, to Visual Studio, to Light Table and its future. Thank you Douglas McIlroy » hearlamb. Introduction More than a year has passed since the previous (and only) post… and a lot has happened.

Thank you Douglas McIlroy » hearlamb

The most recent thing (indirectly related to this post): I’ve left my job at brandcrumb in December after two and a half years of intense, challenging and professionally fulfilling collaboration. I’m now working from home, drinking way too much coffee (FRESH POTS!) While working on new challenging projects. It’s a bit sad that I never had (or took) the time to write more on this blog while working at brandcrumb, a lot of very interesting things happened. Let’s go to the core of the topic, shall we? Unix pipelining I suppose most of us are familiar with Unix pipelining (invented by Douglas McIlroy, thus this post’s title).

ReSRC · Git. Building a Better CLI. Fil Maj & Michael Brooks Building a Better CLI Node Brigade 2013 We want to share patterns that help us build good CLIs.

Building a Better CLI

Ruby

KDevelop. Velop4/TipsAndTricks. Tips And Tricks Code Completion While you have automatic code completion, requesting it manually is often a very good idea.

velop4/TipsAndTricks

Press Ctrl + Space and you'll get a detailed code completion list. Navigate with the arrow buttons (Up/Down) and press (and keep pressed) Alt to show documentation of the focused item. Press Enter to insert the item. CUDA Application Design and Development: Rob Farber: 9780123884268: Amazon.com. Unit Testing. Mock Server - Unit Testing Network Code. Unit testing is great, but when you're working on networking code, it can be a bit of a pain in the, erm, transport layer.

Mock Server - Unit Testing Network Code

I've been doing quite a bit of network-related code for Karelia recently, and I wanted to be able to unit test, so this became an issue for me. If there are two things that you definitely want from a suite of unit tests, it's that they run fast, and that they are consistent. You want to be able to fire off the tests regularly, you want to be able to trust the results, and you want to be able to run them anywhere. Throw a network server or two into your testing mix, and these bets are generally off. If the server is internal, the tests may not run when you find yourself on the wrong side of a firewall. This problem gets even worse when you consider that one of the best uses of unit tests is to check that your code copes when something goes wrong. So I needed another approach, which would work with any networking code without me modifying it.

Responders Responses. Learn Git Branching. Resources - What is the single most influential book every programmer should read. Amber Smalltalk.

FP

Category Theory for Programming. Typesetting math: 10% \newcommand{\F}{\mathbf{F}}\newcommand{\E}{\mathbf{E}}\newcommand{\C}{\mathcal{C}}\newcommand{\D}{\mathcal{D}}\newcommand{\id}{\mathrm{id}}\newcommand{\ob}[1]{\mathrm{ob}(#1)}\newcommand{\hom}[1]{\mathrm{hom}(#1)}\newcommand{\Set}{\mathbf{Set}}\newcommand{\Mon}{\mathbf{Mon}}\newcommand{\Vec}{\mathbf{Vec}}\newcommand{\Grp}{\mathbf{Grp}}\newcommand{\Rng}{\mathbf{Rng}}\newcommand{\ML}{\mathbf{ML}}\newcommand{\Hask}{\mathbf{Hask}}\newcommand{\Cat}{\mathbf{Cat}}\newcommand{\fmap}{\mathtt{fmap}} HTML presentation: use arrows, space, swipe to navigate.

Category Theory for Programming

Plan General overview Definitions Applications Not really about: Cat & glory General Overview Recent Math Field1942-45, Samuel Eilenberg & Saunders Mac Lane Certainly one of the more abstract branches of math New math foundation formalism abstraction, package entire theory★Bridge between disciplines Physics, Quantum Physics, Topology, Logic, Computer Science☆ Agile-Book. Home → Agile-Book Welcome to the The Art of Agile Development book site!

Agile-Book

Here, you'll find a cornucopia of bonus material, such as downloadable posters, behind-the-scenes material, and new insights. For bonus features and online text, follow the links in the table of contents. The World’s Simplest Lock-Free Hash Table. A lock-free hash table is a double-edged sword.

The World’s Simplest Lock-Free Hash Table

There are applications where it can provide a performance improvement that would be impossible to achieve otherwise. The downside is that it’s complicated. The first working lock-free hash table I heard about was written in Java by Dr. Cliff Click. He released the source code back in 2007 and gave a presentation about it at Google that same year. Luckily, six years has given me enough time to (mostly) catch up to Cliff on this subject. Programming stuff. C++11. Checkedthreads: bug-free shared memory parallelism.

If you aren’t deeply frightened about all the issues raised by concurrency, you aren’t thinking about it hard enough.

checkedthreads: bug-free shared memory parallelism

Boso. The 10 Deadly Sins Against Scalability.

Python

Model View Controller, Model View Presenter, and Model View ViewModel Design Patterns. Introduction The recent growth in UI-centric technologies has refueled interest in presentation layer design patterns. One of the most quoted patterns, Model-View-Controller (MVC), is thought to be designed by Trygve Reenskaug, a Norwegian computer engineer, while working on Smalltalk-80 in 1979 [1]. It was subsequently described in depth in the highly influential “Design Patterns: Elements of Reusable Object-Oriented Software” [2], a.k.a. the “Gang of Four” book, in 1994. Two years later, Mike Potel from Taligent (IBM) published his paper, “Model-View-Presenter (MVP) - The Taligent Programming Model for C++ and Java” [3], where he aimed to address the shortfalls of the MVC. Both MVP and MVC have since been widely adopted by Microsoft in their Composite Application Blocks (CAB) and the ASP.NET MVC frameworks. These patterns and their kinship were back on the radar in 2004 when Martin Fowler analysed them in his papers.

There are three types of objects. Here is the implementation code: Grammar.coffee.