background preloader

DeveloperSkills

Facebook Twitter

Contributions Appearing in the Book. The Various Definitions of Full-Stack. 7 lines of code, 3 minutes: Implement a programming language. A small (yet Turing-equivalent) language The easiest programming language to implement is a minimalist, higher-order functional programming language known as the lambda calculus.

7 lines of code, 3 minutes: Implement a programming language

The lambda calculus actually lives at the core of all the major functional languages--Haskell, Scheme and ML--but it also lives inside JavaScript, Python and Ruby. It's even hiding inside Java, if you know where to find it. A brief history Alonzo Church developed the lambda calculus in 1929. Back then, it wasn't called a programming language because there were no computers; there wasn't anything to "program. " It was really just a mathematical notation for reasoning about functions. Fortunately, Alonzo Church had a Ph.D. student named Alan Turing. Alan Turing defined the Turing machine, which became the first accepted definition of a general-purpose computer. What makes this remarkable is that there are only three kinds of expressions in the lambda calculus: variable references, anonymous functions and function calls. An Engineer’s Guide to Bandwidth. Police: Woman beheaded at Oklahoma workplace OKLAHOMA CITY (AP) — A man fired from an Oklahoma food processing plant beheaded a woman with a knife and was attacking another worker when he was shot and wounded by a company official, police said Friday.

An Engineer’s Guide to Bandwidth

Associated Press 47 mins ago Chicago Sun-Times from RSS q Amazing Diet Recipe For Weight Loss Find out how to lose the weight the healthy way, from introducing changes gradually to reducing your calorie intake with these secret recipe tips. Amazing Diet Recipes For Weight Loss Find out how to lose the weight the healthy way, from introducing changes gradually to reducing your calorie intake with these secret recipe tips. 10 Papers Every Programmer Should Read (At Least Twice) I spent most of yesterday afternoon working on a paper I’m co-writing.

It was one of those days when the writing came easy. 10 Technical Papers Every Programmer Should Read (At Least Twice) 10 Technical Papers Every Programmer Should Read (At Least Twice) this is the second entry in a series on programmer enrichment Inspired by a fabulous post by Michael Feathers along a similar vein, I’ve composed this post as a sequel to the original.

10 Technical Papers Every Programmer Should Read (At Least Twice)

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? All papers are freely available online (i.e. not pay-walled)They are technical (at times highly so)They cover a wide-range of topicsThe form the basis of knowledge that every great programmer should know, and may already. Blog-rants - steveyegge2. Last updated: September 12, 2006 News (3/15/06): I started a new blog.

blog-rants - steveyegge2

Like, a real one. Finally! I started writing an internal blog at Amazon.com in summer 2004. It wasn't (and isn't) endorsed by Amazon; it's just my personal blog, where I wrote whatever was on my mind, usually at home late at night after a few glasses of wine. I was at Amazon for just under seven years, incidentally. Documenting Architecture Decisions - (Current Session: Current) Documenting Architecture Decisions Tags: agility and architecture Architecture for agile projects has to be described and defined differently.

Documenting Architecture Decisions - (Current Session: Current)

Not all decisions will be made at once, nor will all of them be done when the project begins. Agile methods are not opposed to documentation, only to valueless documentation. Documents that assist the team itself can have value, but only if they are kept up to date. Nobody ever reads large documents, either. One of the hardest things to track during the life of a project is the motivation behind certain decisions. Blindly accept the decision. It's better to avoid either blind acceptance or blind reversal. Anki - friendly, intelligent flashcards.

Stevey's Blog Rants. Up and Down the Ladder of Abstraction. In real life, you would never use a ladder that only let you go up.

Up and Down the Ladder of Abstraction

Likewise, when creating abstractions, stepping down is as important as stepping up. Here, we take the abstraction from the previous section, and overlay a concrete representation on top of it. That is, we draw the trajectory that represents all time, but we also draw the car at some particular time. How do we select which particular time to show? We could use the slider, which has reappeared. This is a general and powerful technique. Try cranking up the turning rate to 8° or so, and then inspecting the car's behavior as it makes its first two turns.

In this case, it's fairly easy to look at the trajectory and imagine the car moving along. Become a Good Programmer in Six Really Hard Steps. One of the more popular topics here on the GDNet forums goes something like this: "Hi, I just [bought a computer | wrote a simple game | discovered a game engine] and I want to know where to go from here.

Become a Good Programmer in Six Really Hard Steps

I'd like to [accomplish some particular goal] eventually. What do I need to learn to get there? " First of all, understand that Peter Norvig nailed this on the head a long time ago: it takes ten years to learn to be a programmer. Parallelism is not concurrency « Existential Type. In an earlier post I mentioned that one goal of the new introductory curriculum at Carnegie Mellon is to teach parallelism as the general case of computing, rather than an esoteric, specialized subject for advanced students.

Parallelism is not concurrency « Existential Type

Many people are incredulous when I tell them this, because it immediately conjures in their mind the myriad complexities of concurrency: locks, monitors, deadlock, dining philosophers, …. And if you look at the recent research literature, you will see countless papers of the form (a) parallelism is important, so (b) let’s talk about concurrency. The situation has gotten so bad that I think that most computer scientists cannot distinguish the two concepts. :jasonrudolph => :blog >> Programming Achievements: How to Level Up as a Developer. Published on Tuesday, August 09, 2011 in better How does a good developer become a great developer?

:jasonrudolph => :blog >> Programming Achievements: How to Level Up as a Developer

Forget greatness for a moment: How does a decent developer become a good developer? There is no definitive path from Step 1 to Step n. Heck, it's not even clear what Step n is. And as logically-minded developer types, the lack of a well-defined route can make for a daunting journey from novice to master. I've spent a fair bit of time over the last few years bumping up against this conundrum.

What programmers need to know about hardware prefetching? : programming.