Things are shaping up rather well, most of the functionality is already implemented, I can query, modify and create, tickets. There are quite a few outstanding features to add, and quite a few annoying bugs to squash, soon there should be a alpha release. How soon? now that’s the question.
Update on emacs+trac interface
01-Oct-08Emacs Daemon! Hell Yes!
29-Sep-08I’m late to the party, there have been several blog posts on this through the intertubes, but I have to add my w00t!
For those wanting to play with this, It’s only available on the development version, meaning you’ll need to get the source from CVS/SVN/Git repos, (some distros have packages for emacs23 so look around for your repo) and compile, if you need help with this, give me a holler or just checkout emacswiki.
To start the daemon just do:
emacs –daemon
It will detach itself, so all is good. Then on your terminal:
emacsclient -t (if you want to run it inside the terminal)
or
emacsclient -c (To create a frame for Emacs gui)
I have it starting at boot from a init script I made, and it’s working beautifully!
Some of you might be wondering why have an editor run as a daemon, well in the specific case of emacs, it’s really a convenience of having just one instance running, and really now, you don’t need more than one, at least I don’t. There might be other reasons, but to be honest I don’t care, I just love it, and want to say thanks to all the emacs-devel team.
mylyn for emacs…….
05-Aug-08This might not be of much interest, but I’m working on doing a strip down mylyn for Emacs. There is already a jira.el for Emacs, and I’m concentrating on a trac version using xmlrpc.
To make things clear, it’s not a clone, so for starters I’m only concentrating on my particular needs. That is:
- Tracking Tickets: Will be able, to add, modify, update ticket status from within Emacs.
- Managing Tasks: For this I will integrate the plugging with Planner, and/or Org mode.
- Wiki: Will be able to add, modify, update wiki entries, this include attachments. There is already a plugin for this, but like above I want to integrate with Org, and will then translate to wiki syntax of the fly, so you will not have to worry about syntax and whatnot.
The license is GPL, and available as soon as it’s done, I can’t make a hard schedule, cause I have work that takes priority, and this will be worked on in idle hours.
Currently I am working on the ticket system, and I’m able to query, and pull ticket information, as well as update. It’s still in a crude state, but hopeful in a few weeks I’ll be able to release the first beta.
The plugin is written in Elisp. So if there is interest in this let me know, and I’ll might be able to allot some more quality time to it, but as for now this is just a personal project. If you know of any Emacs plugin with the above functionality please let me know, as I have no intention of reinventing the wheel, and would rather contribute to an existing project.
I like simple things, and I believe I’m a very simple person –though my wife of 13 years begs to differ.
My quest for software that’s as simple as my needs, is an on going one, my good friend Tamgo, jokingly asks me: “What’s the OS of the month?” and he’s right I do change Os’s quite a bit trying new things, looking for what I deem a simple, and yet effective OS for my needs.
What are my needs? That’s quite easy to surmise:
- Extensible
- No restarting (minimal will do)
- Robust
- Smart
- Unobtrusive
- Privacy
- Open
Taking the short list above, you’ll find that in the case of Os’s currently available there are compromises to be made. The problem with compromising is all good until you get annoyed out of your skull by that item that’s always on your face nagging you. Let me give you an example, I’ve been using some form of Unix for most of my computing life, lately I’ve been using Linux more than any other Unix derivative, I started using Linux somewhere around 1994 - 95 and it’s been a fun ride, full of little annoyances, but fun. Lately it has become really annoying, I’m sure it’s me (showing my age), and to be honest compiling a kernel for the hundredth time is not fun anymore. I was once somewhat active in the community, helped in Gnome, and other software, and still today most of the things that annoyed me back then are still there! That’s really annoying. Now you may ask: If it’s annoying why don’t you fix it? Assuming I can fix it, and I’m not saying I can, it’s an up hill battle, that will upset many, many people, for example, I find Evolution in Gnome basically useless, it’s slow, and not only is it slow, it slows the system! There are far more useful, and better alternatives out there, and suggestions to temporary remove it from Gnome, until it’s more robust has cause major flame wars, and even personal confrontations, but the point is it’s still there, some people use it daily and love it, others hate it with passion. Linus Torvalds, loves KDE. I don’t, not one bit, never had, and it seems I never will. It would make this a very long post to explain why I don’t like it, and that’s not the point of this post. If you like Evolution or KDE by all means use it, I’ve used the latest versions of both so no need to point me in any direction regarding this.
So as you can see, getting a good balance for some of my criteria is difficult. If we enter the realms of programming editors, it gets even worst, leaving very little choices in that regard.
Transcending the limits
Extensibility
I experiment, and try out a lot of different tools, because I’m looking for that tool that will enable to be more productive, letting me implement my thoughts and ideas in the most elegant, concise and easy way possible. There is a lot of research going on in usability, focus tasks, etc. All in the name of making us more efficient, and leave us little time to procrastinate.
Procrastination is one the things that really affect me, but it’s more out of boredom than anything else. As my wife puts it, if I’m really interested, I will spend days, week, months and years until I see it through, if I loose drive, I will drift to some other area. She’s completely right, and in all honesty that’s something that I need to fix, but there is something to be said of the way we work, maybe it’s just me, but if the medium I use to do my work, is giving me a hard time, or making it difficult for me to progress on that front, I simply walk away and find a new medium that will aid me in finishing my goal, and that’s the problem with most software, and most things in life today, they are not extensible.
Being Extensible, is the biggest feature there can be in software, and if you add to that ease of use, then well you have a partial winner. One of the things that core Emacs users love, is being able to build your environment from the ground up for your different needs, there is the issue of learning a new language (to some this is a drawback) to create this environment, in the other side you have Eclipse which is doing the exact same thing, but it’s based in a popular language, Java, and it is awesome, but it’s not suited for basic little things, it’s not dynamic (for some this is a good thing) but I believe that in this type of tool a dynamic medium is better suited. To make the point look at TextMate, it’s booming, one of the things people rave about is it’s Bundle mechanism, which is basically scripts (Bash, Ruby, Python or whatever you like) that get loaded and executed dynamically, you can download ready made from the net, or make your own bundles, make your own little commands that do “x”, you are only limited by you imagination, and the tool.
Restarting
Being extensible is a waste if you have to restart your application every time you make a change, or add a new script, that’s insane, and it’s one of the things that annoys me in eclipse. But this is not limited to the computing world, imagine having to turn off your CD player, every time you change Cd’s so the new one get loaded, insane right? Well it’s the same with software and with most things in life, things perish, and software and hardware will need a reboot from time to time, that’s a given, but it seems it’s taken to extreme sometimes. The time you save with dynamic loading is worth effort to implement it.
Robust
This is tricky, because in the software world, there are a lot of variables, so what is unstable for me, can be rock solid for some one else, hardware resources play an important role in this, and while my personal preferences are not so demanding in the eye candy department, I’m quite happy with minimal applications, like console based editors, etc.. Why is minimal good? It’s not that’s good, or better, is that there is less chances for bugs, a bigger program has more chances of hidden bugs than a small one, though there has been cases where the contrary is true, so it’s not a rule or anything of the sort. Having tools focused to one thing, that they really well, are valuable and should be encouraged when applicable.
One of the things I like of Emacs, is the fact that in over the ten years I’ve been using it, it has never crashed and lost my work. What? That can be true! I hear you say, well in my particular case it is. I’ve had moments when it has been unresponsive but it has never died on me, I either manage to bring it to life, or kill it, even then, my work has never been lost, a lot of people will go: “Yeah, sure whatever, God bless Emacs” but think it over, how many times have you lost your work or part of it, because of a software or hardware glitch? How many times, have you saved a file, to find out for some reason it was not saved? This is not such a huge feature, it’s actually a very small logical feature to have in all programs, and yet we find programs lacking in this front every day. To be clear I’m not saying Emacs is superior because of this, I’m just using it as an example, substitute Emacs for whatever program does the same for you, Firefox 3, is another software that does a nice job of saving at least your sessions when it crashes, and there are others, but they are in the minority, and why is that? Is this so difficult to implement? I don’t think so, I think it’s just taken for granted.
Crashing is the most annoying perceivable issue, but there are others, some times applications get blocked because of an ongoing operation, this annoys me to no end, there are so many ways to avoid this, that there is no excuse in my book for such a thing happening.
Smart
This one is difficult to explain, I’m a AI researcher wannabe, I love AI, though have never had the chance to do anything or study the field formally. But there are a few things that can be done to make a piece of software smart, the first smart thing to do, is to make it extensible and robust, after that everything is icing on the cake.
Really I would love to have software be able to learn from our use patterns, to enable us to be more productive, it’s not an easy or simple proposition, we will get there. To be clear I’m not advocating clippy or an intelligent clippy, what I’m advocating is more a system that develops macros (as in lisp macros) based on our used patterns, that will enable to select and run said macro, instead of doing it ourself, this is possible to do in some applications, but not without getting your hands dirty in some wierd scripting language, I’m talking of no user intervention, and no need to be a programmer.
Unobtrusive
This one is obvious, I hate popping windows, and dialogs when I’m in the middle of something, be it reading a web page, or coding. I just can’t stand it.
In this days of information overload, it’s imperative we find ways to unplug, be it metaphorically or literally, I for one has opted to code offline, I take my computer offline when working, I download all the documentation I need, and if I miss something I go to my laptop, get it and walk back to my workstation. This so far has been a blessing for me, and thanks to distributed source code managers, it’s easy to upload and sync all my work.
The net has become the biggest burden and procrastination tool in the history of man kind, that’s my opinion of course, don’t get me wrong I love the net, but it’s just a bit too tiring, trying to be on top of everything, and frankly it’s not worth it, so now I read a select few sites, rest of the time I’m offline doing some work, or playing video games (yet another procrastination tool).
Privacy
This is one is short and sweat. Applications don’t need to phone home ever! Protect user data. In the case of OS, disk encryption, should be a default option. I have nothing to hide, but I have no interest in people snooping around, so yes I have my hard disk encrypted, and have very aggressive firewall rules in place, intrusion detection systems, etc.. I use tor, and while I know it’s not completely private, its better than nothing. Call me paranoid all you want, but what I do or don’t do in the net, or in my life, is my own business, and no one else.
Open
Ambiguous I know. But that’s the idea, I’m not specifically talking of open source, I’m an advocate of full disclosure, If there is a problem with the software I use, I want to know, and want to know as soon as the company or the developers know. Same goes for my car, if there is a known fault from the factory, tell me about it, so I can deal with it ASAP, don’t wait till I or someone else is in an accident to recall the damn things!
Conclusion
The above applies to other things like hardware, and even to business practices. What will the benefit in our overall life’s would be? I believe it would enable us to enjoy life more by finishing our tasks sooner rather than later, and be more efficient with our time, so we can spend that time where it really matters with our families, playing video games, and going out.
Design as the silver bullet (my take)
12-Jun-08While I agree with most of what Elvis say. There is a need to look deeper, there are open ends:
1.) How do you determine individuals are “qualified and prepared”?
2.) Assuming you can consistently solve point 1, if the individual does not care, is not motivated, then all preparedness and qualifications, and even professionalism wont help.
3.) Assuming all the above are covered, there still is the human condition. Meaning we are creatures of interpretations, and this adds to the complexity.
I think design is important, but seldom does the designers have the full picture of what’s being designed. We want to approach software design, as an architect approaches the design of a building. The problem is that the best architects, do an extreme amount of research before starting the design process. Things like:
- Location.
- Elevation
- Soil
- Dispersion,
- Region
- Are earthquakes common place in this region?
- Are hurricanes or tornadoes common place here?
Among many other things they consider before putting pencil or pen to paper, or going into CAD. When the above is decided they work out the best materials for the location, and design they envision. They then analyze costs and what not, make compromises and arrangements to mitigate costs.
After all this they start what we (developers/software engineers) call the design process, and that’s making drawings or mock ups, showing it to the client, changing to the tastes/needs of the client, when everything is agreed upon, then the plans are made and drawn, there may be a need to adjust the budget here. Then we have peer reviews in the form of all the revisions, etc.. needed to get approval for construction.
So this is a very time consuming process, and one that most Software designers don’t even bother with. Most don’t know or care where the application is going to run, or an idea of the resources need for said application, or whether the application really benefits from a heavily threaded system, or if going that route may be even more detrimental performance wise. They just don’t know or care. I’m sure there are numerous exceptions to this, and there are quite capable designers that take all the above in consideration, but I believe they are the minority.
Some of you may ask: So, If I want to design an application, I should take into consideration and know about, the Operating System, the Web server, whether threads may help or make it worst, etc?
My answer is a conclusive yes! You should research and know about all of this to make inform decision on what is needed and why. For example: IIS and Apache are completely different servers, and have different requirements maintenance overheads, performance tweaks, etc.. Same goes for the DB, and how you deal with replication, etc..
If you do all the above, it’s easier for the DB engineers to prepare and optimize querys, etc.. for the application, because there is a clear picture, of what is expected of the DB. Same goes for the other parts of the equation.
So yes, properly designing software is hard, but really what that’s worth having or building isn’t hard? The problem in my view is not the silver bullet (I personally don’t think there is one) but I do think the approach described in worst is better is better than the approach that’s being nurtured in the enterprise, working but needs occasional reboots it’s great to good. Everything below that is good to ok.
This is a very interesting topic, and complex topic, hence all the papers and research around it.
My take on: Junk on the net podcast
Air Force Aims for ‘Full Control’ of ‘Any and All’ Computers
Most of the tools they need for their plans are already available. Making those tools is not as difficult as it seems, and wont take them long, they could even ask the good folks in the NSA for a hand.
All that said, what I fail to see is the good in this approach, it’s not that it will impact the Internet infrastructure negatively in a global sense. But it’s really not going to amount to much, Cyberwarfare is not like conventional warfare, and it needs you to be a couple of steps ahead of your target to be effective. The truth is that you never will know.
Now about the kid that shut out Youtube from his country, that’s well nothing really special or complicated to do, I wont go into details but minimal googling will provide you answers. So if the Air force wants to protect the US from kids like that, they are a little late to the game, and secondly it’s just a waste of task payer money.
DDoS attacks can be mitigated and can be neutralized their are a number of papers on this available on the net, as well as implementations. Problem is the Internet was meant to a be a open information sharing infrastructure, and now trying to tied it down is just an up hill battle.
I do believe every country has a right to defends it’s property, in this case their servers and the service they provide, but not at the potential costs of rendering the resources and services of other countries null and void.
Verizon Snubs Google, Joins LiMo
I think you missed a few very important aspects, one being that Motorola is a big player in the Verizon network, and Motorola has invested quite a bit on Linux, being known that a lot of their newer more desirable models run Linux as their OS.
The second thing you missed to look into, is that Java hasn’t done all that well in the Cellphone market from a user perspective, the load times on the Motorola Z6 (my cellphone) are hideous, and let’s not talk about the lags, now I don’t fault the language, it can simply be Motorola underestimating the requirements to run the applications properly, but it might also be, that they don’t want to put cycles into having Java apps run faster, when they can give that space to more interesting things built in less resource intensive languages.
That said Android is not ready for prime time quite yet, and players like Motorola, Nokia, Samsung and others need solutions now, so LiMo is there, it’s available and is base OS that all this company are familiar with mainly (Linux). So that may be why Verizon has gone with LiMo and not Android.
Another reason might just be that well the person pushing and designing Android (while a brilliant engineer and designer) hasn’t had much luck with some of it’s previous products. Also add the fact that Google made Verizon spend much more money, that they would have otherwise liked, so making life easier for Google is not priority.
To end this, Verizon going with LiMo doesn’t hinder Android from running or working on the spectrum, and why should Verizon go with Android instead of any other readily available alternative? Cause it’s Google pushing it, and design it, and hence controlling it? I don’t think I can fault Verizon in this one.
Microsoft officially teams up with OLPC
I’ve said it once and I’ll said it again amazing project, noble goals. I don’t know Mr. Nicholas Negroponte, but I don’t think his goals are to get a Nobel Peace Prize or any such thing, I have a few of his books, and read a few of his papers, and he truly believes that the OLPC can change the life of this kids for the better, allow them to access knowledge and information that otherwise they wouldn’t be able to obtain, instill the need and importance of community and the power that networking (in all it’s facets) has.
I truly believe his goals are noble and selfless, but it’s just, that knowledge and education are very powerful tools. Teaching a kid to think for itself to question the quid pro quo so pervasive in third world countries, and instead opt for what’s best for the community as whole, is not something most Third world government would want, specially those whose legitimacy is questionable.
So it’s not a matter of a simple device, but what that device signals, and provides for the good of those kids and the future of our world. So yes it doesn’t feed them, or heal them, but it does empower those willing to immerse themselves in the waters of knowledge to be better and just, and that’s the important thing to have a channel to achieve that, and right now, whether that channel runs windows xp or Linux is irrelevant, for the big scheme of things.
Facebook, Google Square Off Over Who Controls Your Data
This doesn’t make much sense to me. For starters the data they have is the one we provided by giving them permission to access our email account be it: Gmail, hotmail, yahoo mail or whatever to get your contacts and search if there were already in Facebook or to invite into facebook. So taking this into account, how can they with a straight face, claim that allowing Google friend connect program to access Facebook data can be hurtful to their users? Why isn’t it the other way around?
Then there is the problem of property of information, according to the article referenced in the podcast anything posted in Facebook has to be kept on Facebook, that seems, fine at first glance, but how on earth can they stop me from posting that same info on my blog? or on twitter? or where ever the hell I want? Why can’t I just extract it from Facebook to publish it? Why can they use my data for their own business and not let me do with my information whatever I want?
Furthermore I believe Facebook has made a terrible mistake, firstly because most of their users are google users, Gmail users, Google Talk users, etc. Secondly something that 99% of the Facebook user base didn’t know has come up to their attention, and that is that Facebook controls your data, and you have no say on it. Don’t get me wrong most people wont care. But when you start seeing the users in Hi5 and other competing social networks taking advantage of Google friend connect, they’ll want that, and in the end either Facebook abide and opens up, or they’ll have users canceling their accounts.
I started using Facebook, and grew bored, and annoyed to the point, that It’s been months since I accessed my account or looked into friends info. So with this little push, I just deactivated my account, they should have a delete account like Hi5.
I highly recommend Junk on the net, to anyone who wants a different more individualistic and less corporate take on tech news, and news in general. It’s not just cause they are my friends, and I sometimes participate when life permits, but because they bring a different outlook, you wont find marketing BS, or blind fanaticism, though I do have to warn you, 99% of the group are Mac heads, making me the only sane person on the group (joking).
Kinesis Freestyle
03-May-08A few months ago I bought a Kinesis Freestyle keyboard. I can’t recommend it enough, I can’t use anything else, and believe you me, I’ve tried most of the brands and types available, and this is by far the best keyboard I’ve tried (Kinesis other lines are also great, but this one suits me better).
I have the Freestyle VIP, I use it detached, as I prefer the separation, it does take a while to get used to, but your hands will thank you for it. The tactile response is really good (this varies from person to person, so what works for me might not work for you). The keys emit a click when pressed, like a mechanical keyboards, it’s not as loud as the IBM keyboards, but it’s good enough for me (I favor the click sound).
Kinesis support is top notch! A few days ago I broke a couple of key caps cleaning the keyboard, I emailed tech support for information on how/where to buy replacements keys, and they mailed the replacements for free to me! That’s what I call service, it’s true that I only needed two key caps, but most of the other companies I’ve dealt with, wont do this, they will sell you the whole batch of keys, which in this case I would have gladly bought, but it’s kind of a waste to buy the whole batch when you only need two or three keys, so I thank them for their support, I’m a happy customer (not only for this, but they always answer promptly, to email enquiries).
I recommend buying their keyboards, I bought mine direct, and it was a pleasure to deal with their sales representatives, as well as their support staff.
Thanks again to Kinesis for a great product, at a reasonable price, with amazing support to back it up, also they have a version for the Mac, with all the mappings needed for the OS.
C do’s and don’ts (mostly don’ts)
28-Apr-08This past Friday, I received a surprising email, from a former co-worker, it’s been a year or more since I left that particular company (wont name, names). We were in different departments, but were by fate put on the same project.
This particular project was (is) of the utmost importance for that company, and in his development team he’s the only one that was working on this specific application (a server). To the suffering of all the involved in his department this particular piece of code had to be written in C, and there was just no way around it for several technical and design reasons that are not important at this moment.
I was in charge of testing his application (not unit testing), I had to performance test his application, to do this, one needs to know the architecture, and all that the developer needs to know to develop it, and more. I don’t have to tell you that this was a painful experience that mostly drove me crazy.
Just seeing who the email was from and subject surprised me to no end. As it was, they were having some issues, more to the point he was having some issues –as we were friendly, which basically means he was the only person I didn’t tell to f..k off. He asked for my number which I gave to him, and a few minutes later, his boss (whom I would have gladly frag’d) was on the line, telling me, how my NDA still applies and what not… at this point I just calmly stated you called me. What do you want?
The server has been having issues, and they have to reboot it every 72 hours or so… at this moment they have put the old code base (which was the one I worked with) back in production, but need the new functionality ASAP, and basically wanted me to check it out. Now, I was curious, I have that problem, I’m too curious so I said yes, sure.
They sent me the vmstat of the last 72 hours of the server, along with several log files, and after a cursory glance, it was obvious there were memory leaks. This they already knew (they are not dumb) but couldn’t find the spots where they were happening, and it’s here where the story gets interesting and where we might learn a few things, so this doesn’t happen to you.
First a disclaimer, this particular developer is quite good, and diligent. Also I’m not as good or diligent, and I don’t know much more than anybody else, but I have had the grand advantage of working with people that do know more than me, and that are willing to show me, so I learn and get better, this is my way of giving back, and saying thanks to all of them.
Malloc
The first issue when I saw the code, was the scheme he was using for memory allocation. I believe that with regards to memory allocation, if there is a failure allocating memory, aborting right then and there is the right thing to do, of course there are exceptions, but for most situations this is ideal, a well done policy, is also something to look into, for this type of scenarios.
His scheme was like this:
- Allocate a good chunk of memory, that will be shared among threads.
- Each thread allocates the memory needed to do it’s operation, write the results to the shared chunk, and clean after itself.
I wouldn’t do it this way, but this scheme works as long as everyone plays nice. As it happens all threads are playing nice, the problem lies with the allocation done internally by the threads.
He is over writing the pointer that malloc returns, and while he is freeing it, the portion returned by malloc is never free(), this goes on for all the threads.
Some of you might be thinking What? Over writing? How, why? Well the thing is that he didn’t noticed or know he was doing it, which is not good, but it’s a common mistake with C programmers (newbies, and not so newbies).
Another nice little side effect, is that every time, a thread wrote to the shared memory chunk, this was sent out to the appropriate interfacing systems, upon a successful completion, the memory chunk was de-allocated and the re-allocated, meaning he free() and then malloc() again and again. Which also brought the nifty problem, that if a thread was waiting in place to write to the chunk, the reference it had to the chunk had gone bye bye, so to avoid a segmentation fault, he worked around this problem in a very creatively unnecessary way (that I would rather soon forget).
Don’ts:
- Do not over write (change where it points) the pointer returned by malloc(), don’t do it ever.
- Wrap your malloc() call in a way that it checks (once is enough) no out of memory errors, if there is exit immediately.
- Don’t blindly accept that the arguments to your methods are what you are expecting, or valid data.
- When returning an error state from a function, for God’s sake, don’t abuse NULL!
Do’s:
- Learn how to use lint.
- Use lint often.
- Run lint, after every compilation, add it to the build.
- Check and double check all of lint’s warning and errors, fix them.
- Run lint again after fixing the errors.
- Read your code, go thru it in your head, or which ever way you prefer.
I’m in agreement with Thomas Ptacek. If my friend would’ve done that, this problem would have surfaced in the pre-production stages, because the system would have crashed earlier, enabling them to find the culprit much sooner.
There are other things that contributed to the problems, but the good news is after an hour of going thru the code, the system is back up, and it’s been over 72 hours and it hasn’t crashed, and it’s memory consumption is minimal as it should’ve been from the start.
Update:
Forgot to mention I provided them with a nice little Ring buffer implementation that captures the steps/states of the threads, from beginning to end, in case of an error, it dumps it’s content to disk.
That way they will be able to pin point more or less what triggered the crash, where in the code this happen, and the time this happened.
For more info on ring buffers, check out this links:
I wrote something that seemed to me, a very innocent question with regards to Mac OS X: Should Apple release it for non-Apple labeled computers? I gave my point of view. I listed the Pros and Cons of this course of action, with the clear notion this is just a utopian argument, because I don’t think Apple will do it.
Fear the clones
This is just a hypothesis, but I think it has some merit.
Imagine if you will:
“Joe Schmuck, buy some parts and make himself a computer, he decides he doesn’t want to run Windows, and well Linux and the BSD’s are just to damn difficult to install and maintain, so he has an epiphany, he decides to install the most user friendly OS in the planet, OS X. So he goes to the store, shells out $129, gets home, gets on the net prints out the instructions, and a few hours later, voila! OS X is running beautifully on his Chinese made discounted hardware (we know Apple uses top grade stuff).
It also happens that Joe Schmuck is a performance junky. He goes out and runs every benchmark known to man on his FrankenMac. Of course they are quite off the charts as would expected of a 8 cores + 8 gb of ram monster. In his fit of joy, he uploads the results to the web, and a few Mac Pro owners go about to prove to Joe Schmuck how a looser he is. To their dismay, they don’t match the performance of the FrankenMac, in fact they are quite below.
Of course happiness doesn’t ensue from such a situation. While this is totally fictional, I have not run any such benchmarks, don’t know of any yet, and it bears saying: I don’t personally believe in benchmarks, and don’t actually care one bit for them, non the less I know there are others that really care with a passion about this.
These people will not be happy at all.
Vertical Integration
Some believe this is the reason of the success of the Mac’s and OS X, I am an old fart system programmer, and thus believe, that credit lies in the foresight of using a Unix based core, but that’s just me. How ever I do admit that the tightly coupling of software and hardware has it’s benefit. But this doesn’t preclude Apple from releasing OS X to the non-Apple masses, so they can convert. I hear the cries of the utter world annihilation if the do this, but I’m still not convinced.
Sun Microsystems faced a situation similar to the one Apple is facing now with their Solaris OS. They decided to make it available for all who are willing to pay, with the very big caveat: the hardware had to be SUN certified. In other words they have an HCL list with hardware that is known to work with the OS in a stable and scalable manner. New hardware is being added every day, thanks to users, who are willing to test on officially unsupported hardware, but the user’s HCL is not official. There is no support for that, except for the community forums.
At this juncture, you can download a DVD with a full hacked and install ready version of Leopard 10.5.2, that will work on most Dell, HP, and even Asus branded computer. There are user made HCL lists in the web, you can find help on doing this in a lot of places in the web. If you want to at least have the license to avoid Copyright issues, you can do the install directly out of the box, with a few tweaks (don’t know the particulars, just know there are people doing this).
Running around the bench
Crack the Crackers
Apple has several ways to mitigate these problems. The one that most people expect is a technical solution. This might work in the short term, but Apple will need to continue devoting development, and research time, to mitigate it, and people will continue to break or work around those limitations, most will do it just for the fun of it. The cycle continues until one of them quits. Guess who the odds favor?
Playing the Court Game
They also have option of trying their EULA in court, or look for some obscure patent infringement etc.. But this is a costly approach, and might actually add more wood to the fire. Ultimately this will stop those who try to make a profit from the Apple brand and its products. But I don’t think it will stop the Joe Schmucks with high IQ and a 100 degrees of boredom, from continue the quest, and making it available.
I think there is proof, that suing people wont make Piracy go away or diminish it. That is if you get to make a compelling case to not be thrown out of court.
The final frontier
I think we all can add to the list above, so I’ll leave it as an exercise to the reader.
I’ve read several blogs, and news sites discussing this utopian possibility, I think most make valid points in favor and against this move, but I think they still miss the big picture, and here I will detail what I believe that is.
The Windows argument
Some believe Apple should release OS X as an OS for non Apple hardware as away to destroy the Microsoft empire. This is in my view the most retrograde argument of them all.
The notion that a company would base an important decision as this one on this argument is ludicrous in this day and age, now the 80’s Steve Jobs might have given it some consideration, and maybe even tried to push it to the board, but not this Steve Jobs, no way.
But let’s play Devil’s advocate and assume that OS X is released with a licensed for use in Intel/AMD base systems, and sold at the price OS X is currently sold. Would that destroy Microsoft? The answer is simply and utterly “NO”. It wont because Microsoft makes money from a number of different sources not just the OS, and worst case scenario, they have more room to maneuver prices and what not to make it competitive.
Well at least they will be forced to make Windows better! That’s an interesting argument, but still, no. It doesn’t force them to go in that direction either, it just forces them to reinvent themselves, and if they manage to make it better, then great, but wouldn’t bet on it.
So, no Microsoft wont die, if Apple releases OS X to the masses for free or pay.
Apple would make even more money!
The sales would soar!
Those that believe this need to understand that’s it’s not that simple. Apple would need to come up with an approach to deal with support for all the different hardware in the market. This means new sale logistics, a broader scope of training, and more work all around for the support staff, technical or otherwise. This also means, having to change their QA procedure, and that’s not taking into account security, compatibility, etc..
It would be as bad or worst than Windows
Those that believe this, are wrong, very wrong. If Apple manages to plan accordingly, and partner intelligently with Hardware vendors, then the problems will be minimal.
One of the benefits Apple has is that it can learn from Microsoft’s failures. Creating a sane HCL, and supporting only those peripherals that are in the HCL will make Apple’s life easier, it will not be perfect but it will good. Apple doesn’t need to support all hardware vendors but partnering with a few, a handful if you will, will bring them a long way. If they go the route of letting the Vendors develop their own drivers, leaving Apple with just the need of certifying it, then things might look better.
This is a very complex situation, and while it would definitely benefit Apple, and bring more money to the share holders, and let’s face it Apple is a corporation and money talks. It’s still a utopian dream at best.
Apple is a hardware company!
This is true, and would continue to be one.
Their hardware sales would crumble
May be, may be not. It’s difficult to predict this. What can happen is that their hardware would expand, they might start actually give the consumer more options. Also it might help them expand their line, and will help them score better deals on the hardware and passing on the savings to the consumer, in the end they can become bigger than all the PC companies combined.
But alas this are all conjectures, and it may all fail.
The Hackintosh
Many people are applauding Apple’s public stance on the hackintosh issue, what’s their stance you ask? Silence, that’s the best stance they can make right now.
Why don’t they pursue this people?
Well how are they going to do that? Most of this guys (the one doing the hacking) have legally purchased copy of OS X, and while they may be braking the EULA it seems it’s not enough to prosecute or convict.; I’m not a lawyer, but you can find a lot of comments from lawyers in this regard, and the consensus is Apple would get nothing or very little, if they go out to get this people/Companies.
Why don’t they put some anti-theft/tampering/hacking counter measures?
They have, and failed. Look at the iPhone, and the iPod, all their smart security features have been broken. My guess (hope) is they have learn their lesson, but really it’s simple. Every time Apple puts out a firmware to render useless the hackintosh, their will be some one that breaks, it and the cycle continues, now given enough time someone will have to give, most would think it will be the hackers, but that’s not necessarily true, this guys (as weird as they may sound) are having a lot of fun doing this, and learning in the process, so go figure, in the other hand, for Apple it will get to a point, where all those counter measures might actually hurt the performance of their hardware.
Again this oversimplifying and this is quite complicated from all standpoints.
So what’s left then?
Honestly, I don’t know what will happen. I just hope is a positive move for all of us, and that includes Apple.
My guess is they might create a version of OS X for the Mass market, let’s face it all hardware is different, and while the hackintosh are quite stable, and work fine, the real deal have far better performance reliability, because of Apple being able optimize the OS for their hardware.
Conclusion
As I see it, it’s a gamble for Apple to go either way. That said the path of less resistance is to continue silent, and continue working on their products and their R&D and let this feed the Cult of the Mac.
Because in the long run, I think some of those Hackintosh owners might end being Mac owners. Others will either continue to work at it, or will just let it fade.
So this Hackintosh thing might prove worthwhile for Apple, and as they say “There is no such thing as bad publicity”. Apple has the attention of hobbyist once again, maybe this time they will capitalize a bit differently, and hopefully more equally and open.