101 Tips – for writing code



101 Tips – for writing code

0 2


100-tips-for-writing-code

(everything i wish i had known)

On Github hlian / 100-tips-for-writing-code

101 Tips

for writing code

#1: pretend you know a lot

(alternately: fake it until you make it)

#2: over time, only time matters

#3 (corollary): shake children until they start programming

#4: pad out your slides with pointless tips

#5: definitely pad out your slides with pointless tips

#6: try and always realize when you are the protagonist

#7: you might be the protagonist when you start learning something new

#8: you might be the protagonist when you are feeling scared

#9: you might be the protagonist when you are about to leave something behind

#10: you might be the protagonist when you find someone you look up to

Pictured above: why the lucky stiff

#11: this is why the lucky stiff

#12: blogging is we communicate

how I know him

#13: find a voice for your writing

chapter 1 of 'the (poignant) guide to ruby'

how you might know him

#14: write programs in your own voice

still, to this day, the only ruby book that demonstrates how important metaprogramming is to Ruby

#15: your voice might be small

4 KB web framework (rails: ~50 MB)

camping/camping

#16: your voice might be a teacher's voice

as easy to write a native app as it is to write a website

shoesrb.com

#17: your voice might be secretive

[in /etc/hosts] 555.55.55.555 hoodwink.d

local http proxy + secret club = web graffiti

#18: your voice might be a mayor's voice

#19: your voice might be tidy

          ~ potion ~

          Potion is an object- and mixin-oriented (traits)
          language.

          Its exciting points are:

          * Just-in-time compilation to x86 and x86-64
          machine code function pointers. This means
          she's a speedy one. Who integrates very
          well with C extensions.

          The JIT is turned on by default and is
          considered the primary mode of operation.

          * Intermediate bytecode format and VM. Load
          and dump code. Decent speed and cross-
          architecture. Heavily based on Lua's VM.

          * A lightweight generational GC, based on
          Basile Starynkevitch's work on Qish, with
          ~4ms per GC on average with < 100MB heaps.
          

          * Bootstrapped "id" object model, based on
          Ian Piumarta's soda languages. This means
          everything in the language, including
          object allocation and interpreter state
          are part of the object model.
          (See COPYING for citations.)
  

