Cats Documentation
Category Theory and algebraic abstractions for Clojure.
clojure  programming  development  functional 
22 days ago
The Pyston Blog
Pyston is a performance-oriented Python implementation built using LLVM and modern JIT techniques.
interpreter  python  development  programming 
23 days ago
RT : 2 unit tests. 0 integration tests.
from twitter
27 days ago
Learning From Terminals to Design the Future of User Interfaces — Brandur Leach
RT : ☞ Learning From Terminals to Design the Future of User Interfaces — Brandur Leach
from twitter
28 days ago
Untitled (http://fortune.com/2017/03/13/expand-new-market/)
RT : Great article by our own Josh Coates - How to Expand Into a New Market Without Falling Into a Trap:
from twitter
28 days ago
RT : Any sufficiently advanced regular expression is indistinguishable from magic.
from twitter
29 days ago
RT : Debugging my own code 🤣😂😁
from twitter
4 weeks ago
RT : Regular programmer: "This 1000 LoC method is a bit tedious"
Haskell paper: "This 6 LoC function is a crime against…
from twitter
4 weeks ago
fogus: 10 Technical Papers Every Programmer Should Read (At Least Twice)
10 Technical Papers Every Programmer Should Read (At Least Twice)
Sep 8, 2011

Let me preface this post by saying that no programmer should feel compelled to read any of these papers. I list them because I think that they provide a breadth of information that is generally useful and interesting from a computer science perspective. What you do with that information is your prerogative, including ignoring it completely. Instead, learn what you think is important for what you need to accomplish your job, education, interests, etc.

Inspired by a fabulous post by Michael Feathers along a similar vein, I’ve composed this post as a sequel to the original. That is, while I agree almost wholly with Mr. Feather’s1 choices, I tend to think that his choices are design-oriented2 and/or philosophical. In no way, do I disparage that approach, instead I think that there is room for another list that is more technical in nature, but the question remains, where to go next? In this post I will offer some guidance based on my own readings. The papers chosen herein are not intended to act as a C.S. hall of fame, but instead hope to accomplish the following:

All papers are freely available online (i.e. not pay-walled)
They are technical (at times highly so)
They cover a wide-range of topics
The form the basis of knowledge that every great programmer should know, and may already

Because of these constraints I will have missed some great papers, but for the most part I think this list is solid. Please feel free to disagree and offer alternatives in the comments.
A Visionary Flood of Alcohol
Fundamental Concepts in Programming Languages (link to paper)

by Christopher Strachey

Quite possibly the most influential set of lecture notes in the history of computer science. Left and Right-values, Parametric and Ad-hoc polymorphism were all defined in this paper. Much of the content may already occupy your mind, but the sheer weight of the heady topics assembled in one place is stunning to observe.
Why Functional Programming Matters (link to paper)

by John Hughes

I found this paper extremely lucid on the advantages of functional programming with the added advantage of showing off examples of beautiful code. There are seemingly an infinite number of papers on the topic of laziness with streams and generators, but I’ve yet to find a better treatment. Finally, I’ve always been partial to Reginald Braithwaite’s “Why Why Functional Programming Matters Matters” as a complement to this paper.
An Axiomatic Basis for Computer Programming (link to paper)

by C. A. R. HOARE

I came to this paper late in my career, but when I finally found it I felt like I had been hit by a bus. At the core of the paper lies the following assertion:

P {Q} R

Taken to mean:

If the assertion P is true before initiation of a program Q, then the assertion R will be true on its completion

Where P is a precondition, Q is the execution of a program, and R is the result.

In other words, as long as a program/function/method/etc. receives a set of parameters conforming to its preconditions, its execution is guaranteed to produce a well-formed result. This paper inspired me to explore contracts programming in Clojure, but the proof implications reached in Hoare’s paper run much deeper.
Time, Clocks, and the Ordering of Events in a Distributed System (link to paper)

by Leslie Lamport (1978)

Lamport has been highly influential in the field of distributed computation for a very long time and almost any of his papers on the subject should impress. However, this particular paper is likely his most influential and single-handed defined two branches of study in distributed computing since:

The reasoning of event ordering in distributed systems and protocols
The state machine approach to redundancy

The most amazing aspect of this paper is that after you read it you might think to yourself, “Well, of course that’s how it should work.” Jim Gray once said that this paper was both obvious and brilliant. I would say that there is no higher compliment.
On Understanding Types, Data Abstraction, and Polymorphism (link to paper)

by Luca Cardelli and Peter Wegner

I had originally thought to list Milner’s A Theory of Type Polymorphism in Programming, but thought that a survey paper would be better. I must admit that my own readings have not gone deep into the exploration of type systems, so any additional suggestions would be greatly appreciated.
Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I (link to paper)

by John McCarthy

It’s become a cliche to recommend McCarthy’s seminal paper introducing LISP. I will not count this toward the target of 10, but I would be remiss to excluse it because it’s a great read that is nicely supplemented with the study of a simple implementation of McCarthy’s original specification.3
The Machinery for Change
Predicate Dispatch: A Unified Theory of Dispatch (link to paper)

by Michael Ernst, Craig Kaplan, and Craig Chambers

Describes a method for dispatching functions based not on a static set of rules, but instead as the traversal of a decision tree that could be built at compile-time and extended incrementally at runtime. What this means is that dispatch is controlled and adapted based on an open set of conditions describing the rules of dispatch. This stands opposed to the current popular trend of languages whose dispatch is hard-coded and not open for extension at all.
Equal Rights for Functional Objects or, The More Things Change, The More They Are the Same (link to paper)

by Henry G. Baker

At the heart of Clojure and ClojureScript’s implementation is #equiv that is in turn based off of Henry Baker’s egal operator introduced in this paper. Briefly, equality in Clojure is defined by equality of value, which is facilitated by pervasive immutability. Equality in the presence of mutability has no meaning.
Organizing Programs Without Classes (link to paper)

by David Ungar, Craig Chambers, Bay-wei Chang, and Urs Hölzle

The greatest crime perpetrated in the name of JavaScript is the propensity for every framework, library, and trifle uses the prototypal inheritance capabilities of the language to implement class-based inheritance. I propose that this behavior stunts the power of JavaScript. However, the class-based mentality is pervasive, and is only likely to grow stronger as JavaScript moves toward “modernized” data-modeling techniques. Having said that, I love the prototypal model. It’s flexibility and simplicity is astounding, and this paper4 will show how it can be leveraged for practical purposes. While a design oriented paper, I think that the knowledge is contrary enough to pop-programming to warrant inclusion. Self is a fascinating language on its own merit, but especially in that its influence5 on modern dynamic languages is growing ever more pervassive.
I’ve Seen the Future, Brother: It is Murder
Dynamo: Amazon’s Highly Available Key-value Store6 (link to paper)

by Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels

It’s rare for a paper describing a system in active production to influence the state of research in any industry, and especially so in computing. Papers describing thought-stuff are pure and elegant while “real-world” systems tend to be ugly, hackish, and brutish, even if they are rock-solid otherwise. The case of Dynamo is quite different. That is, the system itself is based on simple principles and solves a hard problem, highly available and fault-tolerant online database storage, in an elegant way. Dynamo was not a new idea, but this paper is necessity as we move forward into the age of Big Data.
Out of the Tar Pit (link to paper)

by Ben Moseley and Peter Marks

Now we reach my favorite paper of the bunch – one that I try to read and absorb every 6 months (give or take). The gist is that the primary sources of complexity in our programs are caused by mutable state. With that as the premise, the authors build the idea of “functional relational programming” that espouses minimizing mutable state, moving whatever remains into relations, and then manipulating said relations using a declarative programming language. Simple right? Well, yes it is simple; and that’s what makes it so difficult.

This list should be a good start, but where to go next? My personal approach is summarized simply as: follow the bibliographies. If you like any of these papers then look at their bibliographies for other papers that sound interesting and read those too. Likewise, you can use services like Citeseer and the ACM Digital Library to backtrace citations.

Happy reading.


Apart from a spectacular ear for music, Mr. Feathers is also a fount of wisdom, including this gem from the linked post:

When I first started writing, one of the pieces of advice that I heard was that you should always imagine that you are writing to a particular person.

Design is a vastly overloaded term, but it’s the best word that I can think of. Suggestions for something better? ↩

A have some ideas for a Lisp-centric essential papers list also, but have not yet formalized the content. ↩

It was difficult picking a paper from the treasure-trove that is the comprehensive list of Self publications. These papers represent the vanguard of performance in dynamic languages. ↩

Although Self does not hold a monopoly on dynamic performance revolutions. Smalltalk implementations have also driven innovation in said space, and a taste for this influence is found in Efficient Implementation of the Smalltalk-80 System by Peter Deutsch and The Design and Evaluation of a High Performance Smalltalk System by David Ungar. ↩

The Dynamo paper is probably the most controversial choice … [more]
paper  links  development  programming 
5 weeks ago
Pony - High Performance Actor Programming
Pony is an open-source, object-oriented, actor-model, capabilities-secure, high performance programming language.
language  programming  development 
7 weeks ago
RT : You are only making him more powerful
from twitter
7 weeks ago
Lingon - Peter Borg Apps
An easy to use yet powerful app to run things automatically

Lingon can start an app, a script or run a command automatically whenever you want it to. You can schedule it to run at a specific time, regularly or when something special happens.

Lingon can also make sure that an app or a script automatically restarts if it crashes.

Lingon X is based on the great Lingon 3 and extends it with new features like running jobs as root and on multiple dates. It can also monitor all jobs in the background and show a notification when something changes. It is now even easier to use yet much more powerful.
8 weeks ago
RT : Be the third donkey you want to see in the world.
from twitter
january 2017
Lobsters is a technology-focused link-aggregation site created by joshua stein and launched on July 3rd, 2012. It borrows some ideas from, while also attempting to fixing problems specific to, websites such as Hacker News, Reddit, and Slashdot.
development  programming  news  tech 
january 2017
RT : This is a pace I can keep up with!
from twitter
january 2017
RT : God showed how much he loved us by sending his one and only Son into the world so that we might have eternal life.…
from twitter
december 2016
RT : 🤔 If a snake was responsive...
from twitter
december 2016
RT : 🤔 If a snake was responsive...
from twitter
december 2016
Better Code Hub
Step 1: Connect with GitHub and select a repository
Step 2: Check your code against 10 guidelines
Step 3: Any crosses? Start improving!
Step 4: All green? Your code is future-proof!

The 10 Guidelines for Maintainable Software

1. Write Short Units of Code

Short units are easier to understand.

3. Write Code Once

Duplicated code means duplicated bugs and duplicating changes.

5. Separate Concerns in Modules

Modules with a single responsibility are easier to change.

7. Keep Architecture Components Balanced

A balanced architecture makes it easier to find your way.

9. Automate Tests

Automated tests are repeatable, and help to prevent bugs.

2. Write Simple Units of Code

Simple units are easier to test.

4. Keep Unit Interfaces Small

Units with small interfaces are easier to reuse.

6. Couple Architecture Components Loosely

Independent components can be maintained in isolation.

8. Keep Your Codebase Small

A small codebase requires less effort to maintain.

10. Write Clean Code

“Leave the campground cleaner than you found it.”
programming  development  maintainability  tools  analytics 
december 2016
"Let God be true though every one were a liar." (Romans 3:4)
from twitter_favs
december 2016
RT : Minimum effort, maximum effect.
from twitter
november 2016
Hanging out with my sister for her birthday. She’s in the Navy and is showing me her world up close.
from twitter_favs
november 2016
25 Top Quotes about Software Development, Agile, TDD, Unit Testing & Software Quality - The Unit Testing Blog - TypemockThe Unit Testing Blog – Typemock
“Algorithmic complexity for structured programmers: All algorithms are O(f(n)), where f is someone else’s responsibility.” – Peter Cooper
“Fact: 48% of IE7 usage comes from developers checking that their site works in IE7.” – @iamdevloper
“Programmers don’t burn out on hard work, they burn out on change-with-the-wind directives and not ‘shipping’.” – Mark Berry
“I’ve known people who have not mastered their tools who are good programmers, but not a tool master who remained a mediocre programmer.” – Kent Beck
“There are two types of people in this world: those who understand recursion and those who don’t understand that there are two types of people in this world.”
“Daddy, how is software made?” “Well, when a programmer loves an idea very much they stay up all night and then push to github the next day.” – Sam Kottler
“Software developers like to solve problems. If there are no problems handily available, they will create their own problems.”
“The problem with quick and dirty, is that the dirty remains long after the quick has been forgotten” – Steve C. McConnell
“Prolific developers don’t always write a lot of code, instead they solve a lot of problems. The two things are not the same.” – J. Chambers
“A programmer’s wife tells him: go to store. pick up a loaf of bread. If they have eggs, get a dozen. The programmer returns with 12 loaves.”
“Bad programmers have all the answers. Good testers have all the questions.” – Gil Zilberfeld
“Our job is to tell you your baby is ugly!” – Software Testers
“The best TDD can do, is assure that code does what the programmer thinks it should do. That is pretty good BTW.” – James Grenning
“The bitterness of poor quality remains long after the sweetness of meeting the schedule has been forgotten.” – Anonymous
“One bad programmer can easily create two new jobs a year.” – David Parnas
“Don’t document bad code — rewrite it.” – Kernighan and Plauger
“3 Errors walk into a bar. The barman says, “normally I’d Throw you all out, but tonight I’ll make an Exception.” – @iamdevloper
“Weeks of programming can save you hours of planning.” - Anonymous
“If you think it’s expensive to hire a professional, wait until you hire an amateur.”
“Programming can be fun, so can cryptography; however they should not be combined.” -Kreitzberg and Shneiderman
“Knock, knock.” “Who’s there?” very long pause…. “Java.” :-o
“The proper use of comments is to compensate for our failure to express ourself in code.” – Uncle Bob Martin
“My definition of an expert in any field is a person who knows enough about what’s really going on to be scared.” – P. J. Plauger
“First, solve the problem. Then, write the code.” – John Johnson
“Programming is not a zero-sum game. Teaching something to a fellow programmer doesn’t take it away from you.” – John Carmack
programming  quotes  development  business  management 
november 2016
RT : Truly terrifying pumpkin... ;) (h/t )
from twitter
november 2016
Living and working with child-like wonder | Liz Wiseman | TEDxUniversityofNevada - YouTube
A great talk relating learning and play to ambition in contrast to stagnation:
from twitter
october 2016
Instructure - Senior Software Engineer (Remote)
RT : We’re hiring remote senior full stack engineers who are passionate about technology & education.
EngineeringJobs  from twitter
october 2016
RT : Real serious stuff happening at today. Love my awesome co-workers.
from twitter
october 2016
Father Mulcahy - GIF on Imgur
I could use more of Father Mulcahy in my life
from twitter
october 2016
OpenZipkin · A distributed tracing system
Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. Zipkin’s design is based on the Google Dapper paper.
monitoring  performance  devops  development  programming  Debugging 
october 2016
RT : Get off my lawn, Pokemon Go edition
from twitter
august 2016
Home Page - HomeCoders
Partner with the recruiting firm that specializes in remote software development talent
remote  jobs 
august 2016
Feeling Stressed? Relax With Aristotle, Churchill, and More | Inc.com
1. "In times of great stress or adversity, it's always best to keep busy, to plow your anger and your energy into something positive." --Lee Iacocca, American businessman

