366 comments

[ 3.6 ms ] story [ 310 ms ] thread
Imagine a world where everyone has their own social version of a Github page instead of a Facebook wall.
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.
Imagine there's no heaven (It's easy if you try)
Imagine a world where everyone read and writes.
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.

Apple's App Store is the Etsy of software.
I was thinking that. But then why is software-dev-as-craft cordoned off from jewellery-making-as-craft and print-making-as-craft and so on. What makes software so special it needs its own little commercial corner of the world? Serious question :)
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.

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?)

I like the idea, but is there really no way to mute the audio? Sadly I did not finish the article because of that.
There's audio? I should have unmuted my laptop.
"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.

Very funny... I currently have other audio playing on my computer that I don't want to stop.
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.
If you use chrome, you might enjoy this flag

chrome://flags/#enable-tab-audio-muting

What audio? There shouldn't be any sound unless you activate the konami code easter egg.
Well now you've got me to investigate. There seems to be a video in the article. However, it is only displayed as a white box in my browser (Safari), without any controls. I can't stop it, I don't even know it's there, except it it playing audio. Strange...
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

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.

My personal favourite is talking The Business out of things. Solving issues without any coding at all!
Sure, it is a problem. But if you reboot the server everyday, it will not become a problem.

No coding at all required.

> Does this even apply to free software like browsers and email clients ?

The more I get involved in open source the more I think most code bloat is due to people needing their egos validated by getting a commit into a project, regardless of whether the commit is all that useful or not.

I've been involved for a long time, and it sure doesn't seem that way to me. Lots of that "code bloat" is simply making things portable across compilers, interpreters, operating systems and languages.
Many years ago I managed to convince my management that, if they had to use deltaLOC as a performance metric, that they at least use abs(deltaLoC).

I then spent the next year cutting huge chunks of crap out of a C++ application that I had inherited.

Was a most satisfying experience.

Hmm, shouldn't it be Sum(abs(deltaLoC per change))? Otherwise if you added 50 lines a day and removed 50, your abs(deltaLoC) will be 0.
Let's add some whitespace to the README. Let's remove some whitespace from the README. Let's add some whitespace to the README.
Wow, I did the exact same thing, for exactly the same reason. My dad called me a few hours later and said, "I finished the 38000 word article you sent.". I checked and he wasn't far off; it's around 29000 words.
The certificate of participation at the end claims it's 38,000 words...
Oh that's where he got the number. I read it on mobile, so I didn't notice that.
Same. I sent this to my boyfriend yesterday: he's trying to learn programming (I'm trying to teach him Python; in response, I'm trying to learn some foreign languages) and I'm hoping that this gives him the lay of the land of how our strange world works.
You need to Konami code this bad-boy.
wow. heh. strange world we live in when the result of that is on bloomberg. What a time to be alive.
Their 404 page gif is still their best work, but this is a close second.
Their 500 page is also pretty great
Smash the patriarchy! Check the console.
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.

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" .
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 fking scroll; to continue to read in peace without my eyes bleeding. Great article though :)
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?

Interesting, I was able to read the article just fine on my 2011 Kobo touch. 800 MHz ARM Cortex A8 and whatever Webkit was around in early 2011. The border animations are off but all the text and plain images work.

Whatever effects they're running, they did an impressive job with graceful degradation.

I've heard tales of AdBlock Plus consuming huge amounts of CPU, especially on large and complex pages.
I'm only using Ghostery. Disabling it doesn't help though.
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.
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?

It's like Myspace and Tumblr barfed all over Businessweek. I opened the article in Firefox with the mobile-emulation feature turned on. Because good god almighty this thing is a trainwreck otherwise.
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
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?

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

To capture your photo in the certificate of completion.

Worth noting -- it is roughly 38k words and is the longest piece ever published by Bloomberg.
Yes, it will tell you that at the end, and mock you if you arrive there too quickly to have read it all :).
It mocked me for having spent too much time reading it!
Does this brilliant webpage not know the concept of skimming and related approaches?
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....
It knows and mocks accordingly.
It can mock me all it wants. How is 10 words a second fake?
A quick google search showed that about 300 words per minute is average for an adult reading pace. I'm a slow reader so I'm probably right around there. So that's ~127 minutes to read all of this, not including time spent playing with the great animations. Probably better for me to get a bit more work done before I tackle the rest of this one (only read section 1 so far).
I agree with this and below comments. It took... considerable dedication... to keep reading it all the way to the end. I can't even comment on it directly as it was all over the place but with a nice integration/flow of the sub-topics. All I can call it is an experience lol.

