m.e.driscoll: data utopian • the secret guild of silicon valley
4 weeks ago by rtlechow
“You have too many hipsters, you won’t scale like that. Hire some fat guys who know C++.”
programming
software
craftspersonship
craftsmanship
c
4 weeks ago by rtlechow
Why is Estimating so Hard? | 8th Light
6 weeks ago by rtlechow
"Answer: Because when we do it manually, we don’t follow a procedure. What we do instead it continuously evaluate the output and adjust it until it’s right. A procedure is blind. It doesn’t look at the output to see if it’s right. If the procedure is wrong, the output will be wrong. Period. But we, humans, are goal seekers. The goal is to split the lines up to no greater than 13 characters, and so we evaluate every line. We look it over and adjust it until it meets the goal. And we can do that in 5 minutes.
It turns out that we don’t know the procedure. We haven’t got any clue to just how difficult the procedure is. We aren’t computers. We don’t follow procedures. And so comparing the complexity of the manual task, to the complexity of the procedure is invalid.
This is one of the reasons that estimates are so hard, and why we get them wrong so often. We look at a task that seems easy and estimate it on that basis, only to find that writing down the procedure is actually quite intricate. We blow the estimate because we estimate the wrong thing."
estimation
software
programming
It turns out that we don’t know the procedure. We haven’t got any clue to just how difficult the procedure is. We aren’t computers. We don’t follow procedures. And so comparing the complexity of the manual task, to the complexity of the procedure is invalid.
This is one of the reasons that estimates are so hard, and why we get them wrong so often. We look at a task that seems easy and estimate it on that basis, only to find that writing down the procedure is actually quite intricate. We blow the estimate because we estimate the wrong thing."
6 weeks ago by rtlechow
Andrzej on Software: DCI and Rails
7 weeks ago by rtlechow
"You can also extract some roles from the Website class. Some candidates in an e-commerce could be ProductRepository, OrderDepartment, NewsletterManager, Blog etc.
This logic is then injected runtime, at the object level, in the context of a specific use case. In my opinion contexts or use case fits very well with the rails thin controllers rule."
dci
rails
oop
mvc
software
This logic is then injected runtime, at the object level, in the context of a specific use case. In my opinion contexts or use case fits very well with the rails thin controllers rule."
7 weeks ago by rtlechow
Michael Feathers: Tell Above, and Ask Below - Hybridizing OO and Functional Design
7 weeks ago by rtlechow
"Object-orientation is better for the higher levels of a system, and functional programming is better for the lower levels."
functional
programming
oop
software
7 weeks ago by rtlechow
Turning Your Code Inside Out
7 weeks ago by rtlechow
"This method of turning your code inside out is the secret to solving what appear to be hopelessly state-oriented problems in a purely functional style. Push the statefulness to a higher level and let the caller worry about it. Keep doing that as much as you can, and you'll end up with the bulk of the code being purely functional. "
software
programming
oop
fp
7 weeks ago by rtlechow
Martin Fowler Explains Txtzyme | DorkbotPDX
11 weeks ago by rtlechow
"In their new book, Domain Specific Languages, Martin Fowler and Rebecca Parsons demystify the creation of small languages by decomposing the practice into four-dozen carefully-named essays (patterns) offering solutions to every problem one might encounter. What would they call Txtzyme? They'd call it Delimiter-Directed Translation with Embedded Interpretation."
software
programming
dsl
languages
patterns
11 weeks ago by rtlechow
Talk Like A Duck : How Arlo got injected into Ruby
february 2012 by rtlechow
"Came to talk about the draft. They got a building down New York City, it's called Whitehall Street, where you walk in, you get injected, inspected, detected, infected, neglected and selected.
So Dan picked the collection enumeration method selectors in Smalltalk from "Alice's Restaurant", no doubt. I suspect that that initial argument of inject:into: came about because he wanted to use that pattern and map and reduce didn't fit. Actually I'm not sure that map and reduce were commonly used terms at that time.
So if you don't like inject in Ruby, don't blame Matz, blame Dan and Arlo!"
programming
software
smalltalk
history
humour
music
ruby
So Dan picked the collection enumeration method selectors in Smalltalk from "Alice's Restaurant", no doubt. I suspect that that initial argument of inject:into: came about because he wanted to use that pattern and map and reduce didn't fit. Actually I'm not sure that map and reduce were commonly used terms at that time.
So if you don't like inject in Ruby, don't blame Matz, blame Dan and Arlo!"
february 2012 by rtlechow
Service Oriented Agony | 8th Light
february 2012 by rtlechow
So what’s the solution? First of all, I question whether the system needed to be partitioned into services. Services are expensive and complicated, you should only create them if you absolutely need to. It’s always easier to live in a single process. Remember Martin Fowler’s first law of distributed objects: Don’t distribute your objects.
srp
solid
ccp
systems
software
programming
services
architecture
february 2012 by rtlechow
Schizophrenia (object-oriented programming) - Wikipedia, the free encyclopedia
january 2012 by rtlechow
"Object schizophrenia or self schizophrenia is a complication arising from delegation and related techniques in object-oriented programming.
An object can be defined as a computing concept combining data and behavior, and having an identity. Objects are typically built on class systems. A base class provides the fundamental or default behavior of an object, and acts as a template for creating objects. A derived class can be used to override behaviors of a base class, and can be used as a template for objects whose behaviors refine those of the base class. As an alternative to inheritance — which is a relatively static concept — some programming languages use delegation, which is semantically equivalent.[1][dubious – discuss] Instead of using one class to refine another, delegation allows one object to override the behavior of another. The original object a (analogous to the base class behaviors) can delegate some of its methods to another object b (analogous to the derived class behaviors). If a delegates its foo method to the bar method of b, then any invocation of foo on a will cause b's bar method to execute. However, bar executes in the context of the a object — for example, its self identifier refers to a rather than to b.
When delegation is used, the question arises: What is the identity of the object a? The identity is split. There are two potentially meaningful self values when executing a method of a. This problem does not arise in most class-based languages, because an object has a single physical identity. With delegation, the object has two identities."
oop
programming
software
smell
antipattern
An object can be defined as a computing concept combining data and behavior, and having an identity. Objects are typically built on class systems. A base class provides the fundamental or default behavior of an object, and acts as a template for creating objects. A derived class can be used to override behaviors of a base class, and can be used as a template for objects whose behaviors refine those of the base class. As an alternative to inheritance — which is a relatively static concept — some programming languages use delegation, which is semantically equivalent.[1][dubious – discuss] Instead of using one class to refine another, delegation allows one object to override the behavior of another. The original object a (analogous to the base class behaviors) can delegate some of its methods to another object b (analogous to the derived class behaviors). If a delegates its foo method to the bar method of b, then any invocation of foo on a will cause b's bar method to execute. However, bar executes in the context of the a object — for example, its self identifier refers to a rather than to b.
When delegation is used, the question arises: What is the identity of the object a? The identity is split. There are two potentially meaningful self values when executing a method of a. This problem does not arise in most class-based languages, because an object has a single physical identity. With delegation, the object has two identities."
january 2012 by rtlechow
Refactor This: The Gilded Rose Kata « I Am Not Myself
december 2011 by rtlechow
"Hi and welcome to team Gilded Rose. As you know, we are a small inn with a prime location in a prominent city ran by a friendly innkeeper named Allison. We also buy and sell only the finest goods. Unfortunately, our goods are constantly degrading in quality as they approach their sell by date. We have a system in place that updates our inventory for us. It was developed by a no-nonsense type named Leeroy, who has moved on to new adventures. Your task is to add the new feature to our system so that we can begin selling a new category of items. First an introduction to our system:
All items have a SellIn value which denotes the number of days we have to sell the item
All items have a Quality value which denotes how valuable the item is
At the end of each day our system lowers both values for every item
Pretty simple, right? Well this is where it gets interesting:
Once the sell by date has passed, Quality degrades twice as fast
The Quality of an item is never negative
“Aged Brie” actually increases in Quality the older it gets
The Quality of an item is never more than 50
“Sulfuras”, being a legendary item, never has to be sold or decreases in Quality
“Backstage passes”, like aged brie, increases in Quality as it’s SellIn value approaches; Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but Quality drops to 0 after the concert
We have recently signed a supplier of conjured items. This requires an update to our system:
“Conjured” items degrade in Quality twice as fast as normal items
Feel free to make any changes to the UpdateQuality method and add any new code as long as everything still works correctly. However, do not alter the Item class or Items property as those belong to the goblin in the corner who will insta-rage and one-shot you as he doesn’t believe in shared code ownership (you can make the UpdateQuality method and Items property static if you like, we’ll cover for you)."
kata
programming
software
All items have a SellIn value which denotes the number of days we have to sell the item
All items have a Quality value which denotes how valuable the item is
At the end of each day our system lowers both values for every item
Pretty simple, right? Well this is where it gets interesting:
Once the sell by date has passed, Quality degrades twice as fast
The Quality of an item is never negative
“Aged Brie” actually increases in Quality the older it gets
The Quality of an item is never more than 50
“Sulfuras”, being a legendary item, never has to be sold or decreases in Quality
“Backstage passes”, like aged brie, increases in Quality as it’s SellIn value approaches; Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but Quality drops to 0 after the concert
We have recently signed a supplier of conjured items. This requires an update to our system:
“Conjured” items degrade in Quality twice as fast as normal items
Feel free to make any changes to the UpdateQuality method and add any new code as long as everything still works correctly. However, do not alter the Item class or Items property as those belong to the goblin in the corner who will insta-rage and one-shot you as he doesn’t believe in shared code ownership (you can make the UpdateQuality method and Items property static if you like, we’ll cover for you)."
december 2011 by rtlechow
Fabien Sanglard's website: Deep magic explained.
november 2011 by rtlechow
Quake, Quake2 Code Reviews
software
code
games
gaming
programming
november 2011 by rtlechow
Avería – The Average Font
october 2011 by rtlechow
"I am not a type designer. This is the story of the creation of a new font, Avería: the average of all the fonts on my computer. The field of typography has long fascinated me, and I love playing with creative programming ideas, so it was perhaps inevitable that the idea came to me one day of “generative typography”. A Google on the subject brought up little, and I put the idea to the back of my mind until it occurred to me that perhaps the process of averaging, or interpolating, existing fonts might bring up interesting results."
algorithms
typography
google
ai
software
programming
type
design
october 2011 by rtlechow
shiftit - Manage windows in Mac OS X - Google Project Hosting
october 2011 by rtlechow
A GPL SizeUp alternative.
mac
osx
screen
windows
software
october 2011 by rtlechow
8th Light needs a few good Craftsman and women. - Uncle Bob's Blog
september 2011 by rtlechow
"Write a simple Tic-Tac-Toe program in a language of your choice. At very least this program should:
- allow for a human player
- play against a human
- have some user interface, text is fine
- Win whenever possible, and never lose"
interviews
software
programming
test
- allow for a human player
- play against a human
- have some user interface, text is fine
- Win whenever possible, and never lose"
september 2011 by rtlechow
Time
july 2011 by rtlechow
"Leap seconds: By international convention, UTC (which is an arbitrary human invention) is kept within 0.9 seconds of physical reality (UT1, which is a measure of solar time) by introducing a "leap second" in the last minute of the UTC year, or in the last minute of June.
Leap seconds don't have to be announced much more than six months before they happen. This is a problem if you need second-accurate planning beyond six months."
engineering
programming
software
time
unix
Leap seconds don't have to be announced much more than six months before they happen. This is a problem if you need second-accurate planning beyond six months."
july 2011 by rtlechow
FUN3D Manual :: Chapter 1: Introduction
june 2011 by rtlechow
"FUN3D was born in the late 1980s as a research code. The code’s original purpose was to study existing algorithms and to develop new algorithms for unstructured-grid fluid dynamic simulations spanning incompressible flow to transonic flow. The project has since grown into a suite of codes that cover not only analysis, but adjoint-based error estimation, mesh adaptation, and design optimization of fluid dynamic problems extending into the hypersonic regime. Meanwhile, algorithms developed in FUN3D are at the core of other CFD codes such as USM3D."
ruby
programming
software
simulation
research
algorithms
june 2011 by rtlechow
Radical Culture in Ruby: The Gender, Fetish and Race of Programming « Shanley's Place to Share Things
may 2011 by rtlechow
"As programming languages and machine control become increasingly accessible to minority populations, the impact they have on constructing actors, power and community is a critical area of inquiry.
With the increasing ubiquity and availability of machine control made possible through innovations in high-level languages, coding communities will increasingly be associated with, both opportunitistically and by force, a larger propaganda machine.
Programming is about sex, gender, money and race. Evaluating programming languages and their communities as merely technical artifacts obscures and silences a massive range of context and implication."
culture
development
face
ruby
software
programming
With the increasing ubiquity and availability of machine control made possible through innovations in high-level languages, coding communities will increasingly be associated with, both opportunitistically and by force, a larger propaganda machine.
Programming is about sex, gender, money and race. Evaluating programming languages and their communities as merely technical artifacts obscures and silences a massive range of context and implication."
may 2011 by rtlechow
rstat.us
march 2011 by rtlechow
It's like Identica, except it's not an ugly, unusable mess.
ostatus
identica
microblog
programming
software
foss
march 2011 by rtlechow
Piracy is Theft? Ridiculous. Lost Sales? They Don’t Exist, Says Minecraft Creator | TorrentFreak
march 2011 by rtlechow
“Piracy is not theft,” he said to those gathered in San Francisco. “If you steal a car, the original is lost. If you copy a game, there are simply more of them in the world.”
With this kind of reasoning one could be forgiven for thinking that Notch has pirate sympathies but since he’s a self-confessed member of the Pirate Party, that stance comes as no surprise.
“There is no such thing as a ‘lost sale’,” he added with a philosophy so Pirate-aligned it could be happily transcribed directly into any of their press releases. “Is a bad review a lost sale? What about a missed ship date?”
notch
minecraft
piracy
software
games
With this kind of reasoning one could be forgiven for thinking that Notch has pirate sympathies but since he’s a self-confessed member of the Pirate Party, that stance comes as no surprise.
“There is no such thing as a ‘lost sale’,” he added with a philosophy so Pirate-aligned it could be happily transcribed directly into any of their press releases. “Is a bad review a lost sale? What about a missed ship date?”
march 2011 by rtlechow
p-cos blog: A non-hierarchical approach to object-oriented programming
december 2010 by rtlechow
"The Lisp historical archive web site just got reorganized. I have made a quick check of the contents, and found out that Howard I. Cannon's original technical report about Flavors - A non-hierarchical approach to object-oriented programming was finally made available as part of that archive. The report was originally written in 1979, was circulated around Lispers, but was never ever published as an actual technical report, although it is cited as such in several later papers by other authors. It describes the original object-oriented extension to the MIT Lisp Machine, heavily influenced by Smalltalk, but with multiple inheritance and method combinations added (but no multiple dispatch yet, which got only introduced in CommonLoops, a direct predecessor of CLOS). Although unpublished and clearly in an unfinished state, this report itself influenced a lot of other subsequent experiments with object-oriented extensions to Lisp dialects."
oop
programming
software
history
lisp
inheritance
december 2010 by rtlechow
related tags
3d ⊕ 8bit ⊕ 37signals ⊕ access ⊕ accounting ⊕ activism ⊕ adages ⊕ addon ⊕ admin ⊕ administration ⊕ adobe ⊕ agile ⊕ ai ⊕ aiclass ⊕ air ⊕ airlock ⊕ ajax ⊕ algorithm ⊕ algorithms ⊕ analysis ⊕ analytics ⊕ animation ⊕ antipattern ⊕ antipatterns ⊕ apache ⊕ api ⊕ app ⊕ apple ⊕ application ⊕ applications ⊕ apps ⊕ appstore ⊕ architecture ⊕ archive ⊕ archives ⊕ arduino ⊕ art ⊕ article ⊕ articles ⊕ artisanal ⊕ arxta ⊕ ascii ⊕ asm ⊕ assembly ⊕ astar ⊕ astronomy ⊕ audio ⊕ auth ⊕ authentication ⊕ authoring ⊕ auto ⊕ automatedtesting ⊕ automation ⊕ backup ⊕ backups ⊕ basecamp ⊕ bash ⊕ basic ⊕ bbs ⊕ bdd ⊕ bibliography ⊕ bittorrent ⊕ blackhole ⊕ blender ⊕ blocks ⊕ blog ⊕ blogger ⊕ blogging ⊕ blogs ⊕ bluetooth ⊕ book ⊕ books ⊕ bookscanner ⊕ boolean ⊕ bot ⊕ bots ⊕ brainfuck ⊕ bridges ⊕ broderbund ⊕ browser ⊕ browsers ⊕ bug ⊕ bugtracking ⊕ build ⊕ business ⊕ c ⊕ c# ⊕ c++ ⊕ c2 ⊕ campfire ⊕ canada ⊕ canvas ⊕ capo ⊕ card ⊕ card-sorting ⊕ cardgames ⊕ cardsort ⊕ cardsorting ⊕ career ⊕ caret ⊕ carpentry ⊕ cartoon ⊕ cat ⊕ ccg ⊕ ccp ⊕ challenge ⊕ charity ⊕ chart ⊕ charts ⊕ chat ⊕ cheatsheet ⊕ checklist ⊕ chef ⊕ chiptune ⊕ chiptunes ⊕ chm ⊕ chrome ⊕ chromium ⊕ cisco ⊕ citation ⊕ classification ⊕ cli ⊕ client ⊕ cloud ⊕ cloudcomputing ⊕ cluster ⊕ clustering ⊕ cmmi ⊕ cms ⊕ cobol ⊕ cocoa ⊕ code ⊕ codesmell ⊕ coding ⊕ collaboration ⊕ color ⊕ commands ⊕ comment ⊕ community ⊕ comparison ⊕ competency ⊕ competition ⊕ complexity ⊕ components ⊕ compsci ⊕ computer ⊕ computers ⊕ computervision ⊕ computing ⊕ conary ⊕ concurrency ⊕ conditional ⊕ conference ⊕ console ⊕ contest ⊕ continuousintegration ⊕ contracts ⊕ conversion ⊕ convert ⊕ converter ⊕ cookbook ⊕ cool ⊕ core ⊕ cracking ⊕ craft ⊕ craftsmanship ⊕ craftspersonship ⊕ creativecommons ⊕ creativity ⊕ crm ⊕ cs ⊕ css ⊕ culture ⊕ dashboard ⊕ data ⊕ database ⊕ datamining ⊕ db ⊕ dci ⊕ debug ⊕ debugger ⊕ debugging ⊕ demoscene ⊕ deployment ⊕ design ⊕ designpatterns ⊕ desktop ⊕ dev ⊕ development ⊕ develpment ⊕ devops ⊕ dhtml ⊕ diagram ⊕ diagramming ⊕ diagrams ⊕ digital ⊕ digitization ⊕ directory ⊕ display ⊕ distributed ⊕ distributedcomputing ⊕ distro ⊕ django ⊕ dmg ⊕ dns ⊕ docs ⊕ document ⊕ documentation ⊕ dojo ⊕ dos ⊕ download ⊕ drawing ⊕ drools ⊕ dropbox ⊕ dsl ⊕ dwarfs ⊕ ebook ⊕ ebooks ⊕ editor ⊕ editorial ⊕ education ⊕ electronic ⊕ electronics ⊕ emacs ⊕ email ⊕ emulation ⊕ emulator ⊕ engineering ⊕ enterprise2.0 ⊕ ephemeral ⊕ epub ⊕ erp ⊕ essays ⊕ estimation ⊕ evolution ⊕ examples ⊕ exceptions ⊕ exchange ⊕ exercise ⊕ exploits ⊕ explorer ⊕ extension ⊕ extensions ⊕ face ⊕ fail ⊕ failure ⊕ fallacies ⊕ feminism ⊕ filesystem ⊕ finance ⊕ firefox ⊕ firewall ⊕ flash ⊕ flowchart ⊕ flowcharts ⊕ flv ⊕ fogcreek ⊕ fortran ⊕ foss ⊕ fp ⊕ free ⊕ freehackersunion ⊕ freelance ⊕ freeware ⊕ ftp ⊕ fts ⊕ fulltext ⊕ fulltextsearch ⊕ fun ⊕ functional ⊕ fundraising ⊕ funny ⊕ game ⊕ gameoflife ⊕ games ⊕ gamification ⊕ gaming ⊕ geek ⊕ gem ⊕ gems ⊕ genealogy ⊕ generator ⊕ genetic ⊕ geo ⊕ geofencing ⊕ geospatial ⊕ gga4r ⊕ gimp ⊕ gis ⊕ git ⊕ github ⊕ gity ⊕ gnome ⊕ gnu ⊕ google ⊕ government ⊕ gpl ⊕ grammar ⊕ graph ⊕ graphics ⊕ graphs ⊕ groups ⊕ groupware ⊕ growl ⊕ gsm ⊕ gtalk ⊕ gtd ⊕ gui ⊕ guide ⊕ guitar ⊕ guru ⊕ hack ⊕ hacker ⊕ hackers ⊕ hacking ⊕ hacks ⊕ harddrive ⊕ hardware ⊕ help ⊕ helpdesk ⊕ hidden ⊕ history ⊕ hosting ⊕ howto ⊕ html ⊕ html5 ⊕ http ⊕ httpclient ⊕ hulu ⊕ humor ⊕ humour ⊕ ia ⊕ icon ⊕ idea ⊕ ideas ⊕ identica ⊕ ie ⊕ illustration ⊕ image ⊕ images ⊕ indie ⊕ Infocom ⊕ information ⊕ information_architecture ⊕ infrastructure ⊕ inheritance ⊕ innovation ⊕ inspiration ⊕ install ⊕ instrument ⊕ interactive ⊕ interactive-fiction ⊕ interesting ⊕ interface ⊕ internet ⊕ interpreter ⊕ interview ⊕ interviews ⊕ intranet ⊕ invention ⊕ ios ⊕ ipad ⊕ iphone ⊕ ipod ⊕ iso ⊕ it ⊕ iteration ⊕ j ⊕ jabber ⊕ java ⊕ javascript ⊕ jobs ⊕ joel ⊕ jquery ⊕ js ⊕ jwz ⊕ kanban ⊕ kata ⊕ kernel ⊕ keyboard ⊕ keycastr ⊕ keys ⊕ keystroke ⊕ koans ⊕ language ⊕ languages ⊕ latency ⊕ launcher ⊕ lcthw ⊕ ldap ⊕ lean ⊕ learning ⊕ leopard ⊕ libraries ⊕ library ⊕ library2.0 ⊕ life ⊕ lifehacks ⊕ lightweight ⊕ linguistics ⊕ linux ⊕ lisp ⊕ list ⊕ literacy ⊕ local-openid ⊕ log ⊕ logging ⊕ logic ⊕ lolcode ⊕ mac ⊕ macheist ⊕ machine ⊕ machinelearning ⊕ macos ⊕ macosx ⊕ magazine ⊕ magic ⊕ mame ⊕ management ⊕ manifesto ⊕ manual ⊕ mapping ⊕ mapreduce ⊕ maps ⊕ mario ⊕ marketing ⊕ martinfowler ⊕ math ⊕ matlab ⊕ matrix ⊕ mechanics ⊕ media ⊕ meeting ⊕ meme ⊕ methodology ⊕ metrics ⊕ microblog ⊕ microcontroller ⊕ midi ⊕ minecraft ⊕ mining ⊕ mistakes ⊕ mit ⊕ mmorpg ⊕ mobile ⊕ model ⊕ modeling ⊕ modularity ⊕ monad ⊕ mondas ⊕ money ⊕ monitoring ⊕ mouseless ⊕ movement ⊕ movies ⊕ mozilla ⊕ msn ⊕ msys ⊕ mtg ⊕ music ⊕ mvc ⊕ mysql ⊕ nacl ⊕ nasa ⊕ nat ⊕ nativeclient ⊕ nes ⊕ network ⊕ networking ⊕ news ⊕ nginx ⊕ nightlies ⊕ nightly ⊕ nintendo ⊕ nonprofit ⊕ notch ⊕ notes ⊕ notetaking ⊕ ocr ⊕ offgrid ⊕ office ⊕ offline ⊕ online ⊕ ontario ⊕ oop ⊕ opac ⊕ open ⊕ opendata ⊕ opengov ⊕ openldap ⊕ opensource ⊕ openstack ⊕ openvpn ⊕ optimization ⊕ organization ⊕ os ⊕ oss ⊕ ostatus ⊕ osx ⊕ outlook ⊕ p2p ⊕ packaging ⊕ pairprogramming ⊕ papers ⊕ pattern ⊕ patterns ⊕ pdf ⊕ people ⊕ performance ⊕ perl ⊕ persistence ⊕ personal ⊕ pharo ⊕ philosophy ⊕ phone ⊕ photo ⊕ photography ⊕ photos ⊕ photoshop ⊕ php ⊕ physics ⊕ piracy ⊕ pivotal ⊕ pixel ⊕ pixelart ⊕ planning ⊕ plot ⊕ plotweaver ⊕ plugin ⊕ plugins ⊕ pm ⊕ poker ⊕ politics ⊕ pomodoro ⊕ pow ⊕ presentation ⊕ pricing ⊕ print ⊕ privacy ⊕ problems ⊕ process ⊕ processing ⊕ productivity ⊕ products ⊕ programming ⊕ programmingmotherfucker ⊕ project ⊕ project-management ⊕ projectmanagement ⊕ projects ⊕ protocols ⊕ prototyping ⊕ proxy ⊕ publishing ⊕ python ⊕ quake ⊕ quality ⊕ quickbooks ⊕ quicksilver ⊕ rack ⊕ rackspace ⊕ radio ⊕ rails ⊕ random ⊕ rant ⊕ rdist ⊕ rdoc ⊕ reader ⊕ reading ⊕ redis ⊕ refactoring ⊕ reference ⊕ regression ⊕ remote ⊕ renegade ⊕ requirements ⊕ research ⊕ resource ⊕ resources ⊕ retro ⊕ rewrite ⊕ risk ⊕ risks ⊕ robotics ⊕ ror ⊕ router ⊕ rpath ⊕ rpg ⊕ rspec ⊕ rsync ⊕ ruby ⊕ ruby1.9 ⊕ rubycocoa ⊕ rubyonrails ⊕ rule-engine ⊕ ruleengine ⊕ rules ⊕ rulesengine ⊕ safari ⊕ salaries ⊕ sales ⊕ scan ⊕ scanner ⊕ scanning ⊕ science ⊕ scm ⊕ scratch ⊕ screen ⊕ screencapture ⊕ screencast ⊕ screencasting ⊕ screenshot ⊕ screenshots ⊕ scriblio ⊕ scrum ⊕ sdl ⊕ search ⊕ seaside ⊕ secondlife ⊕ security ⊕ server ⊕ servers ⊕ service ⊕ services ⊕ sexism ⊕ sftp ⊕ share ⊕ shareware ⊕ sharing ⊕ shell ⊕ ship ⊕ shopping ⊕ shoppingcart ⊕ simile ⊕ simplicity ⊕ simulation ⊕ simulator ⊕ sinatra ⊕ singleclick ⊕ sip ⊕ skitch ⊕ slideshow ⊕ small ⊕ smalltalk ⊕ smarthouse ⊕ smell ⊕ snapshots ⊕ snmp ⊕ snowleopard ⊕ soa ⊕ social ⊕ socialnetwork ⊕ socialnetworking ⊕ software ⊖ software:mac ⊕ softwareengineering ⊕ solid ⊕ sound ⊕ source ⊕ space ⊕ sparkle ⊕ spatial ⊕ spree ⊕ sql ⊕ sqlite ⊕ squeak ⊕ srp ⊕ ssh ⊕ stainless ⊕ standard ⊕ standards ⊕ startups ⊕ state ⊕ statistics ⊕ stats ⊕ storage ⊕ store ⊕ strategy ⊕ subtext ⊕ subversion ⊕ support ⊕ svn ⊕ sync ⊕ sysadmin ⊕ system ⊕ systems ⊕ tablature ⊕ tabs ⊕ task ⊕ taxes ⊕ tdd ⊕ tech ⊕ technology ⊕ telephony ⊕ temporary ⊕ terminal ⊕ test ⊕ testing ⊕ tetris ⊕ text ⊕ textfiles ⊕ textmate ⊕ theme ⊕ theory ⊕ thesis ⊕ thoughtworks ⊕ threads ⊕ tiddlywiki ⊕ tiling ⊕ time ⊕ timeline ⊕ timetracking ⊕ tinyhouse ⊕ tips ⊕ todo ⊕ tool ⊕ tools ⊕ toread ⊕ toronto ⊕ torrents ⊕ towatch ⊕ tracker ⊕ tracking ⊕ training ⊕ transcription ⊕ tunnel ⊕ tunneling ⊕ turk ⊕ tutorial ⊕ tutorials ⊕ tv ⊕ twisted ⊕ twitter ⊕ type ⊕ types ⊕ typography ⊕ udp ⊕ ui ⊕ ultravnc ⊕ UML ⊕ unit ⊕ unittesting ⊕ unix ⊕ usa ⊕ usability ⊕ usage ⊕ users ⊕ utilities ⊕ utility ⊕ ux ⊕ uzbl ⊕ vcs ⊕ vector ⊕ velocity ⊕ versioncontrol ⊕ vi ⊕ video ⊕ videogame ⊕ videogames ⊕ videos ⊕ vim ⊕ virtualhost ⊕ virtualization ⊕ visio ⊕ vision ⊕ visualization ⊕ vm ⊕ vmware ⊕ vnc ⊕ voip ⊕ vpn ⊕ vst ⊕ vulnerability ⊕ w3c ⊕ web ⊕ web2.0 ⊕ webapp ⊕ webapps ⊕ webdesign ⊕ webdev ⊕ webkit ⊕ webmail ⊕ webos ⊕ webserver ⊕ webservers ⊕ webservice ⊕ webstandards ⊕ widget ⊕ wiki ⊕ wikipedia ⊕ win32 ⊕ window ⊕ windowmanager ⊕ windows ⊕ wired ⊕ wireless ⊕ wm ⊕ wmii ⊕ word ⊕ wordpress ⊕ words ⊕ work ⊕ world ⊕ writing ⊕ wtf ⊕ x11 ⊕ xen ⊕ xhtml ⊕ xkcd ⊕ xp ⊕ yard ⊕ youtube ⊕ zed ⊕ zedshaw ⊕ zen ⊕Copy this bookmark: