
What Is Code? - 1wheel
http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/
======
dankohn1
I hate to sound hyperbolic, but I can't overstate how impressive this work is.
For me, it evokes nothing so much as Tracy Kidder's The Soul of A New Machine
[0] for opening up an obscure world (the one many HN posters live in, but
obscure to most people). I am amazed both by the technical fidelity and by the
quality of the story telling.

[0] [http://www.amazon.com/Soul-New-Machine-Tracy-
Kidder/dp/03164...](http://www.amazon.com/Soul-New-Machine-Tracy-
Kidder/dp/0316491977/)

~~~
mangeletti
I agree. This is the best piece of writing I think I've ever read on the web.
This touches on everything, and so accurately, and so concisely... this
article is giving me a stroke I think.

~~~
meowface
I've never seen anything like this on a website before. The writing, the
formatting, the structure, the animations; it's near perfect.

~~~
jheriko
are we reading the same article??!?!

the content is quite good but the layout, colour, animations etc. are a mess.

~~~
meowface
There is a fine line between mess and art. :)

~~~
mteruel
And this article just crossed :D

------
clebio
> Writing this article was a nightmare because I know that no matter how many
> people review it, I’ll have missed something, some thread that a reader can
> pull and say, “He missed the essence of the subject.” I know you’re out
> there, ashamed to have me as an advocate. I accept that. I know that what I
> describe as “compilation” is but a tiny strand of that subject; I know that
> the ways I characterize programming languages are reductive. This was
> supposed to be a brief article, and it became a brief book. So my apologies
> for anything that absolutely should have been here, but isn’t. They gave me
> only one magazine.

~~~
fit2rule
Keep writing. The space is there for you.

~~~
clebio
Just to clarify, my earlier comment is a direct quote from the article. I am
not the author, just thought it was an apt anticipation of some of criticisms
in this thread.

------
igravious
This is too freaking awesome!

Isn't that a seriously mind-bendy kind of article to appear on Bloomberg?
Also, isn't it very cool that a whole class of people who may not know a thing
about coding (but may be interested) might get to know something about the
craft and culture?

And it's presented in a very fun, off-kilter sort of way. That must have been
a hell of a lot of work. I actually skimmed the second half and the little
robot told me I read it all in 16 minutes which was not possible and who was I
kidding!

I had a thought the other day while browsing Etsy. If software really is a
craft, could I fashion a bespoke software creation and sell it on Etsy? I know
this might seem like a non sequitur. But, you know, what is code? Why couldn't
I do something like that?

It's such a strange but vital profession. (Seriously, I would have thought
there are a _lot_ more than 11,000,000 professional coders worldwide) and one
that is still coming to terms with itself. Inspiring. Note to self, do not
think outside the box, code your way out of the box.

~~~
pjc50
_could I fashion a bespoke software creation and sell it on Etsy_

There's tindie (etsy for electronics), but due to the infinitely cloneable
nature of code giving it away works much better than trying to sell it for
tiny amounts. In someways the demoscene is this area of software craft for the
sake of it.

~~~
igravious
Thanks for the heads-up on Tindie. Looks interesting.

And I agree with you about the Demoscene. Very much one off creations which is
more what I had in mind. I'm imagining extending this idea to software objects
that people would like to own, that was personalised to them, that had a
strong crafting element, and so on. The reason I'm having trouble articulating
it is because I don't think the category of thing exists (yet?)

