background preloader

Programming

Facebook Twitter

Server-sent Events

Classic Mistakes Enumerated. Some ineffective development practices have been chosen so often, by so many people, with such predictable, bad results that they deserve to be called "classic mistakes. " Most of the mistakes have a seductive appeal. Do you need to rescue a project that's behind schedule? Add more people! Do you want to reduce your schedule?

Schedule more aggressively! Is one of your key contributors aggravating the rest of the team? Developers, managers, and customers usually have good reasons for making the decisions they do, and the seductive appeal of the classic mistakes is part of the reason these mistakes have been made so often. This section enumerates three dozen classic mistakes. The common denominator in this list is that you won't necessarily get rapid development if you avoid the mistake, but you will definitely get slow development if you don't avoid it. If some of these mistakes sound familiar, take heart. People Here are some of the people-related classic mistakes. #2: Weak personnel.

Psp

Stroustrup: FAQ. Livelock. Catchy Concepts from "The New Software Industry" Conference. I just took part in a conference on the "New Software Industry" organized by Carnegie-Mellon University's SilconValley campus and UC Berkeley (that was held at Microsoft's Mountain View offices [which were many times larger than I imagined they'd be]). I didn't know what to expect because the conference agenda seemed like a bit of a smorgasbord but it turned out to be more interesting than I'd counted on. Whenever I attend a conference I try to make note of catchy phrases that I hear and then try to be on the lookout for them to see if they stick. There were quite a few of them. Ray Lane, now a VC (Kleiner Perkins) and formally a top executive at Oracle talked about No-Man's Land in business models: Where you don't want to be as a software firm, in between nimble start ups and the dominant firms in particular sectors.

"value co-creation configurations of people, technology, internal and external service systems connected by value propositions and shared information" -Bob Glushko. The Places frecency algorithm - MDC. Frecency is a score given to each unique URI in Places, encompassing bookmarks, history and tags. This score is determined by the amount of revisitation, the type of those visits, how recent they were, and whether the URI was bookmarked or tagged. The word "frecency" itself is a combination of the words "frequency" and "recency.

" The default frecency value for all valid entries is -1. Places with this value can show up in autocomplete results. The frecency calculation process Example This is an example of a frecency calculation for a URI that is bookmarked and has been visited twice recently (once yesterday, and once last week by clicking a link), and two other times more than 90 days ago: Notes The number of sampled visits is min(10 most recent visits pref, total visit counts).

Developer notes There are various development notes you can read about Places that may offer additional insights: History The initial algorithm design was by Mike Connor and Seth Spitzer. Tv's cobweb: Git for Computer Scientists. Abstract Quick introduction to git internals for people who are not scared by words like Directed Acyclic Graph. Storage In simplified form, git object storage is "just" a DAG of objects, with a handful of different types of objects. They are all stored compressed and identified by an SHA-1 hash (that, incidentally, isn't the SHA-1 of the contents of the file they represent, but of their representation in git). blob: The simplest object, just a bunch of bytes. Tree: Directories are represented by tree object. When a node points to another node in the DAG, it depends on the other node: it cannot exist without it. Commit: A commit refers to a tree that represents the state of the files at the time of the commit.

Refs: References, or heads or branches, are like post-it notes slapped on a node in the DAG. Git commit adds a node to the DAG and moves the post-it note for current branch to this new node. The HEAD ref is special in that it actually points to another ref. History.

Message queues, job queues

Geo fun. Language. Smalltalk. Blaine Buxton: Smalltalk Future. C. Io. Lisp. Javascript. Ruby. Textile. Metaprogramming. Library. Book. Appscript. Java. Orca.exe. Who:occam. The C++ 'const' Declaration: Why & How. The 'const' system is one of the really messy features of C++. It is simple in concept: variables declared with ‘const’ added become constants and cannot be altered by the program. However it is also used to bodge in a substitute for one of the missing features of C++ and there it gets horridly complicated and sometimes frustratingly restrictive. The following attempts to explain how 'const' is used and why it exists. Simple Use of ‘const’ The simplest use is to declare a named constant. This was available in the ancestor of C++, C. To do this, one declares a constant as if it was a variable but add ‘const’ before it.

Const int Constant1=96; will create an integer constant, unimaginatively called ‘Constant1’, with the value 96. Such constants are useful for parameters which are used in the program but do not need to be changed after the program is compiled. Const int * Constant2 declares that Constant2 is a variable pointer to a constant integer and int const * Constant2 int * const Constant3. How to be a Programmer: A Short, Comprehensive, and Personal Summary. Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind. Idealists that think design, or analysis, or complexity theory, or whatnot, are more fundamental are not working programmers.

The working programmer does not live in an ideal world. Even if you are perfect, your are surrounded by and must interact with code written by major software companies, organizations like GNU, and your colleagues. Debugging is about the running of programs, not programs themselves. To get visibility into the execution of a program you must be able to execute the code and observe something about it. The common ways of looking into the ‘innards’ of an executing program can be categorized as: Some beginners fear debugging when it requires modifying code. How to Debug by Splitting the Problem Space. Portland Pattern Repository. Refactory.com. Learning Seaside.