
1001 Things To Hack Before You Die - andre
There's already 1001 (places to visit|books to read|movies to see|{insert other activities}) before you die. Why not 1001 to hack/make/develop/design/start/attempt before you die that's more HN friendly:
======
drblast
Some things I'm glad to have done:

1\. Write a Hello World application from scratch. No C library, compiler,
linker, nothing. You get a hex editor.

2\. Write a non-bootstrapped compiler or interpreter using assembler.

3\. Write a program that learns to play a game.

4\. Develop a network protocol.

5\. Write a web server. You can use the language of your choice, but nothing
is allowed except a socket library.

6\. Write a platform game that performs at least as well as the original Super
Mario Brothers.

7\. Design a circuit that has some sort of non-trivial purpose and build it.

8\. Write Tetris in Javascript.

~~~
jrockway
_1\. Write a Hello World application from scratch. No C library, compiler,
linker, nothing. You get a hex editor._

Does this involve anything more than loading "Hello, world" into memory,
setting up the registers/stack in a certain way, and invoking the syscall
interrupt? (All the cool stuff happens in your terminal emulator. That's where
0x41 gets turned into the pixels that look like "A" on your screen, after
all.)

~~~
angusgr
At least part of the "fun" on a loosely modern operating system is learning
the nuts and bolts of the executable format and loading conventions.

I've never spent much time there, but some of the ideas are laid out well in
this two part post: <http://blog.ksplice.com/2010/04/libc-free-world-2/>

Doing it with _just_ a hex editor (ie writing out the ELF headers and sections
yourself) may not be exactly what the commenter did, though. Cos that sounds
really tedious.

I imagine that even writing "Hello, World" in the simpler way that you
describe, on a simpler system (Apple IIe or so), would probably teach me
something. I remember trying to write 6502 machine code in hex (no assembler)
on my IIe when I was about 10 years old. It never worked then, I wonder if it
would work now?

~~~
drblast
It's not that difficult or tedious, but it does require that you read the elf
specification, or write your own "OS" from scratch.