2. "The greatest weapon against stress is our ability to choose one thought over another." --William James, American philosopher and psychologist, 1842-1910

3. "The truth is that stress doesn't come from your boss, your kids, your spouse, traffic jams, health challenges, or other circumstances. It comes from your thoughts about your circumstances." --Andrew Bernstein, author

4. "One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." --Bertrand Russell, British philosopher and logician, 1872-1970

5. "Don't underestimate the value of Doing Nothing, of just going along, listening to all the things you can't hear, and not bothering." --Winnie the Pooh (A.A. Milne, English author, 1882-1956)

6. "Tension is who you think you should be. Relaxation is who you are." --Chinese proverb

7. "Do not spoil what you have by desiring what you have not; remember that what you now have was once among the things you only hoped for." --Epicurus, Greek philosopher, 341-270 BC

8. "Stress is caused by being 'here' but wanting to be 'there.'" --Eckhart Tolle, author of The Power of Now and A New Earth

9. "It isn't the big pleasures that count the most; it's making a big deal out of the little ones." --Jean Webster, American author, 1876-1916

10. "When we long for life without difficulties, remind us that oaks grow strong in contrary winds and diamonds are made under pressure." --Peter Marshall, Scottish clergyman, 1902-1949

11. "What you're supposed to do when you don't like a thing is change it. If you can't change it, change the way you think about it. Don't complain." --Maya Angelou, author and poet

