alavrik
Today, Stallman's and FSF's real political and social influence is miniscule.
FSF had some impressive achievements in the 90s, but they failed to utilize the social capital efficiently and couldn't catch up with rapid ecosystem changes (e.g. software and computer programming becoming mainstream).
An example of this is tivoization clause in GPLv3 which is a nuisance for businesses and contributes to marginalization of the license.
My point was that the social movement for software freedom is not going anywhere. These are two different things.
According to Stallman, using GPL helps to achieve "software freedom". But many people use it as a tool for achieving their own (project, community, commercial, etc) goals and don't care about Stallman's social movement. See Linus Torvalds for example.
Regardless of Stallman's contributions, the whole point of "free software" is no longer relevant. Not even for software enthusiasts -- those who care just use open source.
Although JSON is human-readable, it wasn't specifically designed for human interaction. There are other projects and languages that address this specific topic. For example, Yaml and Piq. (Piq is the one that I'm working on as a part of the Piqi project -- http://piqi.org).
I'd like to know more about your use case and the need for JavaScript generation. I'm open to new ideas. Could you please contact me at [email protected] Thanks!
Out of frustration with existing schema languages and tool support for them, I've been working on Piqi[1] which is concise, expressive and agnostic to data representation formats. It works for JSON, XML and Protocol Buffers.
[1] http://piqi.org
But I'm not sure one can be a good programmer if Java (or any other mediocre language) is the only thing she knows.
The language is a problem, because Java was specially created for this type of organizations. And it is not surprising that Java attracts this type of people (fungible crowds having no pride in their craft).
All attempts to establish best "engineering practices" in programming have so far been resulting in incredibly messy and inefficient technologies. UML, Corba, Object Oriented programming -- just to mention a few.
Also, whatever comes from an academic institution, as a rule, doesn't pass the reality check until it get stress-tested by the industry. Professors who don't build real-life software systems, can't tech engineering by definition -- they should stick mainly to theory.
Until programming matures, CS algorithms and data structures should remain our nails and wood.
In fact, I borrowed Yojson's json parser for my project (piqi.org). Also, I'm familiar with MPL. It looks very nice, but from what I heard it is fairly immature. And you definitely can't parse HTTP this way :)
I was just surprised that this code was presented as a good example of Haskell's fit to the parsers domain. It would be interesting to see if my perception of this code changes once I get more familiar with the language.
I'm not familiar with Haskell, so to me the code looks like a mix of high-level declarative and low-level specialized constructs (e.g. skipWhile, takeWhile) interleaved with syntax noise. And it seems to be using quite a lot of external libraries. Also, correspondence of the code with the HTTP spec is completely non-obvious.
In contrast, here's an HTTP response parser I wrote in OCaml using just one library: https://github.com/alavrik/piqi/blob/master/piqi-tools/piqi_... (see lines 26 - 218).
I've just noticed that the code you are referring to is an example. Well, looking at the example, I can hardly come to a conclusion that Haskell shines for parsing.
(I wrote a generic command-line Protobuf-JSON converter).
Second, which is more important -- in my first example, I forgot to mention about the ability to use two versions of the same module at the same time. Check the thread below for more details.
Another thing I forgot to mention, and it is more important than my first example, -- in Erlang, during the upgrade procedure, you can have two versions of the same module loaded simultaneously and their code can execute at the same time until all the code starts using functions from the second module. Basically, when you call a function, you can specify explicitly to call it the current module or from the new module. I can hardly imagine how you can get away with it in statically-typed language.
If you are interested in the topic I recommend reading Joe Armstrong's PhD thesis. It describes this and many other advanced topics in detail. Actually, it changed the way I think about concurrent and fault-tolerant systems and languages.
During the first module upgrade, data types from the newer module (2) can be incompatible with the data types from the older module (1).
Such incompatibilities are resolved dynamically during the upgrade procedure (implemented as a part of v2) which knows about type incompatibilities between versions 1 and 2.
After the upgrade from version 1 to 2, any subsequent module versions (e.g. 3) doesn't have to know anything about types from the initial module (1).
Basically, you would probably want to stay away from it. You can find decent engineers there but everything else is terrible for business: corruption, taxes, banks, cost of living, visas, etc.
If one can't innovate and create something radically new and efficient, then yes, he should probably stick with traditional business models and limit his ambitions to small markets, slow growth and modest returns focusing on efficient execution.
And there's more to it. Good engineers could do much better if they join an existing ambitious startup rather than if they convert to a small software workshop owners.
I think such approach is more flexible than making explicit assumptions on how much data is actually carried in integers.
Still don't think this old telecom technology is superior compared to modern serialization tools like Protocol Buffers.
Upd: I don't care much about battery life, it works fine for me. It comes in stock with 6-cell battery which doesn't stick out of the body unlike in previous models. It is very quiet -- previously I've been constantly annoyed by R61 being too noisy. And new T400s has 5400 rpm drive which makes it even less noisy. Overall it is a great laptop, can't think of any disadvantages.