[http://www.muppetlabs.com/~breadbox/software/tiny/teensy.htm...](http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html)

The idea is that you strip away everything that does something for you so that
you are sure to completely understand the entire process with no "pushing the
green compile button."

------
Locke
\- Write a video game emulator (any _old_ console or computer platform)

\- Create a programming language

\- Restore an old broken down pinball machine

\- Build a mame arcade cabinet

\- Write some Interactive Fiction

\- Learn to make awesome programmatic artwork with something like Processing
or Nodebox

\- Create a roguelike

~~~
aaronblohowiak
\- Create an editor.

\- Create an os in the language you designed above.

------
misterbwong
In the spirit of the topic...

    
    
      0001: Learn a functional language well enough to write something of some complexity
      0010: Create a product with 100+ users
      0011: Sell 100+ products (doesn't have to be the same as 0010)
      0100: Get married!
      0101: Learn either vim or emacs
      0110: Learn Mandarin
      0111: Become an expert at something tech *and* something non-tech
      1000: Contribute to an OSS project
      1001: edit: learned binary.  thanks for pointing out my stupidity lol

~~~
themrbluesky
1000: Learn binary!

~~~
Natsu
I'd have made that one 0000, personally...

------
iuguy
Some of this is hacking in a technical sense, some of this is hacking in terms
of modifying your life to get it to be what you want it to be, or to grow
yourself.

19 - Harness Zero Point Energy

20 - Publish a paper in a journal

21 - Present at a conference

22 - Hack food, make something new

23 - Modify your body (with something cool like magnets)

24 - Do something legally/morally questionable and get away with it, just
enough to make you rethink boundaries but not enough to hurt someone.

25 - Modify your brain chemistry in an expansive way

26 - Build a great group of friends

27 - Put your projects down and spend some time with your family

28 - Learn assembly language

29 - Code an old school demo

30 - Write a cool program on an 8-bit computer

31 - Travel to another continent with a completely different culture and
immerse yourself in it.

32 - Learn how to crack (i.e. break into) applications

33 - Learn how to crack (i.e. break copyright and write keygens) software

------
anonymouslambda
17 - Make it through as much of <http://projecteuler.net/> as you can.

------
andre
1 - register YourName.com

2 - start a blog

3 - learn *SQL

4 - develop a javascript site, (gmail.com)

5 - write your own planning/todo program (because others just don't work)

6 - read, sign up, make at least one post on HN

7 - start an open source software project

------
enduser
0000\. master the command line

0001\. master a keyboard-only text editor (vim/emacs)

0010\. master your mind

0011\. determine how to help the world the most with the least effort

0100\. learn from your mistakes

0101\. learn as many programming methodologies as you can

0110\. create an awesome sheep for electricsheep

0111\. reverse engineer a program from decompiled machine code

1000\. write a book worth reading in 100 years

~~~
Ixiaus
Shouldn't 0010 be 0000? I would think mastering your mind would come before
mastering any external tool...?

Definite up vote for answering a question about what to hack in the spirit of
a hacker.

~~~
enduser
0010 is the true hack. these tasks can be executed in any order--even in
parallel.

------
frankus
Write a quine (<http://www.nyx.net/~gthompso/quine.htm>)

------
phamilton
cause an additional security policy to be put in place on your high schools
network

~~~
Natsu
College, actually. Got them to fix an issue with forgetting to clear the
cached AFS credentials when their login program crashed.

Also tried to convince them to get people to use SSH instead of telnet, but
they took a few years to get around to deploying that and ignored me. In
retrospect, the university president was the wrong person to tell; he had no
clue what I was even talking about. Mind you, this was in 1998 and more than a
few people had already figured out that it's not too hard to listen in to
unencrypted traffic on a LAN. I'm assuming that the people who did bad things
with that knowledge are the ones who actually got them to change the policy.

Also made them change the terms of use that forbade "downloading copyrighted
material" to "downloading copyrighted material _without permission_ " given
that almost everything online is copyrighted.

I also ended up acting as an unofficial helpdesk member just because I was up
there chatting to the real people too often. It's always fun to fix problems
for people and when they ask how you know so much about the program they're
using to point out that, in fact, you've never actually seen or used it
before...

------
stevelosh
14 - Get a patch accepted to an open source project.

15 - Version your dotfiles and put them up online for others to learn from.

16 - Write and open source a plugin for your favorite text editor.

------
kellishaver
Notable things I'm proud to have achieved/hacked/made, in no particular order
of importance:

\- Built a HAM radio-vacuum tubes were involved.

\- Developed a useful library of JavaScript tools

\- Developed my own MVC web framework

\- Collaborated on the design of, developed and launched custom child-still
tweaking that one for performance

\- Started a successful business

\- Be a part of a popular Open Source project

\- Wired a house

\- Participated in the saving of a few lives

------
jacobroufa
18 - Learn proper use of a version control system.

------
wglb
Good challenge.

Here are some of the things that I have done so far.

1\. Write an editor based for card-image files in XPL (for the Sigma 5 RBM
system) 2\. Write a document processor along the lines of nroff for fixed-
width character printers (think Courier). There were at least two of these I
believe 3\. Write a simulator to estimate the probability of a busy signal for
a given call volume and a given number of phone lines. Oddly, when we later
compared these results to similar simulations provided by the phone company,
the phone company's numbers showed we needed more lines. 4\. Write a code
generator for an industrial compiler. 5\. Write the (rough) equivalent of an
IRC channel for AX-25 packet radio DX-spotting network. 6\. Write the software
necessary for the first real-time QSO-logging system used in a DXpedition.
(Used in the YJ8V/YJ8PD trip.) 7\. Contribute a very tiny piece of software
that is part of a control-system analysis program used to decide where to
locate Argonne National Labs. (And I mean really tiny.) First program I wrote
for pay.

These are just a few of the more fun ones.

However, there is one challenge that has captured my imagination over the
years. Imagine a final exam of programming skill that has the student in an
electronically-locked room with a computer that controls the lock. There are
but a few necessities in the room, no internet. The student needs to write a
program that will unlock the door.

I haven't done this last one exactly, but sometimes it seems like a metaphor
for some near-deathmarch projects I have gotten myself into.

Current homework includes writing an intercepting proxy in a handful of
languages.

------
bfung
easier to keep count:
[https://spreadsheets.google.com/ccc?key=0AsoY_yr0BJCVdFhNVi1...](https://spreadsheets.google.com/ccc?key=0AsoY_yr0BJCVdFhNVi1GUVhQNXM0WVpuTDFkOHNjMXc&hl=en&authkey=CIn98vIK)

go ahead and add stuff, let me know if permissions are set incorrectly.

------
cing
-Switch from vim to emacs

~~~
nevinera
-Switch from emacs to vim

~~~
andre
\- start using emacs or vim

~~~
Zecc
Then say "ah, screw it!" and code your own editor.

~~~
eam
And call it the BestOfBothWorlds Editor.

~~~
yan
I thought adding more features to emacs still made it emacs.

------
kno
17- Get some sleep

~~~
andre
lol, good one, or a way to lower the requirement for so much sleep

------
Hexstream
(disclaimer: I'm a bit of an ambitious guy and I probably won't achieve even a
"sizeable" portion of this, but I will try)

Make my own versions of these pieces of infrastructure in one or more variants
of Lisp, using various novel approaches or combining some "old" approaches
that are nevertheless not used as much as they should be today, and
comprehensively document it all:

My own web framework (in progress), window manager, UI toolkit and layout
system, 3D engine, video editor, image editor, video and sound codec, emacs-
style editor, operating system, kernel, Common Lisp implementation, virtual
machine, BIOS, OS bootstrapper.

Also, maybe an NES or SNES emulator, for fun and maybe trying to make a full
blown modern development environment to make it easy to make whole new games
for these consoles instead of just making more or less elaborate hacks to
already existing games.

Learn to play the piano, guitar and violin. Learn to compose my own music.

Not that I expect or count on it, but it would be convenient if a treatment to
stop aging appeared while it's not too late for me, cuz I'm pretty sure I'll
be out of time before I'm doing what I want to do properly...

------
HerberthAmaral
1 - Develop a typesetting language based on markdown + css which can be so
good as LaTeX.

2 - Learn Python, Haskell, Lisp, Lua, Ruby and build you own f*cking good
language.

3 - Discover what is a monad.

4 - Play with Arduino.

5 - Write a basic kernel from scratch.

6 - Forget about Vim and Emacs. Learn how to capture brainwaves, plug an usb
cable on it and do an text editor based on thougths.

------
reinhardt
Did anyone else read the 1001 in the title as 9 in binary ?

~~~
mitemitreski
yup :)

------
gregable
\- Write a (simple) web server.

\- Implement part of a networking stack.

\- Interface with some piece of hardware in a way it wasn't designed.

\- Create a browser extension.

\- Add an easter egg that nobody ever finds.

\- Code a strategy to a game and compete against other implementations.

\- Discover a subtle bug in a very well used bit of code.

------
Dylanlacey
\- Repair something that isn't meant to be repaired \- Make a disposable
consumer product into something more useful and enduring \- Use something old
to create something meaningful for someone you love

------
jolie
-Do something that warrants its own Wikipedia article.

~~~
webgambit
-Do enough somethings that you warrant your own Wikipedia article

------
stakent
Ship it.

------
ruchi
11 - Write a book

12 - Fall in love

13 - Donate

~~~
andre
13a - Donate to EFF

~~~
there
13b - do something that warrants the eff coming to your rescue

------
ViKT0RY
1 - Develop a custom firmware for Playstation 3. 2 - Create a native and fully
fuctional distro for Playstation 3. 3 - Achieve 1 and 2 and send a certified
post mail to Sony with you happy face on it. 4 - Try to return to the Open
source community as much goods as it has given to you.

------
stonemetal
build a motorcycle or other vehicle

invent a device like this guy
[http://www.npr.org/templates/story/story.php?storyId=1308907...](http://www.npr.org/templates/story/story.php?storyId=130890701&ft=1&f=1053)

~~~
aberkowitz
The Wikipedia page on the Universal Nut Sheller makes up for NPR's lack of
technical detail:

<http://en.wikipedia.org/wiki/Universal_Nut_Sheller>

The thought that this machine is sometimes custom made to accommodate
different environments and plants intrigues me.

------
baguasquirrel
\- Finish "The Art of Computer Programming."

\- Use the fixed point combinator in Javascript for something.

\- Make your own bike lights.

\- Figure out how the monad laws really work.

\- Write something that makes more than $100 on the App Store.

\- Figure out how to get the plants in the garden to not die.

------
binarymax
Output Mandelbrot. Make it interactive.

Enter a hacker/code competition.

Predict the outcome of a sporting event.

------
dmuth
Learn 3D graphics and build a small virtual world.

Virtual worlds have always fascinated me, but I've always been a command-
line/server guy and never got around to learning the theory/math that goes
into doing 3D graphics.

------
pontifier
A few years ago I came across an old teddy-ruxpin... I thought it would be
awesome to build a setup to record custom control tapes... never did it, but I
still want to.

------
sgt
\- Learn Forth

\- Learn Erlang

\- Learn to play the panflute

~~~
ivanstojic
Of all the things arbitrary, why a pan flute?

------
andre
8 - set up twitter account

9 - poke somebody on facebook

10 - comment on techcrunch story

------
inetsee
Build your own computer using FPGAs (Field Programmable Gate Arrays).

Bonus points: Make it capable of reconfiguring itself based on the program
it's executing.

------
postit
Create your own computer from scratch

------
JonnieCache
\- Program a microcontroller, interface it to both a packet network and some
analog sensors.

------
lexinerus
Create your own genetic algorithm for generate your own society of virtual
beings!

------
elitelinux
1\. learn asterisk 2\. Install Haiku 3\. Make a Firewall with a xBSD 4\.
Install linux in Mac/apple 5\. Install cool stuff in device with adroid 6\.
With Backtrack hack your Police Department 7\. Help people in a forum 8\. F&%k
in second life 9\. Build a LFS 10\. Help someone to be better hacker

------
cing
-initiate new item freeze on your todo list in order to check everything off

------
temugen
Well, it looks like the 9 Things To Hack Before You Die are already posted.

------
eam
\- Run your own web server.

~~~
pluies
_Build_ your own web server. :)

Bonus points if you hack the hardware together in the most power-efficient
way. Or as small as possible. Or pretty. Or if it makes coffee too.

------
gregfjohnson
I would have assumed the list would be numbered in binary ;-)

------
angadsg
\- compile a linux kernel \- overclock/underclock your cpu

------
harry
Build a giant robot.

~~~
harry
Larger than a city bus.

Oh, and in case someone hasn't seen Jaimie Manzel in all his retro 1990's site
glory: <http://jamius.com/>

------
whatrocks
\- Build a windmill

------
phamilton
get posted on hack-a-day

------
dreaming
Make a 1001 X to Y list

------
adolfoabegg
11 - Install LAMP

~~~
mitemitreski
Why LAMP just why? :)

------
revorad
Upload myself.

~~~
alanh
Cheating!

------
rick_2047
My top ten list (I just thought it up now, so this is not my final list):

1\. Making my own uC architecture and write it in HDL.

2\. Make a lisp machine

3\. Hacking a game for a old game console (not an emulator, you have to
actually get it working on the physical machine).

4\. Experiment with different types of OS on uControllers.

5\. Hacking to gather a home automation system.

6\. Implement a whole web server in the uController from scratch (means you
have to make your own protocol stack and such things).

7\. Make a widely used C library.

8\. Get my long standing dream of localized electronics kit store to launch.

9\. Get a patent on something new

10\. Make a super computer cluster from home PC's

I know lot of these are very hard but hey I am just 19 and have a whole life
ahead.

------
Aetius
Before you die, you absolutely need to create a child. It will be your
greatest creation.

~~~
Gilson_Silveira
Or you can create a child that solves the 1000 hacks before you die. That's
the closer you can get of a high order function that solves that for you :)

