links for 2011-09-26

September 26, 2011
  • Functional programming is mostly about evaluating (possibly parallelizable) expressions. Object-oriented programming is mostly about passing messages among (possibly autonomous) objects. These, and other familiar programming models do not transparently map to common platforms. This talk describes some of the ideas involved in supporting them, along with intermediary forms that come into play in effective concurrent programming.

links for 2011-09-25

September 25, 2011
  • Scala school was started as a series of lectures at Twitter to prepare experienced engineers to be productive Scala programmers. Being a relatively new language, but also one that draws on many familiar concepts, we found this an effective way of getting new engineers up to speed quickly. This is the written material that accompanied those lectures. We have found that these are useful in their own right.
    (tags: scala tutorial)
  • The problem is that leadership isn't about being the person with the answers, it's about being the person with the questions. You have to shift your mindset from answering questions to asking them, even when faced with questions.
  • Del had what he called "the Eleven Commandments" of improv, encompassed, more or less, by this list:
    You are all supporting actors.
    Always check your impulses.
    Never enter a scene unless you are NEEDED.
    Save your fellow actor, don`t worry about the piece.
    Your prime responsibility is to support.
    Work at the top of your brains at all times.
    Never underestimate or condescend to your audience.
    No jokes (unless it is tipped in front that it is a joke.)
    Trust… trust your fellow actors to support you; trust them to come through if you lay something heavy on them; trust yourself.
    Avoid judging what is going down except in terms of whether it needs help (either by entering or cutting), what can best follow, or how you can support it imaginatively if your support is called for.
  • When a project launches or an assignment wraps up, it's tempting to avoid the post-mortem meeting. Tempting because it feels like a downer, a place to identify mistakes, bury errors and mourn the passing of a project.

    Perhaps it's more interesting to think of it as a pre-natal meeting instead… After all, the doors you just shut lead to open ones right down the road.

links for 2011-09-23

September 23, 2011

links for 2011-09-22

September 22, 2011
  • Emulators that translate algorithms from the shared-memory model to two different message-passing models are presented. Both are achieved by implementing a wait-free, atomic, single-writer multi-reader register in unreliable, asynchronous networks. The two message-passing models considered are a complete network with processor failures and an arbitrary network with dynamic link failures….Immediate new results are obtained by applying the emulators to known shared-memory algorithms. These include, among others, protocols to solve the following problems in the message-passing model in the presence of processor or link failures: multi-writer multi-reader registers, concurrent time-stamp systems, l-exclusion, atomic snapshots, randomized consensus, and implementation of data structures.

links for 2011-09-21

September 21, 2011
  • Generally, we recommend using nightly builds of Scala plugin to stay up to date in cutting-edge features and bug-fixes. Most nightlies are rather stable and may often work even better than “officially stable” releases.
  • (tags: unreal osx gaming)
  • I encourage you to think about collecting data like this at your company. You need to be careful though. Because you’ll be collecting actual effort expended on each user story, it’s possible that team members feel more than the normal amount of pressure to finish within any estimates they give. They may then respond by padding their estimates. This defeats the whole purpose. So, show a graph like the one above to the team and be clear that having this data can help them. For example, the team above could learn that they put 8s on stories that should perhaps have been 5s. (Looking at the data, they could also learn that they estimated correctly but that they really had more sixes in the eight bucket.)
  • "This factor alone is a huge gain but an even bigger gain can be found by noting that all workloads are cyclic and go through sinusoidal capacity peaks and troughs. Some cycles are daily, some weekly, some hourly, and some on different cycles but nearly all workloads exhibit some normal expansion and contraction over time. This capacity pumping is in addition to handling unusual surge requirements or increasing demand discussed above."

    "Spot instances effectively harvest unused infrastructure capacity. The servers, data center space, and network capacity are all sunk costs. Any workload worth more than the marginal costs of power is profitable to run. This is a great deal for customers in because it allows non-urgent workloads to be run at very low cost.  Spot Instances are also a great for the cloud provider because it further drives up utilization with the only additional cost being the cost of power consumed by the spot workloads."

links for 2011-09-18

September 18, 2011
  • I want to address a question I was sent recently and that I get asked about once a month. The question has to do with how we estimate how many hours it will take to deliver a given product backlog if we have no historical data at all.

    My first bit of advice is always to try to put off answering until you’re able to get even one sprint of historical data. But that’s not always possible. When it’s not my general recommendation is to conduct one or more commitment-driven sprint planning meetings and use those to forecast likely velocity.

    However, some people are still more comfortable thinking in hours and rather than forecast velocity, they want to forecast the number of hours a product backlog will take. From there they will usually estimate the duration of the project (something that could be done more directly with a velocity estimate). But, since it’s a common question, I’d like to address it.

links for 2011-09-17

September 17, 2011
  • Objective-C Fundamentals is a hands-on tutorial that leads you from your first line of Objective-C code through the process of building native apps for the iPhone using the latest version of the SDK. You'll learn to avoid the most common pitfalls, while exploring the expressive Objective-C language through numerous example projects.