I've mentioned a couple times before that there's an excerpt for Neal Stephenson's upcoming book Quicksilver (which I'm excited about) in the back of the new paperback edition of Cryptonomicon. Well I just found out that the same excerpt is also at the end of a freely downloadable e-book sampler of Cryptonomicon.
To find it, go to the Cryptonomicon page at the PerfectBound site, click the small "Free Excerpt" box at the top right-hand corner, and choose your e-book download format. If you don't want to mess with installing any of the readers, you can just download the Acrobat eBook version, which seems to open just fine as a PDF in the regular Acrobat reader.
The Quicksilver promo starts at page 65. The sample chapters for Cryptonomicon are good too, although if you've never read the book then the second and third ones may be a little confusing.
There are also lots of other downloadable e-book samplers at the PerfectBound site, so the other titles on the site are worth a browse if you're thinking about buying a book. (I also read the sample chapters from Michael Crichton's new book Prey, and I really want to go out and buy that one now.)
The fastest method I could come up with was to open the file using a FileInputStream, read it to a byte array 2048 bytes at a time, and perform a byte-by-byte comparison with a byte array representation of the String I was searching for. Any kind of performance numbers I give you won't really mean very much, because speed is so dependent on processor, memory, JVM version, etc., but I can tell you that this will search through a file quite fast.
I wrote and uploaded the source code for a little Swing application that demonstrates the search function in action. The code might be interesting to look at to see how to do a few other fun things with Swing components too, like handling double-clicks in a JList or launching a new Thread from an ActionListener.
A lot of people have said that blogging isn't that big of a deal, because as a concept it's been around for years, and there's really no new technology involved. While I agree that it's not necessarily "new" in those terms, what I would contend is that blogging is exciting right now because it's so much more accessible than it used to be. Sure, the technology used to read or write a blog has been around for quite a while, but it's only recently become so easy and so cheap to do.
In terms of the "house" analogy, let's start with the caveman days. Back when people were living in caves, the technology to build a house existed, but the concept really hadn't been formed yet. There were trees, there were sharp objects, there was rope and mending materials available, but it didn't occur to anyone that you could put all this together to build a house. And besides, why build a house when you could live together with the whole community inside a cave?
Later on, after houses were "invented", there was a huge amount of labor and specialized knowledge involved with building and maintaining a house, so even after people knew it was possible to build a house and they knew how to do it, the cost of building a house was quite high. So houses existed, but for a very long time it was just an expensive and time-consuming prospect, and only the very wealthy or very knowledgeable people had one of their own...mostly, people still lived together in somewhat communal arrangements.
In the last several hundred years, house building has become a lot cheaper and a lot more automated. You don't have to have a lot of skill to build a house, because there are plenty of pre-built houses out there, or you can pay someone to do it for you. You don't have to have a lot of money anymore, because you can go to a bank and finance it at a very low upfront cost. The infrastucture is even in place already, so as long as you want to move to a populated area, the water, sewer, electric, and roads are already there for you. As a result, the cost of entry is very low, and many many people now have houses.
So how does all this tie back into blogging? Well, the current low cost of entry for blogging (which is fairly recent) enables us to do all sorts of things that would have been far too difficult or inconvenient or expensive to do before. If you're not very technical, you can have someone build a blog for you (download the software), and if you are technical then you can either look at some blueprints or design one yourself from scratch. The raw materials (software, Internet site, home computer) are now amazingly cheap, and the infrastructure (browsers, news aggregators, search engines, the Internet itself) is already in place. The standards that are involved (HTML, RSS) create consistency, and make it easy for "mixed" communities to form. We now have blog "neighborhoods" that anyone can move into, even if everyone has a different builder, and all the houses reflect their owner's personalities.
Furthermore, we can speak our minds and do whatever we want to in our own houses, unlike the communal living areas (newsgroups, forums) that we were used to, where the squeaky wheels tended to get the grease while everyone else's voice kind of disappeared into a low murmur (Richard made some good points about this). Because we actually own our houses, we have the pride of ownership that comes with it -- the desire to do maintenance, keep up the lawn, paint the walls, make it cozy -- unlike the communal living arrangement where the maintenance is much larger, and you may not have the authority or the tools to do it, and even if you fix things here or there you've always got a voice in the back of your head asking if you're not doing someone else's job for them.
So what's exciting about blogging? It's cheap, it's easy, it's personal, and it's reaching a critical mass. And as we hit that critical mass, we'll start seeing the real innovations coming out of it. Why? Because people will demand easier ways of aggregating their data. They will want better ways of tracking a large number of blogs, and finding other blogs that would be interesting to them. They will want to see "trends" among blogs, and be able to track common themes and similar subjects.
And the solutions to these problems will help out in other areas as well. They can improve search engine accuracy and inspire new ways to aggregate disparate data. For example, Mike Golding was recently talking about some creative ways to use RSS. What started as a way to use XML to publish news and blogs may help us answer questions about how to manage other types of data. The difficulty with Usenet and newsgroups and forums (especially the active ones) is that it's tough to find discussions that are interesting to you without reading or at least skimming all of the recent entries. Maybe some of the technology or concepts that help people keep up with scores of blogs in an aggregator can help us track forums and knowledgebases and knowledge in general.
So in my mind, that's the real revolution in blogging -- it's not the blogs themselves per se, it's the technology that will be developed and modified to support the blogging community, because it will not only help the bloggers (and bloggies), it will be applicable to other areas as well.
You can also test your formulas by putting them in a text field on a document and hitting Shift-F9. I usually use the subject field of the memo because that's available from anywhere in Notes by hitting ctrl-m.
1 - Open your Notes client
2 - ctrl-m
3 - enter 5*@Prompt([YesNo]; "Gimme 5?"; "Gimme 5!") into the Subject field
4 - hit Shift-F9
That was the craziest thing I had ever heard. If this formula-evaluation-in-a-text-field thing is new to you (like it was to me), you've got to try it. I must have played around with it for 20 minutes, and not everything worked, but lots of things did (try @Pi, @FontList, @Command([WindowMinimize]) ). For the life of me, I can't figure out why this feature is there, but it sure is handy...I think...
It's way too tempting to go with the "our software is better than theirs, so you just should get rid of their stuff and use ours" argument a lot of times, because that's what we really want to say. However, what management really wants to hear in many cases is, "our software plays well with others, and you can easily integrate it into your existing environment" -- especially if there's already a Microsoft infrastructure in place. If you (as a manager) have just spent 5 years and $20 million getting your MS architecture working, the last thing you want to hear is someone telling you that you should rip it all out and use a new piece of software (although that's sort of been the Windows 2003 message, interestingly enough). You want something that will mesh with the investment you've already made in technology, and make it better.
That's also true with a lot of the Domino projects you might find yourself at the bargaining table with. How often have you been discussing the potential architecture of a new project with some managers, and you end up in a debate with someone three seats down about whether to do the project in Domino or Exchange/IIS/VB/ASP/SQL Server? You know how to win that argument 9 times out of 10? Don't say "We should do the whole thing in Domino, and that's that". Instead try "Why don't we use both technologies? We could have a SQL Server backend for the relational data store, and use Domino and LEI as a front-end. That way you'll still have easy reporting on your data, and we'll get the RAD functionality and workflow that comes with Domino. We could even use IIS with a single signon, if AD security is an issue." That'll leave a few people speechless, and you'll probably get the project.
The fact is, Microsoft isn't going away any time soon, and we shouldn't pretend like it is. Yes, there are times when we do want to replace a piece of MS technology as a whole (e-mail migration, for instance), but there are many more times when we're working in a mixed environment, and we need to be more diplomatic about things. And besides that, the Microsoft argument is often "well, you're already using Office and NT and Windows desktops, so you should also choose [insert MS product name here] because it integrates so well with that other stuff". Well, which is a better counter-argument: "nah, that integration stuff is way over-rated", or "we also integrate with those products, and look what else you get"? Fight fire with fire.
Heck, tell your managers that Lotus and IBM technology actually integrate with your existing Microsoft environment better than Windows 2003 and Exchange 2003 do. See what they make of that...
The deal is not a reward from Microsoft for SCO's recent legal challenges to the Linux operating system, [SCO vice president] Sontag said. Microsoft has been very vocal about the threat that Linux poses to its business.
They don't say how much the deal was for, but they did note that this deal combined with another that was recently signed was worth over $10 million. You hate to be a conspiracy theorist, but boy that's interesting timing...
(On a related note, OSI's Position Paper on the SCO vs. IBM complaint by Eric Raymond is a really interesting read, if you've got a little time.)
See the block that the dinosaur is standing on? See what the letters are? "R5"! I chuckled to myself that this must be some sort of underground marketing campaign for Lotus Notes, subliminally indoctrinating young children as they're reading picture books. I mean, what are the odds that those would be the two letters on the block, in that order? You'd think they would be "A" and "B" or something.
But you know, if IBM is going to choose a new spokesperson, I think that the Toy Story character of Buzz Lightyear might just be the man for the job. My son loves Buzz Lightyear. I love Buzz Lightyear. Everyone loves Buzz Lightyear. And there's a Buzz marketing boom right now in the Disney stores and even on a smaller scale at Target, where I shop about 3 times a week. Buzz has style, he's got pizzaz. I'd hang an IBM Buzz Lightyear poster outside my cube, on the door of my car, and in my bedroom.
Okay, enough of that. You probably think I'm a raving lunatic.
Oh, one more thing, if you go to the Buzz Lightyear page on the Disney site, there's a link to play a version of the Buzz Lightyear cartoon theme song "To Infinity and Beyond", as performed by William Shatner. Very entertaining stuff (and if you like that, I also found a few other classic William Shatner songs here -- try the cover of "Mr. Tambourine Man" as a starter).
Peter said you could easily avoid the problem by adding a db.isOpen() check to make sure the database is accessible before you try to do anything to it. Interestingly enough, he said that this is also a problem in Notes agents, and you could write an agent that will crash in some versions of Notes just by getting a database that doesn't exist and then trying to do something to it (I haven't tested this out myself, so I'll leave that as an exercise for the reader).
One of the nice things it does is to allow you to use a small subset of HTML tags in your comments, so you can do some basic markup. For example, I think <b> and <i> are allowed, but <table> is not. I thought that was a nice system, because you don't have to use any weird non-HTML syntax to do your markup, and the "undesirable" tags are just converted away on the backend.
I figured this sort of functionality wouldn't be too hard to code in LotusScript, so I took a little time and wrote a LotusScript agent to convert HTML tags. It's pretty simple stuff, but it might be nice to incorporate for any of you guys out there who are "hand-rolling" your own blogs. It also does automatic conversion of http:// references to <a href> tags, which is something I really like in a comment system. And it converts single linefeeds to <br> and double linefeeds to <p>, which makes things a little more readable.
BTW, Colin published a similar routine earlier this week that strips all the HTML tags from a String, and Laurent added some code to make it work with RichText fields. That type of parsing can also be useful.
Dear SCO Partner:
As a SCO Partner, we thank you for your support and continued business. Because you are a valued partner, it is important that we make you aware of important SCO business decisions and announcements as soon as possible. As such, we wanted to make you aware of an important announcement made today.
This communication is about recent efforts SCO has made to license and protect our patents, copyrights and intellectual property pertaining to the UNIX(r) operating system. As you know, on March 7, 2003 SCO announced that it filed legal action against IBM in the State Court of Utah, for misappropriation of trade secrets, tortuous interference, unfair competition and breach of contract. The complaint alleged that IBM made concentrated efforts to improperly destroy the economic value of UNIX, particularly UNIX on Intel, to benefit IBM's new Linux services business.
As we have progressed in our discovery related to this action, SCO has found compelling evidence that the Linux operating system contains unauthorized SCO UNIX intellectual property (IP). Due to this discovery, we are taking three immediate courses of action.
1 - The first is to send a letter alerting commercial users to the fact that legal liability for the use of Linux by businesses may extend to end users. Customers should start receiving this letter today. For your information, a copy of this letter may be found at: http://www.sco.com/scosource/letter_to_linux_customers.html
2 - The second action we are taking is to suspend all future sales of the Linux operating system from SCO until the attendant risks with Linux are better understood and properly resolved.
3 - Finally, although this action affects future development and sales of SCO's Linux offerings, SCO will continue to support our SCO Linux and OpenLinux customers and partners who have previously implemented those products and we will hold them harmless from any SCO intellectual property issues regarding Linux. SCO will continue to honor all contractual obligations with existing customers including product updates, service, and support.
As many of you are already aware, SCO UNIX systems continue to sell well - including an increase in OpenServer sales over the previous quarter. Our UNIX products continue to support many of the world's largest businesses. In addition, new customer sales indicate that there is still no better option for rock-solid, dependable technology for their core businesses than our SCO UNIX solutions.
We are excited to be building on our SCO UNIX history as we roll out our next generation UNIX operating system and SCOx framework this fall. SCOx will allow small and medium business customers and branch offices to plug their existing applications into a Web services environment. Details of this strategy will be unveiled at SCO Forum in Las Vegas, Nevada, August 17-19. (For more details, see: http://www.sco.com/2003forum ).
SCO remains committed to building new business opportunities for our partners such as you. We recognize that you have depended on us to provide reliable, solid technologies for your customers for over twenty years. We look forward to helping you and your customers meet your business needs for the next twenty years.
President and CEO
The SCO Group
Good grief! How can that be construed as anything but lawyers and CEOs trying to scare every business in the world that uses Linux -- except the ones who are using SCO Linux? Of course, you know what they say: it's 98% of the lawyers who end up making the other 2% look bad.
Well, one thing led to another, and I wrote a little program to come up with a hex word list for me. Here's the list, along with links to the Java code and the dictionary I used.
While I was doing it, I also decided to produce a list of words I could make with upside-down numbers (like if you look at the number
372215 upside-down, it looks like the word "sizzle" -- well, sort of...it looked a lot better when I used to do it on my TI calculator back in grade school). I used the key i=1, z=2, E=3, s=5, q=6, L=7, b=9, o=0. You could argue that B=8 is a better representation than b=9 is, but if you really feel that way then you can just search-and-replace to your heart's content.
Who knows where this might come in handy?
First, I just received an e-mail from one of the marketing managers at HarperCollins books, informing me that Neal Stephenson's latest book Quicksilver will be coming out on September 23rd. I've mentioned before that I'm a big fan of Neal Stephenson (and especially Cryptonomicon), so I'm really looking forward to it. There's a short excerpt from the new book online, although if you're interested it's really worth your while to stop by a bookstore and read the much longer excerpt (about 12 or 15 pages) at the end of the paperback edition of Cryptomonicon. It looks like it's going to be a great read.
Second, I've been reading a book called Saucer by Stephen Coonts, and it had an interesting piece of dialog that I wanted to share. I won't give too much away, but in the first 50 pages the main characters find a flying saucer embedded in a sandstone ledge, and by all calculations the saucer is at least 140,000 years old. So later on a scientist is discussing how it could be that aliens with advanced technology would have landed here that long ago and then let the technology disappear. He said:
"Since each level of technological advancement requires more and more people, more and more social organization, it follows that without the specialized people, the technological level cannot be sustained."
"A society that can build a device like the saucer, put it in an interplanetary spaceship, and cross the vastness of interstellar space will not be able to replicate that society anywhere else unless they bring their whole population, or most of it. Upon arrival at the planet they intended to colonize, the small number of people who could make that voyage would drop to a technological level that they could sustain."
"Spaceships, computers, tools, weapons, lasers, advanced medical devices, books, learning -- they lost everything. There weren't enough people to maintain or manufacture any of that."
I just thought that was a really interesting concept, and one that actually applies to us as programmers and administrators too (that's right, I'm going to try to tie this back into a discussion about computers). Essentially, the more complicated our technology becomes, the more people it takes to sustain it. If you've been working with computers for more than about 10 years, you've probably seen a lot of companies go from one or just a few people who were running the company network to whole departments that do nothing but keep up with the servers and the workstations. It's harder and harder to be a "one man show" with any kind of programming anymore, because you've got to know 5 different languages, 3 different web technologies, and the ins-and-outs of at least one server operating system in order to produce a product.
So, more and more, we're becoming interdependent on each other with regard to the systems we're working on. The developers need the administrators, and vice versa. You have to focus on a few aspects of technology and really spend a lot of time to learn them and become proficient if you want to be truly good at what you're doing. You also have to try to keep up with related aspects of your technology in order to keep your head above water, but if you try to keep too many plates in the air you become the classic "jack of all trades, master of none" -- except over time you're not even likely to be very good at the things you think you're good at. I've looked at enough resumes to realize that people who claim proficiency in too many technologies are likely to know very little about any of them, especially if they haven't been working with them for very long.
Have you ever sat down with someone who said, "Oh yeah, I've been working with Lotus Notes for almost a year now, and I've pretty much got it down pat"? Don't you just want to whack them in the back of the head and walk away? Ignorance is bliss, and if you don't know very much about something, then you have no idea how much there is that you don't know. Put another way, the more you learn about something, the less you think that you know.
So I guess my point (if I have one) is that as computer technology gets more complicated, we have to learn to rely on our technical colleagues. It's frustrating not to know the specifics of how everything works, but it's often more important to have a deep knowledge about a few key things than a surface knowledge about many. And for the pieces of knowledge that you're lacking in, you're often better off trusting someone else with a specialized knowledge to take care of them, so you can continue to focus on your own specialty. Then you can leverage your shared knowledge to build something that no one person in your group could do themselves.
Hope that helps. Sorry for the problems.
The theory seemed to be that customers will associate your company with one or two of those attributes, and that is where you will separate yourself from the competition. So you need to choose one attribute to truly excel at, another to be really good at, and make sure you don't do a bad job in the others. Further, if you try to excel in all five attributes, then you become "world-class at nothing".
I like reading this sort of thing because it really applies to any situation where you have a customer, and virtually everyone who's involved in software development or server administration has a customer. It's pretty obvious if you sell software or consulting services, but it's also true if you're an internal development or support team. Granted, internal departments don't have to do as much selling, but the concept of customer satisfaction is the same.
It's true for websites too, even if they're free. For example, for something like a blog, the categories might translate into this:
Obviously there can be some overlap in the categories, and the examples I gave are just my interpretation. Also notice that I left out "price" in that list, because in the current blogging world all(?) the blogs are free, so you can't compete on price.
Compete? Are bloggers competing with each other? Well, it's not the crush-the-opponents-winner-take-all kind of competition, but as much as you hate to think of it that way, we're competing for our reader's time. People only have a certain amount of time in the day to do frivolous things like reading blogs, and because there are about 5 gazillion different blogs for people to choose from, we're all competing to get on the A-List of our prospective audience. After all, if no one's reading, then why are we writing?
So if you have a blog, what's your primary attribute? Are you selling service, access, experience, or product? If you don't have a blog (and for some reason you're still reading -- sorry for the digression), the same rules apply to all sorts of things in your life. Obviously it applies in your work life, probably on many levels, but it's true in other ways too. Are you trying to get a job or a raise or a promotion? What differentiates you from the other people who want the same thing? Look at all your interpersonal relationships (dating or otherwise). What do you look for in other people? What's really important to you? What are your own "dominant" and "secondary" attributes, and are you at an "acceptance" level on the others?
Oops, got a little too philisophical there. I need to focus more on my product. Something to think about, anyway.
I guess there are four main camps when it comes to RSS:
I guess I understand all four perspectives, and without too much commentary about the opposing viewpoints, I'll just say that I'm in the first camp when it comes to blogs and the second when it comes to tips. I like using my aggregator to keep up with the other blogs as much as possible, because once you start reading more than about 10, it gets really hard to jump around to all the different sites all the time (see my links page for many of the sites I visit with varying regularity). While I'd like for people to visit my site, I also understand that if I don't make my site convenient for people to read on a regular basis, then they just won't read very often. If people would rather read the blog through an aggregator, I certainly don't want to turn them away. As far as tips go, I agree with Ben that they are better read "in context", so they should be summarized in a feed.
So, that leads me to my updates. First of all, I added a tips and tools feed to the site, which gives you the latest 10 tips and tools on the site. The feed is pretty manual on my part right now, but I probably only add or update tips/tools here about 4 times a month, so I can deal with a little lack of automation for the moment. Per my comments above, it's essentially a "headlines only" feed, so it's pretty simple. In fact, if you're thinking about doing an RSS feed of your own but you don't know how it works, then that one is probably a good template for you to follow. It's based on RSS version 0.92 (the one where they removed all the XML limitations), which is simple to use and is compatible with just about all the aggregators.
For the blog feed, I added some links to the bottom of each entry. The first link is just a permalink to the entry itself, in case someone wants to reference it and they're using some funky aggregator that doesn't use the [link] tag. The second is a mailto link that allows a reader to easily send me an e-mail about the entry -- if you don't make it easy, they probably won't do it. The third is a link to the comments for that entry, so the reader can access the comments straight from the aggregator itself -- again, if it's not easy...
So anyway, that's what's new. I also played around with a few Java things, so I'll probably be cleaning those up and posting them to the site this week too. Now that I have a tips feed, I've got more pressure to publish!