6.S184 - Zombies drink caffeinated 6.001
january 2012
"Zombie-like, 6.001 rises from the dead to threaten students again. Unlike a zombie, though, it's moving quite a bit faster than it did the first time. Like the original, don't walk into the class expecting that it will teach you Scheme; instead, it attempts to teach thought patterns for computer science, and the structure and interpretation of computer programs. Three projects will be assigned and graded. Prereq: some programming experience; high confusion threshold."
scheme
sicp
history
programming
cs
january 2012
Bill Joy's greatest gift to man – the vi editor [printer-friendly] • The Register
january 2012
"It was a world that is now extinct. People don't know that vi was written for a world that doesn't exist anymore - unless you decide to get a satellite phone and use it to connect to the Net at 2400 baud, in which case you'll realize that the Net is not usable at 2400 baud. It used to be perfectly usable at 1200 baud. But these days you can't use the Web at 2400 baud because the ads are 24KB."
history
programming
vim
vi
january 2012
Schizophrenia (object-oriented programming) - Wikipedia, the free encyclopedia
january 2012
"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
Refactor This: The Gilded Rose Kata « I Am Not Myself
december 2011
"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
JuliaLang/julia - GitHub
december 2011
"Julia is a high-level, high-performance dynamic language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. The library, mostly written in Julia itself, also integrates mature, best-of-breed C and Fortran libraries for linear algebra, random number generation, FFTs, and string processing. More libraries continue to be added over time. Julia programs are organized around defining functions, and overloading them for different combinations of argument types (which can also be user-defined). For a more in-depth discussion of the rationale and advantages of Julia over other systems, see the following highlights or read the introduction in the manual."
programming
language
llvm
julia
fft
fortran
c
december 2011
jes5199/brid.js - GitHub
november 2011
brid.js (pronounced like "bridges")
is a LISP that uses JSON instead of S-Expressions
implemented in JavaScript
based upon Peter Norvig's lis.py
(Sorry I dropped your ai-class, Peter.)
This was partially inspired by Stuart Halloway's talks
"Simplicity Ain't Easy" and "Radical Simplicity"
But the real story is:
Sometimes I need to use JSON outside of REST
And I've started using a style of
JSON document that looks a lot like S-Expressions.
javascript
lisp
json
sexps
programming
languages
is a LISP that uses JSON instead of S-Expressions
implemented in JavaScript
based upon Peter Norvig's lis.py
(Sorry I dropped your ai-class, Peter.)
This was partially inspired by Stuart Halloway's talks
"Simplicity Ain't Easy" and "Radical Simplicity"
But the real story is:
Sometimes I need to use JSON outside of REST
And I've started using a style of
JSON document that looks a lot like S-Expressions.
november 2011
FACT CHECK: SCADA Systems Are Online Now
november 2011
"For those who do not know, 747's are big flying Unix hosts. At the time, the engine management system on this particular airline was Solaris based. The patching was well behind and they used telnet as SSH broke the menus and the budget did not extend to fixing this. The engineers could actually access the engine management system of a 747 in route. If issues are noted, they can re-tune the engine in air."
security
unix
november 2011
Ciclovía - Wikipedia, the free encyclopedia
november 2011
Each Sunday and holiday certain main streets of Bogotá, Cali, Medellín, and Colombian other municipalities, are blocked off to cars for the exclusive use of runners, skaters, and bicyclists. At the same time, stages are set up in city parks. Aerobics instructors, yoga teachers and musicians lead people through various performances. Bogotá's weekly ciclovías are used by approximately 2 million people (30% of citizens) on over 120 km of carfree streets.[1]
cycling
bicycling
bikes
bicycles
streets
november 2011
Fabien Sanglard's website: Deep magic explained.
november 2011
Quake, Quake2 Code Reviews
software
code
games
gaming
programming
november 2011
Avería – The Average Font
october 2011
"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
Reflections on the WEIRD Evolution of Human Psychology | PLoS Blogs Network
october 2011
Does psychology’s over-reliance on American undergraduates distort our image of the human species?
psychology
research
science
october 2011
Mincome - Wikipedia, the free encyclopedia
october 2011
"Mincome is the name of an experimental Canadian Basic income project that was held in Dauphin, Manitoba during the 1970s. The project, funded jointly by the Manitoba provincial government and the Canadian federal government, began with a news release on February 22, 1974, and was closed down in 1979. The purpose of this experiment was to determine whether a guaranteed, unconditional annual income actually caused disincentive to work for the recipients, and how great such a disincentive would be. A final report was never issued,but Dr. Evelyn Forget [for-ZHAY] has conducted analysis of the research. She found that only new mothers and teenagers worked less. Mothers with newborns stopped working because they wanted to stay at home longer with their babies, and and teenagers worked less because they weren't under as much pressure to support their families, which resulted in more teengers graduating. In addition, those who continued to work were given more opportunities to choose what type of work they did. In addition, Forget finds that in the period that Mincome was administered, hospital visits dropped 8.5 per cent, with fewer incidences of work-related injuries, and fewer fewer emergency room visits from car accidents and domestic abuse.[1]"
mincome
income
experiment
canada
politics
labour
wage
october 2011
Objology: One of the Best Bits of Programming Advice I ever Got
october 2011
That article about agentive nouns.
oop
nouns
verbs
language
agentive
advice
design
programming
october 2011
shiftit - Manage windows in Mac OS X - Google Project Hosting
october 2011
A GPL SizeUp alternative.
mac
osx
screen
windows
software
october 2011
Crossing the Bering Strait and Beringian Gap - Angus Adventures
october 2011
Despite the fact that a ferry could potentially cross from the USA to Siberia in two hours, political hurdles restrict traffic across this body of water. It is virtually impossible for a westerner to receive permission to arrive on the Russian shores of the Bering Strait. An adventurer wishing to kayak, swim, walk over the ice, or sail from Alaska to Siberia across the Bering Strait would have to do so illegally.
travel
october 2011
brainwagon » Donald Michie, Alan Turing, Martin Gardner, and Tic Tac Toe
october 2011
Years ago, I remember reading one of Martin Gardner’s Mathematical Games columns (from March, 1962, in case you want to look it up) where he described an interesting machine for playing tic-tac-toe. It was made entirely out of matchboxes, each one of which had a tic tac toe position on the top. Inside was a collection of colored beads. Each color specified a possible legal move for the position on top. The idea was that you’d play a game by drawing these beads from the appropriate box, and making the appropriate move. At the end of the game, you’d remove the bead from the last box that sent you along the losing path. Eventually, all the losing moves get removed, and the machine plays perfect tic-tac-toe.
tictactoe
games
computerscience
october 2011
3d
accessibility
activism
agile
ai
ajax
algorithm
algorithms
analytics
api
app
apple
architecture
art
article
audio
bash
bdd
bicycle
bicycles
bike
bikes
biking
blog
blogs
book
books
browser
business
canada
career
clothing
cloud
code
coding
collaboration
community
computer
computers
computing
conference
cool
crafts
css
culture
cycling
data
database
design
development
diy
documentation
ebook
economics
editor
education
electronics
email
english
environment
fashion
film
fitness
flash
font
fonts
food
framework
free
freelance
freeware
fun
functional
funny
furniture
gallery
game
games
gaming
geek
gem
generator
git
github
google
government
graph
graphics
green
guide
hack
hacking
hacks
hardware
health
history
home
howto
html
html5
humor
humour
ideas
images
inspiration
interesting
interface
interior
internet
iphone
java
javascript
jobs
jquery
js
kata
language
languages
learning
library
linux
lisp
list
mac
macosx
management
map
maps
marketing
math
mathematics
media
money
movies
music
network
news
online
oop
opensource
optimization
osx
patterns
performance
philosophy
photo
photography
photos
photoshop
plugin
plugins
politics
portfolio
productivity
programming
project
projectmanagement
psychology
python
rails
reference
research
resource
resources
retro
rspec
ruby
rubyonrails
science
screencast
search
security
seo
server
service
shell
shopping
smalltalk
social
software
sql
standards
statistics
store
style
sysadmin
tdd
technology
test
testing
tips
tool
tools
toronto
towatch
travel
tutorial
tutorials
twitter
type
typography
ui
unix
urban
usability
utilities
ux
video
videogames
videos
vim
visualization
web
web2.0
webdesign
webdev
wiki
wikipedia
words
work
writing