12. "To experience peace does not mean that your life is always blissful. It means that you are capable of tapping into a blissful state of mind amidst the normal chaos of a hectic life." --Jill Botte Taylor, author of My Stroke of Insight

13. "You must learn to let go. Release the stress. You were never in control anyway." --Steve Maraboli, author of Life, The Truth, and Being Free

14. "If you want to conquer the anxiety of life, live in the moment, live in the breath." --Amit Ray, spiritual master and creator of Om meditation

15. "Suffering becomes beautiful when anyone bears great calamities with cheerfulness, not through insensibility but through greatness of mind." --Aristotle, Greek philosopher, 384-322 BC

16. "Much of the stress that people feel doesn't come from having too much to do. It comes from not finishing what they've started." -David Allen, author of Getting Things Done

17. "How we perceive a situation and how we react to it is the basis of our stress. If you focus on the negative in any situation, you can expect high stress levels. However, if you try and see the good in the situation, your stress levels will greatly diminish." --Catherine Pulsifer, author, glass artist

18. "Peace is the result of retraining your mind to process life as it is, rather than as you think it should be." --Wayne W. Dyer, self-help author

19. "When we are unable to find tranquility within ourselves, it is useless to seek it elsewhere." --Francois de La Rochefoucauld, French author, 1613-1680