I downloaded my certificate. Might put it on my resume. Evidence of willpower if nothing else. :)

> 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.

This is my own, personal, incomplete work in progress in that vein: http://www.leannotes.com/

I think I like your approach better... and no Clippy.
Computer don't hurt me, don't hurt me, no more
I'm happy to see that I'm not the only stupid singing this while reading the header XD
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...

I love how the page calls you out for skimming it instead of reading it.
I scrolled. I admit it. :)
I skimmed and didn't get mocked. I really am a slow reader :-P
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.
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

Not to your main point, but the circuit simulation reminds me of Silon by SLaks: http://silon.slaks.net/

Edit: Also, as a late-bloomer and self-taught (self-teaching) programmer, I am on the other side of the paradigm you're talking about. Petzold's Code is one of the first books a self-taught programmer should pick up. It is an awesome introduction.

One of the most memorable weeks in my Engineering degree was using Cadence to build a CPU from the ground up. Every transistor, every connection, the ALU, etc was laid down by someone in our little group of students, and then wired together to make a thing with a few thousand transistors. And it friggin worked.

It also showed how the chip itself would be laid out, where the dopants would be and such.

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.
What book? For those of us not there yet :)
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... 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.
> 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?”'

I completely agree. I got a third of the way through it before I just couldn't stand the obfuscation and decoration any further.

What's sad (as I [tweeted][1]) was that there's a 1972 article by Stewart Brand, published in Rolling Stone of all places, that does a better job of actually explaining what computers can do, without resorting to jargon and jive: http://stuartpb.github.io/spacewar-article/spacewar.html

[1]: https://twitter.com/stuartpb/status/609035295002984448

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... </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.

Sounds like a better experience than on Firefox, which fails to load anything, even text, past the first video.
(comment deleted)
> 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.

Taken to the extreme, could you not consider raising a child the ultimate programming exercise for humans?

Perhaps the "right-brained" are already very good at programming other people, working with faulty, non-deterministic, somewhat chaotic computing environments where "left-brained" patterns of software development fall short....

Not just the right-brained. I want that as a professional software developer. I want a computer that will do what I thought, instead of what I foolishly typed.

Basically, I want a computer as smart as a good junior dev so I can just yell my brilliant ideas at it, and it will do the dirty work for me.

That's only because you think your thought exists and is correct. Programming forces you to confront the fact that it isn't, and that there are many aspects of it that you've overlooked.
So ve wants a computer that can ask for clarification and point out edge cases, like a good junior dev can.
Also one that can figure out the edge cases on its own, because fuck that shit... it's a really simple idea, why can't you make it work?
This may be the reason, but doesn't have to be and often isn't. If you can explain your idea to another person, and know when they've executed it, why is that not evidence of your thought existing? Why is being able to translate your idea into the unnatural constraints of programming languages as they exist in 2015 the arbiter of correct thinking?
I remember someone referring to this as "intent driven programming". I once worked for a company that made a business rules engine. The idea was to describe a flowchart to the system and the software would ask what you wanted to do at each step of the flowchart in a top down manner till you fleshed out the whole program ..
That's likely AI-complete.
As someone who has worked with junior devs before, that sounds like an absolute nightmare.

There is, of course, nothing wrong with being junior. But the rate that requirements are misinterpreted even by intelligent humans is, I think, a fundamental reason why programming isn't doable by the masses yet.

It's not because computers are hard, it's because knowing what we actually specifically want them to do is.

The precision required in programming makes it hard for the right brained person who won't meet the computer at least part of the way.
I'm reminded of rms's anecdote about secretarial staff learning to write Emacs macros at MIT because they didn't realise it was programming.

This suggests that current, important and well-meaning attempts to get non-programmers to meet code head-on as code may be misguided. Programming is generally easier if you're not thinking about how much it isn't something you do.

