September 2007 Archives
Another article of the series “Yet Another Perl 6 Operator”
As expected, Perl 6 supports the usual comparison operators. This includes the numeric comparison operators:
== != < <= > >=
'!=' is a short for
'!==', the negated version of
'=='). These operators convert their terms into numbers before comparison.
The string comparisons operators are here as well.
Another article of the series “Yet Another Perl 6 Operator”
In Perl 5, we expect values to DWIM (”do what I mean”) in various contexts. For example, if we use a string containg “42″ as a number we expect it automagically act as a number. Perl 6 keeps this tradition of DWIMmery and introduces several new explicit coercion operations.
? to get booleans + to get numbers ~ to get strings
Michael Feathers addresses the question “How do you test private methods?” in The Deep Synergy Between Testability and Good Design. (If you’re stuck in a language with a fetish for compile-time access control on the part of the library writer, you have my sympathy.)
The answer is more interesting than the question. As Michael points out, the desire to test private methods extensively often indicates that he has too much behavior in the class. Other comments suggest that the barrier to creating new classes is too high–we don’t do it often enough.
I’ve often suggested that a major benefit of TDD is that it encourages better design, not only because of YAGNI but because you immediately have to use the API you’re designing. If that’s painful, or awkward, you may need to refactor. Testability is one part of the aesthetic necessary to write good code.
Do any of the iPhone users out there subscribe to video podcasts yet, or watch TV or Movies regularly on their iPhone? I am currently watching the internal release of the Pilot for “Spotlight on Free and Open Source Software”, and it looks quite good on an iPhone. More on that separate topic a bit later….
In my career, I’ve been paid to program at ten different companies. Of those companies, only two of them have taken computer related security very seriously and three have had serious security breaches. There is no overlap between these two groups.
Of the three security breaches, two of them were known security issues that had been brought to the attention of management but management chose to ignore them. One of these caused serious financial harm¹. Due to the nature of the problem and management’s reluctance to discuss it, we couldn’t determine the exact amount of damage, but between known financial losses and the cost of responding to the incident, I would conservatively estimate that we lost at least $100,000 and possibly up to a quarter million. Had we fixed this problem before it occurred, it only would have taken two or three days of developer time. Given the relatively small cost of fixing the problem, why didn’t it get fixed?
Rael Dornfest and Brian Aker invited me to an RSS meeting way back in 2001, so I’ve known about the value of syndication for a long time (at least before it was super popular). Jon Udell’s Practical Internet Groupware made me realize the value of URIs as identifiers as well as the utility of alternate views of information.
I never found a newsreader that I liked, though. I tried, really tried to get into NetNewsWire during my brief flirtation with Mac OS X. I thought Sage for Firefox was useful… but it never really stuck with me.
I despaired of keeping up on the news of the day with anything but a careful list of bookmarks in Firefox until I found Akregator. Because I already use KMail, the interface was sufficiently familiar (which bothered me about other feed readers), and it’s just configurable enough that I can update feeds once a day, then disconnect from the network (though objects embedded in feed entries need an active Internet connection).
The highest praise that I can give Akgregator is this: I never considered a feed reader worth using until I found it. Now it’s a primary application for my research and work. Thank you to all contributors to the project!
Even using the right tools, in the right way, a software project can still get into trouble. One of the most pernicious ways to fail is over-specify everything up front. As the “Lean Software Development” movement has documented, well-intentioned people often add risk to their projects when they make hard decisions too early - before any research to identify any supporting facts. The best practices are Adaptive Planning, and Just-in-Time Requirements.
Another way to fail is to allow these requirements to fall into your lap by themselves. This post explores why embracing these deceptively easy requirements still adds risk.
Scott Ambler’s The Discipline of Agile on DDJ deconstructs a myth surrounding agile development, namely the fiction that agile development or XP is for undisciplined cowboys. Perhaps my favorite part of the article is the checklist at the end which helps identify cowboy coders and actual agile teams:
- Take a test-driven approach to development.
- Work very closely with their stakeholders on a daily basis, and the stakeholders have active roles on the team.
- Produce working software on a regular basis and can show a clear track record of doing so throughout the project.
- Work in an open, collaborative, and self-organizing manner.
Another article of the series “Yet Another Perl 6 Operator”
Perl 6 has two repeat operators: one for replicating a string/buffer and the other for replicating lists.
'x' takes a string as the left argument and the number of times to replicate as the right argument.
$string x $count my $s = 'a' x 3; # 'aaa' my $empty = 'foo' x 0; # '' my $n = 2; my $dots = '.' x ($n - 3); # '' because ($n-3)<1
In Are Authors Technological Poseurs?, JRuby hacker Charles Nutter suggests that “Good authors do not have time to be good developers.”
There are plenty of counter-examples, but I think the number will end up in the range of several dozen, while the number of great developers in the world is easily hundreds. (Ohloh had over 60,000 F/OSS developers identified the last time I looked, so the top 10% could be 6000 people.)
The nature of the skills are different, though. Writing’s less unambiguous than code, where at least you have a chance of independent and repeatable verification through technical means. It’s not a skill you can practice much on your own into the dark hours, because the purpose of communication is all important (at least in technical writing).
If it takes a year to write a good technical book (and it usually takes at least a year to write a good technical book), how much brilliant code could you produce in that time? Maybe it really is the case that to master a subject, you have to work at it full time — and while you may be good at both, you can only master one. There’s just no time to do both.
From Damien Seguy:
PHP Quebec is pleased to announce the sixth edition of the PHP Quebec Conference. The Conference will take place in Montreal, Canada between March 12th and 14th, 2008. We are looking for speakers willing to share their expertise with Canadian and United States PHP professionals.
The Conference features the PHPLab, where speakers and visitors will find solutions to actual business problems. The two days of technical talks will be dedicated to advanced software development techniques with PHP5 and PHP6, XML, web services, databases, etc.
Organizers will prioritize new and original topics in English or French. For more information, visit the website: http://conf.phpquebec.com
It’s early days, but just like the record industry, American democracy is being taken apart and rebuilt by digital technology and the web. Why should ONLamp readers care? Many of you will be designing and building our new democracy.
Several trends are converging to make this possible and, I think, inevitable. All are characterized by the loss of centralized control to open and/or free systems. These include the rise of open political platforms, such as moveon.org, as an alternative to parties; and the disintermediation of news coverage via blogs, YouTube and citizen journalism. Lately I’ve been following the rise of a third trend: alternative ways of tracking candidates’ reputations. The latest example of that: Wonkosphere.
Another article of the series “Yet Another Perl 6 Operator”
Today’s operator is a very simple one, the string concatenation operator.
my $a = 'ab' ~ 'c'; # 'abc' my $b = 'def'; my $c = $a ~ $b; # 'abcdef'
Qtopia has just undergone a major new release, adding such features as the Safe Execution Environment (a kind of sandbox for native code), strong support for WiFi, and integration with the WebKit browser engine. It’s a lot to give away for free. Based on Trolltech’s Qt graphics libraries and supporting C++ development as well as a JVM, Qtopia is a graphical environment found in a huge number of devices ranging from the Motorola Razr V8 to automobile navigation systems and medical equipment–and of course, Trolltech’s own Greenphone.
I talked to CTO Benoit Schillings, who cited fairly stock reasons for going open source: development energy comes from a community of developers and users, and ultimately there’s more business in serving a thriving environment of new applications and features than in holding onto secrets.
He mentioned the ubiquitous address book as a mobile feature that has hardly changed in years and is shut off from innovation because it can’t be touched by application developers. When the whole platform is open, new blood flows to these atrophied parts of the system.
Perl 6 has an operator
Z, named zip, to interleave elements of two or more arrays.
my @a = 1,2 Z -1,-2; # (1,-1),(2,-2)
The zip is one of the list generating operators that gives the language some flavor of functional programming. This gets further as the usual semantics for lists is to get lazy generation, which means easy/efficient handling of large lists (and also the extreme case of infinite lists).
You surely heard about the upcoming Perl 6 language. This language will be endowed with a set of features so rich that every Greek and Trojan is eager to see a full working implementation. Among these features, there are operators, many of them. Perl 6 was even said to be an operator-oriented language, with a yet larger diversity than Perl 5 already has.
I’ve used Vim for most of a decade now, having completely failed to understand Emacs, then going through a vi tutorial on an HP-UX 9.x box and watching how fast text editing can be. I’m proud that the Unix command-line is my IDE. I have plenty of great tools like Perl, grep, find, ack. I’m quick and productive.
I’ve known about Ctags, and I used it once or twice, but never really took advantage of it until last week.
vim -t tag to open my editor to a function’s definition, but that seemed a little bit clunky. If I were in a Vim session already, I’d have to background the process, launch the new editor, and remember to switch back and forth between the two processes. (
screen makes this easier, but it’s less of a benefit for short-lived processes.)
Then I had a thought, and looked it up in a Vim reference to confirm. Ctrl-] on an identifier jumps to the definition of that symbol. Ctrl-t jumps back. This works without having to start a new Vim process.
Thirty seconds of research bumped ctags from something I use once in a while to an indispensible tool for programming and debugging. Thanks to everyone who’s contributed both to ctags and to the Vim integration!
I got inspired and stayed up until 4 AM on Friday/Saturday morning writing tests for the deduplication tool I am working on,Liten. You can grab a copy of it from the cheeshop as well. As a result, there is now version 0.1.2, which has pretty much full, doctest, and, unittest ,coverage. I also added the ability to search by bytes, KB, MB, GB, and TB and a –quiet option. I think I am test infected now.
I am also getting excited about this project. I hope to get the reporting a lot nicer in the next month when I release 0.1.3. I also am mulling over the best caching system to use, as I am not completely sure if I want to cache previous searches via a shelve or an ORM with sqlite. It looks like, I will probably have a deletion mechanism ready in 0.1.3 too.
There appears to be a general culture in IT, partly, but not completely, because it is male dominated, that it is bad to say the wrong thing, reveal your weaknesses, or be an “idiot”. I have been an Engineer for about 10 years now, and I have felt it from the beginning. When I first started learning Unix/Linux at the beginning of my career, I felt stupid quite a bit, and was afraid to ask questions as there was a culture that scoffed at “stupid questions”. Why don’t you read the manual, “idiot”?
When I transitioned from working as a sysadmin to working as a Video Engineer in Film and Television, I felt the same way. By that point, I had done enough in my life that I wasn’t as deterred to ask stupid questions, but I do remember several times people telling me, you should know this, why are you asking this question?
As I transitioned from working strictly in Film as a Video Engineer/Systems Engineer, to working just as a software engineer, I have often felt the same way. Maybe I shouldn’t let someone know that I don’t know everything about Python or programming? What if people think I am an “idiot”?
In the movie, “The Edge”, there is a great quote that directly applies to any Engineer, “Most people lost in the wild die of shame. They didn’t do the one thing that could save their lives –thinking”. How many potential skills or dreams die because of our shame? How much quicker could people learn if they were able to act like an idiot at some new skill they are learning, and truly learn it the way a child learns.
Now that I have some perspective from working as a Systems Engineer, a Video Engineer, and a Software Engineer, I will tell you that in each industry, I have had someone tell me that the Engineers in my previous field were “idiots” because they didn’t do “X”. For example, when I was a Video Engineer I had a couple of people tell me, “…you see Systems Engineers aren’t real Engineers because they can’t read a line drawing.” When I was a Systems Engineer, I had people tell me that Software Engineer’s aren’t real Engineers because they don’t really understand how equipment works. Since I have been a Software Engineer I have had people tell me that Systems Engineers aren’t real Engineers because they can’t program.
This situation I have described is a classic case of the “Observer Bias”, of course. From Wikipedia, “Observer bias is error introduced into measurement when observers overemphasize behavior they expect to find and fail to notice behavior they do not expect.” When you’re an engineer in one field you notice that all the people like you are smart and know how to do what you do, but strangely everyone else is an “idiot”. This critical scientific fact is the exact reason why all engineers should do something where they feel like an “idiot”, as it gives them true perspective and allows them to grow.
My piece of motivational advice is to ignore your inner feeling of shame as an engineer. Attempt to do something new, express a controversial opinion, invent a new technique or technology, learn to program, or learn a new language or skill. Step out of your comfort zone and do some activity where you are perceived as an “idiot”. In this sense, it is really important to be an idiot. Being an idiot, means losing the sense of self-criticism that is often found in programmers, sysadmins and engineers and truly learning. Being an idiot is important!
Hear me roar. This interview has me answering why I began the Women in Technology series, my hopes and dreams for it, and how I’ve already benefited from doing this. Hope you enjoy it!
(Also, to the many who have contacted me about this series, thank you so very much.)
Software development is rarely easy. Even though some open source pragmatists suggest that Linus’s Law makes traditional schedules and planning obsolete, I remain skeptical. (I’ve worked on a few pieces of F/OSS in the past decade; I believe that I’ve earned a right to be skeptical.)
I went camping with my family a couple of weeks ago. True to form for an ironic universe, the day before I left, I received a hard copy of a book manuscript to review, with final edits due my last day on the beach.
I finished everything but a sixty-page chapter before we left. I knew that final chapter would only take a couple of hours, and I knew that I could actually review the hardcopy on the trip… and if I could get web access, I could type my findings and then mail them in one quick shot. Sure, that would take a couple of hours out of my previous vacation time, but we’d meet the book deadlines and everything would be good.
That was my assumption, anyway.
I teach at Seneca College in Toronto. On October 25 and 25th, we’re holding the sixth annual Free Software & Open Source Symposium, an event that has grown to encompass two days of talks and workshops by top open source developers, users, organizers, and educators. This year’s lineup includes:
- Bob Young, Co-founder, RedHat, CEO and Founder, Lulu.com
- Dirk Riehle, Lead, Open-source Research Group at SAP Labs in Palo Alto, California
- Mike Beltzner, User Experience, Mozilla Corporation
- Ross Turk, Community Manager, Sourceforge.net
- Bryan Kirschner, Director of Platform Community Strategy, Microsoft Corporation
- Chris Blizzard, One Laptop Per Child Project/Red Hat
- Marc Kwiatkowski, Senior Software Engineer, Facebook
- and many more
There will also be a number of hands-on workshops including OpenVPN, OSCAR clusters, AccessGrid, and ePresence.
If you’re in Toronto or within a reasonable drive, this is definitely an event worth attending. We’ve kept costs low to encourage broad participation and the atmosphere is a lot of fun - details at http://fsoss.senecac.on.ca/
I was working with some XUL that was eventually to be part of a Firefox extension, but at the time loading the XUL directly into Firefox. Didn’t take long until I stumbled into the infamous “Error: uncaught exception: Permission denied to create wrapper for object of class UnnamedClass”. Time to break out XULRunner. I hadn’t played with XULRunner since Ubuntu days and it was enough of a pain to set up just right on Ubuntu. On Mac, it’s a right headache.
In the era of Web 2.0, it appears that Slashdot has “Jumped The Shark”. The question now, is when did this happen? I remember in the early 2000’s, Slashdot was THE geek website, but something has changed and it appears they have lost the magic. I decided, today, to take them off of my RSS Reader, as I find their stories trite, boring and dare I say, irrelevant to IT?
So the questions of the day are:
When was the exact day, and, what was the exact story, that caused Slashdot to jump the shark?
Who did you replace Slashdot with in your RSS reader?
What is your best bet to the cause of their demise?
UPDATED SPECIFIC REASONS FOR TAKING SLASHDOT OFF OF MY RSS FEED:
Why I think Slashdot has Jumped The Shark?
Please note, comments are now closed as I can’t respond to them all.
Due to an overwhelming response by a fanatical few, I have decided to post in detail, why I no longer find Slashdot interesting, or relevant, and why I have decided to take them off my RSS feed. This is just my opinion, and I am sure each and ever person that uses RSS at some point has made the same decision about another website. If you get angry easily you might not want to read the rest of this post:
1. I am 32, and I have outgrown any interest in the usual stories that appear on Slashdot. A specific example is this story, about a “Coup” attempt in an Apple Underground User Group. I have absolutely zero interesting in ever reading something like this for the rest of my life.
I felt violated reading something that stupid today, and I will admit it may be because of my age, and due to the fact that I now have a wife, a kid, and a life.
2. I never really participated in the community much, I only read stories, and as I mentioned the stories are getting very bad.
3. I am bored of the terms, “Troll”, “Trolling”, and “Dvork”, they make my skin crawl just like it would make my skin crawl to hear someone use the terms, “Your playa hatin”, or “Give me the bling, bling”, or “Far out man”. These terms are so commonly used on Slashdot that it is impossible to avoid them and the only possible alternative is to never read anything on Slashdot.
4. Slashdot played an interesting role in the early 2000’s, as it was a human funneled aggregator for news stories. As technology has progressed, a different model of story submission has started to thrive and it does not require a select group of humans to filter which stories are good and which stories are not good. I believe the model that Digg, Reddit, and DZone use are far superior to the method of story submission and approval that Slashdot uses.
I feel that the method that Slashdot uses is a dying art, and the very poor quality of stories suggests that the human element responsible for editorial content is either very young, or not very good.
5. RSS Readers have changed the way people read technology and other news, and it has caused people to stop having a “home page” anymore. People now have the ability to create their own custom filters and get their own news in anyway they see fit. The role of Slashdot as the only aggregator for IT news has ended. Given a choice, I would much rather use RSS than the editorial process at Slashdot to get news stories.
6. As evidenced by the responses today, it is quite impossible to have a discussion with some outspoken members of the Slashdot community. It would take a large amount of patience, time and energy that I, frankly, am not willing to part with, to discuss why I am “liar, hypocrite, troll, etc”. It is just not interesting to me, and even if it was I would probably need to quit my job just to respond full time to the complaints.
If you feel the urge to yell at me, please remember this is just my opinion and I am very sure other people feel very differently. I do not have the time to discuss the matter anymore due to work and personal obligations, but thank you to the people that did respond. I did learn one very important lesson today though, some opinions are probably best left unsaid, as the effort required to explain it is not worth the cost of expressing it.
In summary, I do feel Slashdot has “Jumped The Shark”, I won’t read Slashdot anymore, and I am sorry I brought it up.
I have been reading the CEO of Sun, Jonathan Schwartz’s blog, lately and it has some great material. I just love the fact that many CEO’s blog nowadays, as some of it is quite interesting, and bold, material. I suppose I would even go so far to say, that if I read a CEO’s blog and it wasn’t good, I wouldn’t invest in their company, as I would have my doubts about the leaders intellect and authenticity. On the other hand, if I read a CEO’s blog like Jonathan’s, I would be very interested in the company.
One of the recent posts that Jonathan made was in response to a flame by Linus. In his response to accusations, by Linus, that Sun was being disingenuous about truly open sourcing its ZFS file system, he mentioned that not only was Sun going to open source everything, but that they were going to do it under GPL3.
I think this is a truly brilliant strategic move by Sun, as it raises the bar for GNU/Linux and Linus who is very adamant about his dislike for GPL3. I do see there being competition between OpenSolaris and GNU/Linux in the coming years, and I do think it is a good thing, as competition is what drives innovation. I also see an interesting dilemma for GNU/Linux as OpenSolaris will be able to use GNU/Linux code, but GNU/Linux won’t be to use OpenSolaris code. This gives OpenSolaris a huge competitive advantage and might give them a temporary head start in the head to head competition of their operating systems. Ultimately, it seems like GNU/Linux might have a very large problem on it’s hands if it stays with GPL2.
I am not making a value judgement on GPL2 vs GPL3, but I will say from a strategic standpoint it appears to be checkmate for Sun on this round. Sun has some incredible virtualization and storage technology and it if enters the open source arena, “just right”, it could capture a massive amount of market share with this strategy.
Complaints by people in the GNU/Linux camp can easily be rebutted as Sun can claim the “moral” high ground as they support what the FSF recommends. I am quite interested in what happens over the next few years. There are quite a few possibilities, some of them admittely far fetched, but interesting to discuss regardless:
* OpenSolaris comes into the FOSS market goes GPL3 and takes significant market share as it has the best GNU/Linux technology and Sun Technology. GNU/Linux tries to fight back and switches to GPL3, but the damage is enough that they become the second preferred FOSS Operating System behind OpenSolaris.
* Nothing happens. Things pretty much stay the same and OpenSolaris doesn’t really make much of a positive or negative impact.
* GNU/Linux and Linus seeing the “end game”, quickly switch to GPL3 and cancel the advantage Sun might have before it happens. It then crushes OpenSolaris as it takes all of its good technology and the huge market share it already has and makes OpenSolaris marginalized.
* GNU/Linux becomes the preferred choice for companies that don’t want to become tangled in GPL3 and OpenSolaris becomes the preferred choice for a commodity operating system that runs in a data center. This leads to a significant loss in market share for GNU/Linux.
* Other things….what am I missing?
Recently on this blog, I wrote You Have the Right to Read Your Accuser. In this, I argued that any software with substantial risk to harm your life or liberty must be open source. I specifically mentioned some breathalyzer software that people were fighting to see the source code of. Though the Florida legislature and many regional prosecutors obviously feel that the breathalyzer company’s rights were more important the individual rights, the New Jersey Supreme Court ordered that source code to a popular breathalyzer be revealed. The results, if you’ll pardon the pun, are breathtaking.
So, I made good on my promise to start learning Ruby. I do python programming in my day job and want to get better at Test Driven Development, Test Enhanced Development and Behavioral Driven Development, etc, in Python. Basically, I want to take a very similar language to Python, like Ruby, and strictly start the “testing” way. I am not sure how many other people have done something like I am doing, but it would be fun if a Ruby person did the same thing with Python. It might be neat to exchange notes.
These are the reasons why I think my theory will work so far:
1. I have no ego with Ruby. I know I suck, so it is ok to be slow at first while I am only doing Test Driven Style Development. Basically, I won’t be tempted to just crank out some code without tests.
2. I don’t have any friends yet that use Ruby. This again allow me to bring in any preconceived notation of how I am supposed to do things. I will be an empty vessel.
3. There are things in Ruby that I can learn and apply to Python.
4. It is just as fun to program in Ruby, as it is in Python. Lets face it Dynamic Languages are fun!
If any Ruby experts have any advice on what is the proper way to do TDD or BDD in Ruby, please let me know. I DON’T KNOW ANYTHING. Ahh…that is fun to say. Any advice or guidance is appreciated. I suppose this is almost like a cultural exchange visit. I just learned about BDD, and rspec and they seem interesting.
Oh, and I visited the local Ruby meeting a couple of nights ago in Atlanta, GA, and found it to be quite fun and light, yet still interesting. I plan on going every month now. One of the most interesting things I noticed is that when there is only one web framework, it kind of focuses the discussions and everyone knows what you are talking about. I have to admit, this seems like a very refreshing environment for a Newbie to a language, as no matter who you ask, they ALL know ROR.
If you are in the Atlanta area and interested in learning Ruby, then I recommend visiting:
unittestmodule, sometimes referred to as PyUnit, is based on the XUnit framework design by Kent Beck and Erich Gamma. The same pattern is repeated in many other languages, including C, perl, Java, and Smalltalk. The framework implemented by unittest supports fixtures, test suites, and a test runner to enable automated testing for your code.
Even though I wrote a very popular post about the Zen of Mac,
to show that I can be fair, I thought I would write about what I hate about Apple.
I don’t think Apple has the perfect Operating System or company even though I use OS X as my preferred desktop OS and I love it. They could still improve on things, so on that note these are things I hate about Apple.
1. Dump the silly DRM stuff COMPLETELY, not just for part of your library.
DRM just insults our intelligence. Apple is supposed to be ahead of the curve and creating a user experience that is better than any other desktop OS. “Authorizing” my music when I reinstall my OS is extremely obnoxious. Have some guts and say no to DRM period! No Mac users want DRM, so why are you providing a service we don’t want. Sounds like another OS we have all heard of…tread carefully!
2. Free and Open Source Software package management system doesn’t exit!
Your core OS is UNIX, yet you STILL can’t figure out how to integrate a decent package management system for FOSS? Huh, I don’t get it? Integrate Fink or Darwin Ports, or copy debian, but get with the program, it is embarrassing!
3. Regular Commercial Software Package Management doesn’t exist…i.e. the “uninstaller”?
Again, why is it so hard to uninstall or reinstall commerical software on OS X? There is at least one robust open source packagement tool
4. Locking the iPhone.
Unless this was a very shrewd marketing campaign for the iPhone, what did you think was going to happen when you released the iPhone without an SDK and locked it to ATT? Lets have less “locking” and rules with things we pay tons of money for. Just release the friggen SDK already, even Microsoft has an SDK for their phone.
I don’t want to hear all of the excuses either, like Safari is an SDK. They are all lame! Just do it already.
5. Don’t break UNIX behaviors that should work.
Now why doesn’t autofs work again? Is it because your pushing AFP? That is nice and all, but I like NFS so keep the tinkering off of autofs and make it work again! I shouldn’t have to buy an Open Directory Server to serve automounts when I could just use autofs. This was either a real poor design choice, or a somebody from Microsoft was hired to work on autofs :)
By, the way I think I might be the only person in the world who wrote a how to article on getting NFS to work with GNU/Linux and OS X via Open Directory, so I know what I am talking about: Open Directory Part 3. Everyone else uses AFP, but you don’t have to. Apple just doesn’t publicize it!
6. Now why can’t I write cross platform applications with Mac Developer Tools?
Cocoa is really great, but it is quite a daunting task if you need to write a tool that works on OS X, *nix and Windows. I can understand Cocoa not working as that framework only exists on OS X, but why don’t you have a cross platform development environment? Why not work with one of the dynamic languages like Ruby or Python and build a toolkit that is OS X like, but builds applications for all platforms?
Just dump it already. Seriously, it is way past its prime. Replace it with a modern scripting language like Ruby or Python. A lot of the work has already been done for you.
8. Why does OS X Server require a running GUI?
Take a hint from Ubuntu and have the option to not install and/or run the Window Manager. Your starting to get into big leagues with cluster computing, XSans, and quad core 1U servers. Why oh why do I need the GUI running sucking up tons of CPU and memory when it is a file server, or a render node? You need to lose your server OS beer gut and get into shape!