Posterous theme by Cory Watilo

Why are software development task estimations regularly off by a factor of 2-3?

"Is it the developer's fault? Is it a management issue? Bad methodology, or lack thereof? Or is it ingrained in the nature of the process..."

"...Software development is often described as "just in time."  Or the notion that you are always learning something new to tackle your next task.  So for even the best and most experienced developers unforseen hurdles and bugs will occur.  Proper estimation should take into account some buffer for these things, but particularly nasty or hairy bugs can bloat development time..."

"...For example, managers should not force developers to reduce their estimates otherwise developers can feel a lot of pressure to give more optimistic estimates. Managers should also try to not change the scope of the task while the developer is already working on it. Also, checking the progress too often or otherwise interrupting developers can significantly reduce their focus and productivity..."

"...Developers are also the only group where they are asked to do something which has never been done before, and tell someone else how long it will take before they even know what actually needs to be done..."

"...Software development estimates can not reliably estimate the effort of doing something for the first time. Additionally, software estimates, that you wish to rely on, should not be done till after a prototype that implements the known unknowns is built..."
http://www.quora.com/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3

Pyro - Python Remote Objects 4.x

"Pyro is a library that enables you to build applications in which objects can talk to each other over the network, with minimal programming effort. You can just use normal Python method calls, with almost every possible parameter and return value type, and Pyro takes care of locating the right object on the right computer to execute the method. It is designed to be very easy to use, and to generally stay out of your way. But it also provides a set of powerful features that enables you to build distributed applications rapidly and effortlessly. Pyro is written in 100% pure Python and therefore runs on many platforms and Python versions, including Python 3.x."

http://irmen.home.xs4all.nl/pyro/

Disco is a distributed computing framework based on the MapReduce paradigm

"Disco is a distributed computing framework based on the MapReduce paradigm. Disco is open-source; developed by Nokia Research Center to solve real problems in handling massive amounts of data. Disco is powerful and easy to use, thanks to Python. Disco distributes and replicates your data, and schedules your jobs efficiently. Disco even includes the tools you need to index billions of data points and query them in real-time.Install Disco on your laptop, cluster or cloud of choice and become a part of the Disco community!..."
http://discoproject.org/
https://github.com/discoproject/disco

Scaling GitHub

"A month after launching, GitHub hosted one thousand repositories. Three years later, we host over three million. In the same time we've gone from one thousand users to over a million.

This type of scaling presents some interesting technical challenges. I'll dig into our development workflow and how we address concepts like scaling, deployment, code review, and testing.

It also presents some interesting business challenges, too. How you grow your company from three employees, how you work in teams, and how you split your app up into services all help ensure that you'll be able to react to your product's growth..."

http://speakerdeck.com/u/holman/p/scaling-github

http://zachholman.com/talk/scaling-github

Writing Your Own WebSocket Server

"The WebSocket protocol has applications beyond plain vanilla web development.  I will explain how the protocol works, how to implement your own server and share some insights I had along the way. Before we get down and dirty, I will explain what I’ve been doing with it.

At this point I expect many of you are saying “I’m not working on a web game this doesn’t seem relevant to me.” Well, neither am I. I embed a WebSocket server into my game engine and with a local web application use the WebSocket protocol as a medium to control, configure and monitor my game engine. Some concrete examples of what I’ve done so far:

  • Monitor memory allocation statistics
  • Monitor performance of subsystems
  • Set and query configuration variables
  • Live edit the world
  • Loaded asset preview..."
http://altdevblogaday.com/2012/01/23/writing-your-own-websocket-server/

reddit - state of the servers

"My fellow redditors: the state of our servers is strong. 2011 was a
year of explosive growth and daunting technical hurdles. Our
infrastructure has changed dramatically over the past 12 months. I'm
here to show you some the more technical details of the changes that
have been made, and dazzle you with fanciful talk of the future. To
look at just the numbers, in December of 2010 we had 829 million
pageviews and 119 servers. Today, we have 2.07 billion pageviews with
240 servers. That's an increase of 149% for pageviews and 101% for
servers..."
http://blog.reddit.com/2012/01/january-2012-state-of-servers.html

(How to Write a (Lisp) Interpreter (in Python))

"This page has two purposes: to describe how to implement computer language interpreters in general, and in particular to show how to implement a subset of the Scheme dialect of Lisp using Python. I call my interpreter Lispy (lis.py). Years ago, I showed how to write a Scheme interpreter in Java as well as one in Common Lisp. This time around the goal is to demonstrate, as concisely and accessibly as possible, what Alan Kay called "Maxwell's Equations of Software." (If you like this treatment, there is a followup essay with a more complex interpreter..."
http://norvig.com/lispy.html