Finding an alternative to Microsoft Word

I’ve always had mixed feelings about Microsoft Word. I like it for making small posters and colorful banners. For a long time I used it as a full time text processor. All my articles for school, newspapers, a bunch of semi-finished stories and articles were all in Microsoft Word. And I was decently happy. Some things bugged me. Like how I never really used most of the features available and how I often wished there was a magic way to autogenerate tables of contents, or pull multiple files together (I never quite figured out how I should go about writing a book in Word).

And then I entered the world of UNIX and plain text. Wow, was that a revelation! There was actually such a thing as plain text, for which you used dead simple editors. No bold or italic or underlines. No bullets or margins or fancy fonts. Just pure text. It was powerfully simple. Then there was OpenOffice,  the brave underdog that sought to break the Microsoft monopoly by using their own weapon against them: the .doc format. I learned about Microsoft’s monopoly and vendor lockin and dreamed of freedom. So the question was: what do I do with all my accumulated .docs? I wasn’t quite ready to turn them to plain text, I’ve always had a soft spot in my heart for beautiful displays and I like having nice fonts. I thought about converting all my .docs to .odt — the Open Document Document format and I actually did convert a lot of them. But I didn’t go all the way. There was just no really compelling reason to.

A few years passed during which I really didn’t use Word all that much. I was taking science-heavy courses in school, which meant I really didn’t do much writing. Last year I came to college and I began writing papers in earnest, at least for the first semester. I used OpenOffice on my own computers and Microsoft Office on the college’s lovely Macs. It was then that I started looking at my gripes with Word again. It wasn’t that Word wasn’t a good program. But having to maintain contents by hand and wondering about compatibility issues between different programs and operating systems was simply not something I wanted to deal with.

The solution came thanks to Apple. The Portable Document Format is the native file format for much of OS X and PDFs really look great on Macs. Added to that was the fact was that PDFs looked basically the same on all platforms. OS X also allows you to print directly to a PDF. I’ve recently started handing in papers as PDFs. But the problem was, I was still using Word to actually write my documents and then just printing them to PDF. And PDFs couldn’t easily be edited. So I was still looking for alternatives.

Once again it was plain text that came to the rescue. I’m currently learning to use Latex for all my documents. Latex is not a word processing system like Word, it’s a typesetting system. You write a document as your text and a number of commands to the Latex system. These commands control things like the font, spacing, inserting diagrams and also more complex things like automatically generating headers, bibliographies and tables. It allows you to offload worrying about how things look and are placed on the page to the Latex program and you can concentrate on just writing. Latex is based on a very robust program called Tex, created by one of the greatest computer scientists of our times, Don Knuth. It has been used by decades by mathematicians and other scientists to write papers with all sorts of complicated diagrams and tables.

The wonderful Mactex package lets you write your Latex document and then typeset it directly to a PDF, just the thing I was looking for. I’m just starting to use Mactex for full time writing. I am having a few problems because it is much harder to create a style for Latex than it is to actually use Latex itself, and the included document styles aren’t always quite what you’re looking for. However I hope to be in a position to use Latex for most of my work in a month or so. If you’d like to learn more about Latex, the official documentation page is probably the best place to start. I’ll continue to keep writing about my experience using Latex as a day to day replacement for word. If any of you have successfully dropped Word for something else, please let me know.

A summer’s worth of work

Summer’s almost an end and all across the United States (and I suppose some other countries too) students will be going back to college and school. I’ll be heading back in a week, a little early because I have Residence Advisor training for a week. I think it’s time to take a little time to look over my summer and think about the semester ahead. Of course, this being a technical blog, I’m going to focus on computer science related activities.

My main activity for this semester has been my summer research project, where I’ve been working with two friends and a professor to develop a system for automating urban planning and design. It’s certainly been interesting work. It’s my first experience working as part of a real team, and we’ve developing from opposite ends of the planet using email, web conferencing and of course, version control. Since I had decided to take up the human interaction portion, I had to come up with an interaction language. I got to learn about language design, basic parsing techniques and implemented a recursive descent parser in Python. I had been interested in programming languages for a while, but this has really fired my interest and I want to work more on this. I also learned about interacting with users and how to mold your software to fit their requirements. All in all, I had a good real-world experience which I think is just as important as any class I will take.

Besides my project, I’ve been reading up on computer languages and compilers. I’ve been reading online information sources and watching some videos about recent developments in the field. I started reading the Dragon book and have found it to be a very good book, though it will take some time and effort to get through. I fully intend to continue reading it next semester.

I had been looking for an open source project to contribute to, since I don’t want to limit myself to classwork or one-man projects. Considering my current interest, I think the Low Level Virtual Machine is a good target. It’s seems to be a very dynamic project which is implementing some very interesting concepts which means I can learn a lot. At the same time, there’s still a lot of work to be done and is separated well enough for a newbie to get to work and contribute without much trouble. I’m going to start by doing ‘code-cleanups’ (removing extraneous code that’s already been flagged as such) once I’m a little more grounded in the fundamentals of compiler technology. I’d like to be able to work on it over the rest of the year and next year so that I can get a Google Summer of Code project for it next summer.

Since I started using a Mac at the end of last year, I’ve come to admire it both as a user system and development platform. I dabbled in some Objective-C and UI development, mainly as a front end to my summer project. Though I think Cocoa is an excellent platform, and I would enjoy using it, it’s not something I want to pursue for the time being. I’ll still be using a Mac a lot, but it’s not something that I will coding for at the moment.

College education can often be just a case of following the requirements and graduating on time with a decent GPA. However, since I’m only going to be in college full time once, I’m determined to make the most of my college experience. As a result I’ve been looking to reduce the courses which I don’t think I will benefit from. Of course, I still need to do something and so I’ve been designing an independent study for myself. We have a Logic course which generally required for computer science. However, I’ve been designing a course based on Turing Machines and Lambda Calculus, essentially the historic foundations of computer science. My professor is suggesting that I change it somewhat to included more programming languages concepts and hence get credit for that instead. So there’s still some work to be done on it.

Finally I’ve been brushing up on my web design skills. I’m going to be making a info page for our project and also redesigning my college’s CS department website. I also need to update my own website which has been frozen for months. That should keep me busy until it’s time to go back next week.

So much for the summer. For next semester, I have a few things planned. I’m hoping to continue my research work as I have some ideas for what to implement next. And my independent study should prove interesting too. I would definitely want to write this blog more often and my studies should provide ample ideas (I’m taking a digital circuits class too). I think I should devote some time to my website too and make it more professional. I’m not sure when I’ll be posting again, since I have people to visit and packing to do. However at the latest, I should have something new up by the end of next week. So till then, goodbye, take care and have fun.