rtlechow + software   379

m.e.driscoll: data utopian • the secret guild of silicon valley
“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
"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 
6 weeks ago by rtlechow
Andrzej on Software: DCI and Rails
"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 
7 weeks ago by rtlechow
Michael Feathers: Tell Above, and Ask Below - Hybridizing OO and Functional Design
"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
"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
"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
"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 
february 2012 by rtlechow
Service Oriented Agony | 8th Light
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
"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 
january 2012 by rtlechow
Refactor This: The Gilded Rose Kata « I Am Not Myself
"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 
december 2011 by rtlechow
Avería – The Average Font
"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
8th Light needs a few good Craftsman and women. - Uncle Bob's Blog
"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 
september 2011 by rtlechow
Time
"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 
july 2011 by rtlechow
F.lux: software to make your life better
"F.lux fixes this: it makes the color of your computer's display adapt to the time of day, warm at night and like sunlight during the day."
color  osx  software  windows 
june 2011 by rtlechow
FUN3D Manual :: Chapter 1: Introduction
"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
"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 
may 2011 by rtlechow
rstat.us
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
“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 
march 2011 by rtlechow
p-cos blog: A non-hierarchical approach to object-oriented programming
"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
« earlier      

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:



description:


tags: