Update: I wanted to mention that I have thoroughly overstated the situation as far as Rails apps seemingly being used more by “real sites”. I noticed a Django developer doing some awesome work on some Discovery websites and a few others. I guess it’s just me hoping that it was Python and not me. Well I guess it is me. I ‘ll keep leaning on my noob status until I can hopefully no longer use that crutch. Thanks to Derek the Python/Django guy who made me take a second look.
It amazes me that the most english-like programming language in the world was built by someone who is not a native english speaker. Maybe the simplicity comes from his inability at the time to be overly verbose, using only statements and such that best communicated an idea to someone with a very basic english vocabulary. I think since Matz has become pretty fluent in the english language though.
One other thing I would like to note. I remember a talk that DHH the creator of Rails gave along with Adrian Holavity, one of the Django creators. DHH ekpt saying that he felt some of the architectural decisions behind Django were better suited to we sites where in his mind Rails ‘ architecure was better suited to web apps. At the time I took as a somewhat snide remark, thinking listen to this saying that Django was for building simple web pages and Rails was for building “real” web apps. Well if you take a look on the web now I think the statement rings true, there seems to be many more complicated, detailed Rails apps compared to Django’s hundreds of sites that seem rather simplistic in the app side of the functionality. Just an observation. What do you think?
So badly that I am offering any hacker out there my volunteer time in helping with any programming related task. Just comment to me if you are interested. No matter how tedious the task let me help and possibly become a part of the project involved if it works out.
I have free time, but unfortunately because I have been diagnosed with Scleroderma. Which seems to make my dream of being a hacking Ninja a bit more urgent.
I figured I would throw this out there although I haven’t got much traffic to my blog yet. Hopefully the Google picks it up (ha ha).
I was commenting earlier today on a blog concerning Ubuntu and Mono and mentioned that I thought we were still trying to squeeze performance out of our processors and memory and that C#/Mono was not THE answer to getting the strong apps needed on the Linux platform (desktop that is). After considering things for a while I’m not sure, with the present computing architecture that we will ever get but so close to the metal with the higher level languages like the C#s Javas etc. I know we do system programming in those languages presently but the higher the abstraction gets from the hardware the less crisp our expressiveness gets as to where we want the hardware to go. We will continue to whip the hardware and drivers around for the far foreseeable future because human-beings are wired that way not to mention it will remain the right tool for the right job. I know some would like to think that we will be writing operating systems in C# in the next 5-10 years but as long as we know we can squeeze seconds and even milliseconds off an algorithm we will continue to do so, it only makes sense. I don’t see us ever giving in to the inefficiencies that managed code brings with it at too deep a level in the stack. When it comes to controlling the things that make our hardware hum along we will not relinquish control any time soon.
I was watching a webcast from the Berkeley CS 61a course with Brian Harvey. While he was wrapping up the final lecture he made the point to the students about not being a functional, object-oriented, or procedural programming bigot. My paraphrase of course, but the point being that these abstractions and languages have their place and great hackers will continue to wield them correctly, knowing where to make the transition from one to the other, without being religious or idealistic but pragmatic. I only hope my learning brings me to a place where I’m able to wield these tools rightly and not only write about them..
This is a genuine question that really starts to make me understand why the Richard Stallman’s of the world are so adamant about Free Software.
Case in point I was watching some of the new Google IO videos today and noticed the video about “Freemium – how to make free users paying customers” and was just a bit taken back by the somewhat underhanded sound of that statement. In my opinion it is anyway. It seems that they see there users as a means to the ultimate end, PROFIT (again just my opinion). The idea that ”free users” as future paying customers seems to speak of altier motives. I already blogged about how commercial companies seem to build their “opensource” projects in secret and then when they are happy with the project they “throw it over the wall” and magic happens, the project is no longer a for profit business venture but a good hearted move by a non-evil company to help the world of open source and free software move forward (NOT).
Back to my point of today. I noticed certain blog posts about certain Google open source projects, namely Web Sockets, and O3D and the changes Google was making to the “opensource” project. The changes were pretty substantial like the next version of O3D was no longer a plugin and that Web Socket versions would no longer be compatible etc. I guess in the normal scheme of an opensource project code breakage is not that unusual but when you consider these projects being released by commercial profit making companies claiming to not be evil when in reality opensource has become just another “edge” in the corporations bid to make money. Again if this understood at the outset it is fine but when companies like Microsoft are evil simply because of their dominant position and same tactics it just seems to be a double standard.
Imagine just for a moment a new startup that uses O3D plugin to build their stack around and now another company has simply decided that the plugin will no longer be such. This at the very least can cause it to be impossible for companies to work together on opensource projects if other companies learn how to bring them down or take them out of the game simply because they feel like it. This may seem to be circular reasoning but there is a point in there trust me.
I guess that’s what separates the profitable opensource companies from the ones that are at least trying to honor the principle and not mow people over with their size and influence.
Here is a quote from the blog I mentioned reading today. Notice the steering of the ship in spirit of openess and community.
The emphasis is my own in the quote. Just the few statements that struck a chord so to speak. I know some will say “that is opensource if developers need the old project they have the ability to fork it” . Yeah, I guess they can but that probably defeats the purpose of them joining up with developers of an opensource project of what was thought to be like minded people. No, just another huge rich “opensource” corp. I guess some will see this as being a bit unfair to Google but we should ask ourselves why the spirit of free and opensource software even means anything. Developers who participate and contribute to these corporate sponsored projects need some means of protection or at least predictability for their efforts, Right?
Thanks for listening
After my year or two of trying to move forward in my new found passion to code I have come to understand some of the deep issues facing programmers and the future of programming in general.
I watched I video of a talk given by a programmer from the game maker EA, in which the gentleman was talking about performance and such issues as the multi-core future. The talk was A Game Developers Perspective on Parallelism. I was somewhat taken back by the conclusions that he came to when having to optimize code for maximum speed and efficiency. As I try to learn to hone my skills and understanding on my own I jump back and forth from where my interests lie be it low-level (perspectively speaking) C or higher level Python. Basically his conclusions spoke volumes for what we tend to see as efficient code. When we try to think through our looping and execution schemes in coding to get the most out of the code the code tends to do just the opposite. I know coders are discouraged from magic in their code for understanding purposes and such but as much as this lends to understood code (for the human) it doesn’t lend itself to ultimate precision in performance (which I’m sure most programmers already know understand to an extent). We have to find the sweet spot though because as much as processing power use to be cheap in terms of cost that reality has only all but caught up with us and will probably start to edge us out of the lead soon.
We do not think in terms of the mechanics of precision when it comes to giving the machine the most performant way of executing a program I think we will ultimately need to move at programming at a higher level for our purposes but for the machine’s ultimate efficiency we need to find a way to let our machines generate the low level code that it will ultimately find efficient. I know it is easier said then done but we already have interpreters and compilers that are generating code to run at a lower level or from interpreted to complied etc.
The most expressive languages for humans to me are the functional languages ie Lisp Scheme etc. If we can figure out a way for humans to communicate at their level with highly readable code and algorithms then let an interpreter of sorts spit out performant optimized at times spaghetti C code I think that is where that sweet spot will ultimately be met.
I know that we want to be real men and code close to the metal and I seem to be most interested in that level in my learning but it seems not to be our best way to bridge the human/machine gap.
Please understand I’m learning so be nice when you judge my expressing of some of my understanding.
As always just my two cents worth.