------
glenntzke
The activity on the article's accompanying github
([https://github.com/BloombergMedia/whatiscode](https://github.com/BloombergMedia/whatiscode))
is really interesting. Users have suggested edits not only to the code in the
article but even to add citation.

This adds another dimension to the content by including the open source
community such that the subject matter (coders) can influence (and improve!)
their article's content.

~~~
marcosero
Thanks for the link! I had no idea it could have been open sourced!

------
spb
This is supposed to be an introduction just to the _abstract concept_ of code,
yet it includes a section that asks the reader to take a test on whether or
not they agree with the author on the effectiveness of domain-specific
snippets of JavaScript ([http://www.bloomberg.com/graphics/2015-paul-ford-
what-is-cod...](http://www.bloomberg.com/graphics/2015-paul-ford-what-is-
code/#tinder)) - one that replies to your selections with obtuse references to
the code's use of promises and callbacks.

As an outsider, I just love it when I read something presented as an
introductory text and I'm confronted with an elaborate series of self-serving
in-jokes that go "ha ha ha, ha ha ha, you don't know what I'm talking about!"

~~~
brianpgordon
It's just a fun little quiz. I kind of like it as a "reality check" to show
the reader that while they may understand the concepts, the reality is much
more difficult and fraught with subtle considerations. It also serves as a
subtle reminder to readers (who may be the frustrated business-type from the
opening of the article) that there's a reason software projects are so hard
and cost so much money. Software development isn't something you can grok from
reading an article, even a book-length one.

------
merrickread
My Dad always tells me he flat out does not understand what I do. He respects
it, knows it's challenging and fun, but just doesn't get it.

I've sent this to him -- he's about 1/4 of the way through and thoroughly
enjoying it.

This is a very fun read that's worth leafing through

~~~
cordite
My father sent a small comment chain to me as well on a topic like this on one
of his blog posts.

<First guy> June 3, 2015 at 10:12 am I think software developers like to
impress people with how many lines of code they can write.

<Second guy> June 3, 2015 at 3:31 pm That is not true. A good day is when you
leave the office with more powerful software, but fewer lines of code.

<First guy> June 4, 2015 at 4:31 am So why is software always getting bigger ?
Is it because the marketing people want to add new features all the time ?
Does this even apply to free software like browsers and email clients ?

\-----

Personally, I like writing less code, or reducing code to less code. Less to
think about.

~~~
circlefavshape
My personal favourite is talking The Business out of things. Solving issues
without any coding at all!

~~~
idohealth
Sure, it is a problem. But if you reboot the server everyday, it will not
become a problem.

No coding at all required.

------
arxpoetica
> There have been countless attempts to make software easier to
> write...Decades of efforts have gone into helping civilians write
> code...Nothing yet has done away with developers, developers, developers,
> developers.

I still believe. Someday, somewhere, something incredible will emerge for the
right-brained bourgeoisie and literati.

~~~
tolmasky
Theres tons of successes, we just refuse to count them. Photoshop (as hinted
in the article), is a super special purpose language for doing image
operations. It no longer "looks" like coding, so we don't count it as coding
for the masses. _Excel_ is a much more general purpose language used by tons
of "non-coders" (and arguably the most popular programming language on earth).
Again, doesn't (often) look like normal programming, but then again, shouldn't
this be expected? If it looked like normal programming, it would be normal
programming and not successful.

~~~
scrumper
Excel is a perfect example. The core Excel experience is basically functional
programming on a virtual machine with a matrix address space laid out visually
right in front of you. It even looks like traditional programming if you dive
into the VBA stuff, which plenty of non-technical specialists, including MBAs
and managers, do on a regular basis in the pursuit of solving their problems.

Any specialist user willing to invest some time in learning their tools can do
this. A culture develops around it.

And replying to parent: those efforts around teaching 'civilians' to code are
probably misguided. The investment needs to be in adding scripting and
programmability into existing line of business tool, not on encouraging people
to sit in front of an isolated REPL disconnected from any business value or
context.

~~~
seanp2k2
+1; many companies have tons of internal processes which rely on Excel sheets.
When these become painful enough, another team (internal applications) can
come in, evaluate the situation, and build out a custom solution which uses an
actual database, but Excel still provides a ton of value, since at the most
basic level it's a database table with no validation and a free-form schema.

The downside is, when all you have are Excel sheets, everything looks like
rows and columns (and not e.g. objects with behaviors). If Excel had more
robust import/export mechanisms that normal users could understand (e.g.
built-in REST client with JSON + XML serializers + many database adapters w/
lots of helpful wizards or tools to guide you), it'd be way more powerful.
Then again, if someone is at the point where they'd be able to look at some
JSON and compare it with their spreadsheet and be able to describe the
mappings, they're possibly better off going to some training sessions on
${your favorite programming language} to learn how to do this the easy way.

~~~
scrumper
Nicely put. It's actually rather agile: Excel becomes a prototyping tool to
allow the business users to describe what a solution looks like, helping to
guide development of that custom solution. Sadly few IT organizations are
confident enough to trust their users and work like this, instead starting
from zero with a pedantic requirements gathering process before building
something less flexible and useful. The problem is partly a lack of domain
knowledge in the internal apps team (which is understandable), and partly a
kind of technology-first arrogance which prevents that team from making use of
the intellectual capital originated by the business in their spreadsheets and
processes (which is inexcusable really).

Ideally, an organization comes to understand that Excel is a fantastic tool at
the frontier where the business needs to adapt rapidly, but once a process is
fixed, replacing it with a fixed system is worth the tradeoff in reduced
operational risk.

To your second para., much of that falls to internal apps to provide decent
RESTful APIs across their systems. Some companies are doing this, in the
process getting to a point where the Excel frontier is just analyzing and
reporting on data, not acting as a source in its own right. Then you have
traceability for every data point in the organization, and you're in a pretty
sweet spot operationally.

------
markbnj
I've always wanted to attempt this piece: to take all the many layers of
abstraction that we deal with, parse them, convert them, and render them
through my formidable linguistic talents into one elegant, beautifully
constructed piece of prose that magically makes it all comprehensible to lay
readers. I haven't yet attempted it, but I give props to Mr. Ford for trying.
I'm not surprised he ended up with a novella.

Oh, and why does bloomberg.com want to use my web cam?

~~~
apaprocki
Worth noting -- it is roughly 38k words and is the longest piece ever
published by Bloomberg.

~~~
markbnj
Yes, it will tell you that at the end, and mock you if you arrive there too
quickly to have read it all :).

~~~
Dewie3
Does this brilliant webpage not know the concept of _skimming_ and related
approaches?

~~~
loganlucid
for some readers is skimming is like just skimming but not understanding the
true essence of the article...and for some readers they like to read it a loud
than with eye...I believe every human has their speed and capacity to do any
task..in this case some people raise their speed of reading after reading
certain paragraphs(not skimming) but reading literally.....and then they skim
in the middle...if the speeds drops out...they read literally again....flow
goes like a pulse....

------
egocodedinsol
What an ambitious and beautiful piece!

A story like this is probably dangerous - it touches on so many ideas everyone
will find something to gripe with, and it's hard to make a comprehensive and
consistent story.

The last time I read something that so awesomely bridged high level
abstractions and low-level implementations with a human touch was Godel,
Escher, Bach (albeit with a very different feel). Well done.

~~~
radicality
Interesting, I wouldn't put this anywhere near the level of Godel, Escher,
Bach.

If you've read GEB and do software development, what actually did you find
interesting and beautiful in the article? I've just finished reading the whole
piece and I don't think I've learned much at all. Presumably as someone who
already knows programming and theoretical CS I'm not the target audience, but
then I'm also surprised why this has so many upvotes here on HN.

~~~
jameshart
This article is a sociology of code, not a technical manual. You absolutely
could get a lot out of it.

I get the GP's point about this being reminiscent of GEB, not in the sense
that it covers the same topics or is at the same 'level', but in that it
describes an intangible idea by approaching it from different angles and
describing that same core concept from the shadow it casts in different
directions. In GEB that core concept of self-reference was tackled from
multiple perspectives so that an image of this common theme emerges as you
read these different views onto it. Similarly, this article tries to conjure
an image of 'code' as a cultural artifact, by portraying the shapes it casts
in different directions - on the people who create it, the people who have to
fund it, the tools and artifacts it generates. And it does so, like GEB, with
wit and intelligence.

------
ryandrake
It's 2015. The audience of this article shouldn't even exist. The reader, as
described in the article, is a VP who has so little understanding about what
it is his company does, that the only meaningful abstraction he can mentally
picture is that of his employees "burning barrels of money".

Imagine an auto company VP who says "I don't know anything about engines and
drivetrains and all that technical stuff. All I know is that when you guys are
in a meeting talking about your variable valve timing system, all I smell is
money burning!"

That would not be acceptable. Yet, here we are, over 30 years after the
original IBM PC was released, and there's still a corner-office audience for
"what is a computer?"

~~~
michaelvkpdx
You're living in a pretty isolated world, my friend. I'd say 90% of my friends
would be the audience for this. I've been coding 20 years, most of my friends
are successful, grad-degree educated people in a variety of fields, and some
of them are even my coworkers.

Who is supposed to teach people what code is? Our schools? Who with a CS
degree and programming experience would willfully choose to teach in the USA's
education system?

Or maybe the companies who make all their money from code? I think not- it
wouldn't help the economic position of Apple, Google, FB, or Microsoft if
everyone knew what code is and how it works. It strengthens the tech economy's
stranglehold on society when code is treated as something inscrutable.

So there's really very few resources for people- even educated, successful,
technically literate folk- to grok "what is code?"

Many coders would do well to read a similar article, if there was one, called,
"What is Society?"

~~~
ht_th
I think that Parent made the observation that it is sad that in our
information society people (in responsible positions (regarding ICT)) don't
know about the fundamentals of the information society. At least, that's what
I took from it and I concur.

We, as a society, should have started integrating computational thinking
(Wing, 2006) as a core competency in the k-12 curriculum from the late 1980s
onwards. We didn't.

 _anecdote_

In 1991, I was in 5th grade, I saw the first computer enter the classroom in
my primary school. It wasn't used but for some remedial mathematics training
for a students or two and I believe the teacher did a computer course with it.

In 2010 I became a high school computer science teacher. There were three
computer rooms (about 30 computers each) for the whole school (of about 1500
students) running windows XP + IE 6. Besides my class, the computer rooms were
mostly used for making reports and "searching for information". Some
departments did have specialized software installed (most of which came with
the text books), but used it sparingly at best. On top of that, these software
was mostly simple, inflexible, mostly non-interactive, non-collaborative, and
"pre-fab" instructional materials. Often this software was not much more than
a "digitized" version of parts of the text book with some animations, games,
and procedural trainers mixed in.

~~~
HeyLaughingBoy
Another anecdote.

In 2015 my teenager will start High School in a _small, rural_ , school
district and each student has a Chromebook. No, I don't know what they will be
used for besides googling information, but times are changing.

I emphasized small and rural for a reason.

~~~
Alupis
I know teachers at the local school district in my city. Chromebooks are used
extensively in classes (elementary school, even down to 2nd grade) for
researching (googling), typing practice, typing book reports, online testing,
some educational games, reading, etc. They even have some educational websites
they use to learn super basics of programming.

It's really amazing stuff. I wish these sort of programs existed in the US
back when I was in elementary school... back then, we were lucky if we got 30
minutes a week to play with Claris Works in the school's only computer lab.

------
1wheel
Source for accompanying interactives -
[https://github.com/BloombergMedia/whatiscode](https://github.com/BloombergMedia/whatiscode)

~~~
hodgesmr
[https://github.com/BloombergMedia/whatiscode/blob/master/scr...](https://github.com/BloombergMedia/whatiscode/blob/master/scripts/main.js#L203)
which outputs:
[https://dl.dropboxusercontent.com/s/fbppsat45fdzg25/Screensh...](https://dl.dropboxusercontent.com/s/fbppsat45fdzg25/Screenshot%202015-06-11%2008.55.46.png)

------
stephengillie
I think of Minecraft as a visual representation of a database. Every block you
see has a set of values, starting with the 3 that determine its location
within the world (coordinates) and extending to include block type, which
determines other values.

And too, even the open spaces. For Minecraft reminds you that a block can
occupy any space. Indeed, an open space is a set of blocks whose block type is
"open", which makes it both transparent to light sent from neighboring blocks,
as well as not blocking player movement.

~~~
whyaduck
Most games are essentially just massive databases of pretend stuff with an
enjoyable alternative to SQL as the interface.

------
TruthSHIFT
I love how the page calls you out for skimming it instead of reading it.

~~~
Too
Huh, is this what caused the whole page to go pixelated and ask for permission
to use my camera each time I changed orientation on my tablet? I had to reload
the page each time this happened and scroll down to where I was before. Very
annoying.

------
thebiglebrewski
Computer don't hurt me, don't hurt me, no more

~~~
lordnacho
The lyrics to the original actually make sense for this altered version:

Oh, I don't know why you're not there I give you my love, but you don't care
So what is right and what is wrong Gimme a sign

\---

Oh, I don't know, what can I do What else can I say, it's up to you I know
we're one, just me and you I can't go on

source:
[http://www.lyricsondemand.com/onehitwonders/whatislovelyrics...](http://www.lyricsondemand.com/onehitwonders/whatislovelyrics.html)

------
leaveyou
It's easy: the code is that part of the computer which can't be grabbed and
slammed but only cursed.

~~~
OneMoreIdol
It's easy to me: the code is the part of the computer which can't be grabbed
or slammed but only crushed.

That's why I crush it. I crush code.

------
aswanson
I did not expect this good of an article on this subject from a business
publication. Well done.

~~~
fargo
bloomberg is mainly a technology company

~~~
apaprocki
We make the vast majority of our money from selling our software subscriptions
and have ~4k employees in R&D. Depending on what data you use[1], if we were a
public company we'd be the 4th largest in the world by revenue.

[1]:
[http://en.wikipedia.org/wiki/List_of_the_largest_software_co...](http://en.wikipedia.org/wiki/List_of_the_largest_software_companies#Forbes_Global_2000)

(My intention is not to bikeshed over who is or isn't in the "Software &
Programming" industry or specific ranking, but to convey a sense of scale)

------
base698
I kind of like my answer better: [http://qr.ae/7NEnT9](http://qr.ae/7NEnT9)

The whole post is just a stream of consciousness brain dump that a layman
would never understand. I believe it's possible to explain these things
without circular reasoning.

~~~
boken
"What are the major programming languages, and what are they used for?" is a
different question than "Can you tell me what code is?" The second can include
the first. But if your and Paul Ford's answers were swapped, both questioners
would have good reason to say, "That's helpful but not what I was looking
for." To extend your kitchen metaphor, you haven't mentioned anything about
why or how your instructions would ever _work._ You've left out the compiler,
interpreter, executor: the human.

Granted, I think Ford expanded the domain of his question a little further
than he needed to, for the sake of what looks to be _fun_. And I think he
occasionally picks a piece of jargon where a clearer, more ordinary word would
have done just as well—though I'm not in the mood to dive back into the
article to find a case.

------
andars
In my opinion, this is what society today needs. I don't feel like we need
everyone to be able to code, but rather just have a sense on some level that
computers are nothing mysterious or magical, unconquerable or
incomprehensible, but rather just machines of human creation.

~~~
snoman
Not sure if we were reading the same article or not, but this is not "what
society needs." While there is a part of me that loves computing and wants to
share it with the world, I also realize that the nuances of compilation or
futures are entirely inside baseball and irrelevant to the vast majority of
society at large.

The computer, for most people, is a tool. A means to an entirely unrelated
end.

------
Kabukks
Holy CPU time! That site consumes 100% of my CPU (presumably 100% of one core)
whenever it is in the front tab (Firefox/OS X).

Anyone else experiencing that or is it just my laptop running wild?

~~~
cmorgan31
You'll see similar resource consumption when using event listeners tied to the
mouse movement. It's generally not noticed by the general populace, but gives
every developer a pause. The page does seem to struggle at times.

~~~
72deluxe
Very informative, thanks. In native land we can listen to mouse motion but it
is more CPU friendly to have a timer and poll the mouse position periodically,
particularly if the location of the cursor causes further processing (like
working out what data to display in a popup hint). The good thing with the
mouseEnter / mouseLeave is that you can stop the timer and only restart
polling when they enter again.

Is there a way of doing this on web pages or is it really still just callbacks
for mouse motion?

------
hallac
You need to Konami code this bad-boy.

~~~
ChrisArchitect
wow. heh. strange world we live in when the result of that is on bloomberg.
What a time to be alive.

~~~
graedus
Their 404 page gif is still their best work, but this is a close second.

~~~
ChickeNES
Their 500 page is also pretty great

------
ErikRogneby
"That’s how change enters into this world. Slowly at first, then on the front
page of Hacker News."

How meta.

~~~
tormeh
I didn't really understand that part. Care to explain?

~~~
Willson50
Aggregate sites like Hacker News and Reddit make distribution of news and
ideas very quick and viral compared to more organic growth such as word of
mouth and google.

~~~
ErikRogneby
Not just distributed very quick but deemed worthy or unworthy very quick by
the pseudo-meritocracy that is the "upvote".

------
taternuts
I had no idea they made an hour long educational video on windows 95 with the
cast of Friends! That is awesomely 90's. This is a really cool write up,
clearly a lot of work went into it

------
errtnsd
Imagine a world where everyone has their own social version of a Github page
instead of a Facebook wall.

~~~
seanmcdirmid
Imagine a world where Wikipedia isn't an encyclopedia, but a crowd-sourced
collection of all code meticulously indexed and documented that could be
written for one language.

~~~
erikb
Imagine there's no heaven (It's easy if you try)

------
blisse
This is the best write-up explaining software I have ever seen. Wow.

------
skeuomorf
Smash the patriarchy! Check the console.

------
spb
[http://www.bloomberg.com/graphics/2015-paul-ford-what-is-
cod...](http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/#fn.25)

> You know what, though? Cobol has a great data-description language. If you
> spend a lot of time formatting dates and currency, and so forth, it’s got
> you. (If you’re curious, search for “Cobol Picture clause.”)

[https://www.google.com/search?q=%E2%80%9CCobol+Picture+claus...](https://www.google.com/search?q=%E2%80%9CCobol+Picture+clause.%E2%80%9D&oq=%E2%80%9CCobol+Picture+clause.%E2%80%9D&aqs=chrome..69i57&sourceid=chrome&es_sm=0&ie=UTF-8)

What am I supposed to be looking at here?

------
uptownJimmy
Superb writing. I wish all professional writers could write this well.

~~~
munificent
Paul Ford really is in a class all by himself. Everything I've read by him is
truly wonderful.

As a writer, it's both inspiring ("look how amazing nerdy non-fiction can
be!") and soul-crushing ("look how much better someone else is at writing!").
I try to focus on the former, but, man, he really makes the rest of us look
like Celene Dion showing up at your dive bar's shitty karaoke night.

------
krupan
tldr; watch the video:
[http://www.bloomberg.com/news/videos/2015-06-10/invisible-
co...](http://www.bloomberg.com/news/videos/2015-06-10/invisible-computer-
code-runs-your-life)

------
applecore
What a strange, long, rambling novella on programming languages.

------
xythobuz
I like the idea, but is there really no way to mute the audio? Sadly I did not
finish the article because of that.

~~~
AlphaGeekZulu
"is there really no way to mute the audio?"

There are so many ways to mute my computer, I wouldn't even know how to list
them all. But on top of the list I would start with the volume keys on the
keyboard and then with the volume panel in the menubar and then with the audio
panel of the system preferences. Towards the far end of the list I would cut
the wires to the speakers.

~~~
xythobuz
Very funny... I currently have other audio playing on my computer that I don't
want to stop.

~~~
duiker101
If you are on windows you can right click on the tray icon and for the volume
and open the volume mixer where you can lower the volume for specific
applications, such as your browser.

~~~
squeaky-clean
But you can only change the volume of the entire browser, not specific tabs.
If you're playing music in another tab, you can't just turn down one tab.

~~~
willhinsa
You can mute single tabs in Chrome easily:

[http://fieldguide.gizmodo.com/mute-noisy-tabs-in-google-
chro...](http://fieldguide.gizmodo.com/mute-noisy-tabs-in-google-
chrome-1683215637)

Type this in to the address bar: chrome://flags/#enable-tab-audio-muting

Then click Enable under "Enable tab audio muting UI control."

------
mdwrigh2
A couple parts of it remind me a lot of JBQ's post on "dizzying but invisible
depth":
[https://plus.google.com/+JeanBaptisteQueru/posts/dfydM2Cnepe](https://plus.google.com/+JeanBaptisteQueru/posts/dfydM2Cnepe)

------
danso
Part of me looks at this and thinks, "This is preaching to the
choir"...because while the engineer in me appreciates all the layers and
explorations...It must be incredibly bewildering to anyone who is not a coder,
which is the ostensible audience given that the story starts off with, 'We are
here because the editor of this magazine asked me, “Can you tell me what code
is?”'

But then I see the interactive circuit simulation and think "Fuck it, who
cares, this is awesome!". Designing circuits is one of those things that, if I
were a self-learned coder instead of a comp. eng major, I would've never
delved into...yet learning how to build an adder circuit and getting an
appreciation of the most basic building block of computation (and how
surprisingly complex it is to just add 1s and 0s) is a profound lesson that I
think is essential for me, personally, to really grok programming. All the
sections about culture and conferences and etc. are a little bit off-field for
me...it's not that I don't think that code and life and human thought and
behavior aren't intertwined... * I just think the discussion about conferences
reads as if the author doesn't realize that all disciplines spawn conferences
and conferences culture. There's nothing particularly unique about code
conferences. Not the sexism, not even the nerdiness.

I would love to see the OP's editor respond in a not-quite-as-length essay.
What did they learn about code after reading the piece that they didn't
understand before?

edit: * I'm emphatically _not_ arguing "Oh but everyone does conferences
shittily so tech conferences shouldn't be shamed". Just that having it in this
"What is Code" essay makes it seem as if it's a notable "feature" of
programming...but that understates the problem by an order of magnitude.
Sadly, it's a feature in most every discipline, and the inherent feature is
the gender imbalance, not the topic of the conference.

edit: Also, I wished that the section on Debugging was much higher than it
is...Robert Read's "How to be a Programmer" [1] makes it the first skill, and
that's about the right spot for it in the hierarchy of things. Maybe it gets
overlooked because it has the connotation of something you do after you've
fucked up. But, besides the fact that programming is almost inherently about
fucking up, the skill of debugging really underscores the deterministic,
logical nature of programming, the idea that if we have to, we can trace
things down to the bit to know exactly what has been fucked up in even the
most complex of programs. And that's an incredibly powerful feature of
programming...and not very well-emphasized to most non-coders.

[1]
[http://samizdat.mines.edu/howto/HowToBeAProgrammer.html](http://samizdat.mines.edu/howto/HowToBeAProgrammer.html)

~~~
aswanson
One of the few worthy things I felt I got out of school was the moment I
grokked the whole stack from sequential logic to the program counter and
control logic from a cpu, how each clock tick formed a new circuit. That was
really mentally expanding. I got it from reading a prescribed book for a class
I wasn't taking from a professor who was a tool, so it is possible to learn
these things outside of class. In fact, that's where the real learning, IMO,
happens.

~~~
MrOrelliOReilly
What book? For those of us not there yet :)

~~~
aswanson
I dug around and cant find it; I graduated a while ago. But, the more I
thought about it, it was actually 2 books: One on how to design a cpu on an
fpga, similar to this one:[http://www.amazon.com/VHDL-Implimentation-16-bit-
microproces...](http://www.amazon.com/VHDL-Implimentation-16-bit-
microprocessor-
Digital/dp/3659257389/ref=sr_1_26?s=books&ie=UTF8&qid=1434042743&sr=1-26&keywords=fpga)
And another book on digital design, specifically, digital sequential circuits.
If you google that term you will find a few links to pdfs to study. Finally,
"Computer Organization and Design" by John Hennessey is very recommended.

------
godisdad
baby don't hurt me baby don't hurt me no more

~~~
stigi
For reference: What is love by Haddaway
[https://www.youtube.com/watch?v=K5G1FmU-
ldg](https://www.youtube.com/watch?v=K5G1FmU-ldg)

------
tempestn
Was the bit about PHP standing for Personal Home Page a joke? I always thought
it was "PHP Hypertext Preprocessor". The coolest thing about PHP is the
infinite recursion in its name!

~~~
jmccree
[https://en.wikipedia.org/wiki/PHP#Release_history](https://en.wikipedia.org/wiki/PHP#Release_history)
It was PHP 1.0, then PHP/FI 2.0, then became the PHP Hypertext Preprocessor at
PHP 3.0 I believe.

------
yellowapple
The article ended up just yanking my Firefox session to somewhere in the
middle of the page, followed by some Clippy expy nagging me about how fast I'm
supposedly reading the article.

------
Tycho
I think of it as a beautiful, colourful, crystalline structure.

------
alanrahn
Very interesting read... I enjoyed it.

One thing I noticed though is that the author is definitely stuck in the old
"Microsoft is the great Satan" mindset. If he ever finds out about all the
open-source stuff MS is doing these days under Satya Nadella, I think his head
would probably explode.

He doesn't know what to say to a C# developer (nothing in common), but
automatically trusts a Python developer? Really? _sigh_

------
Erwin
I like Paul Ford -- first thing that made me subscribe to his Medium feed was
this piece about brief, remembering and old computers:
[https://medium.com/message/networks-without-
networks-7644933...](https://medium.com/message/networks-without-
networks-7644933a3100)

------
rza
Anyone know what happens when you allow bloomberg.com to use your camera when
you finish reading the article?

~~~
ZoZoBee
Can't be good, if Bloomberg is for it

~~~
recursive
Do you consider to be a photo for your certificate of achievement to be good?

~~~
ZoZoBee
Are you naive enough to not believe the photo will be saved along with a host
of other metaData to bloomberg's server?

~~~
rdrey
Well, you could read the source of course, to see whether the photo data is
sent to the server or whether the cert is generated client-side. And then
there is this:
[https://github.com/bloombergmedia/whatiscode/](https://github.com/bloombergmedia/whatiscode/)

------
ricklancee
The scroll performance was bothering me so much i had to add transform:
translateZ(0); to the #background-canvas element of the page to stop the
screen painting on every f __king scroll; to continue to read in peace without
my eyes bleeding. Great article though :)

------
ghshephard
I had to switch to view/source to read the article. Halfway through there was
a shopping cart on wheels obstructing the text (ironic).

* <div class="videoWrapper">
    
    
        <div class="videoWrapper2">

<script src='//cdn.gotraffic.net/projector/latest/bplayer.js'>BPlayer(null,
{"id":"P4_i7PihRGiWcPh3gdNMhg","htmlChildId":"bbg-video-
player-P4_i7PihRGiWcPh3gdNMhg","serverUrl":"[http://www.bloomberg.com/api/embed","idType":"BMMR","autopla...](http://www.bloomberg.com/api/embed","idType":"BMMR","autoplay":false,"video_autoplay_on_page":false,"log_debug":false,"ui_controls_popout":false,"use_js_ads":true,"ad_code_prefix":"","ad_tag_gpt_preroll":true,"ad_tag_gpt_midroll":true,"ad_tag_sz_preroll":"1x7","ad_tag_sz_midroll":"1x7","ad_tag_sz_overlay":"1x7","ad_network_id_preroll":"5262","ad_network_id_midroll":"5262","ad_network_id_overlay":"5262","ad_tag_cust_params_preroll":"","ads_vast_timeout":10000,"ads_playback_timeout":10000,"wmode":"opaque","use_comscore":true,"comscore_ns_site":"bloomberg","comscore_page_level_tags":{"bb_brand":"bbiz","bss_cont_play":0,"bb_region":"US"},"use_chartbeat":true,"chartbeat_uid":"15087","chartbeat_domain":"bloomberg.com","use_share_overlay":true,"share_metadata":{"canonical_url":"http://bloom.bg/1GzwRDU"},"vertical":"business","ad_tag_overlay":"business/videooverlay","zone":"video","source":"BBIZweb","module_conviva_insights":"enabled","conviva_account":"c3.Bloomberg","width":640,"height":360,"ad_tag":"","ad_tag_midroll":"","offsite_embed":false}\);</script>)
</div>

    
    
        </div>

*

Also - I have no CPU activity at all, so presumably some plugins that are
running for others, aren't being executed in my copy of chrome.

~~~
skinofstars
Sounds like a better experience than on Firefox, which fails to load anything,
even text, past the first video.

------
spb
> Smalltalk’s history is often described as slightly tragic, because many of
> its best ideas never permeated the culture of code. But it’s still around,
> still has users, and anyone can use Squeak or Pharo. Also—

>

> 1\. Java is an object-oriented language, influenced by C++, that runs on a
> virtual machine (just like Smalltalk).

> 2\. Objective-C, per its name, jammed C and Smalltalk together with no
> apologies.

> 3\. C# (pronounced “C sharp”) is based on C and influenced by Java, but it
> was created by Microsoft for use in its .NET framework.

> 4\. C++ is an object-oriented version of C, although its roots are more in
> Simula.

>

> The number of digital things conceived in 1972 that are still under regular
> discussion is quite small. (It was the year of The Godfather and Al Green’s
> Let’s Stay Together.) The world corrupts the pure vision of great ideas. I
> pronounce Smalltalk a raging, wild, global success.

Except that these examples are "object-oriented" in almost _none_ of the ways
Smalltalk was object-oriented:
[http://www.paulgraham.com/reesoo.html](http://www.paulgraham.com/reesoo.html)

The specious reasoning on display in this paragraph is almost _offensive_ in
its glib uncomprehension. Calling Smalltalk "a raging, wild, global success"
because modern programming languages call themselves "object-oriented" is like
saying women in technology are well-represented because Ada Lovelace was the
first programmer.

I get that it's supposed to be tongue-in-cheek, but like the rest of the
writing in this article, it's supposed to be tongue-in-cheek in a way that
gestures toward what the author _actually thinks_. In this case, what it's
gesturing at is the notion that Smalltalk has had a large-scale tangible
influence (if not wholesale adoption) on modern programming languages, which,
if you actually take the time to understand the subject, is _just not true_.

------
apaprocki
The print edition has landed!

[https://twitter.com/ftrain/status/609388625596416001](https://twitter.com/ftrain/status/609388625596416001)

------
thephyber
The Charlie Rose interview about this piece:
[http://charlierose.com/watch/60575137](http://charlierose.com/watch/60575137)

------
booleanbetrayal
> “No,” I said. “First of all, I’m not good at the math. I’m a programmer,
> yes, but I’m an East Coast programmer, not one of these serious platform
> people from the Bay Area.”

seriously?

~~~
ianphughes
That jumped out at me too. It colored the remainder of my reading experience.

~~~
booleanbetrayal
yeah ... trying to put it behind me. this has otherwise been a great high-
level introduction to coding.

------
kylehotchkiss
[http://twitter.com/whatiscode](http://twitter.com/whatiscode)

------
spitfire
I would have _loved_ the new Safari mute features on that page....

How dare you pollute my ears with garbage without a mute option.

------
matwood
Fun article. Even to this day sometimes I look at the software we have all
built and wonder:

> It’s amazing any of it works at all.

------
thuuuomas
Resizing my browser window (Firefox 38) in the middle of reading causes a
section of the story to loop infinitely.

------
thomasrossi
Code is a demonstration, the ipothesis are the requisites. Actually, the test
class is the proof!

------
blahblah3
very cool article

although to a layman I would try to answer "what is code" more simply: code is
just instructions.

instructions for how to tie a windsor knot or cook a recipe or play a piano
piece can be thought of as "code" executed by the human.

------
mkoryak
i viewed source to see how they did the custom skin and noticed this:

    
    
        if (!console.log) console.log = function(){}
    

shouldnt it be if(window.console) ?

------
visarga
> It’s a comedy of ego, made possible by logic gates.

------
uhwhat
Anyone else find the easter egg ?

(..old school video game code)

------
kul_
What a cpu and memory hog that page is!

------
tolmasky
Many disclaimers:

1\. This clearly took A LOT of work, and I have not finished reading it. I
intend to, but as another comment calculated below, that will take around 127
minutes. This comment is simply about the beginning.

2\. I'm not 100% certain yet what the intended goal of this article is, so I
may just be off base. That being said, my criticisms should be interpreted
more as questions, since I'm deeply fascinated with how to make programming
more accessible. I hope they are taken as such, and people share their
experiences/successes/failures in getting people to understand "what we do".
Again, like other commenters here I have suffered the fate of parents not
really understanding what you do (unlike the even superficial understanding of
what a physicist does).

3\. People learn differently, this is me pretending to not know anything and
reading this article. It is thus flawed on two axises: I can't know for sure
how I would have taken it in, and even if I did, it may be great for most
people but bad for me.

All that being said, I had a few issues with this article('s beginning) if the
goal is to make programming seem understandable to non-programmers. It seems
to jump around a lot at the beginning and focus on just how complex everything
is. If the goal is "programmers are justified in their work, look how complex
everything they deal with is!", then this may be an OK approach. However, if
the goal is to help them understand what we do day to day, it may not.

Some examples:

1\. The early references to math. I once upon a time thought math was a pre-
requisite to programming. I have now met enough awesome programmers that are
absolute rubbish at math that I no longer believe that to be true. I believe
referring to the "math" of things a lot scares people off (makes it seem like
"one of those math things math people do" and inaccessible, when in reality
your everyday programmer does not do a lot of (complex) math).

2\. The early reference to circuits, compilation, and keyboard codes. This is
a tremendous amount of scope that is unnecessary in my opinion, and just makes
everything seem so obtuse. Showing keyboard codes goes a long way in conveying
how much a computer does, but I feel is very confusing in relation to
programming. I don't deal with "keyboard codes". We could also get into for
example the actual hardware and how even having to deal with denouncing a key
is hard! But I think everyone would see why that isn't great for the
(introduction) of a programming explanation.

3\. The circuits I believe are pretty and let you do things interactively, but
I have a hard time believing they convey any information to people not
familiar with programming. No one knows what XOR means (which you can flip the
gates to), and just furthers the idea that code is this weird incantation we
do. More putting them in "awe" of programming than understanding it.

Then again, I've been criticized for relying to heavily on analogy. My
explanation would probably start with a lot of hand waiving: "lets tell the
computer to get a sandwhich shall we?", then trying to get deeper bit by bit,
etc. Others have probably tried this and failed, so I am genuinely curious if
people walk away from this article feeling like they have a better
understanding of things.

------
lxe
"If you’re old enough to remember DOS, you know what a command line is."

This is a joke right?

~~~
toephu2
why is it a joke? it's true.

------
bradezone
TLDR, good lord

------
curun1r
I would try to explain it as levels of abstraction and how they extend beyond
the computers that execute the code. You can go down through the levels of
abstraction, 1 by 1, until the point is made rather than attempting to start
from the bottom and work up.

So, for example, when talking to the non-technical executive, the first level
of abstraction is the technical expert that tries to explain complex technical
issues. Below that, there might be a technical management layer that deals
with technical issues on a more granular level, but still isn't looking at the
code. Below that there's the actual developers who are writing code and are
concerned with the actual logic the computer is executing. Below that are the
framework authors that abstract away the common parts of writing an
application of a certain type. Below that are the language platform authors
who write compilers or interpreters that translate the code typed by the
programmers into a format that either the computer or a lower-level
abstraction (LLMV, etc) deals with. At this point, it's probably not necessary
to go any lower, but you can go all the way down to CPU/machine architecture
level, if necessary.

The key point is that even highly-technical people have to trust the layers of
abstraction below the point where they have full understanding. I've been
coding for over 20 years and I still only have a cursory understanding of how
my compiler is translating the code I write into machine code, let alone how
the actual hardware that runs the code. I took EE courses in college and
understand the theory, but the implementation by the folks at Intel and other
hardware vendors is opaque to me and I'm forced to trust that it works.

The coders employed by your company may be able to dig into framework code,
but the chances are that they're fully trusting the runtimes that they work
with. That trust may be the result of a well-earned reputation or through
testing that the claims made by the language runtime are empirically true, but
it's still trusting something that they're unequipped to verify themselves.
This need to trust bubbles all the way up to senior management. The systems
are just too complex for anyone concerned with the finished product to
understand the whole picture.

That means that, as an executive, you're likely trusting your senior technical
leadership. The only way you avoid doing that is to dig in and better
understand the abstraction layer they're providing. You can also make that
trust easier by doing the same sorts of things that a coder does with their
language runtime...give tasks to your abstraction layer and test whether
they're completed successfully. And, when those tasks are not completed
successfully, don't accept techno-babble responses, dig in to understand the
wheres and whys of where things broke down. Likely, the chain of trust of
those abstraction layers was broken at some point...figure out where that
point was so you can prevent it from happening again.

Every abstract layer adds uncertainty to the system. A CPU engineer can tell
you how long a small task will take within a ns or so. A compiler engineer can
tell you how many CPU cycles an expression will result in and compute an
approximate time for a given processor within microseconds. And it continues
as you go up the chain until you're talking to senior management and he's
giving you swags with a margin of error of months. Understanding this goes a
long way towards explaining the behaviors that are so confusing to the non-
technical executive. It's intimidating, but the good news is that many of the
skills of a good manager are what's necessary to achieve the necessary level
of demystifying. The way that you begin to understand these layers of
abstraction is through inquiry. Ask the right questions and, over time, you'll
understand more and more of how software development happens.

------
minusSeven
awesome

------
benihana
Ignoring the content, the structure of this article is amazing. It feels like
an entire magazine in a single essay. The background animations that change as
you scroll, the contextual content (try scrolling really fast). I'm not even
all that keen on the bright oversaturated aesthetic, but it's just so cool.
I'd love to see a short piece on how they made it.

~~~
thisjepisje
Have you seen their error pages?

[http://www.bloomberg.com/lookathis](http://www.bloomberg.com/lookathis)

~~~
strange_quark
Also this one [http://www.bloomberg.com/500](http://www.bloomberg.com/500)

~~~
loganlucid
->I'm not even all that keen on the bright oversaturated aesthetic thats right

~~~
Kalium
I'm thrilled that they dare to have an aesthetic that hasn't been proven on a
billion other sites.

------
michaelvkpdx
Intro articles like this do a lot to reveal biases and misunderstandings. Like
with Java.

The article says "Java= enterprise" but I can tell you the best user
experiences I ever saw delivered over the web were those done with Java Web
Start (not applets- applications launched in a JVM from the web). I developed
several in the day that continued to run for years- because users loved them
and they were safe and secure.

Why Web Start didn't take over, I have no idea. It was also a superb platform
for mobile delivery.

~~~
spb
> Intro articles like this do a lot to reveal biases and misunderstandings.

This is one of the reasons I barely recommend any intro articles in Lean Notes
([http://www.leannotes.com/](http://www.leannotes.com/)): almost every single
one is just a stream of incomplete and incorrect statements about how the
world works, based on the author's myopic personal experiences.

Rather than properly generalizing and consolidating what needs to be said to
convey a full understanding of the topic, most intros settle for the first
example they can think of that could be _remotely construed as related_ to the
words they've previously used for whatever subject, regardless of whether it
has meaning _in any context_. (Example: saying that type safety prevents you
from trying to "multiply seven by cats".)

It seems like a pretty Dunning-Kruger thing: the less broad your knowledge is,
the more justified you feel in writing an introductory text to the field.

The only time I've ever seen somebody _actually qualified_ to write an
introductory text actually _doing_ so (as I can immediately recall) is Charles
Petzold's [Code: The Hidden Language of Computer Hardware and Software][Code]
(although I suspect, from the few excerpts of it I've seen, that Brian
Kernighan's "D is for Digital" is good, too).

[Code]: [http://www.amazon.com/Code-Language-Computer-Hardware-
Softwa...](http://www.amazon.com/Code-Language-Computer-Hardware-
Software/dp/0735611319/ref=sr_1_1?ie=UTF8&qid=1434047095&sr=8-1&keywords=code+petzold)

------
notNow
I can't understand the rationale behind this gaudy redesign job that Bloomberg
carried out. I just can't wrap my head around it. It just violates everything
that I know about web design and usability for news/corporate
websites/portals.

Maybe they were trying to pull off a Craigslist here but still I can't really
stomach these changes.

~~~
pacofvf
This is not the main BBG website, but yeah I don't like the new BBG Home page
design either, this post design (its a post for bbg/graphics) is actually
really awesome and its main purpose is to be stereotypical "nerdy" .

------
frik
Good article. Sub par web design.

------
notNow
Watch it when capitalists pushing incessantly people to learn coding. They're
trying very hard to cut the costs of their input "materials" and they will do
everything that they could to devalue us in every way possible.

So, if you're a talented and competent dev, be super aggressive with these
predators and take everything your hands can grab before they have the upper
hand and show us their true colors.

Happy Coding!

~~~
flashman
This is a really ugly, selfish attitude. It's like opposing literacy because
it will put pressure on jobs for those who can read and write. It's circling
the wagons around people who had the privilege and opportunity to learn these
things before everybody else.

~~~
walterbell
Agreed, we need more Bloomerg articles that increase the supply of financial
and negotiating skills.

------
ZoZoBee
Why did Bloomberg ask to use my camera while reading the article

~~~
recursive
So it could take a photo of you for your certificate of achievement

------
spb
"How often are you going to be multiplying sevens and cats? Soooo much."

Where the fuck does this meme of "fundamental type mismatches come up all the
time in ordinary code" come from? What kind of defective system are people
writing where it's _normal_ for strings and numbers to be interpreted
relationally (even accidentally)?

It sounds like the author is trying to demonstrate the significance of things
like syntax transformations and format conversions (like transforming an email
address to a mailto link), but that's _nothing like_ "multiplying sevens and
cats". It's manipulating things that aren't inherently incompatible - if
_anything_ , it's multiplying sevens and "7"s.

All these batshit insane contrived examples in asides like
[http://www.bloomberg.com/graphics/2015-paul-ford-what-is-
cod...](http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/#fn.14)
do is make code seem _less_ accessible and comprehensible to anybody who isn't
already intimately familiar with what's safe to interpret as sarcasm or
hyperbole and what's not, which goes _exactly contrary_ to the stated thesis
of the article.

~~~
tdicola
It can happen accidentally quite easily. Someone new to a codebase starts
hacking in a feature and mistypes a variable as 'value' instead of 'values'.
They fail to realize there's already a 'value' variable in the global
namespace (perhaps it's a gigantic spaghetti code mess of a file). They don't
have good test cases that exercise this exact line and fail to see the bug.
Code ships to production, three months later the line runs and explodes.

~~~
maehwasu
Your example is quite good, although there are far more bulletproof ways than
exhaustive test cases to make sure this doesn't happen.

------
krupan
I'm glad I came here to read the comments that urged me to read on, because I
stopped at the point where the VP was whining that his job was on the line and
the software guy's wasn't. Made me a little sick to my stomach. In what
company is that ever the case? Even if the VP's job is lost (rare occurrence
in my experience), the severance package is more than the software person's
salary for a year is.

~~~
justinhj
My understanding was that the development manager in the taup blazer was an IT
consultant brought in to run the project making it a little easier for that
person to disappear to the next gig no matter how disastrous the project
turned out.

~~~
nickpsecurity
That's what I was thinking too. But then they seem like employees in the rest
of the story. A little ambiguous.

