Wednesday, February 25, 2009

Web Browsers are Awesome.

So I've messed around a bit with Apple's new Safari 4 release. Since I'm a poor college student and, at risk of sounding cocky, more than a little hardware-savvy, I can't bring myself to pay the Apple Tax (anywhere from $200 to $900, last I looked), so I don't own anything with OS X on it. So this means I downloaded the Windows version and ran it on my Vista machine.

Now, I tried Safari when it first was released for windows. I like Webkit, but I do not like this browser. It was bloated and slow (I'm assuming this is from the porting of GUI libraries, but don't quote me on that), the fonts were ass ugly, and the whole experience was totally off.

Contrast this to the first time I tried Google Chrome. I am fascinated by that browser; although I understand that it technically uses more resources, the sheer responsiveness of it was mind-blowing to me. I also loved its down-to-basics UI design and how it made interesting use of Aero effects and animations. I'm honestly eagerly awaiting the Linux versions so I can see if they do anything as interesting with that. If it weren't for the total lack of some addons that I find essential (Script killing, some sort of bookmark synchronizer), I would be using this browser by default.

Now, the reason I compare these two browsers is because, for it's version 4, Apple seems to have made the decision to make Safari a clone of Google Chrome. Don't get me wrong, I like a lot of things Chrome did, and Apple cloned them fairly well, but I always get a little irritated when I can spot an obvious rip-off; even Firefox tends to try and lead in different areas. But when you look at the way the widgets have been styled, and especially at how the tabs are handled (Aero effects and all), you can see Chrome almost everywhere in Safari 4.

Anyhow, with that said, Safari 4 is ok despite everything. I still found it a bit slow; Apple claims that it's the fastest existing browser (Apparently Chrome doesn't exist now that they've ripped it off), but this seems to only apply to actual rendering speed, which I admit seemed pretty fast. I guess all of the overhead was in the rest of the browser itself. Also, it looks like they fixed whatever was funky with the font rendering.

All in all, I give Safari 4 for Windows a 7/10. I would probably use it if it were forced upon me without a whole lot of complaint.

Tuesday, February 24, 2009

Cross-platform

So expanding on one of the points from my previous blog, my application is planned to be both cross-platform and as consistent across platforms as possible, while not looking alien on any of them.

There is more to that statement than there may at first seem. There is a plethora of GUI libraries that work across platforms (both GTK and QT come immediately to mind). However, from what I have seen, few of them blend in with native GUI widgets, and they end up looking out-of-place on the platform (GTK is the worst offender of this, from what I have seen).

So, having looked at a number of choices available to me, I have resolved to write this program in wxWidgets. These libraries have a number of properties that appeal to me; for one, their native working language of choice is C++, which is also my preferred language to work in (I've never had much experience with pure C). Furthermore, wxWidgets is not so much a GUI library to itself, as it is a wrapper around platform-native GUI libraries (Win32 for Windows, GTK+ for Linux, Cocoa for MacOS X, etc ). I do this because, while it maintains consistancy in widget placement across platforms, it always uses the appropriate spacing and graphics for the platform it was compiled for.

Speaking of wrappers, I have also decided to apply the same logic behind my choice of API to my choice of build system, and am now working with CMake. CMake itself isn't a build process, so much as a config file that you use to generate platform-appropriate native build processes. On Linux, for example, it generates Makefiles and uses GCC, whereas on Windows I have it generating Visual Studio solutions and using that compiler. In my opinion this will work out for the better; I prefer to use the native build tools on a given platform, for performance and ease-of-use reasons. I could also have used MinGW to compile on Windows, but I decided I preferred to use the native tools over a port.

Saturday, February 21, 2009

My current projects

I'm gonna start this off by describing my current project of interest.

In the Office Suite market today we pretty much only see two choices: Microsoft Office 2007, the de facto standard in its class, and OpenOffice.org 3.0, which is for all intents and purposes an Open Source clone of Office 2000.

I count myself among the few people who will admit that they actually like Office 2007. It's smooth, reasonably fast, and produces good and useful results. It does, however, continue to be plagued by a sort of 'over-functionality'; There are literally few things that you can't do with Office, and this has made its work flow somewhat convoluted and difficult to manage, for all but the most basic functions. The 2007 release introduced the Ribbon as a replacement for the aging nested menu bar, and this helped significantly, but has not completely alleviated the problem. Moreover, there is no native Linux version available, which is a problem personally for me because I am not even given the choice to use Office on my preferred platform.

I am somewhat less fond of OpenOffice.org. In my experience, it is universally slow and ugly on any platform, its formatting capabilities (beyond the basic) are spectacularly bad, and since it remains a clone of Office 2000 rather than 2007, it is still plagued by the same convoluted work flow that Office always had pre-2007. What's more, although the latest major release (3.0) had a rather large feature list, I can count on probably one hand the number of features that it looks like they took more than a few minutes of code tweaking to implement, and even fewer that I care at all about. Unfortunately, this is what I am stuck with on Linux. Abiword isn't much better.

So I have resolved to attempt to write a substitute myself. I do this for a few reasons; One, I relish the opportunity to practice GUI programming on a large project; Two, I feel that there is a genuine lack of real competition for Office 2007; Three, so that I can have a halfway decent office application on Linux; and Four, so I can try to build up a new, far cleaner work flow from the ground up than the kind that dominates the market today.

I will go into greater detail in future blogs, but for now, I intend for major components of this project to include being both cross-platform and free software, making far greater use of templating and context-sensitivity than existing suites, having a horizontally-oriented layout to make better use of screen space, and in the long run, an ad hoc group editing system to improve collaboration capabilities within an organization.

Friday, February 20, 2009

Beginnings

Hello Internet, you may call me pdusen. This little scrap of the internet is where I'm going to be pooling various tech-related rants and guides, with hopes that they may be useful to others, but mostly to help me remember stuff.

I'll start with some vague details; I am a Computer Science student from Michigan with ambitions of becoming a software engineer. In my spare time I hang out with friends, play video games, play guitar/bass, and so on.

I am into tech and dev blogs and have subscribed to several of them. However, I find it quite irritating when blog aggregators for certain tech topics (e.g., Planet GNOME) make rambling posts about their lives or politics, and then tag it so it is aggregated on such things for all of us non-interested people to read.

So, I promise, this blog will try to be mostly interesting things, and none of that junk.