20. "Working hard for something we don't care about is called stress. Working hard for something we love is called passion." --Simon Sinek, author and creator of the concept of Start With Why

21. "Worrying won't stop the bad things from happening, it just stops you from enjoying the good." --Unknown

22. "Of all the things that matter, that really and truly matter, working more efficiently and getting more done, is not one of them." --Mike Dooley, inspirational author and speaker

23. "I can choose how I'm going to regard unfortunate circumstances in my life--whether I will see them as curses or opportunities...I can choose my words and the tone of voice in which I speak to others. And most of all, I can choose my thoughts." --Elizabeth Gilbert, author of Eat, Pray, Love

24. "Stress is the trash of modern life--we all generate it, but if you don't dispose of it properly, it will pile up and overtake your life." --Danzae Pace, author

25. "When you find yourself stressed, ask yourself one question: Will this matter in 5 years from now? If yes, then do something about the situation. If no, then let it go." --Catherine Pulsifer, author, glass artist

26. "Maturity is achieved when a person accepts life as full of tension." --Joshua L. Liebman, American rabbi and author, 1907-1948

27. "How beautiful it is to do nothing, and then to rest afterward." --Spanish proverb

28. "Stress is an ignorant state. It believes that everything is an emergency." --Natalie Goldberg, American New Age author and speaker