#20: your voice might be two-dimensional

          .ooo
          'OOOo
          ~ p ooOOOo tion ~
          .OOO
           oO      %% a little
             Oo    fast language.
            'O
             `
            (o)
          ___/ /          
          /`    \ 
          /v^  `  ,
          (...v/v^/
          \../::/
          \/::/ 
  

#20: your voice might be impossible

unHoly: https://github.com/whymirror/unholy

  To compile Ruby to a .pyc:

  > bin/unholy test.rb
  > PYTHONPATH=python \
     python test.rb.pyc

  ---

  To translate to Python:

  > decompyle test.rb.pyc > test.py
  

#21: don't leave

http://viewsourcecode.org/why/

#6: try and always realize when you are the protagonist

Joseph Campbell's Monomyth

#22: the hero must venture into unknown realms without her mentor

here all the unknown realms that i know about

#23: write Piet

prints first 100 Fibonacci numbers

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

#23: write Piet

(prints first 100 Fibonacci numbers)

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

#24: write Velato

(prints "Hello World")

#25: write quines

  puts <<2*2,2
  puts <<2*2,2
  2
          

See also: Qlobe

#26: write long, funny, angry comments

  // At this point, I'd like to take a moment to speak to you about the Adobe PSD format.
  // PSD is not a good format. PSD is not even a bad format. Calling it such would be an
  // insult to other bad formats, such as PCX or JPEG. No, PSD is an abysmal format. Having
  // worked on this code for several weeks now, my hate for PSD has grown to a raging fire
  // that burns with the fierce passion of a million suns.
  // If there are two different ways of doing something, PSD will do both, in different
  // places. It will then make up three more ways no sane human would think of, and do those
  // too. PSD makes inconsistency an art form. Why, for instance, did it suddenly decide
  // that *these* particular chunks should be aligned to four bytes, and that this alignement
  // should *not* be included in the size? Other chunks in other places are either unaligned,
  // or aligned with the alignment included in the size. Here, though, it is not included.
  // Either one of these three behaviours would be fine. A sane format would pick one. PSD,
  // of course, uses all three, and more.
  // Trying to get data out of a PSD file is like trying to find something in the attic of
  // your eccentric old uncle who died in a freak freshwater shark attack on his 58th
  // birthday. That last detail may not be important for the purposes of the simile, but
  // at this point I am spending a lot of time imagining amusing fates for the people
  // responsible for this Rube Goldberg of a file format.
  // Earlier, I tried to get a hold of the latest specs for the PSD file format. To do this,
  // I had to apply to them for permission to apply to them to have them consider sending
  // me this sacred tome. This would have involved faxing them a copy of some document or
  // other, probably signed in blood. I can only imagine that they make this process so
  // difficult because they are intensely ashamed of having created this abomination. I
  // was naturally not gullible enough to go through with this procedure, but if I had done
  // so, I would have printed out every single page of the spec, and set them all on fire.
  // Were it within my power, I would gather every single copy of those specs, and launch
  // them on a spaceship directly into the sun.
  //
  // PSD is not my favourite file format.
                   

XeePhotoshopLoader.m

#27: reimplement the internet with birds

#27: reimplement the internet with birds

IPoAC has been successfully implemented, but for only nine packets of data, with a packet loss ratio of 55% (due to user error),[2] and a response time ranging from 3000 seconds (~54 minutes) to over 6000 seconds (~1.77 hours).

#28: reimplement the internet with ambiguity

UDP was actually “designed” in 30 minutes on a blackboard when we decided pull the original TCP protocol apart into TCP and IP, and created UDP on top of IP as an alternative for multiplexing and demultiplexing IP datagrams inside a host among the various host processes or tasks. But it was a placeholder that enabled all the non-virtual-circuit protocols since ... without [people's] having to negotiate for permission either to define a new protocol or to extend TCP by adding “features”.

David P. Reed: TCP, UDP, end-to-end principle, Reed's law

#28: use custom operators without guilt

  matrix_plus(matrix_multiply(matrix_multiply(a, b), c), d);
  
  (a * b * c) + d;
  

You deserve to use custom operators.

#29: your filesystem is a database

one folder per record("/db/user1")

one file per column("/db/user1/email", "/db/user2/email")

SELECT = grep(1), locate(1)

INSERT = mkdir(1)

DELETE = rm(1)

schema migrations = mv(1)

#30: blog

ours is a literate profession

you will want a developer diary at some point in your life

#31: read open source

read OS X's source code

open source is a battle that we won, and we weren't sure if were going to

#31: write open source

your library might be the next big thing

#32: read 'Harry Potter'

the gripping tale of how a young dentists' daughter saves the lives of her stupid friends over and over again

#33: be kind

#34: please & thank you

'Could we move this function to another file?'

#34: please & thank you

'Mayhaps we please move this function to another file forthwith?'

#35: less code is better than fast code

it's extraordinarily easy to find and fix slow code

it's extraordinarily difficult to find and fix superfluous code

#36: less code is better than code

it's extraordinarily easy to add code

it's extraordinarily difficult to remove code

#37: max out your 401(k) and IRA contributions

#38: processes

one crash takes down an entire process

there's about one crash every 1000 lines of code

so: one process for every 1000 lines of code?

#39: make graphics

SIGGRAPH 2013 Technical Papers

#40: make vacation plans with your friends

#41: interview people

#42: set up a warrant canary

https://canarywatch.org/

#43-100: lie about the number of tips you have

Your homework, should you choose to accept it

https://threegoodthings.xyz

#101: be the mentor in somebody else's story

Thank You

https://github.com/hlian/100-tips-for-writing-code

0
101 Tips for writing code