Wednesday, August 12, 2009

The Zim Desktop Wiki as a Storywriting Tool

There's plenty of programs available for anyone who wishes to write stories. Most often, the program used is a word processor such as OpenOffice.org Writer or M$ Word. Those programs are good choices, but are heavyweights. What if you need something simpler, and yet more capable? Then, let me introduce you to the Zim Desktop Wiki. It is a free and open source desktop notetaking application, similar to the Tomboy application. You can write note pages with simple markup in it, and hook up the pages with wiki links. However, Zim is much more suited to the task of writing a story, while Tomboy is too simple and too minimalist to be of practical use. So, we'll continue on with Zim.

(PS: for the anti-Mono folks out there, you will be pleased to know that Zim is written in Perl)


Let's get started. First, install zim with your distribution's package manager. Arch Linux, Fedora, Debian, and Ubuntu all have it on their repos. If it's not on your distro's repositories, or if you're on Windows, you can download it or its sources
here. Once installed, fire it up, and you'll see the launch window. Click on the "Add" button or press ALT-A to create a new notebook. These "notebooks" are a collection of related pages. Choose a directory (or folder) for the notebook to be stored in, and then name it. The other things are optional, and can be modified later from the launch window with the "Change" button. Press "OK" and you'll be taken back to the launch window. Double click on the entry for the notebook you just created, and then the main editing window will be brought up.

Now, at this point familiarize yourself with the interface some. At the top, you'll see some buttons (index, home, back, forward) for browsing and for formatting (link, bold, italic, underline, strike). You'll see a sidebar on the left, which will list your notebook's pages. If you don't see it, press F9 to show it, and press F9 again to hide it. And then you have a blank page. This is the "Home" page, which will usually serve as the table of contents. At the top is the header or title of the page, and below that is the date of creation.


To get started, type in "\diams" and space. You'll get a bullet-point to start things off with. Type out "Chapter One". From there, highlight the words you just typed and then press CTRL-L. The words will become a hyperlink. Click on the hyperlink or press ALT-Enter while the typing cursor is over it. You will be taken to a new page, titled Chapter one. Fill out a small little story, doesn't have to be good or anything, since we're just testing waters. Have a couple names of people and places included.


So, now what? What's the advantage over a full-fledged word processor, aside from having multiple documents? The advantage is the hyperlinking, which we will soon see. Highlight each name you have entered. Then, press CTRL-L like you had done on the first page. Each name is now a hyperlink. From here, you can create a page for each character in your story, giving background information on them, along with personal notes about their history, personality, likes and dislikes, all of that. Then, you can do the same for places, giving as much information or as little as you want about the places and their history. What about events or objects unique or relevant to the story? You can make pages for them as well.


So, what does this give you? An organized way to keep notes about your story, so that they can quickly be looked up at the click of a mouse. Many of the greatest novel writers, such as JRR Tolkien and Frank Herbert have kept extensive notes about their stories. They help greatly with keeping your storyline consistent. I've just touched on only a few of Zim's capabilities. There's many more to be discovered. There is plenty of documentation for it
here. And, to wrap things up, I will indicate one additional use for Zim. You can use it to create web pages, by exporting it all to html. Zim's own website was created this way. So, after your story is published, you can take the notes and use them to put together a website for your fans.

And, of course, there are many other uses for Zim as a note-taking application. You can also use it for research papers, documentation, custom content or rules for Dungeons & Dragons, or for creating simple web sites. For me, though, I use it for story writing, and I can say that it helps a ton. One of these days, though, I need to get around to publishing the aforementioned content for Dungeons and Dragons.

Tuesday, August 11, 2009

The Other Cause of Security Problems

Well, like clockwork we see blog posts and news articles about some new virus, some new kind of malware, a brand new security exploit. I use Linux to avoid this sort of thing, because it's secure by design. But also, I'm a smart person, so I'm not likely to be fooled by the tricks malware authors use to compromise systems. I read this article by Katherine Noyes on Linux Insider just a few minutes ago, which touched on one of the biggest reasons that there are so many computer problems these days. Yes, the 85+ percent market share held by Windows is the main contributor, but it shouldn't hog all the infamy for that.

What's the other reason? There are too many idiots using computers. Yes, that's right. Most people aren't smart enough to use their computers properly. Sure, they can use the mouse, keyboard, and know how to do word processing, email, browsing, play music and watch videos. But beyond that, most users don't give a second thought to keeping their computer secure, keeping it up to date, or maintaining it. Not convinced about users not being smart enough for computer use? Read these quotes from the article linked above:

"the Velma problem, which I named after a customer who you could actually send an email to that said, 'turn off your antivirus and look at these puppy pictures!' -- with a file attached called 'happy_puppy.jpg.exe' -- and she would run it, every single time,"


The worst case I had was a guy that would run ANYTHING that had the word 'lesbians' in it," he added. "The antivirus could scream, the antispyware would do everything but throw itself in front of the guy trying to stop him, and he would ignore or even turn off all his defenses to run 'hot_lesbians.mpg.exe'.

You think that's bad? I have a friend who has to fight his family on computer security issues. He once told off his little sister that she shouldn't be downloading screensavers and eye candy programs from the massive file download websites because they're usually ridden with viruses. She dismissed her brother's well-meaning criticism, saying that the risk is worth it. It is THAT kind of attitude, deliberate ignorance, that makes all of the security problems in the world far, far worse.

So, what can we do to improve security? I say we should add more to the computer classes in our K-12 public education, and make computer security practices mandatory for graduation. Give presentations to classes, so when the kids go home they repeat what they learned to their parents.

That, and require ISP's to take more responsibility for the system security of their customers, by setting up their routers to automatically detect suspicious activity, such as botnet-instigated spam and Denial of Service attacks. That, and requiring all customers to maintain at least basic security.

Many others feel the same way about this problem and the possible solutions. Unfortunately, we come to the thorny issues of time, money, and politics. To get security into public education, and to put more requirements onto ISP's, the government must be persuaded to implement these solutions and write the necessary laws. To any readers out there, start by contacting your local government. That's where it starts. And if any politicians are reading this, you know what to do!

Monday, August 10, 2009

Comcast And The 250 Gigabyte Bandwidth Limit

Well, as many of you are probably aware, Comcast limits the monthly bandwidth of residential customers to 250 gigabytes per month. This is equivalent to downloading 28,500 minutes worth of CD music or 53 full-length DVD movies. Certainly sounds like a lot, but how much exactly is this limit? I did a bit of math to figure out how much continuous bandwidth usage you would need to use in order to break the bandwidth limit.

First of all, since connection speeds are typically rated in bits per second, we will use that as a metric. So, to start off, we figure out how many bits are in 250 gigabytes. One gigabyte is 1024 megabytes, 1 megabyte is 1024 kilobytes, and 1 kilobyte is 1024 bytes. After that, 1 byte is equal to 8 bits. So, we have:


250 gigabytes * 1024 = 256,000 megabytes,
256,000 megabytes * 1024 = 262,144,000 kilobytes,
262,144,000 kilobytes * 1024 = 26,843,546,000 bytes,
26,843,546,000 bytes * 8 = 2,147,483,648,000 bits



As you can see, we're dealing with some very large numbers. 250 gigabytes is just slightly over 2.1 trillion bits of data. That is a lot of data. If you tried to write out every bit, and take one second to write out each bit, it would take you over 68,000 years to finish the task. And an ordinary SATA-3.0 hard drive's interface could theoretically transmit all that data in just a little over 11 minutes.

Back to the main topic of discussion. How much bandwidth would you need to be using in order to go over that amount? Let's find out. There are anywhere between 28 to 31 days in a month, but for these calculations, we'll assume 30.4375 days, which is the average length of a month (including. So, we start as follows: 30.4375 days in a month, 24 hours in a day, 60 minutes in an hour, and 60 seconds in a minute (all figures rounded up into whole numbers):

2,147,483,648,000 bits / 30.5 = 70,553,8777,553 bits per day,
70,553,877,553 bits / 24 = 2,939,744,899 bits per hour,
2,939,744,899 bits / 60 = 48,995,749 bits per minute,
48,995,748 / 60 = 816,596 bits per second,
816,596 / 1024 = 798 kilobits per second

So, there you have it. In order to go over the bandwidth limit, you would need to be using 798 kilobits per second of bandwidth nonstop. If you have some program that is using bandwidth constantly when running, it's a good idea to limit its bandwidth to that amount. If you have another ISP, here's a good rule of thumb to follow: set the bandwidth limit (in kilobits) to three times what the montly bandwidth limit in gigabytes is. So if your ISP limits you to 250 gigabits per month, set it to 750 kilobits. If it's 150 gigabits per month, set it to 450 kilobits.