jonschoning + programming 763
The Undeleted Blog of Clinton Forbes: The Universal Standard Library
yesterday by jonschoning
The CSIRO (Australia) has calculated in a 2010 study that the amount of time wasted annually by the estimated six million professional software developers world-wide due to inconsistent standard library naming is equal to the GDP of Portugal [citation needed].
programming
yesterday by jonschoning
javascript - How do I get started with Node.js - Stack Overflow
9 days ago by jonschoning
Tutorials
Node.js guide
Node tuts
Videos
Introduction to Node.js with Ryan Dahl
Node.js: Asynchronous Purity Leads to Faster Development
Parallel Programming with Node.js
Server-side JavaScript with Node, Connect & Express
Books
The Node Beginner Book
Mastering Node.js
Up and Running with Node.js
Node.js in Action
Blogs
Ryan Dahl's Node blog
How To Node
DailyJS
Nodejitsu blog
Podcasts
NodeUp
JavaScript resources
Crockford's videos (must see!)
Essential JavaScript Design Patterns For Beginners
JavaScript garden
JavaScript Patterns book
JavaScript: The Good Parts book
Node Modules
Wiki List on Github/Joyent/Node (start here last!)
Search for registered node.js modules
javascript
node
nodejs
programming
Node.js guide
Node tuts
Videos
Introduction to Node.js with Ryan Dahl
Node.js: Asynchronous Purity Leads to Faster Development
Parallel Programming with Node.js
Server-side JavaScript with Node, Connect & Express
Books
The Node Beginner Book
Mastering Node.js
Up and Running with Node.js
Node.js in Action
Blogs
Ryan Dahl's Node blog
How To Node
DailyJS
Nodejitsu blog
Podcasts
NodeUp
JavaScript resources
Crockford's videos (must see!)
Essential JavaScript Design Patterns For Beginners
JavaScript garden
JavaScript Patterns book
JavaScript: The Good Parts book
Node Modules
Wiki List on Github/Joyent/Node (start here last!)
Search for registered node.js modules
9 days ago by jonschoning
Rands In Repose: Please Learn to Write
14 days ago by jonschoning
I have this thing I want to to build.
I have a finite set of tools that enforce a set certain of rules I must follow.
And… go.
creativity
programming
I have a finite set of tools that enforce a set certain of rules I must follow.
And… go.
14 days ago by jonschoning
Big O notation - Wikipedia, the free encyclopedia
14 days ago by jonschoning
Notation Name Example
constant Determining if a number is even or odd; using a constant-size lookup table or hash table
double logarithmic Finding an item using interpolation search in a sorted array of uniformly distributed values.
logarithmic Finding an item in a sorted array with a binary search or a balanced search tree as well as all operations in a Binomial heap.
fractional power Searching in a kd-tree
linear Finding an item in an unsorted list or a malformed tree (worst case) or in an unsorted array; Adding two n-bit integers by ripple carry.
linearithmic, loglinear, or quasilinear Performing a Fast Fourier transform; heapsort, quicksort (best and average case), or merge sort
quadratic Multiplying two n-digit numbers by a simple algorithm; bubble sort (worst case or naive implementation), Shell sort, quicksort (worst case), selection sort or insertion sort
polynomial or algebraic Tree-adjoining grammar parsing; maximum matching for bipartite graphs
L-notation or sub-exponential Factoring a number using the quadratic sieve or number field sieve
exponential Finding the (exact) solution to the travelling salesman problem using dynamic programming; determining if two logical statements are equivalent using brute-force search
factorial Solving the traveling salesman problem via brute-force search; generating all unrestricted permutations of a poset; finding the determinant with expansion by minors.
algorithms
complexity
programming
math
constant Determining if a number is even or odd; using a constant-size lookup table or hash table
double logarithmic Finding an item using interpolation search in a sorted array of uniformly distributed values.
logarithmic Finding an item in a sorted array with a binary search or a balanced search tree as well as all operations in a Binomial heap.
fractional power Searching in a kd-tree
linear Finding an item in an unsorted list or a malformed tree (worst case) or in an unsorted array; Adding two n-bit integers by ripple carry.
linearithmic, loglinear, or quasilinear Performing a Fast Fourier transform; heapsort, quicksort (best and average case), or merge sort
quadratic Multiplying two n-digit numbers by a simple algorithm; bubble sort (worst case or naive implementation), Shell sort, quicksort (worst case), selection sort or insertion sort
polynomial or algebraic Tree-adjoining grammar parsing; maximum matching for bipartite graphs
L-notation or sub-exponential Factoring a number using the quadratic sieve or number field sieve
exponential Finding the (exact) solution to the travelling salesman problem using dynamic programming; determining if two logical statements are equivalent using brute-force search
factorial Solving the traveling salesman problem via brute-force search; generating all unrestricted permutations of a poset; finding the determinant with expansion by minors.
14 days ago by jonschoning
Superfeedr : Protocols over APIs
15 days ago by jonschoning
Another solution is to favor protocols over APIs. To over-simplify things, an API is just a combination of uni-laterally decided upon protocol and an endpoint
api
programming
15 days ago by jonschoning
Learn Code The Hard Way -- Books And Courses To Learn To Code
15 days ago by jonschoning
I'm going to give you a piece of advice when you're trying to learn something new: Never listen to people who try to make beginners feel like losers. For whatever reason, some people get off on making beginners feel like they're worthless for attempting something. Maybe it's because they feel threatened by new entrants, or maybe they were picked on as kids and this makes them feel powerful. Who knows, but generally if they're trying to make you feel like a loser because right now you're not that good at something, then just ignore them. They suck.
Finally, I'd like to tell you that the best way to get good at something is to not attach your identity to the activity. I do say I am a programmer, but really I mean I'm a person who writes code (and does a bunch of other stuff). The skill of coding is not who I am, it's just one of the many things that makes me the complex interesting person I am. Who am I? I don't know, or I at least can't describe it in words.
If you do that, and learn to code for your own reasons, then you'll be just fine and get out of it what you put into it. If you attach your identity to being a programmer, then changes like "everyone can code" will lead to resentment because you are no longer unique.
code
education
programming
Finally, I'd like to tell you that the best way to get good at something is to not attach your identity to the activity. I do say I am a programmer, but really I mean I'm a person who writes code (and does a bunch of other stuff). The skill of coding is not who I am, it's just one of the many things that makes me the complex interesting person I am. Who am I? I don't know, or I at least can't describe it in words.
If you do that, and learn to code for your own reasons, then you'll be just fine and get out of it what you put into it. If you attach your identity to being a programmer, then changes like "everyone can code" will lead to resentment because you are no longer unique.
15 days ago by jonschoning
Rubular: a Ruby regular expression editor and tester
15 days ago by jonschoning
Regex quick reference
[abc] A single character of: a, b or c
[^abc] Any single character except: a, b, or c
[a-z] Any single character in the range a-z
[a-zA-Z] Any single character in the range a-z or A-Z
^ Start of line
$ End of line
A Start of string
z End of string
. Any single character
s Any whitespace character
S Any non-whitespace character
d Any digit
D Any non-digit
w Any word character (letter, number, underscore)
W Any non-word character
b Any word boundary character
(...) Capture everything enclosed
(a|b) a or b
a? Zero or one of a
a* Zero or more of a
a+ One or more of a
a{3} Exactly 3 of a
a{3,} 3 or more of a
a{3,6} Between 3 and 6 of a
programming
regex
ruby
tools
[abc] A single character of: a, b or c
[^abc] Any single character except: a, b, or c
[a-z] Any single character in the range a-z
[a-zA-Z] Any single character in the range a-z or A-Z
^ Start of line
$ End of line
A Start of string
z End of string
. Any single character
s Any whitespace character
S Any non-whitespace character
d Any digit
D Any non-digit
w Any word character (letter, number, underscore)
W Any non-word character
b Any word boundary character
(...) Capture everything enclosed
(a|b) a or b
a? Zero or one of a
a* Zero or more of a
a+ One or more of a
a{3} Exactly 3 of a
a{3,} 3 or more of a
a{3,6} Between 3 and 6 of a
15 days ago by jonschoning
Interoperability Happens - The Vietnam of Computer Science
19 days ago by jonschoning
object-relational mapping is the Vietnam of Computer Science
database
development
orm
programming
19 days ago by jonschoning
Heroku | Cloud Application Platform
19 days ago by jonschoning
Java
Ruby
Python
Clojure
Scala
Node.js
development
hosting
programming
Ruby
Python
Clojure
Scala
Node.js
19 days ago by jonschoning
Welcome | Flask (A Python Microframework)
21 days ago by jonschoning
Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. And before you ask: It's BSD licensed!
flask
python
programming
21 days ago by jonschoning
Backus–Naur Form - Wikipedia, the free encyclopedia
22 days ago by jonschoning
In computer science, BNF (Backus Normal Form or Backus–Naur Form) is one of the two [1] main notation techniques for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocol; the other main technique for writing context-free grammars is the van Wijngaarden form. They are applied wherever exact descriptions of languages are needed: for instance, in official language specifications, in manuals, and in textbooks on programming language theory.
Many extensions and variants of the original Backus–Naur notation are used; some are exactly defined, including Extended Backus–Naur Form (EBNF) and Augmented Backus–Naur Form (ABNF).
programming
syntax
contextfree
grammar
Many extensions and variants of the original Backus–Naur notation are used; some are exactly defined, including Extended Backus–Naur Form (EBNF) and Augmented Backus–Naur Form (ABNF).
22 days ago by jonschoning
Coding Horror
23 days ago by jonschoning
This is all your app is: a collection of tiny details.
This is still one of my favorite quotes about software. It's something we internalized heavily when building Stack Overflow. Getting the details right is the difference between something that delights, and something customers tolerate.
Your software, your product, is nothing more than a collection of tiny details. If you don't obsess over all those details, if you think it's OK to concentrate on the "important" parts and continue to ignore the other umpteen dozen tiny little ways your product annoys the people who use it on a daily basis – you're not creating great software. Someone else is. I hope for your sake they aren't your competitor.
The details are hard. Everyone screws up the details at first, just like Petmate did with the first version of this automatic feeder. And it's OK to screw up the details initially, provided …
you're getting the primary function more or less right.
you're listening to feedback from the people who use your product, and actively refining the details of your product based on their feedback every day.
blog
coding
development
software
programming
This is still one of my favorite quotes about software. It's something we internalized heavily when building Stack Overflow. Getting the details right is the difference between something that delights, and something customers tolerate.
Your software, your product, is nothing more than a collection of tiny details. If you don't obsess over all those details, if you think it's OK to concentrate on the "important" parts and continue to ignore the other umpteen dozen tiny little ways your product annoys the people who use it on a daily basis – you're not creating great software. Someone else is. I hope for your sake they aren't your competitor.
The details are hard. Everyone screws up the details at first, just like Petmate did with the first version of this automatic feeder. And it's OK to screw up the details initially, provided …
you're getting the primary function more or less right.
you're listening to feedback from the people who use your product, and actively refining the details of your product based on their feedback every day.
23 days ago by jonschoning
What Makes a Good Programmer
28 days ago by jonschoning
1. Hits deadlines and if they are missing them they tell you quickly and openly that they cannot make it in the alotted time. It is more about honesty as to where a developer is in a task. I have never seen anyone say you will have to find a way to do it in the time, resources, etc are always shuffled to accommodate these kinds of issues. I always reckon one major task will be hopelessly under-scoped and another over-scoped. Moving resources around is rarely an issue.
2. Hits the spec to completeness. Most bugs are not quality flaws, instead they are spec completion issues. Timelines in projects are usually so short and compressed that hitting a spec to perfection in the time a task is intended means that bugs that are found are not about spec completion issues but real quality flaws; ie bugs.
3. Is productive in new technologies quickly. In the last project we did the team used the technologies; Flex, Actionscript, PureMVC, Java, Javascript, Spring, Struts, JSP tags, DHTML, Dojo, SVG, FXG, XML, E4X, etc, etc. Once you go into maintenance mode and bug fixing; any one person on the team may have to work in any or all of those areas even if they are not familiar with it. Being able to do quality work in new technologies is an under-rated skill.
4. No hand holding. One of the things I dislike is when someone is in an area of code and knows that something needs to be done, but are hesitant to go and make the change because of a fear of breaking something, or not wanting to step on someone else's toes, or they lack confidence to make the change, or they would rather someone else do it which is usually impossible when everyone is busy. I always say, "If you need it, go ahead and do it." I prefer developers with that kind of confidence who will modify code at any level of the technology stack. That isn't everyone's cup of tea but developers tend to harden up quickly and grow in confidence when they are given that expectation and responsibility.
programming
2. Hits the spec to completeness. Most bugs are not quality flaws, instead they are spec completion issues. Timelines in projects are usually so short and compressed that hitting a spec to perfection in the time a task is intended means that bugs that are found are not about spec completion issues but real quality flaws; ie bugs.
3. Is productive in new technologies quickly. In the last project we did the team used the technologies; Flex, Actionscript, PureMVC, Java, Javascript, Spring, Struts, JSP tags, DHTML, Dojo, SVG, FXG, XML, E4X, etc, etc. Once you go into maintenance mode and bug fixing; any one person on the team may have to work in any or all of those areas even if they are not familiar with it. Being able to do quality work in new technologies is an under-rated skill.
4. No hand holding. One of the things I dislike is when someone is in an area of code and knows that something needs to be done, but are hesitant to go and make the change because of a fear of breaking something, or not wanting to step on someone else's toes, or they lack confidence to make the change, or they would rather someone else do it which is usually impossible when everyone is busy. I always say, "If you need it, go ahead and do it." I prefer developers with that kind of confidence who will modify code at any level of the technology stack. That isn't everyone's cup of tea but developers tend to harden up quickly and grow in confidence when they are given that expectation and responsibility.
28 days ago by jonschoning
An IDE is not enough
4 weeks ago by jonschoning
so long as we are programming in decendants of assembly language we will continue to program in descendants of text editors.
programming
4 weeks ago by jonschoning
Blub Paradox
4 weeks ago by jonschoning
An idea developed in an article BeatingTheAverages by PaulGraham (http://paulgraham.com/avg.html). He argues that some languages are more powerful than others and posits a hypothetical middle of the road language called Blub. He describes the gist of the paradox thus:
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.
Most people without the experience of them can't see language features as really useful things. I know an otherwise extremely talented programmer who can't see the value of garbage collection and thinks it simply encourages "lazy programming" even as he struggles to find the right location to delete objects shared and referenced by many others. Are you claiming to be such a renaissance person as to be able instantly to recognize the value and worth of every new programming feature to which you are exposed?
programming
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.
Most people without the experience of them can't see language features as really useful things. I know an otherwise extremely talented programmer who can't see the value of garbage collection and thinks it simply encourages "lazy programming" even as he struggles to find the right location to delete objects shared and referenced by many others. Are you claiming to be such a renaissance person as to be able instantly to recognize the value and worth of every new programming feature to which you are exposed?
4 weeks ago by jonschoning
related tags
3D ⊕ 3Dprinting ⊕ agile ⊕ algorithm ⊕ algorithms ⊕ amd ⊕ android ⊕ anemic ⊕ animation ⊕ anti-pattern ⊕ api ⊕ apple ⊕ architecture ⊕ art ⊕ asp.net ⊕ aspnet ⊕ async ⊕ audio ⊕ autofac ⊕ azure ⊕ backbone ⊕ backbonejs ⊕ backup ⊕ bash ⊕ benchmark ⊕ best-of ⊕ bitshifting ⊕ blog ⊕ book ⊕ bookmarklet ⊕ books ⊕ browser ⊕ bug ⊕ business ⊕ c ⊕ c# ⊕ c++ ⊕ cache ⊕ caching ⊕ career ⊕ cat ⊕ chart ⊕ chicago ⊕ circa ⊕ clojure ⊕ closure ⊕ cloud ⊕ cocoa ⊕ code ⊕ coding ⊕ color ⊕ commonjs ⊕ community ⊕ comparison ⊕ compiler ⊕ complexity ⊕ compression ⊕ compsci ⊕ contextfree ⊕ cookie ⊕ coroutine ⊕ creativity ⊕ css ⊕ culture ⊕ cv ⊕ d3 ⊕ dart ⊕ data ⊕ database ⊕ datastructure ⊕ datetime ⊕ debugging ⊕ demoscene ⊕ deployment ⊕ design ⊕ dev ⊕ developers ⊕ development ⊕ devops ⊕ distributed-programming ⊕ django ⊕ dotnet ⊕ dsl ⊕ duck ⊕ dynamic ⊕ ebook ⊕ editor ⊕ editorial ⊕ education ⊕ emacs ⊕ enumerable ⊕ enumerator ⊕ epub ⊕ erlang ⊕ event ⊕ exceptions ⊕ exercise ⊕ facebook ⊕ faq ⊕ feminism ⊕ finance ⊕ firebug ⊕ firefox ⊕ flask ⊕ forum ⊕ framework ⊕ free ⊕ fsharp ⊕ fun ⊕ functional ⊕ funny ⊕ game ⊕ games ⊕ gc ⊕ gist ⊕ git ⊕ github ⊕ github-watch ⊕ go ⊕ google ⊕ googlereader ⊕ grammar ⊕ graphic ⊕ graphics ⊕ growl ⊕ gtd ⊕ hack ⊕ hackernews ⊕ hacking ⊕ hardware ⊕ haskell ⊕ history ⊕ hn ⊕ hosting ⊕ html ⊕ html5 ⊕ http ⊕ hungarian ⊕ ide ⊕ ifttt ⊕ inheritance ⊕ inspiration ⊕ instagram ⊕ interview ⊕ io ⊕ ioc ⊕ ios ⊕ iptables ⊕ irc ⊕ japan ⊕ java ⊕ javascript ⊕ job ⊕ jobs ⊕ jquery ⊕ js ⊕ json ⊕ kata ⊕ kinect ⊕ language ⊕ languages ⊕ latex ⊕ law ⊕ lecture ⊕ library ⊕ life ⊕ light ⊕ linguistics ⊕ links ⊕ linux ⊕ lisp ⊕ list ⊕ listview ⊕ lit ⊕ llvm ⊕ logging ⊕ lua ⊕ mac ⊕ machine-learning ⊕ machinelearning ⊕ machinelearningblog ⊕ mail ⊕ mailinator ⊕ make ⊕ map ⊕ mapping ⊕ maps ⊕ math ⊕ matlab ⊕ max ⊕ memory ⊕ meteor ⊕ microsoft ⊕ minecraft ⊕ mit ⊕ ml ⊕ mobile ⊕ monad ⊕ music ⊕ mvc ⊕ nasa ⊕ ndesk ⊕ news ⊕ noaa ⊕ node ⊕ nodejs ⊕ nosql ⊕ numpy ⊕ octave ⊕ oo ⊕ oop ⊕ openkinect ⊕ opensource ⊕ options ⊕ orm ⊕ osx ⊕ pairprogramming ⊕ paradigm ⊕ parallel ⊕ parallelism ⊕ parser ⊕ parsing ⊕ pdf ⊕ performance ⊕ photo ⊕ pi ⊕ plugin ⊕ podcast ⊕ poetry ⊕ politics ⊕ postgres ⊕ powershell ⊕ presentation ⊕ processing ⊕ productivity ⊕ programming ⊖ proxy ⊕ pycon ⊕ python ⊕ quadtree ⊕ quotes ⊕ r ⊕ rails ⊕ rank ⊕ razr ⊕ reddit ⊕ redis ⊕ reference ⊕ regex ⊕ repl ⊕ repo ⊕ repository ⊕ requirejs ⊕ rest ⊕ rfc ⊕ robot ⊕ rss ⊕ rsync ⊕ ruby ⊕ scala ⊕ scalability ⊕ school ⊕ science ⊕ scip ⊕ screencast ⊕ scrips ⊕ scripting ⊕ scriptloader ⊕ search ⊕ security ⊕ sed ⊕ semicolon ⊕ server ⊕ sharepoint ⊕ shell ⊕ sitepoint ⊕ sms ⊕ socat ⊕ social ⊕ sociology ⊕ socketio ⊕ software ⊕ solr ⊕ sorting ⊕ source ⊕ spdy ⊕ sql ⊕ sqlserver ⊕ stackexchange ⊕ stackoverflow ⊕ startups ⊕ statemachine ⊕ statistics ⊕ style ⊕ syntax ⊕ tech ⊕ testing ⊕ theory ⊕ tiboe ⊕ tmux ⊕ tool ⊕ tools ⊕ tree ⊕ tutorial ⊕ twilo ⊕ twitter ⊕ type ⊕ unicode ⊕ unix ⊕ ux ⊕ video ⊕ vim ⊕ visualization ⊕ visualstudio ⊕ vs ⊕ webapp ⊕ webgl ⊕ websockets ⊕ websvc ⊕ wiki ⊕ windows ⊕ winrt ⊕ wishlist ⊕ work ⊕ workflow ⊕ world ⊕ wrox ⊕ wtf ⊕ youtube ⊕ zedshaw ⊕Copy this bookmark: