Over time, I've noticed that many posters here are knowledgeable about programming (software engineering). I also personally have known several programmers who have libertarian leanings. I'm starting to wonder if programming is conducive to a libertarian worldview.
I mean, in a very loose sense, software runs in an almost anarchic environment. Granted, operating systems have various levels of interprocess security (like memory protection), but, for the most part, legitimate software will, by necessity, avoid touching other programs' data. Because of this NAP-like behavior, maybe programmers come to enjoy this sort of libertarian freedom.
For those of you with any knowledge of programming or what it entails, what do you think? Would choice in programming languages—C (completely unmanaged environment) instead of Java (running in a VM), for instance—maybe have something to do with it as well?
Life and reality are neither logical nor illogical; they are simply given. But logic is the only tool available to man for the comprehension of both.—Ludwig von Mises
Life and reality are neither logical nor illogical; they are simply given. But logic is the only tool available to man for the comprehension of both.
I don't think there's a direct relation.
But I think the key is being an intellectual that is pro-efficient using the computer and internet, and finding and reading information off the internet.
I think that the great drive behind libertarianism is that internet is a powerful vehicle for its diffusion.
Then, software engineers got more exposed to libertarianism through the internet than other smart intellectuals, who are less exposed by the nature of their profession.
The deductive nature of science in praxeology is directly analogous to software programming. It's therefore natural and simple for programmers to adopt.
Programmers are also extending deductivism to other fields of science, such as Stephen Wolfram in fundamental physics.
The fallacies of intellectual communism, a compilation - On the nature of power
Justin Spahr-Summers:For those of you with any knowledge of programming or what it entails, what do you think? Would choice in programming languages—C (completely unmanaged environment) instead of Java (running in a VM), for instance—maybe have something to do with it as well?
LOL - No. That has nothing to do with it.
Programmers are involved in every aspect of running a modern company and have a unique view of internal corporate politics. That is why they tend to be skeptical of authority. They know most people in authority aren't very smart. Programmers do tend to be very conservative about rules, procedures, and formalities though.
PS: Anything less than the root password means you are a slave. The programming language doesn't matter.
DBratton:Programmers are involved in every aspect of running a modern company and have a unique view of internal corporate politics. That is why they tend to be skeptical of authority. They know most people in authority aren't very smart. Programmers do tend to be very conservative about rules, procedures, and formalities though.
What about freelance programmers? Or hobbyists (like myself)?
Well the freelance and "hobbyist" (which often overlap with pro devs) are probably often annoyed and angered by the whole closed source / IP thing, thus driving the big open source software movement.
DBratton: Programmers are involved in every aspect of running a modern company and have a unique view of internal corporate politics. That is why they tend to be skeptical of authority. They know most people in authority aren't very smart. Programmers do tend to be very conservative about rules, procedures, and formalities though.
How true this is (bolded), although in many cases it may simply be a case of massive ignorance rather than pure stupidity. (Funny how this parallels with the ignorance of government leaders and bureaucrats who think they can be "smarter than the market".) In fact the "more technically skilled" are kept down in terms of authority because they're "too valuable to go into management" - leaving the less technically adept as the ones with the power to direct the organization and override decisions made at a lower level if they choose.
I'm not sure I'd agree that (all) programmers are conservative about rules and procedures, though. For me it seems about 50/50 with the more naturally talented and creative tending to be against strict controls/management, and the more text-book-loyal robotic/inflexible for more centralization and rules. No doubt these generalizations may sometimes vary.
Ansury:Well the freelance and "hobbyist" (which often overlap with pro devs) are probably often annoyed and angered by the whole closed source / IP thing, thus driving the big open source software movement.
Do you think this ties into libertarianism in any way, though? I imagine that BSD License advocates are more libertarian philosophically, but I doubt we can say the same for participants and advocates of the Free Software Foundation.
The deductive nature of science in praxeology is directly analogous to software programming. It's therefore natural and simple for programmers to adopt. Programmers are also extending deductivism to other fields of science, such as Stephen Wolfram in fundamental physics.
I think this is probably most accurate.
Freedom of markets is positively correlated with the degree of evolution in any society...
Justin Spahr-Summers: Do you think this ties into libertarianism in any way, though? I imagine that BSD License advocates are more libertarian philosophically, but I doubt we can say the same for participants and advocates of the Free Software Foundation.
I'm not sure what you mean by "ties in" but I don't think I'd read too much into it. Identifying a trend like this and then essentially guessing (probably all we can do) that there's some kind of connection reminds me of the same type of faulty logic the government uses when they're trying to determine why their imaginary free-market economy just fell apart again.
For every programmer I can think of who's even slightly open to the logic of consistent freedoms, I can think of 2 more who are so closed minded on the matter that it's painful even having some conversations with them...
I think it simply appeals to the same kind of people. Basically people who are analytical.The leftist argument goes "look at the cute rabbit, ohh so cute we must care for it" this is not very appealing to type of people who choose to become programmers for a living, they start asking why and what would the effects be. The cold analytical argumentation libertarians usually are prone too is much more appealing to his kind of person.
Escaping Leviathan - regardless of public opinion
"Democracy is the road to socialism." - Karl Marx
Justin Spahr-Summers: Over time, I've noticed that many posters here are knowledgeable about programming (software engineering). I also personally have known several programmers who have libertarian leanings. I'm starting to wonder if programming is conducive to a libertarian worldview. I mean, in a very loose sense, software runs in an almost anarchic environment. Granted, operating systems have various levels of interprocess security (like memory protection), but, for the most part, legitimate software will, by necessity, avoid touching other programs' data. Because of this NAP-like behavior, maybe programmers come to enjoy this sort of libertarian freedom. For those of you with any knowledge of programming or what it entails, what do you think? Would choice in programming languages—C (completely unmanaged environment) instead of Java (running in a VM), for instance—maybe have something to do with it as well?
Naw - libertarians tend to be nerds and nerds who post to the internet tend to have higher than average knowledge of software. I used to debate on atheist/theist forums and it was the same there... lots of computer geeks. I don't think there's a correlation between software programming and atheism... or libertarianism.
Clayton -
ClaytonB: Naw - libertarians tend to be nerds and nerds who post to the internet tend to have higher than average knowledge of software. I used to debate on atheist/theist forums and it was the same there... lots of computer geeks. I don't think there's a correlation between software programming and atheism... or libertarianism. Clayton -
This simpler reasoning sounds more likely to me - also, we're assuming that our guesses are correct that there's a higher than average number of technical people here. Maybe they're just more vocal, or maybe it's just not true at all?
(Says yet another technical/developer participant... yeah I'm part of the crowd that you're analyzing.)
ClaytonB:Naw - libertarians tend to be nerds and nerds who post to the internet tend to have higher than average knowledge of software. I used to debate on atheist/theist forums and it was the same there... lots of computer geeks. I don't think there's a correlation between software programming and atheism... or libertarianism.
lol clayton, you just described a correlation
Where there is no property there is no justice; a proposition as certain as any demonstration in Euclid
Fools! not to see that what they madly desire would be a calamity to them as no hands but their own could bring
Hey guys -
What a perfect time to stumble upon your discussion! I'm working on an article to show a correlation between programming and politics; namely the kind of thinking that goes on in the mind of a programmer and I'll admit right off the bat I'm a Libertarian so I'm biased and my goal is to show, through this article, that (a) the underlying principles of Libertarianism are very much in line with writing of high quality, efficient, scale-able software; and (b) the end result is a high quality, efficient, scale-able society, i.e., peace and prosperity for the most. Please note my article is unfinished and I'm sharing just the rough draft of the first ?half? in hopes of getting some ideas from you all! And please feel free to criticize. This thing is totally rough and I can take it!
PARALLELS BETWEEN POLITICS AND PROGRAMMING
Finally, my fellow coders, I hope to incorporate some of the following ideas into this article:
An expert will recognize patterns and value the fairness and elegance of treating all situations impartially. The expert will write functions designed to handle entire groups of situations so that less functions are needed, making for more fair treatment, easier maintenance, increased transparency (readability), and cheaper (on memory use).
Well, since this thread has been resurrected from the dead, I might as well unveil my pet project which I've been coding since September but has been in gestation for about six years now. I am designing a new programming language, called Babel. One of my primary design goals is for the average, first-time user of this language to utter something to the effect of "Wow!"
I'm not there yet. I probably have three to six weeks of full-time coding to get to a 0.90 beta release (which will take probably take me at least a year to do in my spare time). I'm probably 3-6 months from an alpha release, thought that might be a bit optimistic. If you're interested in hearing more about it, leave me a note in this thread and I'll link to the online repo.
Austrian theory and liberalism has had a huge impact on me over the last 4 years and this has played a role in my design choices in Babel. I will reproduce the philosophy of Babel here, please note that many of the statements to the effect that "Babel supports ..." are not yet true because the functionality has not yet been implemented.
The Philosophy of Babel
- Let it be
There's no point dictating to people, they're going to use the language they like and they'll like a language based on how well it is suited to help them achieve their goals. Hence, my primary design object with Babel has been to make it adept at helping people achieve their goals. This is complicated by the fact that there is not exactly a list of the most common goals which programmers have.
- Optimize for best performance on the programmer's brain
Larry Wall's philosophy is that we tend to over-optimize for the machine and often fail to optimize for performance on the programmer's mind. This results in poor overall performance when code is filled with bugs and sub-optimal algorithms or falls into disrepair due to the difficulty of maintenance.
Babel's initial inspiration came from my first encounter with Perl. I learned Perl only after having earned my degree and I realized that what I could do in minutes with Perl would have taken me weeks of intense C++ programming to achieve, even with the STL or utilizing specialized, third-party libraries. This is not because Perl has some special powers over other languages, it's because of Perl's optimization philosophy.
- Make the common case fast (Amdahl's Law)
The most important law of computer design is to make the common case fast. There's very little performance benefit to optimizing something that only happens a tiny fraction of the time, however fun the optimization of that particular problem may be.
Babel tries to avoid optimization for its own sake. Clearly, a more optimal solution should always be preferred over a less optimal solution, all things equal. But all things are rarely ever equal so smart optimization is directed towards the common case.
No language can magically solve all your problems but it can sure make them worse. Babel attempts to avoid making things worse than they have to be.
- Respect tradition
There is a large body of common practice across a wide spectrum of computer cultures. These traditions usually represent the "best in class" and deserve respect for that reason.
Babel's design is inspired by and indebted to many computing traditions: Unix, GNU, linux, C, C++, Perl, Lisp, Forth (and Joy), YAML and many others.
Babel looks to tradition to identify what the common case is in order to optimize to that. For example, it might seem strange on first brush that I have included bzip2 and bunzip2 as core operators in Babel but the need to quickly and easily compress/decompress data without a lot of headache is a common programming need.
Babel says: Why hide the compression operators off in some library where the programmer has to know they exist, go look them up and then import them? Why not just make the common case fast? If you hate bzip2, you can always roll your own operator and add it into Babel or import an existing library.
- Be humble
A lot of programming concepts have very lofty names but when you start tearing off the Christmas-packaging and look underneath, you often find that the reality is decidedly less grandiose. Babel attempts to take a more humble approach. While there are 'reflection' 'polymorphism' 'pure functional evaluation' 'call with current continuation' and even 'lazy evaluation' in Babel, they are not called these things.
- Preserve symmetry over orthogonality
Many Babel operators are redundant. I have yet to understand all the hubbub about orthogonality - the basic operations of a pure Turing machine are orthogonal and they are everything you need to build a fully functioning programming language but I'd hate to program a Turing machine.
Instead of orthogonality, Babel has chosen symmetry as the guiding light. Whenever possible, I have tried to make operators such that they exactly undo each other.
[1 2 3] [2] cut cat ------> [1 2 3]
I believe this design philosophy will make it easier for the programmer to memorize the operation of the core operators. If you know what cut does, you also know what its opposite (cat) does.
- Be cooperative
Babel's core operators are designed to consume input from as many other operators as possible and generate output that can be consumed by as many other operators as possible. This makes the suite of operators available for operation on a particular piece of data as large as possible.
Babel attempts to apply this same philosophy to the external environment, as well. Babel will read in any file type, and can save its internal state in a variety of the most widely supported data formats (UTF-8, Graphviz dot, CSV, YAML-subset, S-expressions etc.)
Babel is also easily built into your C or other language project and can be easily compiled with C (and possibly other) language extensions. Babel can dynamically link with any library that understands how to register new opcodes in Babel which is an almost trivial operation.
- Be literate
Babel's layout is partly inspired by Knuth's philosophy of literate programming. The primacy of the namespace hierarchy in the layout of Bipedal, indent-delimitation of comments, quotes and namespaces, the "normally open" nature of a Bipedal file, the avoidance of arbitrary punctuation characters as operators, the permission of Unicode characters as identifier names and the use of "visible whitespace" are all inspired by literate-programming ideas.
Babel is conscientiously international. The non-English-speaking world is the future of technological and economic growth and they need to be able to program in the language they speak. This is why Babel has seamless support for UTF-8 strings (parsing, string operations, etc.) and why Bipedal files are UTF-8 encoded, permitting Unicode identifier and operator names.
- Avoid intellectual property tarpits
Babel does not originate in the university system, it has been developed entirely in my own spare time. I have decided to keep Babel out of the GNU tarpit - Babel does not use any GNU software and is BSD-licensed. This means that Babel can be used in closed-source, commercial products without royalties or other hinderances.
As anyone who has spent five minutes in honest, unhampered reflection on the issue knows, intellectual property law is in severe disrepair in the developed world. Babel is open-source but respects the right (the commercial need, in fact) of software developers that release their software onto open platforms - such as the PC - to keep their source code closed.
Having spent a few years as a hobbyist PL designer, I would love to see where you are going with Babel.
@Andris:
https://github.com/claytonkb/Babel
The README has a general overview and you can consult doc/babel_guts.txt for more in-depth info.
Also, I'd love to hear any war-stories... I know it's incredibly difficult to bring a new language to fruition, get users, and so on. There are a million ways to do it wrong (as attested by the millions of new languages that no one has ever used). I am ambitious enough that I actually want Babel to become widely used and I have a strategy that I think will work toward that end. Anyway, I'm happy to learn the lessons that I can from the experience of others.
How will it be better than Python, Java, Ruby, etc.? Any use cases in mind? How will it help me develop web apps?
To paraphrase Marc Faber: We're all doomed, but that doesn't mean that we can't make money in the process. Rabbi Lapin: "Let's make bricks!" Stephan Kinsella: "Say you and I both want to make a German chocolate cake."
How will it be better than Python, Java, Ruby, etc.?
Not better, just different. That said, I am developing it in such a way that I would prefer to use it over any of those languages.
Any use cases in mind?
Glad you asked. So, my view of languages is that nobody ever learns a language because it's "so powerful". Look at Lisp - it is clearly more powerful, flexible, you-name-it than any of the mainstream PLs. But nobody uses Lisp. Why not? Because they don't need to use it for anything. In order to enter widespread use, a language requires a killer app of some sort... an application which people are motivated to use and, hence, willing to add a new language to their vocabulary, if required. I didn't think this idea up on my own, there was some article I read somewhere that made the case and I'm convinced it's true.
So, I have an application in mind which is: an encrypted virtual drive that can be stored remotely (on the web) but which is encrypted client-side. I believe people would use this if it were available. The current solutions, such as dropbox, require you to encrypt as a separate step before sending the file out, which is an insecure usage model (info leaks through file names, user forgets to encrypt before sending, etc.)
How will it help me develop web apps?
It depends. I'm not going to write a web dev environment, in part because I don't know how and in part because I think it's a waste of time (that's part of why I don't know how). The browser model is fundamentally broken. The reason we use browsers is because data fetched from the ether is inherently dangerous... it could contain viruses, trojans, spyware, keyloggers, etc. But the browser itself is a fundamentally insecure container and it restricts the user experience in arbitrary ways that just workarounds for the insecurities inherited from prior web architecture.
I believe that a revolution is going to occur at some point. Instead of OS's and "the Web", I believe we're going to have something which I call a "compute environment." If you've used VNC, you'll have an idea of what I'm talking about. Basically, the user wants to be able to access his data at all times from a relatively consistent user interface, across all his devices. Apple is leading the way on this but I don't think their model scales. It will work for their hardware niche but the reality is that a piece of hardware becomes exponentially more useful the more devices it can connect to. The Apple model relies on segregation of Apple from non-Apple hardware. At some point, that model will break down.
A compute environment consists of: state, user-interface and business logic. Unix was really the first truly comprehensive compute environment and remains a formidable model of computation in the web environment despite the fact that it was not designed to be a web OS. I have to be honest: there's no way in hell I could write a complete compute environment but I think Babel will make a kick-ass component of some future, yet-to-emerge compute-environment. The Babel core could be used to implement the business-logic of the CE and the "killer app" of a virtual encrypted drive could be used to implement the state component. All that is left is UI and I have some kick-ass ideas for that too (just need to find someone crazy enough to implement them).
To get back to your question: will it help you develop web apps? Yes and no. It can help you with any intermediate processing (text processing, logic, etc.) but I'm not going to build in an HTML, CSS, PHP, etc. library. I'll leave that to someone else.
There will be a built-in HTTP client so you can say something like:
"http://www.foo.com/bar.html" slurp
... and it will pull the file bar.html down off the web through HTTP and place it on top-of-stack (TOS). If the web server also supports HTTP PUT, then you will be able to do the reverse:
"http://www.foo.com/bar.html" spit
... and it will generate an HTTP PUT request to put whatever is on TOS out to that file on that server. That's the extent of the built-in support for web, however, and its purpose is not to enable you to write an HTML browser (already plenty of those) but, rather, so you can pull down a Babel file off the web and begin executing it locally. This goes to the CE I was describing above... at some point in the future, there will be no "installing" of programs or apps, you'll just pull code right down off the web and execute it as-is. Yes, there are security problems but the browser is a highly sub-optimal solution to those security problems ... I believe Babel has a better solution (I can describe it if you're interested).
Addendum: By the way, the core Python, Ruby languages etc. are no better than Babel in terms of built-in web support, their web capabilities come from the available user-created libraries which you can include. Babel will be at least as easy to extend as any of these big-name languages are today. And none of those languages have built-in support for HTTP GET and PUT like the Babel core will, so if it's just a core-to-core comparison, I think Babel is more web-friendly.
In fact, I think it is easier to extend Babel with new functionality based on existing open-source code so I think it will have a leg-up in that way, as well. If you want to re-use your favorite web-development environment (say, curl), it's almost trivial to build a Babel-linkable library. You just write a few wrapper functions and you're on your way. Eventually, I hope to make an automated wrapper-function generator... then it will be a push-button operation to extend Babel with your favorite code library.
Update on Babel: Development has been stalled for the last couple of months due to very heavy day-job workload. I hope to resume active development by the end of the year. I have cleared a couple unanticipated hurdles in the architecture of the language and I basically have the entire thing in my head, just need to find enough keyboard time to write it all out.
I dont think there is a correlation. If anything, computers are pretty statist- centralized machines, everything is at a touch of a button.
However i guess it is more libertarian to use linux, than it is to use windows (but i myself use windows since i game).
But then again, programmers are intellectuals, and alot of intellectuals are socialists/leftists in some way, but then also why alot are libertarian?
Maybe libertarianism is the new intellectualism>?
“Since people are concerned that ‘X’ will not be provided, ‘X’ will naturally be provided by those who are concerned by its absence.""The sweetest of minds can harbor the harshest of men.”
http://voluntaryistreader.wordpress.org
What are you doing? Computers are statist? It is a machine, it does not have beliefs or goals. Using linux does not make you "more libetarian."
'Men do not change, they unmask themselves' - Germaine de Stael
Ill rephrase- They are more centralized, which could be a statist resemblance.
Dont take me too seriously about it, just wondering.
Also if we were to make an analogy- Linux you can customize however you want, but with windows you gotta follow the rules set by microsoft (which in this case would be the state).
You said not to take you too seriously, so I won't.
Hammers are centralized striking devices, like the statist military. Therefore, hammers are statist.
http://direct.mises.org/community/forums/p/30958/489331.aspx#489331
@Clayton
Even though I'm no programmer, glad to hear it! Keep us posted!
It definitely seems like there's a correlation, and I've been thinking it through trying to find an explanation....causation, if/then statements, critical thinking skills learned through debugging, but I'm starting to think the correlation is just that guys that post a lot on the internet tend to have deeper computers skills than the average user.
RagnarD: It definitely seems like there's a correlation, and I've been thinking it through trying to find an explanation....causation, if/then statements, critical thinking skills learned through debugging, but I'm starting to think the correlation is just that guys that post a lot on the internet tend to have deeper computers skills than the average user.
Well, a programmer has to think systematically and precisely. There are a lot of parallels to that kind of thinking and, say, logical and philosophical system-building.
^^
We should see alot of mathematicians and other kinds of scientists too.
Programmers have a higher ratio of productive workers to, well, parasitic ones than scientists. I mean, of course, hired by private business vs. hired by the state. People used to getting grants because they "deserve" them are less conductive to libertarian ideas.