Precision is not the only important element in programming. There's a level of abstraction, such as found in the field of semiotics, that is highly important to the world of computer science.
I don't believe that there is no such thing as a right brained person. I think this is a cultural myth. Same as, "you only use 10% of your brain's power". These, and similar, are false memes - iow hokum.
ah crap, no -> any (how embarrassing (and how the hell?))
I believe one area of improvement for the excessive need for precision (most of us can agree that it is excessive) is that our current tools don't use context information enough. Humans deal a lot in uncertain areas and context is what helps us.
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.
Two other more contemporary examples are the Android app Tasker, and the website IFTTT ( https://ifttt.com/ ).

There's something about calling it programming that turns certain people off. I remember a story about a freshman in a physical mechanics class that complained about all the MATLAB code they had to write. The professors retort was that they were free to use a slide rule instead, and that particular freshman stopped complaining.

But you're right. The mere act of calling it programming is somehow a problem. It's as if doing programming pigeonholes you into being a programmer until the end of days.

Kind of like how calling programs for proofs seems to make most programmers uneasy. (Not that most programs that you'll run into are proofs in any interesting sense.)
> The mere act of calling it programming is somehow a problem.

There are some words that carry with them unshedable connotations that people want to get away from so strongly that they will call themselves something else at the first possible instant. "Programmer" is one of them.

"Poet" is another. No one makes money from poetry because as soon as a poet makes money they are something else: a musician, a performer, a copy-writer, whatever.

Just don't call them a "poet", because "poets" are poor, sad people with no future, just as "programmers" are neckbearded nerdboys who smell bad, and no matter how many programmers (or poets) fail to live up to those stereotypes people will continue to impose them on reality come hell or high water.

Until one shoots out the top. Then he/she can be a "poet" again.
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.

+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.

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.

Something can't be "basically" functional programming without first-class functions.

It seems more like a non-functional declarative vm to me.

It's more a one-way dataflow language.
Thanks to John Foreman's book "Data Smart" I now regularly test small-scale machine learning problems in Excel. Sure, a developer will translate the end result to scikit-learn or AzureML, but this is stuff that's easily available to even mildly-technical enthusiasts.
Remember when search engines had Boolean operators?
Honestly I never heard of search engines working with boolean operators.. I just did a quick search and found this interesting article which gives information about websites using AND, OR, NOT, venn diagrams and concept declarations to deacrease the search node graph....How long ago this search mechanism terminated ???
I... you're trolling, right? Before Google rose to fame, Altavista was probably the most popular, but in order to find what you wanted, you frequently had to add AND, and NOT to your searches, and still needed to dig in a dozen pages in order to find what you were really after. Then Google came along, and the rest of them died.
Possibly not trolling; if the parent post is the usual age of a new college grad (22 years old), Google had eaten the search market by the time they were 10.
(comment deleted)
I would say that Photoshop is a toolbox of predefined tools. If using that is coding, then people are also coding when they choose and use a screwdriver, some sandpaper, a hammer and some glue in succession from their physical toolbox to get a job done. That the operations happen electronically and that they are implemented as complex mathematical transformations of pixels doesn't change that.

Excel isn't much different in my view: most people are only using a very limited set of predefined tools to get a job done. Often badly: it is well known that there are many bugs in important, company critical Excel sheets. Excel seems like coding because it is mostly used to perform the fundamental mathematical operations we all associate with coding. But if that is coding, then so is constructing a Rube-Goldberg machine for a specific task from the parts you happen to have available. A nice exercise in problem solving under constraints. Which certainly has something in common with coding. But that doesn't make it coding.

Well, if you wanted to be absurdly pedantic, you could call instructions in an architecture predefined tools, or protons and electrons.

I don't think it matters if the tools are predefined - what matters is that they can be used together to build a system greater than the sum of it's parts.

Yes, and that is exactly what very rarely happens when people use Photoshop or Excel and happens in coding all the time. Which isn't strange, because the former two aren't intended for that, while the latter is.

I think it can matter a lot whether the tools are predefined, because the exact nature of those predefined tools determines whether they are easily composed into something greater than the sum of its parts. You need iron ore, wood and a forge to construct a different hammer. Of course you can cobble something hammer-like together with the tools in your toolbox at home, but it won't be like the hammer forged afresh from more fundamental parts better suited for that purpose.

So, Excel is not coding, but an Excel sheet can have bugs?
Yes, just like a piece of furniture you built can have bugs
Using Photoshop is instructing a computer to perform a series of operations, necessarily fairly high level ones, but conceptually not that different from text-based coding. I agree it stretches the definition pretty thin: where's the control flow? Conditionals?, but are those things really foundational characteristics of programming languages or are they simply the equivalent 'predefined tools' that, say, C gives us?

Excel is much closer to traditional programming: it's basically a purely functional language (absent VBA), but instead of a linear description of the program in a text file, you're in effect embedding functional code inside a virtual machine's memory.

EDIT: I suppose an important question about Photoshop is, can you do computation in it?

(comment deleted)
To me "programming" is text-based.

I'm afraid your interpretation of programming is an exceptionally heterodox one, then. It would make visual programming an oxymoron, which is at odds with most research.

I concur with your assesment. The point is not to turn a syntax into an AST into processor code. The point is to provide things of value and 'easy' computing platforms targeting users who are not professional programmers create tremendous amounts of end user value.

Sadly, when I point this out professional programmers often go 'pffft - that's not real programmming' as if being knees deep in stack traces and gigantic code bases was a something with intrinsic value.

I'm not sure I agree with you about Photoshop. Perhaps (probably) there are photoshop macros or pipelines that are closer to programming, but most people use Photoshop purely in an interactive mode. They enter commands directly, and the logic stays in the users' heads, not in the computer.

Photoshop is more like a REPL tied to an image-processing library than it is a programming language.

A Photoshop "program" would consist of the composition of image layers, adjustment layers, blend modes, styles, masks, text blocks, shapes, paths, and so on. You "run the program" when exporting to a bitmap format.

It probably doesn't help to think about it that way when using Photoshop, but it might be a useful mental model for developing Photoshop, or as an example of how a general visual programming language UI might work. Importantly, Photoshop does not give you a bunch of little boxes with arrows crisscrossing everywhere like all the clumsy and disappointing visual programming experiments I've seen.

Maybe "visual programming" is like "AI". Whenever you make something that actually works, it goes by some other name.

Maybe. But by that standard, using a Xerox machine is programming because you can layer some pieces of paper and transparencies together and then copy it onto an image on a single sheet.

I think to be programming, there has to be some kind "logic" (conditionals, mathematical functions, loops, etc.) embedded in the structure (cf. https://en.wikipedia.org/wiki/Jacquard_loom) and I'm not sure Photoshop qualifies.

I don't think I would consider the arrangement of paper to be a program because it doesn't change the way the machine itself operates (though perhaps one could argue it does at the level of photons and toner molecules--or that a computer just blindly "goes through the motions" with its inputs as much as a copier does with its paper input). But inputting the number of copies, darkness, collation, etc. surely counts as programming in the familiar sense.
To me, the defining feature is automation. A "programmable" system is one where smaller actions can be composed into larger ones and saved for invocation later (by name, in response to some event, etc). I don't know much about photoshop, but judging from what people have said, it seems to meet this definition.

I will concede that "programming," in the sense of "I've been programming for the last couple hours" or "He isn't very good at programming" implies the use of a Turing complete language. Photoshop would probably fail here, along with more programmer-y things like writing html.

I have read elsewhere that programming is giving the computer instructions. So clicking the close button on a window or typing into a word processor is technically programming (although it is not coding). My search-fu was unable to find that though.
Yep, great examples. Also, pretty much any experienced Photoshop user will create their own actions to automate common operations. And then you have things like workflows in Alfred.
Scratch seems to me like an example of what a "real programming language for everyone" could look like.

Indeed, Lego Mindstorms is based on a similar principle, and it's used for programming robots!

The trouble is that so much of what we call "programming" is actually the process of identifying all the implicit assumptions that go along with an idea and making them explicit. In other words, if you knew what to ask for in an unambiguous way then most of the "programming" would be done already.

I'm working on a longer essay but that's the short version.

This is a driving force behind the pedagogy of SICP -- to think in recursive functions. If you can break down your task into sub-problems and describe them clearly you just have to put a few parenthesis around it.

Programming isn't so much about the "code" or syntax; it's semantics and intent aligned with the machine.

If you can express your problem clearly then the program practically writes itself.

Sounds like I should sit down with a copy and finally get past the first chapter.
Love it or hate it, Meteor has empowered a number of sales-types and small-business owners to create real tools to solve their own real problems.

I've seen it happen in front of my own eyes!

I omitted: ...and create so many new problems there will be years of work in it to clean the mess up.

Been in "IT" for a few decades, I've seen it happen in front of my own eyes time and time again.

The only self-help tool that has lasted so far has been the spreadsheet, and even that has gone horribly off the rails in many companies.

Haha, agreed. I'd argue there's a strong chance of that happening with any tool meant to give non-professionals a 'professional' result.

WYSIWYG web editors, divorce 'kits', many DIY 'kits' for home improvement, etc. Something inevitably goes wrong and the lawyer / contractor wonders just why the hell the client didn't just call a professional in the first place.

"something incredible will emerge for the right-brained bourgeoisie and literati."

Yes, a real quantum computer. As long as we're dealing with 1's and 0's, there's an insurmountable barrier for those who would get creative with computing.

I don't understand why people believe 'everyone' should be able to write code without much trouble. Virtually every activity requires focus and exercise to learn. Example: you can't just take a hammer and start building furniture or you will create a mess. If you want something nice and useful, you need to think about what you want to build, how you are going to construct it, which materials you need, which tools you need. You need to experience how the materials behave, try out certain subconstructions, research what specialized tools exist. I believe this idea that 'everyone' should be able to code is like expecting everyone to be able to build furniture. If you want to, you can learn how to build furniture, but it's not easy and will never be easy. Why would coding be any different?
AI that takes natural language as input as spits out binaries for you =P

   I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.
I don't see it ever happening: because the bar of expectations rises at the same rate at which the tools improve.

For example, think about what the NYTimes website looked like in February 2000:

   http://web.archive.org/web/19990202013312/http://www3.nytimes.com/
That probably took millions of dollars and a team of engineers back in the 2000. In 2015, a reasonably computer-literate person could do something close to that with SquareSpace or Wordpress.com in probably.... a week?[1]

But that site would never pass muster in 2015. Something 10x (if not 100x) more complex is required for NYTimes.com in 2015, plus various native apps, plus a subscription service, and so forth. So you still need a team of engineers...

____ [1] I'm talking about the act of putting the articles onto a website, not reporting and writing the articles, obviously.

The wrong people are working on this problem. The only ones who think about it are typically programmers who have made their peace with the machines as they are today. The interface of code seems simple and logical with little reason to try to improve on it. It would take a team of artists, musicians, human factors engineers, ethnographers and some clever computer scientists to do it. Such an enterprise would be high risk and very difficult to fund because of it.
Not likely.

I've seen non developers try to write specs in whichever format they like: word, excel, drawings, hand written, in speech, mockup tools, anything. They decide exactly how they want to express their idea without any constraints. And yet, they always fail.

There are always too many edge cases they do not think of. They only cover the "happy path" and quite often not even that. Just take the email conversation from the article as example, they didnt even touch the subject of implementation and it was already jibberish even for a developer. You need someone to actually sit down and squint their eyes over something, do research and run some test cases for a few hours before these emerge. Once you start doing this you are already by defition a software developer.

It's easy: the code is that part of the computer which can't be grabbed and slammed but only cursed.
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.

I did not expect this good of an article on this subject from a business publication. Well done.
bloomberg is mainly a technology company
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...

(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)

Time to follow @ftrain on Twitter then.
"C is a simple language, simple like a shotgun that can blow off your foot... Think of C as sort of a plain-spoken grandfather who grew up trapping beavers and served in several wars but can still do 50 pullups." Most certainly.
I kind of like my answer better: 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.

"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.

Superb writing. I wish all professional writers could write this well.
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.

Celine Dion would be booed out of my local dive's karaoke night.
> “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?

That jumped out at me too. It colored the remainder of my reading experience.
yeah ... trying to put it behind me. this has otherwise been a great high-level introduction to coding.
It's a joke.
Well, in the same article he says "A computer is a clock with benefits." So I believe that no, he isn't serious.