29. "Stress should be a powerful driving force, not an obstacle." --Stanley V. Johnson, author of Stress and Peace

30. "The mark of a successful man is one that has spent an entire day on the bank of a river without feeling guilty about it." --Chinese philosopher

31. "There is more to life than increasing its speed." --Mahatma Gandhi

32. "Work is not always required. There is such a thing as sacred idleness." --George MacDonald, Scottish novelist and poet, 1824-1905

Why Great Negotiators Are Willing to Give More Than They Receive
A Purpose-Driven Work Force
Serious Business: Should the U.S. Implement Universal Family and Medical Leave?
How Pokemon Go Is Driving Insane Amounts of Sales at Small, Local Businesses
Women CEOs Like Marissa Mayer Are Often Set Up to Fall Off the 'Glass Cliff'
How the Producers of 'Equity' Set Out to Break Hollywood's Gender Barriers
How This Entrepreneur Built a $50 Million Company on Upscale Water Bottles
33. "Nothing is permanent in this wicked world--not even our troubles." --Charlie Chaplin, British actor and comedian, 1889-1977

34. "Learning to ignore things is one of the great paths to inner peace." --Robert J. Sawyer, author of Calculating God

35. "The time to relax is when you don't have time for it." --Sydney J. Harris, American journalist

36. "Happiness is not something ready-made. It comes from your own actions." --Dalai Lama

