Version 19, fully revised, Hack Reactor, 2016-03-31
Laurie Voss
CTO,
@seldo
I may also include sarcastic remarks down here.
Twitter, America's most trusted source for unbiased facts.
More on Wikipedia: sel.do/dunningkruger
Dunning & Kruger won the Ig Nobel prize for psychology in 2000, but this is really useful stuff.
Also, stop doing Uber for X startups.
Are you even old enough to remember this movie?
aka git
All hail Sir Tim, the great and powerful.
The entire web is just the <A> tag.
Descendant selectors: div ul li
Child selectors: div > ul > li
Sibling selectors: h1 + h2
Attribute selectors: input[type=radio]
Partial attributes: input[data~=bob]
Pseudo-classes: div:first-child
Pseudo-elements: p:first-letter
Media selectors: @media(max-width: n)
NO:
class="big red button"
YES:
class="button" id="buy-button"
Block, Element, Modifier convention:
http://sel.do/bem
http://www.filamentgroup.com/lab/weight-wait.html
http://sel.do/fallbackfont
because sometimes JavaScript never loads
http://www.nngroup.com/articles/designing-effective-carousels/
Nobody uses carousels:
Nobody scrolls horizontally:
http://www.nngroup.com/articles/horizontal-scrolling/
Links go places, buttons do things
Spatial memory is a thing
Use PushState to allow deep linking within rich web apps.
http://twitter.com/#!/ded/status/18308450276
is the same as
http://twitter.com/
Performance is invisible UX.
http://sel.do/mobile
is not optional
3.4% of web users have limited vision:
http://www.practicalecommerce.com/articles/2114-Screen-Readers-Eight-Frequently-Asked-Questions
Guide to accessibility:
http://www.nngroup.com/reports/usability-guidelines-accessible-web-design/
will make you money
Pick two.
Best database ever.
Memory across machines
Memory++
Ehhhhhh
Replication is awesome
npm install leveldb
(or these days, MariaDB)
Get somebody else to install it.
More money, less problems.
It's really not that bad.
In defense of SQL:
http://sel.do/sql
ORM is an antipattern:
http://sel.do/orm
High write, slow read.
Any CAP combination.
For social networks.
Do not use it as a primary store.
Surprisingly capable.
Big, big data.
Infinite data.
Replication is not a backup strategy.
Because people are terrible sometimes.
Salt and hash passwords
Identification
vs
Authentication
vs
Authorization
Performance issues
Lock them down
HttpOnly = true
i.e. HTTP, not JavaScript
Secure = true
i.e. smart, not dumb
Always use HTTPS.
Certs are free! letsencrypt.org
https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
Cross Site Scripting
(because CSS, RSS and OSS were taken)
Hi, my name is <script>alert('evil')</script>
http://who.is/dns/jamiehankins.co.uk
Regular expressions are really hard and really worthwhile.
SELECT id FROM users
WHERE name = 'anyuser'
AND password = 'anything' or 'x' = 'x'
username: anyuser
password: anything' OR 'x'='x
+
=
SELECT id FROM users
WHERE name = '$username'
AND password = '$password'
bob.com/images/../../../mysecret.key
vs
Efficiency
vs
Throughput
vs
Latency
is
https://blog.kissmetrics.com/loading-time/
http://searchengineland.com/google-now-counts-site-speed-as-ranking-factor-39708
https://aerotwist.com/blog/the-cost-of-frameworks/
if you're huge
if you're dumb
is another type of speed
Trade storage for speed. Always.
Globals
function foo(x) {
return whereDidThisComeFrom + x
}
function foo(x, god) {
return god.universe.random.thing + x
}
function foo(a,b,doSpecialCase,leapYear,isPrime,isTuesday) {
...
}
function foo(a,b,options) {
...
}
instead
And so does documentation.
All hail UTC
YYYY-MM-DDTHH:MM:SSZ is your time format
aka W3CDTF
http://www.w3.org/TR/NOTE-datetime
UTF-8 or GTFO
Make the intern do it
Having any pattern is better than not having a pattern
DRY = Don't Repeat Yourself
Build a tool, not a contraption
All systems are eventually distributed systems.
It feels like we haven't had a joke down here in a while.
is a bullshit term.
These are the hardest skills.
Building software is easy, finishing software on time is hard.
"people will forget what you said,
people will forget what you did,
but people will never forget
how you made them feel."
Maya Angelou
http://blog.ycombinator.com/yc-stats
http://sel.do/sleep
"Hey, you guys need any Cold Fusion done?"
How to find and get a job (by @jewelia)
http://sel.do/findjobs
How to interview other people:
http://sel.do/interviewing
by ganging up
Holy crap it seemed like he would never shut up
Now would be good time to follow me on Twitter!
@seldo
Good questions get t-shirts!