The Key
January 13, 2009 at 5:54 pm | Posted in community, History | 15 CommentsTags: corporate, free software, gnu manifesto, hackers, MNC, OpenSource, Programming, software
I was wandering on #freebsd and #openbsd some days ago and was pretty much amazed when people did not like GNU way. Then I read FreeBSd and OpenBSD FAQs and foud that BSD folks are very keen on replacing any GPLed code in their system with newly written BSD licensed code. OpenBSD even says that GPL is acceptable as last resource.
what the heck ?
I was very much interested in installing OpenBSD and using it as my daily OS but after this I was literally hurt. I decided not to spend any time on BSD, rather using that time to understand the GNU software. The current situation of software demands proper attention, commitment and dedication to copyleft ideals, otherwise proprietary software companies will keep on getting stronger and stronger and will keep on eating the society in the name of business and it will affect the Free Software community as whole, whether BSD or whether GPL or whether Apache people. It will affect all of us, after all we make together free software community). Free Software is about our responsibility to help society grow better , to make technical innovations that will help removing misery and pain from this planet while proprietary software people are totally committed the other way, make money on the cost of society. Earth is the place where out kids grow, where our loves ones and friends live, and where we see people like us trying to help each other, proprietary software supporters, intentionally and indirectly do not want, they want control of economy and by writing BSD code BSD people help them in gaining control over society and hence themselves (Windows has some BSD code), BSD license is like giving someone a sharp knife, telling him that he can use it to cut vegetables and fruit so that he can make his health better but that person uses that knife to stab you , in the face…
What people like me do, we don’t give such people the knife, we give them GPL, they can’t attack us back. Whose responsibility this society is ? Who wants to stand for his country, for people need to grow out of misery and pain and lower level of poor life to get better education, better health and a better future. if software is the tool then who will accomplish this ? If software is the key in creating a society of liberated, educated and technical people who can take leadership and responsibilities in their own hands then what will you do ? .. Now don’t say “Oh.. please, we write software, don’t include politics here”..
Well, why Niels Bohr (if you have read Science then must be knowing him), a great scientist was flown in a small and risky 2 seat airplane from, IIRC, Denmark to Britain. He literally stopped breathing because of some of technical problem in the plane. British people have to revive him when the airplane landed. It was one of the operation of World War 2. Now why a non-violent scientist came under the World War 2 plan. Its because he was extremely technical when it comes atomic science. If Hitler could have him then Atomic Bombs would have fallen on USA and UK, not Nagasaki and Hiroshima and your people, your friends, your loved ones will be saying “Heil Hitler” instead of “this time I’m free“. Niels Bohr has the tool to a Free Society and same way in year 2009, the Free Software is the key to a free society where no one is judged on the basis of his religion, his race, his color or his cast. In the world of free software we judge people based on their programming skills and we believe that Information needs to be free for society needs to grow and remove the pain and misery from the lives of their fellow people.
I think writing BSD licensed code means helping the greedy business to establish the control over us. Don’ do that, if you love your freedom. I Love the Hacker’s ideals and from experience I can say that Hackers can become great politicians, and great Leaders who can turn the direction from where human lives are heading today to a better and prosperous future where the government will support people to help themselves and then will get out of their way to let them grow. Its the Free Society, where anyone can assume his responsibility for his countrymen then he will lead, GPL is the key in doing that, if you loose it, you loose the quality. you loose the peace that a man wants in his entire life. Accept the truth and truth will set you free.
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. – Ropar, Punjab (INDIA) – 140126
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are
Way of Life
November 15, 2008 at 12:11 pm | Posted in community, Hacking, History | 1 CommentTags: free software, GNU, Linux, software, UNIX
People are wrong when they say GNU (FSF) is just a collection of free softwares, GNU is a way of life. This way of life transcends itself from software profession into one’s personal and social life too. The truth is not that when people come in the GNU community then they become good, that they become the ones who think of society first instead like others who think of their selfish business interests based on the proprietary softwares.
The actual truth is GNU is a place which attracts people who work in the favor of the society, in the interest of humanity. GNU is nothing less than unicef , helping both kids and mature people who have a common interest in making technology better so that that technology can be used to put humanity on the forefront of innovations. When GNU was founded it gave a platform to all the people who were working on different places all across the different nations, to come under one umbrella, the Free Software Movement.
For me, GNU worked liked Red Cross. I have worked for 5 years with Windows, 3 years in college plus 2 more years at home and when today I compare my learning in Windows with just 2 years of working with Linux I see, I am much more of a man with common-sense about software. Windows is an Operating System which kills your senses, and so are all the other proprietary Operating Systems. They kill your senses. It is like you purchased a Motor Cycle and you don’t know where are its spark plug and Petrol Tank. When it stops working, you go to the Manufacturer and he charges you $100 and then tells you that your Petrol Tanks is empty, please fill it and then it will work. It is exactly same in the case of support from Proprietary Softwares. GNU gives you the complete Motor Cycle like as it exists today, you can see where is the engine, where is the spark plug and when trouble happens, you can open them and look for the solution. You can think of the fully-covered machines and then can imagine where our development have been gone if it was like that. The technology must remain open for everyone to study , so that they can spend their time on understanding problems and offering solutions. This is what exactly Free Software community does and I think this is what exactly GNU does. Making money and keeping technology patented are two very-very different things. Corporations are making money on both GSM and CDMA technologies while GSM is open and CDMA is patented. In fact, 82% of the Mobile market is owned by GSM, an open standard. I don’t understand why companies making proprietary software get so baffled when someone talks about Free Software in front of them. For becoming the leader of the market and #1 in business, your competitors need to go out of business. You do that by solving some problems which are unsolved yet, by changing your way of doing business, by offering some service to your customers, services that seem very simple and general but never done, by looking at the domains that are not understood by pointy-haired bosses. Google did that same, it solved the problem of searching, it solved some problems of e-mail. If you will look at the history of corporate you will find many examples conforming my viewpoint.
Business means making money, by either hook or crook. Unfortunately, general public does not want to understand this, an average man avoids an understanding of his surroundings all the time. He spends 30 years in his job, yet never tries to understand why he is there doing his boring job. He never asks himself what will happen to the company if no one does his kind of job. He never tries to understand his place or the place of his seniors in the company. If one tries to do so, he will get fed up by the so less power he gets in his current job, he will get impatient by thinking if his job and comparing it with what he can do, what he could have accomplished in last 5 years. Many people are afraid of doing business in first place, that fear is nothing, the fear of loosing is just plain nonsense because if you don’t get any risks, if you don’t have any insecurity, you won’t get anything worthwhile (e.g. having 10 million dollars in your bank account is one worthwhile thing, while the other worthwhile thing from my view point is I can buy nutritious food and make my body strong) . One can also make money by not harming the society. One can make money by making the society, the surroundings a better place to live. There is no need and there is no point in using political tactics to gain power in business. It is like that we have create a different type of business-model while keeping it more-profitable than current models. Besides that when one works in interest of his people, he will not know, how many people will be helping him. There will be communities working day and night to support such a business. One of those organizations is GNU.
GNU is not only about software. Its about making lives better. The people from the Free Software Community are not the onle ones who can become great Hackers (a.k.a great programmers), they are also the ones who can become great politicians, innovative businessmen and global leaders. I know most readers will not understand that. GNU uses software as a primary way to express itself. How do you express yourself ? GNU is about living for a cause, GNU is about Freedom, GNU is a about living your life the way you want, the way you truly are, not the way some boss thinks you are. GNU is the way of life, GNU is inside you, GNU is a mirror all you see in GNU is just own reflection. GNU is not only about software, its about Freedom of your inner self from all the chains. GNU just hands you a tool that sets you free. GNU is a way of life.
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. – Ropar, Punjab (INDIA) – 140126
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.
Ruminations on Programming – 2
November 6, 2008 at 10:37 am | Posted in Hacking, Programming | Leave a commentTags: C++, Lisp, newsgroup, programmer, Programming, software, usenet
This post does not contain anything except my own experience with programming. Its just my own experience of 3 years, 2.5 years to be exact, with programming. No, its not stolen. Some programmer from USA read my article on how to kill the poor quality software and then he asked if I stole it from somewhere. I had to tell him that its my own creation. What the heck, they are only my thoughts.
We will start talking on how to be a better programmer. I believe that using Linux to learn programming will give you an edge over the people using Windows. I also believe that if you dual boot your computer with Windows and Linux, you will never be able to learn anything about Linux, over a period of 10 years. I also advise you to use a Desktop Computer rather than a Laptop, unless you have very special and helpless requirements. One thing I am darn sure that can shape you in becoming excellent at programming is to hang at Usenet Newsgroups all the time, e.g. for C use comp.lang.c and comp.lang.c.moderated for Haskell and Lisp, use fa.haskell and comp.lang.lisp respectively. Hang there, read posts, reply to posts on what you think about them, ask questions, give answers. The market is highly competitive when it comes to a job in Software industry, where one has to rely on his programming talent and ability , which can be improved day by day at a miraculous rate if you keep on hanging on Newsgroups all the way. read Usenet before breakfast and after breakfast, read and write the problems before lunch and after lunch, ask questions and reply to queries before dinner and after dinner. Usenet 24 hours a day, you need to live with it, if you truly desire to become an excellent programmer. That may sound like a overfeeding problem but it is not. I told you, getting a Job in Software means high competition even when you have got the job and performing well and being a part of mass fired team is so common that you should not get amazed when 116 employees are fired along with you. You should expect it everyday. As a programmer, you need to check your official e-mail every morning for a termination letter. It sounds really bad and that is how we hi-tech programmers live everyday, in the shadow of penniless future. There is someone who say he is okay while he is living an average life by working only on job and not while in home, with kids. I feel sorry for you if you think that. Your only security is your talent and you need to improve that talent day in, day out, night in, night out. Everyone wants to have a family life and I have to say this painful truth that when you start doing a job, you must improve your programming skills and for that you need to do 2 things:
-
Use the office time efficiently and effectively so that your productivity is more than that of your colleagues. You will not get any extra hour than your colleagues, for everyone has 24 hours in a day. Its only the use of those hours and minutes that will put on different and productive front.
-
Invest your personal and family time into learning the new concepts. Learn what most programmers are weak at, Problem solving, Algorithms, understand when to use which Data Structures , learn a new language which focuses on solving problems elegantly while being a real-life language (like Haskell, Mercury and Common Lisp) while at the same time not focusing on languages which exist purely for monetary reason on this Earth. Working in those languages at your home will give you a new perspective on programming and will definitely equip with an ability and tools that very few will have and those tools and the experiences will serve you all your software life.
Whatever I am describing here is purely from general purpose programming perspective only. Its not directed to one language or one platform in anyway. Its not even directed at solving some particular problems. Its also not about being good at what you do for for bread and butter. Its about living a quality life. Its about thinking about Software on the Monday morning, its about coding while you are in your Friday dressing. If you are not willing to spend next 10 years, perfecting your craft of programming, you better look for some other job or do an FMCG business, a good idea for making 10 times of what you will earn in doing a programming job. So here are my technical ruminations, not in any order, based on my own experience with programming:
-
Remember, we programmers, are problem solvers. My first rumination is in realizing that we are problem solvers.
-
As programmers, we identify the problem at first. We explain *what* first, we need to be very clear on what exactly is the problem we are going to work on. Many programmers identify the effect of the problems to work on rather than the original cause of the problem. This thing needs to be avoided. Identifying the specific problems to solve is one of the most important skills in programming, if not most. If you mess-up this first step, you will mess-up the whole software.
-
We choose tools to solve the particular problems. Those tools may be a collection of data structures, may a set of algorithms and may also be some components of Standard Libraries shipped with particular language implementation. e.g. in Socket Programming, we use Networking components like bind(), recv() and threads to solve our networking problems.
-
We need to practice different ways of collecting and organizing those components so that we can put a structure to them to resolve the problems we are working on. There are many ways to put the components collection into a structure and with experience we will learn and master many of them. It is called the design of the program but design is very subjective word, thats why I used word structure as the approach to put together the components.
-
Many students and even majority of programmers ask a question like “Which language is good for my career, C++ or Java ?” . This stupid question shows the stupid mentality of the seeker. The whole basis on which the question is based is wrong, the thinking about what programming is, in that person’s mind, obtuse. That man needs to take fresh look at what he has learned and should file a human-rights harassment suit against his college(university). There are no careers in programming languages, there is no career in Java, there is no career in C++, there is no career in Oberon and for the heck of emphasizing, there is no career in Lua. There is a career in some domain, there are careers in different domains like System Programming, Telecommunications field, Embedded Programming, GUI development and there are careers in Web Development. There are many types of domains and there are always more than 2 or 3 programming languages used in one domain. Besides that learning about a domain is whole time consuming task. Try doing 3D-programming and tell me. So as good programmers we are supposed to know about the problems of our domain. We need to get familiar and understand the different types of problems occur in the particular domain we are working on and prhaps make a mental note of all of them. It takes some years before you get proficient.
-
This also belongs to the last point. We need to get familiar and understand what types of solutions are used to solve the types of problems identified in step 4. We need to read and find what good programmers and hackers use to solve the particular set of problems in our particular domain. More you do, the better you will be. These 2 steps must get familiar to you like you are familiar with the tastes of foods you like. You just recognize them by smelling or biting the different foods a little. Same way it needs to work for domain problems and the way hackers approach for their solutions.
You can be better programmer, if you will make it happen buy practicing, practicing and practicing…. oops! I am sorry, I was wrong you can not become a good programmer just by practicing, practicing and practicing. The old age saying “Practice makes a man perfect” shows only the partial face of the problem. The other 50% is You also need a company of excellent programmers who will tell you where you are wrong and right and will dictate and improve your programming ability and will teach you what is called quality practice. Practice does not make a man perfect, only quality practice makes a man good at something. That company must consist of helpful and technically sound people. Fortunately that community is existing here from much longer times , it is called Usenet: UNIX Users Network… eat it. HTH, HAND.
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. – Ropar, Punjab (INDIA) – 140126
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.
Ruminations on Programming
September 23, 2008 at 3:52 pm | Posted in Hacking, Programming | Leave a commentTags: .NET, C++, Lisp, Programming, software, VB, VB.NET
This post does not contain anything except my own ruminations on programming. Its just my own experience of 3 years, 2.5 years to be exact, with programming. In my 6 months at new job, I have learned C and Socket Programming while I already knew some C++ and Common Lisp.
I think C teaches you a lot about memory management. Although many programmers claim that C++ is a better C, in some context I don’t agree with them completely. When you work in C you work with arrays and pointers all the time, while in C++ the standard way of learning is to start using Strings, Vectors and Algorithms from Standard Library, while iterators come on their way towards you. I have spent much time on them. In the very beginning stage of learning, I have to admit that C++ does not instill a thought of understanding memory management whereas C does, C does it all the way. This does not mean that one is superior over the other. Its just that their way of thinking about solving a problem are entirely different. If one very well wants to understand about how the hardware is managed, at a very early learning stage, I think one should start with C. I think C teaches you how to manage hardware, a general programming concept that everyone must learn and it will take lots of time before you get the hang of it. Now lets go to the other opposite side of the hardware management, Problem Solving, if one is not interested in extreme performance or efficiency, and wants his program to run faster than Java, then I think one can go with some language better than Java, some examples are Mercury, Haskell, Ruby and Common Lisp.
There are some people who believe that using C++ over a longer period of your life, like 10 years, is a good way kill your precious youth. I don’t have any opinions on that except one. C tries to manage that hardware memory management while it tried being a portable language many many years ago. Its good at that, it does so explicitly. Common Lisp, created long before C, tries to focus on solving very difficult problems and it is quite good at that. Now both, being good at hardware and being good at Problem Solving are diagonally opposite skills and very valuable if you want to spend a lifetime of yours into writing Software. C++ tries to be good at many many things, it tries to manage hardware properly, shifting that task of memory management from programmer to compiler. C++ is backward compatible (not same) with C, it has all the problem on today’s AMD Athlon Dual-Core processor which C had on PDP-11 in 1970s. 2nd, it also tries to good at problem solving, while managing the memory properly, I think in doing so it has acquired lots of obtuse problems on its own, along with all the C problems. I think Stroustrup could have made it a Solution to C problems rather than C Problems + Problems of its own. One thing it did excellently is putting Object-Orientation into the industry, which no other language did. Then again, choosing to learn a programming concept and putting Object-Orientation into industry are two very-very different things. I also have a feeling that C++ does not teach you the concepts and ideas that are ideally transferable to general purpose programming. Ideally because, whatever you will learn in Haskell, Lisp or C will be completely transferable to other languages as well but I don’t think this is the case with C++. Go to comp.object and everyone will tell you, not to start learning Object-Orientation with C++, choose something ideal like Smalltalk, Lisp, or other language. I think C++ has its own ways of solving problems which, though transferable, and not ideal concepts like “Functional Programming In Haskell”, hence not transferable from my standard. You can manage memory in C++, just like C, without any problem, you can write Object Oriented programs in C++, like you write in any other language, you can even write C++ programs using generic programming paradigm. Question is not what a language can or can not do. From my viewpoint, question is also not what a language forces you to do (Many people claim that Smalltalk forces an OO paradigm on programmer but thats just stupidity in ignorance. Programming is not that simple). Question is what a language instills into you, over a longer period of time, the time period of 10 years. I have yet to meet a person that says after 10 years in C, I am wasted, after 10 years in Lisp , I made a fool of myself but I have seen some people who say after 10 years in C++, they thought Why they had bothered with C++ at all. If you think after 10 years that language was not worthwhile, I think one should stop now. I will not be learning that kind of language. Your experience and your company of good programmer will instill a common-sense in you about programming and that common-sense will tell you, will make you able to distinguish between a good tool and a bad tool.
Now still, while I am going to end this post, I believe that C++ is far and far and far and far better than VB and .NET, which are wrongly known as programming languages. I think, if Bill Gates does not want to do that, at least, as a courtesy or better as a responsibility towards our fellow programming community, we should label them as Kid-Beats and Fool’s Glory respectively. They don’t even qualify for being called as programming languages. How you will create a binary-search-tree in VB ? .. Can You do that without creating a mess ?
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. – Ropar, Punjab (INDIA) – 140126
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.
Open Source, Salary & Society
September 12, 2008 at 5:53 pm | Posted in Patterns, Programming | 2 CommentsTags: corporate, free software, jobs, open source, OpenSource, programmers, salary, software
Very Recently I read an article titled Franchise by Russ Nelson. I was quite impressed by the man’s talents. He says that even if we have Free Software running on all across the world, the salaries of programmers will still be on a higher scale and he concludes by disagreeing with the Richard Stallman. I was very happy th at he disagrees on such a point on technical basis rather than biased opinions. On the basis of my very small amount of experience in software and my experience in analyzing the general life, business aspects and experience by the habit penetrating deep into the economics I can very strongly state an opinion which is very different both from Russ Nelson and Richard Stallman. When Russ Nelson said In a free market, over time, competition in the production of a commodity product will eliminate all profits, he was right and he was talking about the business owners, the lords of the companies. He is not talking about programmers. At such point, after such threshold, the salaries of programmers will become independent no matter whether the programmer will be working in company creating proprietary softwares or in a company creating free softwares.
One more thing I am sure of that will happen is the reduction in the number of poor programmers getting high-paying jobs and that will relieve Joel Spolsky of his worries a bit about poor quality software
. Since at that point humanity will be liberated from poor thoughts, businessmen will come to one in contact with quality programmers and in conflict with poor ones. Either you make quality bread or you shut down your bread house, which a business man will not. He will simply fire the poor bread maker and hire a good one who can practically make good breads, not theoretically. Myself, personally, I really hate it when I see good, quality programmers earning 20% of the salaries than poor ones who with years of experience still use void main() and solve problems using arrays all the time in C++.
Now the only question remains is salary will be on a higher side or on lower plane. I am sure both salaries of programmers and software coming out of the hands of programmers in such an open market, will get better. I don’t think programmers will get way much higher. I repeat both softwares coming out of the hands of the programmers and salaries of those programmers will be better than what we are getting in today’s proprietary, closed and non-cooperative corporate culture. I think good programmers in such an era will not be poor like what we have the situation now.
That trend has to go, good programmers need to be paid good and poor programmers need to be fired. In fact poor programmers must be capsuled in a spaceship and need to be sent away to the Saturn at minimum, so that they will no loner be able to pollute and handicap our society’s intellectual humans and our kids. This time is still years ahead, it may take a decade before it happens but who knows, after all software is field which is totally different and unusual of all the professions exist today. I am glad to be a Computer Programmer.
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. – Ropar, Punjab (INDIA) – 140126
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.