Anyone can become angry — that is easy; but to be angry with the right person, to the right degree, at the right time, for the right purpose and in the right way — that is not easy. — Aristotle
While going through OpenBSD website, I found their Release Songs page, and found this interesting song titled Blob!. The lyrics of this song describe how binary blobs, can takeover control from user, and how they look cute, but are actually an evil. The song is available as an Ogg Vorbis file. The music and voice is cool.
Also found, this interesting slide from the presentation given by Theo de Raadt. Right now, I didn’t have any Wi-Fi card. But when I have, it’ll be a Wi-Fi card with no binary blobs attached. Or to be more precise, a hardware with no binary blobs attached.
जितने कम ग्राहक उतना ही अच्छा
Guess which firm has this policy ? Its indian govt. Well one of my friend Yogesh told me about this. ;-)
Note: Due to technical reasons first letter of the title is upper case. :-(
After the censorship of Internet in india, I’m quite disappointed with this country. This country is a good example of dictatorship behind democracy. Though Gautam, told me couple of times to leave this country, but I never took him that serious. But this time I’m very serious, and will try hard to leave this shit place. But I think it is quite good step from india, that is to expose itself, and to break the myth that it is world largest democracy.
Hooray, Now this blog is Valid XHTML 1.0 Strict, though tentatively (coz, it doesn’t have proper
DOCTYPE declaration) . But at last, I’m a bit :-) , though this page contains invalid CSS :-( .
The only key to success (or precisely optimised life) is precision. It doesn’t matter with how much hardwork you achieved that precision. If you never achieved that precision you’re not living optimally. In field of algorithms analysis, it is known as tightly bounding, running time of algorithm. In troubleshooting field, it means accurately identifying problems. Optimization of code depends on precise definition of what is the objective of code. Different words in different fields but the same meaning.
We create standards to make our life easier, but then gradually we start breaking those standards, and inventing our own standards. And then our remaining life spends in maintaining those non-standard stuff. There are many reasons why we did so, in order to ease our pain, or to look different from others. The problem starts when interaction with external world happens.
For example, Our text files on Linux, looks horrible in Windows Notepad. Why ? Because Windows and Linux have their own standards for text files, i.e. Windows apps expects that each line in ending with
\r\n (CR LF) whereas Linux assumes each line ending with
\n (LF). The problem will be more when trying to sharing same set of batch scripts between both the systems.
Using proprietary closed source standards (are they really standards ;-)) are hell, because they affect freedom. You can’t use other application because all your previous work is in other properietary format and which your other application won’t understands and hence you’re screwed. You can’t expect everybody to be using same thing. If you expect whole world to be using that software, then imagine if whole world is using your rival’s products. This is where this GNU thing comes into picture. It is not there to give you another proprietary software, but it is there to assure that the software is open and free like air. So, instead of binding users with any software forcibly, you a creator of software is offering user a choice that user should use your software if he/she thinks your software is worth it. This helps in increasing growth of your software due to competition.
Also use of publicly available standards lessens burden on you, a developer. You don’t have to research on a new file format. You don’t have to write any import plugin to import public standards files into your file formats. Other software developer’s don’t have to write any import filters for your application’s file formats. Your software users won’t get screwed at least their data is in publicly available format. Imagine you’re having some critical data in a proprietary format, and then when some flaws are discovered in that software, you won’t migrate because you’re attached to that properietary thing. Binding users to their softwares in this way is common practise among proprietary application developers but what that means is that user is using your software not because it solves his problems but because, he’s trapped.
How to earn money ? This is a big question for those who’re developing free software but won’t considering it because of earning. Remember those who really going to purchase your softwares are either impressed by its features or are either expecting support for it. Remember you won’t tackle piracy ever. But even if you still try to go for anti-piracy techniques, things like dongles, product keys, hardware IDs, activations are available. But anybody (who thinks your software is worth cracking) can bypass these things by patching your code, generating fake keys etc. So, if people think your software is worth cracking, due to its features, why not release it under GPL (General Public License), so that more and more users can use it (anyways they’re going to use it illegally, if you won’t release under GPL) legally and increase its proliferation, and contribute in its development. Those users who’re really happy with its features will pay for it or fund its development.
What free software has to do with standards ? Since no one wants to reinvent wheel (reinvent a new standard) unless current wheel (standard) works for them. And even if somebody invents his standard
XYZ, it’ll be publicly available. Others can use
XYZ standard, if they think it works for them.
The standards are invented in order to make our life easy, not hell. The single way to design best software is to just implement specifications (or standards). This practise will make your applications secure, bug-free. As philosphy of software toolbox goes it is better to write, debug, maintain small programs than to a large. I recommend reading the doc pointed by previous link as I was unable to describe that philosphy better. If you’re writing new applications and want to know if what you’re going to do and can be persisted in a standard format, few places worth looking at are WWW Consortium, IETF, Unicode, ISO, IEEE, IUPAC and other standards organizations you can think of.
Golden ratio (φ). Also known as divine proportion. I came across it first time, when I was reading Introduction to Algorithms, and there I encountered it in a question based on Fibonacci Series. I thought it was just a normal ratio, but then I’ve encountered it in several topics, e.g. In Algorithms, the authors told that Knuth has recommended this ratio for generating primes, and in Numerical methods of computation too. And more recently, I’ve seen it on Wikipedia, and a website dedicated to it. How is it related to so many real world things…
I’m thinking of what to do for my BCA project. It would be great if my BCA project would be one which I desire to do since a long time:
An Operating System is the thing I’m waiting to do since a long time. The problem I’m having is primary page level allocator. I’ve seen Tim Robinson’s article on memory management which suggests whether to go for bitmap as page allocator or stack as a page allocator. I’ve opted for stack based memory allocator, and is written as a multiboot kernel, the problem is with implementation, dealing with E820 memory map.