Fixing the Pain of Programming
An anonymous reader writes "Light Table is a Kickstarted, open source IDE that's been trying to integrate real-time feedback into code creation. Part of their process has been figuring out how to improve the practice of programming, from top to bottom. They've put up a post about the troublesome aspects of programming that we've learned to deal with and take for granted, but which need solving if programming is to be made accessible for more people. 'Surprisingly, one of the most common difficulties we have heard from beginners is just running code. Even if we were to hand [a new programmer the whole source code] they would likely still struggle to actually use it. They have to install dependencies, compile code, start servers and open ports. At each step the errors are difficult to diagnose and time-consuming to fix.' But these problems extend to experienced coders, too: 'The simplest question we could ask about our application is "what is the current state." Bizarrely, very few programming environments give you any help on this front. Many programmers get by with nothing but print statements.' It's interesting to see somebody working on these issues, instead of accepting that they're the status quo and just part of the experience of programming."
I suppose this is addressed by the old quote "What is the best language for x?"
"I don't know. Which has the best debugger?"
I simply don't get why not all programming languages/development environments support live images like Smalltalk..
For those who don't know what that is: in Smalltalk the IDE and the running program are 'the same'. Your 'program' (what you code) never stops and/or is restarted. It just 'freezes' like a laptop and is 'restarted' or awaken at it previous state.
That means if you send me your 'source code' you are actually sending me a sleeping, but running! program.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
TFS says:
Part of their process has been figuring out how to improve the practice of programming, from top to bottom.
The problem here is that depending on top to bottom only works well on very small scale and very large scale. In reality, you need both top to bottom, bottom to top, side to side, diagonal, and too often even a bit of pogostick programming.
When you spend 8 hours troubleshooting an open-source project to compile with a third party proprietary library it feels damn good to make it work. Coding is good because it's hard. The higher the stakes the more the accomplishment of that task will make me proud/happy.
Sure... there are some places where things should be simple. When I install an IDE I expect it to compile a hello world just after typing the proper code.
This combination doesn`t exist: ETIs that know about humanity and want to see us dead. Otherwise we wouldn't exist.
Just suck it up. If it was easy then everyone would do it. ( actually it is easy, people are just whiny lazy asses these days and want everything to be done for them, and presented on a silver platter, paid for by someone else via some 'wealth distribution plan' )
---- Booth was a patriot ----
Programming has a spectrum of difficulty. The tools can always be improved to make the easier parts easier and the harder parts more manageable, but in the end the hard parts are hard because of the nature of the work; not due to lack of tools.
In more mature fields the spectrum of difficulty is well understood and no one expects the hard parts to be easy. If a person can write a "hello world" program then it should not be expected they will have the wherewithal to roll out healthcare.gov. If a person can apply a bandage to a skinned knee then it should not be expected they will have the wherewithal to do brain surgery; regardless of how good the tools are.
Historically, so far, the easier you make it, the harder the problems become.
One of the most visible examples of this is in frontend web development. Now that we have jquery and a billion javascript librairies, we don't do the same simple web pages we used to in a fraction of the time (something that would have taken a month back then takes literally seconds today). Instead, we do crazy shit that were never meant to be done in a browser.
If we make that crazy shit easier, people will just go and do crazier shit.
I don't use mythology in a perjorative sense that this is all pretend or wishful nonsense. I use it in the best Joseph Campbell-Hero-With-Many-Faces sense, of a dim recollection of The Way Stuff Used to Be. This is a way of communicating an Underlying Truth about the Human Condition.
Apparently there was this era of things such as this Smalltalk that you allude to. Another version of this I hear from tales is Common Lisp. And Lisp Machines, specialized hardware and expensive workstations on which these "live images" would reside. So maybe these tales of direct, personal communication with the gods taking place with the Bronze Age Greek heros was not made up?
I guess there was this Barbarian Invasion of Bearded Men from the land called "New Jersey", especially a high place among the rolling plains they called "Murray Hill"? There is this piece of non-canonical scripture that our elders have been trying to supress known as the Unix Hater's Handbook explaining how we came to our present age and how this Golden Age entered into myth. Our elders warn against reading this heretical tract as dangerous to our souls.
As Jerry Pournelle describes the intervening Dark Age between now and that heroic or Golden Age, it isn't so much that people forgot how to develop and maintain a live image programming system such as Smalltalk or Common Lisp, it was that people forgot that such a thing could exist, and we attribute such things to gods or space aliens.
But then again, just as there is talk of ancient creatures in deep lakes in Scotland or in the remote sections of Zaire or Southeast Asia, there are accounts that Smalltalk or Common Lisp are still in use . . .
I always assumed "brogramming" was similar to "Pair programming", but urbandictionary gives a less professional image.
Yeah, but this perception of programming is the real problem.
Programming is not a "pain" if you do it right. Most of the times programming is a "pain" because you are working with code or frameworks written by mediocre programmers who probably shouldn't be programmers. The more accessible you try to make programming, the more mediocre programmers will be encouraged to write code and software that will be a pain to work with.
the more accessible you make it the more people get into it and the more of a commodity it will become
even now developing and coding is a commodity in a lot of fields or a secondary skill to being a math whiz and working with algorithms on data sets
So true. I studied computer science at university, never graduated because I began consulting. Years later I am finishing a mathematics degree and regret ever pursuing computer science much less the IT career into which it led me. I came across the textbook for an introductory computer science course at a leading university in Canada; it was so dumbed down I almost cried. The notion everyone should learn to programme computers is ridiculous in the same sense everyone should should learn to wire their own home or repair their own automobile.
correct. Coding has been difficult task for geniuses at the very beginning because of two reasons: price of equipment and difficulty of some of tasks at hand back at the time. These days almost enybody can do some coding - my kids learn scripting for office applications at school in 3rd grade - that is programming too. In my professional life I often deal with what you can call infrastructure projects where team size goes over 5persons and it cannot be squized in 3 months, usually having to work on existing code base and maintaining different versions of product in different phases of a life cycle.In such setups coding is a skill which requires quite some knowledge, it is just very important but minor thing - most of the time you deal with things that are not application coding but discussing architecture, ways of testing, release strategy, test automation strategy and some such. There are projects where teams refuse to deal with this issues in a structured way because they 'like coding' and ones where they accept that it is difficult to get done all these other things perfectly but it is nevertheless worthwhile as it saves some major stress later etc. In these setups coding is just part of project life but not the most important one. Testing or maintenance or any such thing is not part of any of the courses. It is still worthwhile as our office life is full of coding of some sort. It is a skill like (yes a car analogy!) car driving - most of us iin inustrilized world have a driving license and can drive but track bd bus drivers are still professionals with special license. The question is - do you want to be a track driver?
Just suck it up. If it was easy then everyone would do it. ( actually it is easy, people are just whiny lazy asses these days and want everything to be done for them, and presented on a silver platter, paid for by someone else via some 'wealth distribution plan' )
This is unmitigated bullshit! Edit/compile/link is NOT the object of coding. As a mathematician hacking semi-numerical algorithms, the programming languages (I use mostly C) are the easy/sensible part of the job. A Backus Naur diagram defines the language nicely, making things sensible. (making A[i] clearly the same as i[A].) But my IDEs to link/compile are a morass of no-reason-just-policy quagmires worthy of organized religions.
Coding is not a tedious religious rite to be memorized w/o question. Coding is a tool to get a job done, not an idol of obscurity to be worshiped.
One of my rules at work is: "If I check it out in Visual Studio and press 'Start', it better compile and run". It's not acceptable to make the next guy figure out how to run a program. Everyone I work with thinks I'm overreacting at first, but when they go to fix an issue in four-year-old code they've never seen before, they suddenly get it. Bonus points for starting the test suite by default instead of the actual program.
I realize this is a tangent to what the post is talking about. However there is a related feedback that's a big problem for me. Getting feedback from "user". So at least in my company it often turns out one manager is a big user of the software. Guess which office door is closed pretty much all day and no answering e-mails of any kind? It's very difficult to give mangers like that what they want when the only time they'll tell you is they pop-up behind you while you're doing something else, give you a 3-5 minute explanation that they've not really fleshed out, then run silent for 3 weeks. (Yes, I've literally developed something that was requested and it got used for a couple of minutes and got "This isn't what I wanted." talk. It's very aggravating.)
Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
I mean, thats the elephant in the room, isnt it. I found that everything thich can be automated easily is automated in eclipse.
Whenever I see one of these headlines about how there is a supposed shortage of programmers and we should make it easier so "stupid people" will come to save the day, it just makes me think "what the what?" I have an awesome sister. She can't sing. She makes people cover their ears and the dog runs out of the room. Are we going to solve today's broken music scene by making singing easier and coaxing my sister to become a singer? I don't think so. Singing is easy. Doing it well enough that people want to listen is not hard...for people who are good at it. People who suck at singing should just do the world a favor and not try it in public. The fact that the world has a limited number of programmers, and an even smaller number of good programmers and an even smaller number of really-really good programmers is simply that people are all different. Some of them can sing. Some of them can do technology. Some of them are jocks. Some of them just take up space. (Hey, it may be harsh, but it is accurate.) On the other end of the millions of different bell curves that could be used to describe humanity, there are some people who excel at bad things, like the Hitlers and the Lawyers of the world. Sadly though, this sort of "how can we make programming accessible to the masses" nonsense will never go away. That is simply because there are people on this planet who are six sigma at asking stupid questions.
More than once I've seen the existing functionality of an IDE's automatic (or semi-automatic) compile, run and debug loop sabotaged by some (sometimes mandated) third party plugin which is supposed to make things "easier." I've watched as people poorly integrate Java Spring into a project and render it impossible to use Eclipse's debug button because of badly constructed project dependencies. ("Oh, if you want to run the project, just drop into the command-line terminal and type 'ant someobscurebuildproduct run'; it's pretty easy, why are you complaining?") I've seen people integrate Maven into a build process in ways which guarantee the project will stop compiling at some unspecified time in the future by improperly scoping the range of libraries that will be accepted. (And I'm not a fan of Maven or CocoaPods or other external dependency resolution tools anyway, as in part it presumes the external libraries we link against that are hosted outside of our source kits will honor their public interface contracts as minor revisions roll out, something which isn't always true.)
I've seen refactoring which adds code bloat (rather than simplifies the code). I've seen home-rolled configuration files which make code discovery functions break code discovery functions in Eclipse useless (do you really need to home-roll you own class loader, and specify Java classes in JSON?). I've seen plenty of 'voodoo stick waving' standing in for good coding practices. I've seen the lava flow anti-pattern obscure a simple Java RTL call in 20 discrete layers of classes, each added on by another refactoring that did nothing but make things more obscure.
I've seen weird blends of ant and makefile build processes which took a product that should have taken perhaps 5 minutes to build take over an hour, and build processes so broken that it was impossible to shoe-horn into an IDE without rewriting the entire project. ("Real programmers use 'vi.'" *shakes head*)
In fact, I have a working theory about programmers--and that is this: Most programmers think something should be a certain level of difficulty. And when a project turns out to be easier than they think it should be, they add artificial complexity until it reaches the expected level of difficulty. At some point, the project then needs to grow, making things organically more difficult--but the artificial difficulty added by the programmer who thought things were too easy before then simply sabotage the project. This is why quite a few projects I've worked on over the past 25 years have failed.
This is why I have no hope for any project that attempts to fix the problem. That's because the problem is cultural, not technological. We've had IDEs which had integrated debugging and one-button build + run processes going back to the 1980's--yet somehow we always glom to the next big thing, oh, and sorry about breaking your IDE--but this next big thing is SO important it'll totally compensate for the fact that we broke your edit/run/debug cycle.
Meaning I guarantee you the moment someone builds a fool-proof IDE which makes it brain-dead simple to edit, compile, run and debug an application, some damned brain-dead fool will come along, worried that things shouldn't be harder, and break the system.
Smart parenting. If I have kids, I'll pound it into their heads that technical stuff is for hobbies only. Unfortunately I fear we are heading back to the historical mean for the human race, laborers work garbage jobs with no future, you have the "gentry" and you have the rich families that control everything by blood line.
The gentry would be notaries, lawyers, accountants, managers, etc all jobs which could have been equally well replaced by outsourcing or automation but will never, ever be.
I'd also encourage them to become rentiers, buy a rental property ASAP.
Now that I'm 40 and am still struggling to find work in a dwindling technical area in Montreal, I see other people my age making millions for doing nothing of any real value I can see.
One guy opened an expensive all-hype hair salon. He has 5 expensive cars. All he does is maintain an image.
Real estate agents and notaries provide little to no actual service but have a legal framework to ensure their jobs. Optometrists are another case of something that could easily be replaced by automation but will never be.
Simply put, if you interact with a machine of any kind, you'll either be stuck in stagnating wages or in the perpetual education (at your expense!) treadmill.
I don't see my local landlords or business owners wearing diapers because they fear for their future.
Mostly random stuff.
of programming environments where the stuff kids use early on has tangible links to the stuff they'll use later on.
Code is not code is not code. The AP exam alone has been through three languages (Pascal, C++, Java) and their official caveat isn't reassuring.
I can teach young kids Scratch, Stagecast, NXT all day every day and they love it and learn to solve problems.
Trouble is there's no bridge between that and "real" programming. The parentheses are mine, but there's no volume knob on the chorus that rushes to pooh-pooh anything other than a full-blown professional language as "programming". Got it. Hour of Code was an inch deep and a mile wide. Understood.
And that's the problem. What's a kid who gets inspired by that first experience to do - jump into a CS course that's an inch wide and a mile deep?
To extend another analogy used elsewhere in these comments, it's like going from applying a bandaid to being handed a scalpel and suture set.
Want to make a lot of money? Create a language that mimics their maths experience - that explains variables, arrays, transformations, algorithms, sets, etc. in a way that they can parallel and apply.
Yes, cue the snarky comments, but I miss BASIC and HyperTalk. Very low learning "floor" and pretty-darn-high learning "ceiling". RunRev / LiveCode has huge potential as it uses hypertalk-ish syntax and actually does something tangible in short time. The engineering equivalent of such a continuum is LabView, but yes, it's basically for instrumentation, no, you can't produce standalone apps, etc.
Huge need for a continuum / bridge.
"Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
Yes, I usually get by with print statements as well, because I do not need anything else! Learning to debug is a critical part of learning how to program. Taking that away is plain harmful. Advanced debuggers give you more, but anybody that cannot debug simpler print-statements does not have the level of understanding of the code that is absolutely required to make it any good.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Yes. Turns out people unable to program lack talent, insight, dedication, but not an IDE.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Indeed. And people that are unable to debug simpler things wit print statement do not understand their code at all. This is not a tool problem.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Pretty much, yes. Would you rather I tell my kids "be a poor peon to keep other people rich"?
You can do that if you want, but my eyes are opened now. I used to be idealistic too.
If you buy a rental property, it will generate passive revenues in ten years.
What will the code you wrote today do for you in ten years? Yeah, unless you own it, nothing.
You can keep investing your time and energy to make other people rich, that's fine, but why burden your children with your neuroses?
Mostly random stuff.
In fact, for a time there were C interpreters that also did what Python does. Never caught on, because this is not the problem. In order to create programs of any worth, the programmer needs to understand what they do and needs to be able to hold a reasonably accurate model in their heads. That is why debugging with print statements works so well: A competent programmer only needs a hint of what the problem is, not every detail. People that need crutches like graphical debuggers and detailed error messages explaining every last bit do not have what it takes.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
So it seems to me that most of the pain of programming is bad programmers who can't be bothered to learn about the tools they're working with or even the hammer that they're using to solve every problem. So why do you think your hammer's going to be better, again?
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
It's right before the sentence that accuses the world of choosing to be illiterate.
Making programming more accessible by more people may result in well-functioning programs being as common as well-functioning governments are where voting is more accessible by more people.
"a morass of no-reason-just-policy quagmires worthy of organized religions."
Thank you for cogently describing the current state of programming languages.
I was going to suggest by analogy that your neighborhood mechanic be up to speed not only your car, but your bicycle, steamboat, helicopter, Segway, pogo stick and diesel-electric train.
"Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
The notion everyone should learn to programme computers is ridiculous in the same sense everyone should should learn to wire their own home or repair their own automobile.
It's interesting you brought that up, because I think a similar analogy is necessary.
While most people do not (and should not) ever try to do advanced mechanic tasks like change out a transmission on their car, it is useful for people to understand basics like rotating tires and changing oil. Similarly with programming, I would not expect most people to pick up programming to the point where they can code up an OS, compiler, or even a typical SOA system. However, giving someone the tools to fiddle around with basic programming like static web pages with a little javascript or simple command-line applications to handle input from a user or a data file and spit out usable information can enhance their hobbies or even non-IT work.
Many people who became programmers after starting in some other field (either in school or the workplace) can recall situations where they used programming to aid in some aspect of their pre-IT life. There's no reason to shut the door for anyone else to do so.
"They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
I wish your comment made sense. What are you trying to say?
Mostly random stuff.
You're a bunch of over-testosteroned, machismo idiots.
Offense definitely intended.
First point. Machines and software exist to serve *people* and for no other reason. To the extent that they do that, they are "good." Anything less is "bad." Simple enough for you?
Second point. Programming is not about "overcoming intellectual challenges." Don't flatter yourselves. Nobody cares how you feel. Programming is either about money or masturbation. If the latter, make it as hard as you like. Go for it. Wheeeee! Look at meeeee! Look how smart I am! Whoo hoo!
But if you're trying to make *money* programming, or actually have to get a task done, you need all the help you can get. If you have a manager or officer breathing down your neck to GET IT DONE so millions aren't lost, or someone doesn't die, you need effective tools.
Bottom line? Get over yourselves. The IDE is there to make accomplishing a task as easy as possible. It serves no other purpose. It should make everything easily known and obvious. Moreover, it should actually HELP YOU solve your problems. Otherwise, it's just another idiotic software failure.
Please do not read this sig. Thank you.
Mod parent up. Not sure if this New Yorker cartoon from the most recent issue will stay around long, but I saw it this morning and it sums up how I feel about much of computer software development the last thirty years since Smalltalk:
http://www.newyorker.com/image...
A character says "The new house is almost ready!" and it looks exactly the same as the rundown house in almost exactly the same location.
Software could be better, like the character could in theory have built a better house. But in practice, watching this play out of 30 years myself, much of what we get is just re-re-re-inventing the wheel. And there is a terrible waste in having to re-learning it slightly differently with slightly different bugs and limits, and little true progress. Often there is regress, since Smalltalk's keyword syntax is still more readable and expandable than C-like syntax.
Where would we be now if a truly free Smalltalk had had all the billions poured into it that Java had due to IBM and Sun's marketing clout and all the effort that has gone into JavaScript dues to Netscape/Mozilla/Google/etc.? Including the best of any LightTable ideas (a view with source when you hover over a name in code is indeed cool) and any other GUI improvements? As well as better libraries and better cross-platform support and better browser integration and so on?
Still, maybe JavaScript is the best we could hope for at this point, and better than we deserve, as someone else said and I echo in this submission from yesterday about James Mickens' last "USENIX "login" column explaining all that is wrong with the Web pages technically:
http://slashdot.org/submission...
Citing: https://www.usenix.org/system/...
But we got that mess for social reasons (competition, centralization, monetarization), not technical one, like I mention here:
http://slashdot.org/comments.p...
Social stuff like ParcPlace not being willing to license ObjectWorks/VisualWorks cheaply to Sun when they wanted to do a set top project (which ultimately lead to sun making Java).
Could Smalltalk be improved? Yes. Even the syntax could, like by using more C-like strings and comments while keeping the keywords. Could it benefit from type annotations for optimization? Probably yes too. And could it benefit from being built from textual sources instead of an image (like GNU smalltalk). Again yes. But investments in that direction would have produced so much more benefits than something like Java or JavaScript.
That said, after all the pain and suffering and waste, Java and JavaScript/HTML5/CSS3 have finally become half-way decent platforms. I'm moving more in a JavaScript direction myself for mostly social and practical reasons, despite knowing how great Smalltalk was and seeing how much it could have become. I talk about that on Slashdot here:
http://slashdot.org/comments.p...
http://developers.slashdot.org...
Smalltalk might still get there building on Java and JavaScript as with these projects:
http://amber-lang.net/
http://www.redline.st/
Mickens' comments are mostly true, but end up being tradeoffs for ubiquity and easy installs in the case of JavaScript -- even Alan Kay and Dan Ingalls agreed on that with their efforts toward the Lively Kernel driven by the fact they could not get many people to install Squeak or Squeak-based apps).
http://www.lively-k
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
I don't see why beginner programmers should be starting with servers or ports. Where are the basic fundamentals of programming before they approach things like servers and ports where one should be thinking about task blocking, threading and security above and beyond the "make it do what it want" level.
More importantly, prints give you a nice, time-ordered, sortable, compact, searchable, filterable state/event list.
I don't want slow-as-hell conditional breakpoints. I don't want to manually inspect the program state. Watchpoints admittedly can be very useful in specific circumstances (though a lot of the time it just means you really should make the code less of a mess).
I don't want to have to wait after each debug step until the program reaches the next. I'd rather let it run over night and look at a log file. Grep, vi etc. are perfectly usable with multi-GB text files (I once had a text editor warn me that the file was "very large". It was about 20 MB. I laughed. If its under 1 GB it's not a large text file).
Sure, use what ever you want. But if your debugger doesn't have extensive, easy to use data collection and analysis tools (I am not aware of one, but that might just be my ignorance) you'd probably be better of using print(f) most of the time.
First, why does programming need to be accessible to more people? That's exactly the opposite direction a mature technology goes. It use to be easy to fix your own car, but now with the modern engine and manufacturing techniques it's damn near impossible for most people to do more than add consumables. It used to be easy to fix electronics, but now it's impossible to take things apart and if you do you find everything is done in literally a black box of a chip and there's nothing you can do to it. These things have good points and bad points and I'm not here to argue for or against them, just to say that mature technology tends towards "no user-serviceable parts inside". Why would you expect programming to be any different?
Second, the pain in programming doesn't come from the tools. Yeah, it's a pain to learn the tools, but that's a pain that's short-lived. The real pain comes from the nature of programming. It's caused by having to tell the computer in excruciating detail exactly what you want it to do. In order to tell the computer you have to figure it out for yourself, without glossing over any "you know what I mean" steps, because the computer certainly doesn't know what you mean. And not only do you have to tell it how to do the job when everything is working as it should, you have to anticipate all the ways in which things could fail and tell the computer what to do in those cases, too. THAT'S the painful part of programming -- the programming. No tool is going to fix that.
Chelloveck
I give up on debugging. From now on, SIGSEGV is a feature.
The only "pain of programming" I have experienced was always the result of my own poor design choices. Is there an IDE for that?
I found it hilarious that the post bemoans the state of getting started with a new environment, and how it invariably requires a tutorial, and that is terrible.... And then you download their software and you're presented with a blank screen and no idea how to get started... so you turn to you guessed it.. a tutorial.
And then a tutorial that isn't even illustrated, so you can't tell what is supposed to happen with you hit cmd/ctrl+enter... I get a little checkbox next to my line of code.. I don't know what that means. Line is syntactically correct? Line executed? Line monitored by system? And it certainly doesn't provide any insight into the flow of data. I don't see a pane like I do in pycharm that lists the variables with their current values, I don't see any state.. Is that intended? I don't know, the tutorial doesn't inform me, and the environment is useless.
I don't generally use debugging tools, preferring to keep my abstractions shallow, my code small and understandable, and a test suite that can prove that my code is handling the cases its designed for correctly. In some projects, yes, complexity is a requirement, but I feel like the advent of IDEs and debuggers has only served to allow people to more easily break what is in my opinion the first rule of development:
"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?" - Brian Kernighan
Break systems down into small manageable parts. Write the code simply and clearly. Write tests EVERYWHERE.
http://www.basicincome.org/bie...
Not because my kid is a dummy (far from it), but because I know becoming and staying an "owner" in the 1% is like winning the lottery. And societies with big rich/poor divides are less happy to live in -- even for the 1%.
http://www.nytimes.com/2012/08...
"Stiglitz and his allies argue that a free and competitive market is highly beneficial to society at large, but that it needs government regulation and oversight to remain functional. Without constraint, dominant interests use their leverage to make gains at the expense of the majority. Concentration of power in private hands, Stiglitz believes, can be just as damaging to the functioning of markets as excessive regulation and political control. "
See also on how aspiring millionaires are used to keep everyone down:
"The Wrath of the Millionaire Wannabe's"
http://conceptualguerilla.com/...
"But here's something I'll bet the dittoheads haven't thought of. Maybe they're the chumps. Maybe they've been sold a bogus "American dream" that never existed. Maybe "the rules" they play by were written by the people who have "made it" -- not by the people who haven't. And maybe -- just maybe-- the people who have "made it" wrote those rules to keep the wannabes chasing a dream that's a mirage."
I wrote an essay on why even rich people should support a basic income:
http://www.pdfernhout.net/basi...
The fact is, most paid jobs are going away as robots and AIs become cheaper to employ than humans for more and more jobs -- even "creative" ones, like I discuss here
http://www.pdfernhout.net/beyo...
Preparing your kid to win the 20th century economic rat race leaves him or her a rat on a sinking economic ship in a 21st century economy...
That said, independence when needed, cooperation when needed, hard work, prudence, saving, frugality, investing in the future -- in broad sense, these are all good things to learn however a kid applies them later in life.
On code, the free code and content I write now and in the past like our free garden simulator and other tools has helped (a teeny tiny bit, I hope) to help bring about a 21st century transformation to a bigger gift economy, to better planning, to a more informed and enlightened and empowered citizenry. For example, this freely usable software someone else lets me reformat my slashdot posts to remove smart quotes from quotations in the above that display wrong:
http://dan.hersam.com/tools/sm...
So, free code and free content can make a difference in the world by making the world a better place in various ways. And then, such a society can hopefully do a better job of taking care of old farts like I will be soon enough -- if I am not already. :-) As well as doing a better job of taking care of the next generation which is much more important than taking care of the previous generation -- although you would not know that looking at who gets "Social Security" and Medicare in the USA -- the old, not the young). As Daniel Moynihan said, "the young don't vote, and it shows".
Kids grow so fast. Enjoy them while you can! See also:
http://www.katsandogz.com/onch...
----
On Children
Kahlil Gibran
Your children are not your children.
They are the sons and daughters of Life's longing for itself.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
1. Use a powerful editor that you know well.
2. Don't use Windows.
There you go. Done.
But maybe your way is right, after all, we could always use more miserable cynical fucks chasing after money.
Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
Switch the functionality of the '.' and ';' characters in C style languages. For me, it's perfectly fine with what '.' and ';' do and mean, but apparently it's a real struggle for those learning programming. While in University I'd be talking with somebody struggling in their Introduction to Computer Programming class, or somebody who was a CS major, and then dropped out and the number 1 complaint was how they were upset with how the program wouldn't compile because they were missing a ';' at the end of a statement. But if the character which represented the end of a statement was a '.', that would make sense to them because it's same character that represents the end of a statement in written communication. That way if they complained about a program not compiling because they forgot a '.', you could respond with "Well you wouldn't end a sentence with out a '.', would you?"
I guess he meant to say you should have hired a lawyer to get awarded some patents for some of the more novel coding you've done over the years? But that only serves to strengthen your point.
Lawyers and financiers have imaginary assets, intellectual property that only has any value because we all believe they do. When others start to call BS and it hits the fan (as it has on occasion over the past couple years / decades / centuries / millennia), at least you have the means to production.
Realtors, likewise, make their money because they've convinced us we need to finance single-family detached "American dream" homes or expensive downtown condos clustered in the "good" neighborhoods with powerful HOAs, with just enough scarcity to keep the prices inflated sky-high. If we could learn to get by in reasonably-priced and reasonably-sized homes and build up the neighborhoods ourselves, and flood the market with medium density communities and learn to be good neighbors, we could still live pretty decent lifestyles without having to slave away to barely make payments to our financiers.
Anyway, we'll never strike it rich because money isn't important to us. Coding is. And we'll do it for the highest bidder, but the money isn't really important to us. Maybe someday we'll construct a site that allows us to code what we want and get paid for it. But coding is a tool, not a trade, so maybe, maybe we'll figure out how to hire some tools to do the drudgework for us. Because money isn't really important to us, but it's a little important, really. And then we'll figure out how to pay those tools a bit less to wrestle with the boring parts of coding. And then we'll be one of Them.
"most of us in the industrialized world have a driving license and can drive, but track and bus drivers are still professionals with special license. The question is - do you want to be a track driver?"
Very good analogy. Thanks! (Typos fixed, sorry)
I feel that the world needs more people who understand computing and information management, but we probably already have perhaps 10X-100X more professional programmers than we need -- mostly making work for each other with slightly different proprietary (or even free) versions of essentially the same thing but with different bugs.
Agriculture used to employ 90%of US workers 200 years ago, and now it employs about 2% Manufacturing is also on its way down. Yet, gardening is the most popular outdoor recreational hobby, and the Maker movement is rapidly growing. People like making and growing things -- often they like that more when they are not forced to do it endlessly in a boring or stressful way due to economic necessity.
Programming may well go the same way more towards a hobby. It already is in various areas. For example, a dozen years ago, everyone was writing web frameworks or ecommerce frameworks, and now there are so many off-the-shelf ones, only hobbyists or researchers are focusing on that (mostly, always rare exceptions). As we get more free software piling up, how many jobs do we really need writing more? The jobs become more "software archaeologist" or "software chooser" or "software customizer" if even any of that depending on how far standards have spread -- so similar to your point between daily drivers versus specialized drivers.
To build on your car analogy -- there is also a difference between car drivers, gas station attendants, car sales people, car mechanics, car delivery people, car rental agents, drivers ed teachers, gasoline refinery workers, and car designers. All are involved with cars, but in very different ways. There are right now very few car designer jobs compared to all the others. One hundred years ago though, 100s of small companies were designing cars, and with fewer drivers the ratio of designers to drivers was much higher. Although this analogy maybe breaks down because in theory software may need less maintenance once the software ecosystem settles down and also software may eventually maintain itself as AIs.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
GETTING STARTED - First we need to get a development environment running. Let's try clojure: [example]. At this point you have already lost 99% of the population and we haven't even touched on css or templates yet.
That's how you teach beginners.
"First they came for the slanderers and i said nothing."
When people say 'programming should be hard' usually they mean 'programming is irreducibly complex.' There's no way around the fact that programming is hard.
"First they came for the slanderers and i said nothing."
The field of programming is only getting larger, so making programming easier for the people you're working with oen way or another will not help by shoving them into the gutter. The better route is to support and foster better static an anlysis so at least when they shoot themselves in the foot, they (or you) can see why it happened.
Bye!
Self-replicating space habitats that could duplicate themselves from sunlight and asteroidal ore were a long favorite "ark" idea of mine to deal with the risk of global nuclear war (although JD Bernal proposed them first in the 1920s it turns out). Anyway, arks are just another option to umbrellas -- given umbrellas may not work depending in the size of the storm. For me, the idea of a basic income is also a sort of an "ark". But I've tried others -- like helping people be more self-reliant with growing stuff via the garden simulator or helping people with making stuff with OSCOMAK (not to say how successful I've been, which is not much, especially for OSCOMAK, pretty much a big nothing except others are doing related ideas now in a smaller way like Thingiverse or Appropedia).
I agree there is a tension of where to invest your time and other resources. You have to find something that works for you and your unique interests and abilities. It;s true though that when you invest in yourself, or your family, or even your local neighborhood, you have a much better sense of whether the investment is paying off than doing general advocacy for something to contribute to global change. As I say on my site when I talk about five interwoven economies (subsistence, gift, exchange, planned and theft): "The particular balance a society adopts is going to reflect the unique blend of history, culture, infrastructure, environment, relationships, mythologies, religions, and politics of that society." I guess the same goes for individuals and families, too?
Anyway, I had my kid around age 40. I've come to learn that being an older parent has its pros and cons. My dad had me around age 50 though. So, good luck if you want kids!!!
And don't let worries about the future stop you, or no one would have kids, since even for billionaires, money can come and go. Example (and kind of makes your point about techies vs. legal sharks, plus mine about a basic income to support inventors):
"Goldman Sachs Not Liable for Failed $580 Million Deal"
http://www.bloomberg.com/news/...
"Goldman Sachs Group Inc. (GS) defeated a $580 million negligence suit over its role as adviser to speech- recognition pioneer Dragon Systems Inc. in a doomed merger, one of its biggest victories in a string of claims by dissatisfied clients since the financial crisis.A federal jury in Boston yesterday rejected the claims of Dragonâ(TM)s founders Jim and Janet Baker and two other shareholders that Goldman Sachs failed to properly vet Belgium-based Lernout & Hauspie Speech Products NV. The all-stock deal in June 2000 was rendered worthless months later when the fraud at Lernout & Hauspie was exposed and the company filed for bankruptcy. The verdict relieves Goldman Sachs of responsibility for a sale that left its clients with worthless shares in a failed company. The four Dragon founders sold some Lernout & Hauspie shares for $11 million before the stock collapsed and the Bakers lost the technology they spent decades developing."
I met Janet once at a trade show and she and her husband were also students of my college adviser They lost about most of their wealth, but worse, they lost access to all the Dragon speech recognition source code that was in some sense their "baby".
We all have our personal choices to make. And they are often hard ones. A book I just ordered:
"In Good Company: The Fast Track from the Corporate World to Poverty, Chastity, and Obedience"
http://www.amazon.com/gp/produ...
"From the Wharton Business School and a secure place in corporate America to a $35-a-month allowance and the insecurity of a life of faith. This may seem a precautionary tale of downward secular mobility, but as we follow James Martin through his life and Jesuit training, we find it is all about ascent -- to God and to true happiness. (Paul Wilkes, Author
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
When you spend 8 hours troubleshooting an open-source project to compile with a third party proprietary library it feels damn good to make it work. Coding is good because it's hard.
Golf is hard.
But golf doesn't pretend to be anything other than a game which is defined by the wholly artificial --- and unnecessary --- obstructions it places in your path,
They looked at this problem before, and came up with Netbeans. They looked at it again and the result was Eclipse. I don't hold out much hope.
Disclaimer: currently trying to [re]learn java (did a bit when it was 1.1) and I'm wondering if it'd just be better to use gedit or even vi...
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Java programmers are the wost, I dont know how many times I have given up on a java program because instead of them making a program that works its you spending a lot of time recreating their development environment, or its just a constant string of bitch and nag messages
I always thought programming was fun!
Maybe if it's painful to you, you should try a different line of work.
Why does everyone need to be a programmer? Why does someone imply, programming is a pain?
Todays tools are okay, and who can't be a programmer, doesn't need to. We do not need to simplify laws, so everyone can be a lawyer, so we do not need to change programming just to have everyone as a programmer.
Programming is either about money or masturbation.
Of course, the fact that a good programmer can make six figures is largely due to the fact that there are so few good programmers around -- in the (unlikely) event that awesome IDEs make it so easy to program that most people can do it well, chances are programmers' wages will drop significantly due to increased availability of employees willing to work for cheap.
Call me selfish, but having spent the 10,000+ hours to get good at programming, I have conflicted emotions about deliberately devaluing my skills and earning $10/hour again.
I don't care if it's 90,000 hectares. That lake was not my doing.
Indeed. The problem is that most programmers these days do not even know things like grep, etc. Just today I was working with a 500MB debug trace generated by printfs because that was the easiest way to see what is going on. With an OS that comes with good text-tools (or windows with cygwin), it is no problem to handle these at all. And once you add some perl/python/lua/whatever, you go way beyond the power of any debugger.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
But shouldn't everybody be able to do at least minor repairs in both of those areas?
I say that as a hypocrite, as I have AAA, and have paid for oil changes, but I *could* do the things.
At least they haven't automated being simultaneously pretentious and mathematically illiterate.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Well, your kids still need some way to make their nest egg so they can buy their rental properties. What are they going to do to get that starting money? To me, coding seems as good a choice for that as anything.
And, it's all fine and good to tell your children to invest, but I'd recommend diversified investment, not JUST rental property. Also, I'd recommend Real Estate Investment Trust investments over owning a single rental property outright. There's less risk with owning a share in a trust holding many properties, because, if you buy 100% ownership in a single property, that one property you bought may end up declining in property value if you're unlucky, even if the real estate market as a whole goes up.
As far as your policy considerations concerning the owning class, they are certainly real. In my view, the best solution to this is graduated estate taxes topping out at something like 90%. There's no social benefit to making it possible for children of rich people to do nothing other than fuck around their whole lives. Democrats like the estate tax. Republicans want to repeal it. Compromise right now is 40% maximum tax bracket with a $5,000,000+ exemption. I'd like the exemption lower and the tax higher.
Also, fuck beta.
---linuxrocks123
vi ~/.emacs # I'm probably going to Hell for this.
Funny thing is, 30 years along I really haven't run across anything I like better. Automake works great if it's already set up, but seems very esoteric to set up. Ant and Maven are just make with XML files. They're very clearly intended for use in systems that will autogenerate the build file for you, but somehow you always end up having to edit the damn things in a text editor and know implementation details of the build systems to make them work. Most IDEs are awesome as long as everyone works with that IDE and does everything with it. I've never seen that level of organization on any programming project. Most of the time I'm just putting together small libraries on one architecture, and can crank out a makefile that will work in a couple of minutes.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
When it comes to Java, it begins on day one with the standard "Hello, World" teaching people to write a procedural program in the static context before they even understand what an object is. And then they learn about object inheritance. Years later, they read Effective Java and find out their entire CS education was a lie. Meanwhile, they've been churning out utter shit as a contractor in Hong Kong or Bangalore or San Francisco... and every company who's been using their horrible code has been paying dearly for it.
Programming is not a "pain" if you do it right. Most of the times programming is a "pain" because you are working with code or frameworks written by mediocre programmers who probably shouldn't be programmers.
Then that's what, 90% of programmers? Because 90% of the frameworks out there are rather painful.
"First they came for the slanderers and i said nothing."
Jesus fucking Christ, not this shit. What made your generation so special and great? Here's a hint: nothing. You were as mediocre (or as great!) as the current generation. I'm honestly getting sick of all these old farts thinking they were the shit when there's nothing particularly outstanding about them.
Yes, discipline is getting a bit behind. So what? We should focus on improving that, not just say "kids nowadays are dumb." Cutting down on social media, smartphones and porn will help. Don't you think we should focus on showing what impact abusing these things will have? For fucks sake, when I taught computers to old people I realized the have one of the shortest attention spans I've ever seen.
In live programming an attempt is made to reduce the time between a program change and the ability to wittness consequences of this change. In the good old days, with punched cards, this was not a pretty picture as it could take a long time to get to that point. With Conversational Programming, which is a special kind of live programming, we try to go one step further and compute of the program you are writing. A simple version of Conversational Programming has been added to AgentCubes online. You can play with this as part of one of the hour of code tutorials: http://hourofcode.com/ac
Perhaps if you actually read what they wrote, you would understand it has to do with web development.
Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
The complaints seem to be about a lot of perfectly fixable usability problems, common to open source development tools, that nobody's bothered, or will ever bother, to address.
I know - we're supposed to hate MS here - but I've never had these problems in projects of any type, large or small, closed or open source, using Visual Studio.
And you get people also complaining that if making programming (actually, using the programming tools) too easy makes bad programmers. Which is total bullshit.