Related link: http://www.hostbaby.com/wizard
No sales pitch here, but I just have to announce the launch of something I’ve spent over two years making:
the HostBaby Wizard
http://www.hostbaby.com/wizard
Related link: http://www.hostbaby.com/wizard
No sales pitch here, but I just have to announce the launch of something I’ve spent over two years making:
the HostBaby Wizard
http://www.hostbaby.com/wizard
Related link: http://praxagora.com/andyo/ar/social_network_innovation.html
I’ve been reading about viral marketing recently, so I tried to fit the phenomemon in with trends in social networks and Web Services.
Here’s a short script to remove multiple ip6fw rules sharing the same number.
for a in `ip6fw list $1 | cut –d ' ' –f 1`
do
ip6fw delete $1;
echo "ip6fw: deleted rule $1";
done
Usage:
# sh rmrules.sh 123
Today’s post is a one-liner that saves me a few lines of PHP every time I do a people query.
I used to always select my clients’ or customers’ names from the database, then use PHP/Ruby/something to grab just the first word of the name.
From now on I’m doing it in the database directly, though it took a while to figure out how.
SELECT name, INITCAP(SPLIT_PART(name, ‘ ‘, 1)) AS firstname FROM clients
(Ok so it only took like 3 minutes to figure out but I’m posting it here so I don’t lose it.)
:-)
Related link: http://securityfocus.com/archive/1/385571/2004-12-25/2004-12-31/0
This Bugtraq post questions if a 16-bit counter overflow was the cause of Comair’s recent computer failure that caused the cancellation of 1,100 flights on Christmas day. Quote from the post:
“….Comair is running a 15-year old scheduling software package from SBS International (www.sbsint.com). The software has a hard limit of 32,000 schedule changes per month. With all of the bad weather last week, Comair apparently hit this limit and then was unable to assign pilots to planes.
It sounds like 16-bit integers are being used in the SBS International scheduling software to identify transactions. Given that the software is 15 years old, this design decision perhaps was made to save on memory”.
And while we are at it, can someone please explain to me what a “worker keystroke error” is?! Here’s a quote from the article:
“A worker keystroke error grounded or delayed some American and US Airways flights for several hours in August.”
Give me a break! Sounds more like an “input validation” flaw in the software.
IPFW, IPFW2, and IP6FW allow the ruleset writer to add more than one rule with the same number. Here’s a command that lists rules with the same numbers:
IPFW/IPFW2:
$ ipfw show | cut -f 1 -d ’ ’ | uniq –d 00100 00243
IP6FW:
$ ip6fw show | cut -f 1 -d ’ ’ | uniq –d 00100 00243
In recent years, Open Source has become a relevant and strangely addictive force in IT. As the Internet age has dominated businesses and consumers with the same well oiled, yet clunky machine, Open Source has crept out of the dimly lit bedrooms occupied by toiling hackers and into the network rooms and ‘enterprise centric strategies’ of todays businesses. Open Source has not just become more acceptable, it has become more relevant.
Despite the over-production of rubber penguins and increasing technorati blogging about Open Source across the net, Open Source still has a long way to go in achieving the kind of acceptance and use we as enthusiasts optimistically predict. As bods familiar with the workings of an Open Source community, it makes reverent sense why one should use the software; freedom, stability, security, quality etc. The real challenge that faces us is that although you may have a clear view of why Open Source may be the right solution, expressing and communicating this message can be difficult at best. Advocacy is a concept riddled with theories, beliefs and opinions on how it should be practiced - how can you best advocate Open Source software?
I am going to be writing a series of new articles about advocacy. In these features, I am going to write about the different issues involved in advocating Open Source software, and attempt to beat a path towards best practice. For quite some time, I have been advocating how Open Source can be right for some people. This evangelism was first expressed through my efforts creating Linux UK (one of the first UK editorial sites about Linux), on through my work as a journalist and resulting in my current full time position at OpenAdvantage (http://www.openadvantage.org) as a professional Open Source evangelist. Although there is still much to learn, the body of experience I have collated myself and from other people can act as a useful map when choosing which path to head down. The goal in this game is to be as productive as possible with your advocacy; anyone can randomly advocate, but here you want results.
Before you set forth and explore the different avenues of advocacy, you need to step back and evaluate exactly what you are aiming to do. Sure, this nugget of advice sounds like one of those self-help audio cassette courses, but it is particularly important in the context of Open Source. The reason for this is that Open Source is first and foremost a culture, and like any other culture, it can be perceived and understood in inherently different ways. As an example, some people are inspired by Open Source due to the ethical and philosophical concepts, some are inspired by the technical benefits and some are plainly in it financial benefits. Even within these three loose groups, there are variations in tone and colour. If you support Open Source due to its ethical nature, you may approve of certain rights (such as access to source code and freedom of innovation), but not approve of other rights (such as selling Open Source, or including closed source components). What do you feel about free media - do you believe Open Source should be applied to sound/video? What is your take on software patents? Do you feel that Open Source should be advocated to businesses who will use it for closed source solutions? Are you happy running closed source software on Linux? Each of these questions has a variety of distinct answers that vary among members of the same Open Source community.
In marketing parlors there is a general rule that you should know your product inside out. This common-held view preaches that if you don’t understand part of your product, you won’t be able to answer *every* question and query about it. Open Source advocacy has a similar, albeit, less critical rule of thumb; “to help Open Source, you need to know Open Source”. With such a range in views of Open Source, you need to firmly understand your own position, and more importantly, understand how flexible you are in promoting Open Source in areas that you are not personally familiar with. Throughout your experiences advocating, it is likely that you will face challenges that will test your ethical and technical views, and it is advisable to set yourself a policy regarding how far you can bend on these issues. With the policy set early, you will gain more confidence in pushing forward.
While you are sat back, re-evaluating your perspective on Open Source, you should also re-evaluate your perspective on facts. Although we can be safe in knowledge that the O’Reilly Network does not resort to ridiculous headlines that mis-represent a story, it is likely that you will hear stories that may be perceived one way, but are entirely wrong in how the story was actually played out. As an example, a while back I was at a conference in London designed to help public sector organisations and schools understand what Open Source is, and a number of councils and schools gave a presentation at the event. One such school, Orwell High School, a specialist school for technology, made the leap over to Open Source. With over 1000 students, the school found upgrade costs quite prohibitive due to expensive hardware requirements for Windows XP, as well as high administrative costs. The school made the move to a LTSP thin-client setup, and this resulted in cheaper hardware, less landfill and a centrally administered system. This solution was by its very nature, a standard cut n’shut case; the need was there, and a solution was proposed. The result of this case was a saving of £13,000 a year in license fees; a worthwhile but not exactly ground shattering figure, given the millions saved in cases such as that at Beaumont Hospital where they saved over EU4million with Open Source. What is interesting with the Orwell High School case is how that saving is relevant to their context. A teacher in the English department stated that each child in the department had a budget of £1 per head. When you are dealing with such low figures, £13,000 can seem like an awful lot of money being saved each year.
The key point here is that information is relative to context, and context is relative to information. Before you even begin discussing how to push the merits of advocacy in different ways, you need to be prepared to sit back and think about the information you receive, and how that information is relevant to the bigger picture. The goal here is not to con people into using Open Source, neither is it to suppress some elements of Open Source. The goal is to be as honest and up front as possible, and to try and dispel some of the large quantities of hype.
The new series of articles will be online soon on the O’Reilly Network.
Thoughts and ideas? Scribe them below…
In most of the articles and forum entries everyone always mentions that installing Mono is greatly simplified by using Red Carpet. Now that I’ve done it, I’d have to agree. Getting there was, however, not as easy as I would have liked.
In this article I’ll provide the step by step instructions for installing Mono on SuSE Linux Professional 9.1 using Red Carpet 2.2.3. After reading, you should have a clear idea of how to get through the installation, and hopefully avoid some of the snags I ran into. In the end, with this article, setting up Red Carpet will be as easy as using it to install Mono.
This article will not provide any explanation about Mono itself. It assumes that the reader knows what Mono is, otherwise, why would you be interested in completing the installation?
Well the first thing to understand is that since Novell’s purchase of Ximian, Red Carpet is no longer available as a separate download. As mentioned on the Mono Project download project, it is now available as the ZENWorks Suite 6.5.
Once you get to the ZENWorks download page from Novell, the file required is ZEN65_LinuxMgmt.iso. This provides management for Linux desktops and servers, but it is essentially Red Carpet Enterprise. Be forewarned, the only way to get the necessary installation RPMs are from a 474.2 MB iso image. In addition, according to the Novell web site, this is a 90-day evaluation license of Red Carpet.
I believe that Novell is well positioned to benefit from the growth of LInux and open source software. However, I question their restrictive licensing of a technology that is necessary to download and install what may become the predominant open source software development platform. I’m really not sure if this license will apply to Red Carpet, so I’ll let you know in 88 days. In addition, why not break up the iso image into the individual components? Why should I have to download 474 MB when I only need 3 files that are less than 2 MB?
Once you have downloaded the iso image and have burned it onto a CD, then mount the CD and look for the redcarpet2 directory. For SuSE Linux Professional 9.1, the RPMs necessary were found in the suse-91-i586 subdirectory. The critical files are:
This is the Red Carpet Daemon. It is absolutely necessary for getting Red Carpet to work correctly as I’ll explain later.
This package contains the graphical user interface for Red Carpet.
This package contains the command graphical user interface for Red Carpet.
Install these packages and we are almost done. First, the GUI application should appear in the KMenu in the System -> Configuration folder as Red Carpet. You can further verify the successful installation by using YaST. Check in the Install and Remove Software -> Package Groups -> System Environment where you will find the newly installed software in the the Applications and Deamons groups.
With the software installed, the next step requires starting the Red Carpet Deamon. To start the deamon from the graphical user interface, you need to return to YaST. Select System -> Runlevel Editor, and then click on the rcd service. Click on the Enable button and the service should change status and show Enabled is now equal to Yes.
To start the Red Carpet Deamon from the command line, use the following quick command. Enter:
sudo /etc/init.d/rcd start
You will need the root password, in order to complete this transaction. Once complete, you should receive the prompt “Starting Red Carpet Daemon.” Now that the deamon is running you are ready to begin the Mono installation.
I’ll assume that you are not currently using the root account, so the first thing to do is be sure and start the Red Carpet GUI application using the root account. Enter:
sudo /usr/bin/red-carpet
If the connect to deamon dialog appears as illustrated in Figure 1, then the red carpet deamon is not currently enable. Return to the previous step and start the rcd deamon. Click on the Available Software tab, then click on the Channel drop down list selection button. This should produce a list of available channels. Select the mono-1.1 channel and then all available packages from the channel should appear. Slect Edit -> Select All or press Ctrl A to select all of the available packages. Select Actions -> Mark for Installation or right click the selected packages and select Mark for Installation. Click on the Run Now icon from the tool bar, select Actions -> Run Now, or press Ctrl X. This will start the installation process.

Issue the following commands as root:
rug refresh
This will download the most current channel information. Next in order to confirm connectivity with the redcarpet servers run:
rug channels
This should present a list of available channels. The list will also present whether you are currently subscribed to them. The output should resemble the following listing:
subd? | Alias | Name
------+------------------------------+---------------------------------------
| evolution-devel-snapshot | Evolution Development Snapshot
| evolution-snapshot | Evolution Snapshot
| redcarpet2 | Red Carpet 2
| ximian-connector | Ximian Connector
| ximian-connector-devel-snaps | Ximian Connector Development Snapshots
| beagle-snaps | beagle-snaps
| mono | mono
| mono-1.1 | mono-1.1
| rcd-snaps | rcd snapshots
| suse-91-i586 | suse-91-i586
| suse-91-i586-kernel | suse-91-i586-kernel
| ximian-connector-snapshot | ximian-connector-snapshot
To complete the installation, then run the following commands:
sudo rug sub mono-1.1
sudo rug update -y
The -y option will permit all actions without confirmations. Since there are approximately 50 different packages required for Mono, including all of the dependencies, this option should prove helpful.
After installing Mono, confirm the installation with a simple test. Using a text editor, enter the simple C# program shown in Lilsting 1.
using System;
namespace HelloNameSpace
{
public class Hello
{
static void Main()
{
Console.WriteLine("Hello, from Gurabo, Puerto Rico");
}
}
}
To compile the program, enter:
mcs hellopr
This should produce a response of “Compilation succeeded.” If the compilation fails, then check whether the system class starts with a capital “S”, the console class starts with a capital “C”, and the write line method uses a capital letter for both write and line. Remember, that in C#, classes and all methods and properties are case sensitive.
Successfully compiling the hellopr program should produce a hellopr.exe executable. To run the program, enter
mono hellopr.exe
This should produce the output “Hello, from Gurabo, Puerto Rico”.
In this article you have seen how to install and verify Mono. This process includes obtaining Red Carpet Enterprise, installing Mono, and finally creating, compiling and running a simple test program. I hope this provides a simple to follow procedure and eases your way on the road to developing Mono applications.
Do any of your development plans include Mono in 2005?
I’ll start with the thanks. I’ve received bundles of blog comments and personal e-mail messages with helpful ideas and very patient tutoring regarding my OS X problems. I’ve always been lucky to roll in congenial ‘Net company. From the early C++ community (before eventual insanity set in) to the early Linux community to the early Python community, I’ve seen the best that brilliant and dedicated interest groups can offer a newbie willing to do some homework. My experiences so far with OS X folks matches up against all the above. Thanks guys.
So I hope you don’t take it the wrong way when I say that as for the issue at hand, I tried as much was was practical from your suggestions with no luck. I had just decided: No mas. I surrender. Time to reinstall. I was in the middle of a glacial job of backing up by tarring to our household backup server before a reinstall. using tar. Then I heard of the OS X 10.3.7 release. I have always suspected 10.3.6. I know many of you run it without problems but the timing for me and for many others I’ve seen on the Net is just too much coincidence for my skeptic taste.
So I upgraded to 10.3.7 and the problem has vanished. Everythign is snapy again. Lori has stopped abusing me for buying her a Mac (easy now, she likes the computer, but she became very frustrated when it became unusable). My opinion is that OS X 10.3.6 had a bug that only affected some users, and that we were among the unlucky, and that they fixed it in 10.3.7. That’s cool and all, but I must say that I wish such breaks and fixes wouldn’t come and go in such mystery. I think Apple has a lot of opening up todo, but that’s the subject of another blog. For now, it’s all love.
Before I put this issue behind me (I hope), here are some brief notes in response to the many thoughtful suggestions:
A lot of people mentioned disk damage as a likely culprit. Some pointed me to this helpful article about running Disk Utility (or fsck). This seemed reasonable, since my one brief reprieve from the problem had come after running repair permissions. I dutifully tried both Disk Utility and fsck, neither found anything wrong, and I was right back to the problem upon full boot. I think Apple tech support also instructed Lori to do this when she first reported the problem, but it was worth my trying personally. One note is that in safe mode everything was nice and fast, but back in regular start-up (regardless of the user) it was dog slow. Perhaps it was a kernel extenson in that case, but I had no idea how to start narrowing down which was the culprit.
Some suggested DiskWarrior, a third-party tool, but one that has received an impressive shelf of accolades. Apparently it can fix some problems that elude all other tools, including those built into OS X. Problem 1 is that it costs $80, but that’s a bargain if I were confident that it would do the trick. Problem 2 is that it is not even really advertized as a performance elixir. It’s advertized more as a wicked sharp disk error recovery tool. A bit more lumber than we need overall, and not an obvious enticement to spend a speculative $80.
Some suggested DNS issues. This doesn’t seem at all likely. The slowdown affects launch of applications that have nothing to do with networking, yet networking applications such as Safari don’t seem in any more distress than any other counterparts. What’s more, if I do basic lookups on the command line, once the command line applet itself has taken ages to start up, network responses are immediate.
Apparently HP printer drivers, have been the source of some reported problems, but these problems are a matter of chewing up CPU. Once again, Activity monitor shows plenty of CPU idle left. CPU utilization is not the problem here (nor is memory).
I checked for third-party extensions and all that. /System/Library/Extensions has tons of “.kext” file (kernel extensions, I presume) but I can’t tell which would be 3rd-party, nor did I feel confident just deleting the lot. In /Library/StartupItems I did find a file “Wacom” which might correspond to an old Wacom tablet which I’d forgotten we’d installed (we hardly used it). Deleting that file didn’t make a difference.
Some thought that the fact that we’d made incremental updates from 10.3.0 to 10.3.6 caused a few gaps and fissures in things and that we should just use the “combo updater” (new concept for me) to go back to 10.3.0 and make the leap back to 10.3.6 in one go. Sounded plausible and all, but if it were the problem wouldnit it have got worse with 10.3.7, rather than better?
Here is a quote from one sugghestion:
[T]he Jan 2005 issue of MacAddict addresses
the “lazy Mac” (p.20: “your Mac isn’t as snappy as it used to be”).
They start by recommending a reboot and then checking Activity Monitor,
but eventually they recommend running the $15 shareware Cocktail,
which would have worked (as “repair permissions” is one of its
options).
Seems like useful into to keep in mind, though I don’t know how Cocktail would compare to DiskWarrior and other similar packages.
Bottom line now: my wife is happy so I’m happy. Thanks to Apple for the fix, and thanks to the OS X community for such solid support.
Related link: http://www.sheflug.co.uk/
It looks like the first quarter of 2005 is going to be a busy time for your humble weblogger. I will spend most of the January and February working on a book for O’Reilly. Then, the last week of February I’m going to Sheffield to speak about Open Source firewals at the ShefLUG 2005 Seminar (23rd February 2005) and immediately after that I’m off to Fosdem 2005. (I won’t be one of the speakers at Fosdem, just a regular attendee, look for me near the OpenBSD booth.) Then, in March, I’ll be teaching BSD Firewalls classes in Krakow (Cracow), Poland.
Fingers crossed, my health will keep up with my schedule.
A small private solutions provider in Maryland emerges as the first challenger in the post Oracle/Peoplesoft merger ERP marketplace. InfoSecure Open Systems & Solutions recently announced the release of technology and related services that enable the use of the open-source Compiere(TM) enterprise resource planning (ERP) and customer relationship management (CRM) application on the SAP-certified open- source MaxDB(TM) by MySQL database, providing a unique fully open-source alternative to Oracle/PeopleSoft.
Compiere is the #1 Open Source ERP/integrated CRM software solution with 750,000+ downloads. MySQL is the world’s most popular open source database, with more than 5 million active installations. The company also announced that support for Computer Associates’ Ingres, MySQL 5.0 and other open-source databases will be available soon.
Don Samoil, VP of Global Sales for InfoSecure points out: “With Oracle acquiring PeopleSoft, business may face fewer choices and higher costs. Having a true open-source ERP and CRM solution has become even more critical.”
InfoSecure Open Systems & Solutions offers miCompiere ™, a rapid installation and deployment service package for customers to quickly install or migrate to Compiere on MySQL/MaxDB. For a fixed price, customers can have their standard Compiere-on-MySQL/MaxDB system installed and running in a very short time.
Who else will join the competition?
Related link: http://www.rogueamoeba.com/slipstream/
Rogue Amoeba, the makers of the insanely cool Audio Hijack, will release Slipstream in January 2005. In an email they sent to registered users of their other products, they say:
Now, audio from any program can be played through it. With Slipstream, the AirPort Express isn’t just for iTunes any more.
Very cool: I can’t seem to give these guys money fast enough for all the cool stuff they have. At some point I’d like to have RealPlayer on all the speakers in my house so I can keep listening no matter which room I move to.
Related link: http://www.mozilla.org/products/thunderbird/
Perhaps I have been stuck in the dark ages, but I have used the Pine email client for close to ten years now, and have never been able to find a good replacement. Recently, however I decided to try out Thunderbird 1.0, and I give it two hearty thumbs up. Seven features that I find particularly helpful:
Kudos to all the Thunderbird developers for making such a great app.
Related link: http://www.websidestory.com/pressroom/pressreleases.html?id=238&ctl=x08×087h29ub
This week the web analytics software company WebSideStory reported that the Mozilla Firefox browser now has an estimated 4% share of U.S. Browser Usage Share. Most of this new found usage has come at the expense of the Microsoft Internet Explorer, which is now down to 91.8%. I can only imagine that this number will continue to drop.
I’m even now more excited about giving all my relatives copies of the OpenCD for Christmas. I’m mostly just giving it to them just to encourage their use of Firefox, but who knows? Maybe they’ll get curious and give some of the other fine apps a spin.
Looking to impress your friends and relatives, give’m Firefox. They’ll thank you all next year.
Related link: http://www.netflix.com/RSSFeeds?lnkctr=mfRSS
NetFlix uses RSS to tell me which movies they’ve gotten back from me and which ones they have shipped. It’s been handy. I’ve been curious when they get the movies back, and now I know.
I guess this could be done in email, but RSS aggregators have made this really painless. The news is automatically sorted by source, and old stuff I’ve already seen disappears. In this case, I only need a line of text: “Received: Blah blah” or “Shipped: yadda yadda”.
I could also get an RSS feed on my complete movie queue, but that’s a lot less useful. Every time the queue changes, which is every time they send me a movie, the RSS feed updates and everything moves up one position. I don’t need 100 new items in my aggregator just because every movie moved up a position. I could write a filter for that feed to strip out everything but the top three, I guess.
I’d like to get most of my notifications this way: my bank can tell me about cleared checks, my credit cards could tell me a payment is due, and so on. These are all things I get in email but I can’t respond to in email. It’s one way: so why not give it to me as RSS?
Of all of the companies that are playing the open source card, the one I least understand is Oracle. HP, IBM, and even to some degree Sun Microsystems are easy to understand. Promoting open source helps them sell more hardware, like I said easy. Fundamentally, Oracle’s interest in Linux is the same, by promoting open source it helps them sell more software licenses. However, that’s the kicker. Until Bill Gates’ prediction comes true and hardware is essentially free, there is a big difference between these two positions.
Hardware manufacturers are not on a collision course with open source. Computer hardware and open source are complimentary markets. On the contrary, database management servers, middleware, web servers, finance and accounting software, and customer relationship management software are dead center the target of some of the most aggressive and successful open source companies. A simple example is MySQL AB, that competes, or will compete, directly with Oracle in the database market.
I’ve been confused by this for a while, but this week I was stunned. After a relentless pursuit, Peoplesoft Corporation surrendered to Larry Ellison and Oracle Corporation. This week the Peoplesoft Board of Directors took the advice of the “Transaction Committee” and accepted a cash bid from Oracle of $26.50 per Peoplesoft share, for an estimated total transaction value of $10.3 Billion.
As I’ll break this transaction down later, it is my opinion that this purchase may be a serious mistake by Oracle Corporation. I’ll show through a very brief review of their finances, that with the growing credibility of open source software in the server room, both Oracle and Peoplesoft will be directly threatened by a strong contender in some of their most successful product areas. This threat will drain new software licenses faster than they expect and they will be slow to respond to this threat.
In the end, I commend the Peoplesoft share owners in successfully raising Oracle’s offer price per share from $19 per share to $26.50. If completed, this will be a huge financial windfall for all Peoplesoft share owners. Although their 2003 annual report does not even mention a threat from open source it is curious to note that one of their key ex-executives believes differently. As we have already seen in the attempt from Novell to hire ex- PeopleSoft exec Ram Gupta to replace departed vice-chairman Chris Stone, it seems the executives at Peoplesoft know where the future lies. I predict that some of the biggest Peoplesoft shareholders, those who will reap the most from a successful sale, will head into open source.
More and more to get a sense of how little this makes sense, we only need to examine the numbers. The best place to go for any public company are the federally mandated Security and Exchange Commission reports. Let’s first check out the basic numbers from Oracle Corporation (ORCL). First, according to the Oracle Corporation 2004 10Q, Year End Report they claim that “We are the world’s largest enterprise software company.” They are most definitely somewhere in the top five of all proprietary software companies in the world. In 2004 they generated a total of $10B revenue, with $8B in software licensing (79%) and $2B from services (21%). 44% of those software revenues were from new software sales, while the remainder comes from license renewals and upgrades. Due to the well deserved reputation of their marque product, the Oracle database, they seem rock solid.
It is worth mentioning though, they do have open source on their radar. I guess they believe, as many of us do, that open source is important to watch but it is anyone’s guess when it might actually have any material impact on their revenue. Oracle admits: “We may also face competition in the open source software initiatives, in which companies such as JBoss and MySQL provide software and intellectual property free over the internet.” and “We may also face increasing competition from open source software initiatives, in which competitors may provide software and intellectual property free over the internet. If existing or new competitors gain market share in any of these markets, at our expense, our business and operating results could be adversely affected.” I say that when a risk finally makes it into the management discussion, it is probably too late to do anything to stop that threat from becoming an issue.
So the risk is there, fine. So let’s take a look at Peoplesoft. Reading from Peoplesoft Corporation’s 10Q Quarterly statement for the third quarter, they have booked $1.9B in revenue in the first 3 quarters of 2004. They are on track to surpass the annual numbers from 2003. Digging a little deeper, they have $1.3B in software license related revenue and $0.6B in service revenue. We see less of an emphasis on software licensing, but it is still heavily dependent on software licensing. It is also very important to look at what it would take to see a return on investment for Oracle’s $10.3B.
With $61 Million in net income in the first nine months of 2004, it would take approximately 384 years to earn back the investment based only on profit. Maybe it makes more sense to look at the almost 4 years it will take to have the Peoplesoft annual revenue to cover the sale price. Now I realize this freshman business school student’s analysis of this transaction is way off, but I stand by my analysis that this is a fantastic deal for Peoplesoft’s shareholders and an anchor around the neck of Oracle. Companies are bought and sold for many reasons, and I’m sure we may learn why Larry Elison pushed so hard to get Peoplesoft. In the meantime, let me elaborate on some of the open source projects that I hope, err I mean “may”, represent some of the biggest risks to Oracle and Peoplesoft.
In no particular order, here are some companies and projects that should be giving the Oracle sales staff nightmares before too long:
Anyone, or maybe several, of these companies or projects may rise to be a serious threat to Oracle’s future software revenue. Only time will tell, however, I know that if I had $10 Billion dollars burning a hole in my pocket, I imagine there are better ways to invest it.
To obtain copies of the financial data reviewed for this, please visit:
What do you think Oracle’s purchase of Peoplesoft means for the software industry?
Related link: http://www.konferencja.i4u.pl/en_goscie.html
That’s the question that Lawrence Lessig and other guests will be trying to answer at the Intellectual Property Law International Conference in Krakow (Cracow), Poland, in April 20-22th 2005.
Topics for discussion include Creative Commons, P2P, and music sampling.
The folks at LinuxNews.pl report that prof. Lessig will spend three days in Cracow. He’ll speak at the conference and meet with a group of lawyers from Uniwersytet Jagiellonski interested in spreading the ideas of Creative Commons in Poland.
Related link: http://safari.oreilly.com/JVXSL.asp?x=1&mode=section&sortKey=title&sortOrder=asc…
This inspiring phrase from Kent Beck’s book Test-Driven Development By Example:
“When we write a test, we imagine the perfect interface for our operation. We are telling ourselves a story about how the operation will look from the outside. Our story won’t always come true, but it’s better to start from the best-possible application program interface (API) and work backward than to make things complicated, ugly, and “realistic” from the get-go.”
The following example test is just a little simple one-method thing, but I realized this same approach could be used to design an entire system!
You can just start typing some pseudocode the way you *wish* you could type *if* your class/system was “just that easy”.
Then, when done, break it down into bits, and try test-driven development to see if you can make it so!
Just a 1-hour-old idea. Feel free to rip it apart….
Related link: http://www.cs.tufts.edu/~mchow/excollege
I am pleased to announce that starting next month, the start of the Spring semester at Tufts University, I will be teaching a course entitled Security, Privacy, and Politics in the Computer Age. The course will be offered by the Experimental College at Tufts University. The following is a brief description of my course:
Computer viruses, worms, Trojan Horses, spyware, exploits, poorly designed software, inadequate technology laws, and terrorism: these issues have a profound affect on our daily computing operations and habits. New technological innovations such as file-sharing software and location-based tracking tools also have major political and social implications. Unfortunately, basic knowledge and understanding of the security, political, and social issues concerning the use of technologies is lax, and is a major reason why people are continually affected by computer security breaches and technology misuse. Granted, the problems are only getting worse. Issues including electronic voting, Radio Frequency Identification (RFID) tags, location-based tracking technologies, and the Digital Millennium Copyright Act (DMCA) will be discussed. This course will also delve into reverse engineering of software, understanding exploits (e.g. buffer overflow, Denial of Service, rootkits, spoofing) and intrusion detection, and how to protect yourself from malicious computer activities. Then, the issues will be put into a global context to answer the question: we have dug ourselves into a deep hole; how do we dig out of it?
This course is open to all, regardless of area of study. No software development or computer programming knowledge is required. Basic knowledge on computer technology and concepts is sufficient. The only requirement is that you are curious on the security, privacy, political, and legal issues in computer technology, and why they are important in society.
I do understand that only Tufts students and neighboring community members can enroll in the class (EDIT, 1/5/2005: ON A SPACE AVAILABLE BASIS). However, I endear to make this course accessible to the general public. Therefore, all lecture notes, news, examples, and assignments will be published to the course’s website as soon as they become available. I also envision having a message board for the course, and possibly videos or audio recordings for some lectures –all available to the general public’s use.
I am honored to have the opportunity to teach this course not only because of my passion for this complex matter, but to contribute back to my alma mater and to the Computer Science community. In addition, there is a lack of ownership of the subject matter that I will be presenting, a major reason why there is a lack of basic understanding of the security, legal, political issues in using technology.
For more information, please visit the course’s (tentative) website at http://www.cs.tufts.edu/~mchow/excollege.
Once in a while someone asks for a graphical installer for BSD, similar to Fedora Core. Wouldn’t it be cool if we could see the daemon or Puffy in full color?
No, it wouldn’t.
As someone who just finished a chapter on BSD and Linux installation procedures, I must say that I like BSD installers much better than their Linux counterparts and that I don’t see a reason to ask the developers to spend their time on something that’s pure eye candy. This is 2004, soon to be 2005, and the odd graphical Linux installer can still have problems talking to some monitors and video cards.
Related link: http://www.pyzine.com
A long time ago in a publishing world far, far away, Brian Richard started Py, an independent Zine for Python developers. I still have several copies of the first issue I picked up at OSCON 2002. That was about the same time I was thinking about going into print with The Perl Review.
Brian and I had chatted over email a couple times, and he had moved on to Linux Magazine. I thought that was the end of Py.
Mark Pratt, the new publisher of PyZine, called me tonight (all the way from Barcelona) and we talked about what each of us is doing and what we have planned. I certainly don’t want to compete with PyZine, so my idea for a Python magazine (I wanted to call it MagPy) is dead.
There might be some ways we can help each other, but mostly we just talked about how we do things and exchanged some ideas.
Now I’ll have to find another idea for a new magazine, but that’s okay. :)
Someone, somewhere on the Internet claimed recently that the hama USB 2.0 Card Reader 9in1 doesn’t work with OpenBSD 3.6. This is not true, the system detects the card reader and the flash cards you plug into the reader.
There is a problem with the un-plugging procedure. The system does not detect the removal of the card from the reader and won’t recognize the card when you put it back into the reader. I’m not sure why it happens, because the system does detect the insertion and removal of my Actina 128MB Flash memory stick (plugged straight into the computer, not via the card reader).
The cure is childlishly simple: disconnect the card reader from the compute before you remove the card from the reader. Then, remove the card from the reader and connect the card reader to the computer. It’s a stupid trick, but it works on OpenBSD 3.6. It may work with other systems and with other Flash card readers.
Related link: http://print.google.com/
Google just keeps doing amazing things. Google for “War and Peace”. One of the top links should be “Book results for war and peace” with a rainbow colored collection of book spines next to it. Follow that result and you’re in Google Print, which shows you the Penguin edition of the book, and it’s fully searchable!.
I’ve had this dream of creating concordances for my favorite books, but Google Print would virtually do that for me. Go on Google, take it off my to-do list!
SpamBayes was already installed (to /usr/bin as it happens, but location doesn’t matter as long as sbfilter.py etc. are in the path). My first step was to set up two mail folders: “Junk” and “MaybeSpam” using my mail user agent (Evolution 2.0.2). If your MUA already has some junk controls, such as Evolution 2.x, Thunderbird or Apple Mail, you may have special, local Junk folders. You probably still want to create actual IMAP folders on the server side (though see below for a note on a clash problem in Evolution).
I created a local SpamBayes config dir:
mkdir $HOME/.spambayes
I set up a config file by pasting the following into
$HOME/.spambayes/spambayesrc:
[Storage]
persistent_use_database = True
persistent_storage_file = ~/.spambayes/hammiedb
I added a variable to my environment as follows (on the command line and in my bash profile file):
export BAYESCUSTOMIZE=$HOME/.spambayes/spambayesrc
The next step was to train SpamBayes, first creating the database:
sb_filter.py -n
You should see “Created new database in /home/uogbuji/.spambayes/hammiedb” or such. If you have existing good and spam mail folders, you can kick start things by training on those folders:
sb_mboxtrain.py -d $HOME/.spambayes/hammiedb -g
$MAILDIR/GoodMailFolder1 g $MAILDIR/GoodMailFolder2 -s $MAILDIR/Junk
Use the -s flag to specify folders with only spam and -g for
folders with only good mail (”ham”). You can have multiple instances of each flag.
Next I updated my .procmailrc with rules to run through SpamBayes and move mail according to the results. Something like the following:
MAILDIR=$HOME
LOGFILE=$MAILDIR/procmail.log
SPAMBAYESRC=$HOME/.spambayes/hammiedb
:0 fw:hamlock
| sb_filter.py -d $SPAMBAYESRC
#SpamBayes tests
:0:
* ^X-SpamBayes-Classification: spam
$MAILDIR/Junk
:0:
* ^X-SpamBayes-Classification: unsure
$MAILDIR/MaybeJunk
#Spamassassin tests, if you also have that
#:0:salock1
#* ^X-Spam-Flag:.*Y
#$MAILDIR/Junk
#:0:salock2
#* ^X-Spam-Status: Yes
#$MAILDIR/Junk
#Uncomment if you really must
#:0
#* ^(From|To|Sender):.*Cron.*
#/dev/null
Finally I added a job to keep up the process of training SpamBayes so it can adopt to changing spam patterns. I added an entry such as the following to my crontab (using crontab -e):
MAILDIR=$HOME
BAYESCUSTOMIZE=$HOME.spambayes/spambayesrc
# use /bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh
10 6 * * * sb_mboxtrain.py -d $HOME/.spambayes/hammiedb -g
$MAILDIR/GoodMailFolder1 g $MAILDIR/GoodMailFolder2 -s $MAILDIR/Junk
Be sure you don’t train MaybeSpam or any other iffy folders as junk (or as ham). All the above set-up did the trick for me.
Evolution gets in the way
Evolution 2.0.2, like many modern MUAs provides fancy client-side spam-filtering, but I ran into problems where this interfered with plain old IMAP folders. Evolution calls its spam folder “Junk” and seems to maintain it locally, even thoug it’s in the folder tree under the rspective server (which i think is bad form). Problem is that it seems to mask any actual Junk folder you have on your IMAP server. Most MUAs have an option to override the location of special folders such as Sent, Trash and Junk, but Evolution does not seem to. Has anyone run into thei problem and found a good work-around?
Side note: I’ve noticed in general that Evolution doesn’t get along well with UW-IMAP, especially not the very strange IMAP set-up that comes in SuSE Linux (odd considering Evo’s provenience). Not much I can do about that now, since we’ve outsourced most systems administration.
Do you have any handy SpamBayes tricks for Linux?
Tonight I had some time to update Busines::ISBN::Data, which is the data pack for Business::ISBN. It exists separately so I can update them separately. The ISBN folks have added several country prefixes and updated the publisher ranges in a lot of the prefixes: space for new publishers is getting short.
The task was much easier this time. Previously, I got the data from the HTML pages on their web site. They’ve done away with that in favor of a PDF file. Things would have been much easier if it was just a text file. There isn’t anything fancy in the PDF: no images, no fancy text effects: just the data.
Oh well. Updates are infrequent, and it was easy to extract the text from the PDF, even if the data was a bit dirty. Still, text wants to be text.
Updated. Thanks to “david_given” for pointing out a typo, which is now corrected.
Much of my current late-night hacking (I should be making a couple of big announcements soon) involves pushing the art of XML/SAX processing in Python by using its ever more powerful functional features. In doing so, I’ve been making more and more use of nested (AKA inner) functions for modularity and some neat approaches to dynamic dispatch. This has also brought me several times into the grey areas of nested scopes. I’ve come to know the PEP pretty well, but in case it saves anyone time spent probing Python legalese, here is an example that illustrates the behavior of nested scopes. The code can be run as is in Python 2.2 or later. For Python 2.1, add from __future__ import nested_scopes to the top.
g_a = 1 #global scope
def f1():
a = 2
def g():
print "f1/g", a #a is 2
return
g()
def f2():
a = 3
def g():
print "f2/g", a #UnboundLocalError (at runtime)
a = 4
return
g()
def f3():
def g():
global g_a
print "f3/g A", g_a #a is 1
g_a = 5 #Modifying the global
print "f3/g B", g_a #g_a is 5
return
g()
print "f3/g C", g_a #g_a still 5
def f4():
a = 6
def g(a=a): #Yuck. Cumbersome
print "f4/g A", a #No problem. a is 6
a = 7
print "f5/g B", a #Now a is 7
g()
print "f4", a #Back to 6, since int is immutable and
def f5():
a = 8
def g(a):
print "f5/g A", a #No problem. a is 8
a = 9
print "f5/g B", a #Now a is 9
return a
a = g(a)
print "f5", a #a is still 9
f1()
#f2() #Commented out to avoid Exception
f3()
f4()
f5()
When I first ran into the UnboundLocalError problem demoed in f2 I started with the fall-back solution in f4, but 2 considerations turned me off that solution. The main one was ugliness of the keyword stuffing, especially when I wanted several variables in the shared scope. A more minor issue was a need to mutate such variables within the nested function. This is a minor issue because such mutation is rather inelegant and runs counter to the very functional principles underlying nested scopes. Nevertheless, I did have a couple of cases where I wanted to hack in mutation temporarily for some quick and dirtypurpose. It turns out that the f5 approach deals with both issues, with a bonus that mutation is replaced by functional transform. I use tuples to pass back multiple values from the inner function, of course.
I did not show in the listing how using exec or from foo import * can lead to syntax errors, a situation I ran into once, to my great confusion. See the PEP for a terse listing of syntax gotchas. Andrew Kuchling’s document mentions the exec gotcha. The usual solution is to use the form exec cmd in globals(), locals(). See the Python Library Ref exec documentation for details (notice: Python 2.4 relaxes the rules a bit on what can be used with exec ... in ...).
This slide mentions the exec gotcha as well as a possible problem with eval.
Side note: in Andrew Kuchling’s brief on nested scopes he introduces them by saying:
In Python 2.0, at any given time there are at most three namespaces used to look up variable names: local, module-level, and the built-in namespace. This often surprised people because it didn’t match their intuitive expectations. For example, a nested recursive function definition doesn’t work:
def f():
...
def g(value):
...
return g(value-1) + 1
...
The function g() will always raise a NameError exception, because the binding of the name “g” isn’t in either its local namespace or in the module-level namespace. This isn’t much of a problem in practice (how often do you recursively define interior functions like this?)
I read this bit after I’d already used recursive inner functions in several cases, and had been impressed at their expressive power. Just goes to show that the human imagination is not fit to find limits to the usefulness of recursion.
Overall, nested scopes in Python are not as clean as a language purist might wish, but like so much in Python’s evolution, they find a comfortable niche between cleanliness and practicality.
Related link: http://www.devguide.net/var/bsd-firewall-stickers.zip
Here are some BSD and firewall sticker designs:
DragonFly BSD — Because There Are Other Alternatives
FreeBSD — Because There Are Other Alternatives
NetBSD — Because There Are Other Alternatives
OpenBSD — Because There Are Other Alternatives
OpenBSD — Painted Puffy
IPFW — Building a Better Firewall
IPFilter — Building a Better Firewall
IPTables — Building a Better Firewall
PF — Building a Better Firewall
Copyright? You are free to print and sell/give away these designs as long as they are used to promote DragonFly BSD, FreeBSD, NetBSD, OpenBSD, IPFW, IPFilter, PF, and IPTables in a positive manner. The Puffy image is copyright Theo de Raadt
Have fun.
I didn’t anticipate this lead into my debut as an O’Reilly Network weblogger, but I guess ya gotta go where the muse takes you. As I anticipated making this first entry, I was wondering what to cover. I was going to cover who I am, what I’m doing, and give a preview of what you might expect to read in this web log.
As I woke-up this morning the headlines read Atrapados entre balas asesinas, Trapped between assassins bullets. A father and two of his daughters had been shot to death in their car as they waited for the light to change. One minute the were just coming home from the game, the next, instant misery for two mothers, two sisters, and everyone else left behind to suffer their loss.
As the “pueblo” of Puerto Rico mourns, I come here to finally begin writing. But now I sit asking myself: “Who am I?”; “What am I doing that makes any sense in light of this tragedy?”; “What can I write about when my passion for technology, software development and open source seems pointless.”
But that’s just it, it isn’t pointless. It’s easy to compare our lives against the suffering we see around us and wonder if we have made the right choices. However like George Bailey from “It’s a Wonderful Life”, we each have our role to play. Yes we can change that role whenever we choose, but we always have a role.
One of the main reasons I am leading the SNAP Development Center is because of the choices I am now making. I decided about two years ago that I would involve myself in the creation of a high technology economy in Puerto Rico. I knew that I could help, and I willed myself to pursue the opportunity. I decided that I would become involved in this effort because I felt I had something to contribute. I saw in Puerto Rico what we all see by volunteering in open source software projects. I believed in the goal of the project, I saw problems that I could solve, and opportunities that I knew I could attack.
Deep down there are many people that are confused and scared of open source software. However, I believe that it has nothing to do with software licensing. They are scared and confused because they are unable to understand why a large group of programmers would volunteer their time to make commercial quality software.
Thankfully, there are millions who volunteer their time for countless altruistic causes. They help to bring comfort, to feed, to ask for donations, and to spread peace where none exists. Now enter the open source software development community; we write and test code so everyone else can make their own unique contributions. We have finally found a way to play our role, and we feel good playing it.
What confuses and scares people about open source is their inability to recognize that we all must find our role. We all need to find something we believe in and a way to turn our visions of the future into reality. What they don’t understand is