37. "The world we have created today is a product of our thinking; it cannot be changed without changing our thinking." --Commonly attributed to Albert Einstein

38. "Do not anticipate trouble or worry about what may never happen. Keep in the sunlight." --Benjamin Franklin

39. "When I look back on all these worries, I remember the story of the old man who said on his deathbed that he had had a lot of trouble in his life, most of which had never happened." --Winston Churchill

40. "To be free of destructive stress don't sweat the small stuff and by realizing that all stuff is small." --Author Unknown
Stress  quotes  philosophy  life 
august 2016
Feature Flags | LaunchDarkly
feature flags as a service
(rather than config files and databases)

separate feature rollout from code deployment
development  devops  testing  deployment 
august 2016
« earlier      
3d actionscript algorithms all_android analytics analyzer android android_2.1 android_apps android_dev announcements apache api app applications apps art article articles as3 automation aws backbone backup bash book books browser business c c++ canvas challenge chat christianity cli clojure cloud cms code collaboration communication community company comparison compiler computing courses cpan css data database debug debugging demo deployment design development devops docker documentation editor education elasticsearch encoding encryption entrepreneurship erlang explore facebook featured_article feedproxy finance firefox flash font format framework free freelance fun functional game gamedev games general_news generator git github go golang google government graphics graphite graphs gui hardware haskell haxe health history hosting how-to html html5 http humor ide ie internet interpreter jabber java javascript job_board jobs journal language languages learn library life links linux lisp logs management math messaging missions mobile modernperl monitoring mozilla music nagios network news nodejs nosql ocaml online_book open_source opensource optimization os oscon paas patterns pdf performance perl perl5 perl6 php plugin politics postgresql productivity profile programmers programming project-management psychology puppet python qa queue reactive read reference releases religion remember remote rom rss ruby samsung_moment scala sdx search security server service share shell social software software_news softwaredevelopment ssh ssl standards statistics storage svg sysadmin taskrunner technology technology/internet terminal testing tools tutorial tutorials ui uncategorized unicode unix use utf-8 ux video vim virtualization visual_design vm web web_developers web_tech webdesign webdev work xml

Copy this bookmark: