Articles about software that don’t fall elsewhere
As part of my parting duties for a job I’m leaving I have been asked to set up a virtual environment with all of the projects requiring older platforms. This is something most developers have a virtual machine for, but sharing one across the company makes a lot more sense. It’s something we had intended to do for some time but just never got around to.
In doing this, I had to consult our software stockpile to find the old CDs of Visual Studio 2002 (it was originally just called Visual Studio .NET). Since my new-format MSDN subscription doesn’t allow me to download the ISOs of this directly, I was tasked with create an image of each of the CDs so they could easily be mounted on the server (there’s no physical optical drive).
Creating an ISO should be something that Windows has native support for now, but it doesn’t. So I set about finding the best easy, quick and free solution I could.
I came up with ISO Recorder.
It’s quick to install, it’s free, it doesn’t require a reboot and it makes the process as easy as selecting the drive, right clicking and creating an ISO. It’s rare nowadays that we find such laser-beam focus in software without bloated options. But this did exactly what I needed to do and did it quickly. For that, it gets a mention on my blog.
Part of my job requires that I install just about every browser available. Something they all have in common is that every… single… one of them continually asks if I would like for it to be my default browser. They try to make it so enticing, “Don’t you want me to be your default browser instead of that scamp over there? I’ll be good to you!” It never works.
After all, being my default browser isn’t an easy job. I demand things from my browser that most web surfers never even conceive of. When I click a link, I have to trust my default browser to jump into the task quickly, accurately and with impeccable stability. And I’m not talking about sometimes, I’m talking about ALL the time, every time.
For quite a while, Chrome has excelled at the task of being my default browser. I still use other browsers from time to time, but they just don’t seem to stack up to my needs like Chrome does.
Along came RockMelt.
For me, RockMelt evoked a stroke of genius by basing their browser on the Chromium platform (the same one that Chrome uses). I don’t know whether this was a matter of necessity, function or preference but it’s what ended up making my decision for me. It’s like Chrome++. If you’re like me and you like pinned tabs, Chrome Apps and dozens of other awesome Chrome features you don’t have to lose any of them to change browsers and get some cool new social functionality.
So what exactly is RockMelt? From their web site:
RockMelt is re-imagining your online experience by creating a new web browser that makes it easy to stay in touch with friends, search online, and get updates from your favorite websites.
What that means to you is that it’s a fast, stable browser that integrates directly with Facebook and Twitter.
The best way to see what I’m talking about is to watch the RockMelt promo video, I’ll catch you afterwards:
After a week of using RockMelt as my default browser, here’s some things I’m really digging:
- The sidebars allow me to have my social media items available, but not in the way
- The ability to add ANY RSS feed to the sidebar
- The ability to quickly and easily share whatever web page I’m looking at with my Twitter and Facebook networks
- The sidebars are easily hidden with simple keyboard shortcuts (CTRL+SHIFT+[ and CTRL+SHIFT+])
- It’s Chrome (which I love) just better
And some things I’m not so jazzed about:
- No apparent support for Twitter DM (really?)
- Twitter mentions are not noted on the icon, you have to open the feed, click the sidebar icon and then load mentions separately… Changing the color of the message notification if you had mentions would be a nice touch
- There doesn’t seem to be a way to share something with all networks at once
Want in on it? You either need to be invited or you need to get in on their beta program, which you can do over on their web site (by connecting with them on Facebook).
I’ve been using the web and email for around 16 years now. Over time I’ve been through a LOT of different services and so far, I have to say that Google has impressed me more than anyone ever by providing great, free services like Google Apps For Your Domain. One of the downfalls of Google Apps has always been that you didn’t get access to the other cool Google services (like Google Voice and Google Reader, for example) unless you had a standard Google Account (GMail). Well that’s no longer the case, Google has announced that you can now start consolidating accounts. And consolidate I shall! Along the way I’m going to write up how I accomplished things and any pitfalls I run into.
I’ve got several goals that I’ll outline below, but there’s really only one… and that is to greatly simplify my life. But working up to that, we have:
- Consolidate all of my email accounts , calendars  and address books  down to two, a work and personal account
- Lose NO data of any kind
- Have the ability to manage all accounts from wherever I am via iPhone or the web
- Do NOT lose the ability to communicate through all of my separate accounts easily (if someone is looking for me in regards to my band I don’t want to send them email from my work account, for example)
- Get and manage all email quickly and easily
- Start using more Google services than I was before by using one account for all of them
The Moving Parts
The services I’m dealing with break down like this:
- Email – 1 GMail account, 4 Google Apps accounts, 1 Exchange account, 1 POP account
- Calendars – 9 Google Calendars, 1 Exchange calendar
- Contacts – 1 Google Apps Address Book, 1 Exchange address book
As you can see I’ve done a bit of work previously by getting most of my calendars and contacts moved over to the cloud via Google. You may have to do some extra work if you haven’t already started that process.
Step 1 – Consolidating Email
I knew the biggest job was going to be getting email consolidated so that’s where I started. I had a little bit of a unique situation in that I wanted to create a new, more friendly account for myself using one of my domains hosted through Google Apps. The reason for this is that once I have this account associated with various Google services I don’t want it to say “email@example.com” – I want it to say “firstname.lastname@example.org”. So I created a completely fresh account to work with.
Transferring Email From One Google Account To Another
In my case I wanted the new account to have ALL of my old emails. If it’s going to be my primary account I want to be able to quickly search and find old emails when I need them. This step takes a long time (it ended up taking 2 days for me) to complete, so I’m listing some work to do up front to cut down on the time as much as possible.
- Clean up your existing account by deleting spam, trash and any imap generated junk mail/spam/trash folders.
- Get rid of any unnecessary messages you may have archived by searching for them and deleting them. Even if you do this very well you will probably end up with a bunch of unwanted messages to sift through.
- Enable POP retrieval of your email in your Google account
- Go to Settings > Forwarding and POP/IMAP
- Adjust the “POP Download” section to however you’re going to want it to work
- Repeat for every account that you want to retrieve all historical email from
- Set your new primary account to start retrieving email
- Go to Settings > Accounts
- In the “Get Mail From Other Accounts” section click “Add a mail account you own”
- Go through the Google verification process
- If you cleaned your old accounts up, you may want to automatically archive email retrieved from those accounts for now (obviously disable this after you’re done)
- Set up temporary filters. If you have a bunch of messages flowing in now is the perfect time to set up some account filters which will automatically organize the incoming email for you. An ounce of prevention saves a lot of character building down the road! ;)
- Monitor your progress. These POP accounts have some logic built into them that dictates how often they retrieve email so if you have a ton of email like I did you probably will have to babysit the process. You can re-initiate a check by editing the entry for the POP account and saving it.
Once you have all of your old email moved over, archived and ready to go it’s time to start flipping switches!
Setting Up Sending
Before you’re quite ready to receive email on your new account you need to make sure that when you send email it looks like it’s coming from the right person. Google makes this (like everything else) pretty straightfoward.
- Go to Settings > Accounts
- In the “Send mail as” section click on “Add another email address you own”
- Go through the verification process
In my case I wanted to set my account up so that whenever I hit “reply” the “from” field is the same as the one the original email was sent to. In order to make that happen just check the radio button for “Reply from the same address the message was sent to” and make sure you save your changes.
Once you’re ready to send… you’re ready to receive!
Migrating To Your New Account
If you’re ready for all of your new emails to start coming to your new account you’ll want to set up forwarding from your old accounts. You can do this as follows:
- Go to Settings > Forwarding and POP/IMAP
- Click “Add a forwarding address”
- Go through the verification process
- Set things up as you’d like them to work
Note that the email you get will have the original sender as the “from” address (not your account that you used to forward it) and will have the original “to” address (not necessarily the account you’re using to read it). This is what allows you to send from the various addresses according to where the original email was sent.
Step 2 – Getting Services
This part is far easier than the previous section. But you have to have access to administrate your domain on Google Apps in order to make it work, or your domain administrator has to be open to setting this up for you.
- Log into the Google Apps domain admin account and click “Manage this domain” at the top
- Go to “Domain Settings” and make sure that “Automatically add new services when they become available” and “Enable pre-release features” are both checked
- Make sure that the Google Apps beta messages are addressed and enabled (if there are any)
- In your Google Apps mailbox, click on “More” at the top left
- Click “Even More”
- Go nuts!
Step 3 – Setting Up Your iPhone
There are two ways to set up your iPhone to access your Google mail account:
- As Exchange – Allows email, calendar and contacts support
- As GMail – Allows email and calendar support
One of my requirements is that all of this work happily on my iPhone. I almost succeeded, but there is one thing you should know. If you consolidate all of your accounts into one account, the account you consolidated to is the only one that you can send mail from on your iPhone. This is important, in my case, because inevitably my iPhone ends up being my primary email client and while my accounts are all consolidated I need to be able to respond from whatever address the original sender was communicating with. So this is a significant frustration, but there are a couple of workarounds:
- You can set up imap accounts for all of your old accounts on your iPhone and then set them to never automatically check for email. Then when you create an email you can define the “from” field.
- You can use Google’s iPhone app to respond to email when you need to send it from a non-primary address.
So I’m doing more and more work on Linux these days and I’ve got an Ubuntu installation set up for that purpose. Really it’s just a fun way for me to get a break from the Windows 7 world and develop in a new environment. Anyhow… I ran into an issue with getting my Google Apps chat accounts working with Empathy. I did some research online and didn’t come up with any solutions quickly, suggesting that the answer is harder to find than it should be!
Then I remembered that using other clients the Google certificate always gave a warning. So, all you have to do is check “Ignore SSL certificate errors” and use the normal account setup beyond that and everything works flawlessly. For reference, the normal account setup is:
Login ID: [your full e-mail address]
Encryption required (TLS/SSL): checked
Ignore SSL certificate errors: checked
Resource: [whatever you want it to be]
Override server settings
I recently inherited a web app from a dirty, nasty, stinking contractor that claimed to be a competent enough programmer to be left alone to get things done. Unfortunately, we took him at his word. Functionally, most of the web app seemed to work at first glance. However, once the client took over the reins and actually started using it things went downhill fast. The contractor disappeared after payment (die reputation DIE!) and I was left to try and get things working properly and performing up to snuff while the client limped along with what they had been given.
I decided to document a few of the things that I found wrong along the way. These are really just things that every good programmer should already know to avoid… but obviously some people need to be reminded (or taught).
Update – 05.18.2010 – Some people thought that this article was too sarcastic. While I thought it wasn’t sarcastic at all, it does exactly what the title promises and teaches people to suck, I’m always game for being constructive. So I wrote an offset to this article – 10 Ways To NOT Suck At Programming.
#10 – Don’t store settings in a configuration file
When you’re writing a sizable application, things like database connections and SMTP server information will be used throughout the app. The best way to make sure your app is entirely immune to maintenance is to redefine those little bits of information every time you need them. So instead of putting them in the configuration file (Web.config or whatever) just leave them in your compiled code. Whoever inherits the app will thank you for sending them on a hunt through thousands of lines of code to change which SMTP server is being used. What’s even more fun is when the next programmer only finds 14 of the 15 places where you’ve used this code and a single instance somewhere deep in the app silently breaks hundreds of times without anyone knowing. Sometimes it’s helpful to build the variables in inconsistently concatenated strings. The repeated and more frequent interaction between the new developer and the disgruntled client will help strengthen their relationship. And if you don’t hook up that love connection, who will?
#9 – Don’t store variables in [any] memory scope
One of the great things about databases is they store your bits of information and allow you to access them whenever you need them. To make sure your app is as terrible as possible, you’ll want to be sure and access the database every time you need a bit of that information. The more common the information is that’s needed, the bigger win you’ll have by making a new database connection to get that information. Non-sensitive user information is a great use of this prinicple. Don’t worry about defining a user’s information, such as “isAdmin” to a variable and using it throughout the current request. Just query the database each time you need to know anything about the user. After all, the client paid for that database, we’d better get as much spin out of it as possible!
#8 – Use arcane plugins
If the client has a non-standard request, such as formatting a table in a way that is outside the abilities of your WYSIWYG editor (colspan are hard). You should definitely hit up the interwebs and search for random unsupported closed source plugins to do the work for you. If you would spend almost an entire hour writing it yourself, you should spend at least 3 hours searching for and getting a plugin that does roughly but not exactly the same thing. Bonus points if you can get a plugin that doesn’t do what you need, but offers 15MB+ of functionality you have no use for and include it without getting caught. Bonus bonus points if the documentation for that plugin is in a language not native to your market (for example, if you’re working in an English speaking shop look for plugins that are documented only in Spanish or German).
#7 – Never, ever remove functionality
Over the course of developing a large application there are bound to be times when functionality you were working on proves itself to not be needed. Now, to be sure to leave plenty of dead ends for those who come behind you to get lost in, never delete that functionality. Maybe even comment out random parts of it, or even hundreds of lines of it at a time, but don’t delete it. Imagine the hours of fun the future-crew for this app will have while they trace through this functionality only to find that it isn’t needed! If you can make it seem needed, without actually needing it, it will even keep them from deleting it themselves… This way the fun is exponential! Oh, a bonus on this one… if your project uses source control and multiple server environments, be sure to have a different version of your files (both code and compiled) on each server and source control. This way no one will know which one is live in production and who doesn’t love a good round of Code Russian Roulette?
#6 – Screw performance
Large applications, you know, the ones that pay the bills, are generally needed because they deal with large amounts of data. Sure, during your development process you’ll create 20 or so test records. Take my word for it, there’s no need to even worry about what happens once you get to 25 records, or even 1,000! Obviously, all pagination will work just fine and performance will never take a hit. So if it compiles, ship it!
#5 – Nest major logic/functionality in loops
Now obviously, we’ve already covered #6 so we know that we’re working with large amounts of data. And inevitably, there will be plenty of looping through that data to do work with it. If you want to make sure your application is really difficult to maintain and completely unusable to the client, you should embed major functionality and/or logic inside of these loops. For example, instead of running a query against the database to get ALL the data you need, storing the data in memory and working with the variables in memory during your loop, just get all the data except one field up front and loop through it… then on each loop you should get all the data again, and now include your extra field. This will guarantee that your app will never survive more than 5 concurrent users (re: #6). So for review: Get data > create loop > get data > work with data. I’m sure you see some room for added idiocy in that process, so feel free to nest this idea as many times as you want.
#4 – Document NOTHING
Look, documentation is for morons. I mean either you can read the code or you can’t, right (this was actually said to me at one point)? Of COURSE the next programmer will be able to read the code. What’s really fun though, is when you document absolutely nothing, especially not your intent. It pays to keep them guessing. You’re mysterious, like a ninja. No need to let someone get all up in your grill, knowing everything about what you were trying to do. Because if you document what you’re trying to do and then don’t end up doing it… well… that’s just embarrassing.
#3 – Use and reuse illogical variable names
There’s going to be a LOT of variables needed to work on this app, so you’d better choose a movie or television show with enough characters to use all the names. Lord of The Rings, Star Wars and Family Guy are all good choices for this. Maybe you can even form relationships with the variables. That way, you never have to kill them! You can have variables that are chameleons, changing their usage and values throughout processing and you can recycle them for something new each time you need a variable for new functionality. It’s like they’re growing up, evolving, right before your eyes! After all, you’re trying to be green and reduce your carbon footprint so recycling variables just seems like the responsible thing to do!
#2 – Catch all errors — and do nothing with them
Most languages / platforms nowadays have really good error handling built in. They’ll die somewhat gracefully and give enough details through the default error output to be helpful. You must not allow this to happen! Start off by wrapping nearly every tiny piece of functionality in a try / catch phrase. Then… inside the catch… put a comment, like “// It borked lawl.” This will ensure that if anyone wants to work on this app, they’d better spend the time getting to know the app and it’s adorable character variables before they start wrecking the app altogether.
#1 – Duplicate functionality
If the client tells you that they need two pages: One for an administrator that has all of the details on an item along with a button to delete it; and one for a regular user which has all of the details on an item without a button, you should create multiple pages to accomplish this. In fact, if you can make pages for each user group that would even be better. Making a separate page for each user is the ultimate success. So ninja up and get serious on this one, because it’s your last line of defense against the teeming hordes of qualified individuals who will inevitably be bewildered while trying to update your carefully constructed Pandora’s box of an app.
This is by no means a comprehensive list. On this project alone I could name 10 more things that could make you suck. But I’ll leave it at 10 for now. Anyone have more to add?
I’m a big, big fan of Google Apps. Their decision to allow people to piggyback on their services with their domains was nothing short of brilliant. Every domain I have set up since has used their service and I have nothing but good things to say about it.
Friday they gave me another reason to love them by sending me an e-mail informing me that:
We plan to begin phasing out support of these older browsers on the Google Docs suite and the Google Sites editor on March 1, 2010. After that point, certain functionality within these applications may have higher latency and may not work correctly in these older browsers. Later in 2010, we will start to phase out support for these browsers for Google Mail and Google Calendar.
For those who need a translation:
We at Google, after careful observation of the Analytics trends for our Google Apps usage, have noticed a single defining characteristic shared by 100% of our problem users. This characteristic is an affinity for Internet Explorer 6. Therefore, in an attempt to rid ourselves of as many idiots as possible, we are dropping support for their favorite software. Stop using Internet Explorer 6 or stop using Google, we don’t care which.
This is a bold move by Google, although completely necessary (and inevitable) if they want to make the best applications the web has to offer. And honestly, I wish more companies would take this stance. But on the heels of telling China to shove it I’d say Google may have decided that they are now well established enough in both the political and technical arenas to start throwing some weight around.
I generally don’t like when big companies start using their size to dictate trends, but when I think about it that’s probably because almost always the big company does this to further their agenda. Rarely does my agenda fall in line with theirs. From a technology standpoint, Microsoft is the most frequent offender on this front, and we all know that when Microsoft throws its weight around it’s in an effort to make more people see things Microsoft’s way, not in an effort to make the world see things the agreed upon standards way. At least so far, Google seems to be forwarding web standards which are something that for better or worse we as a technical community have agreed upon as good.
I, for one, welcome our new Google overlords… As long as those overlords hate IE6 as much as I do.
I’ve been using Trillian Pro for years. It has always made managing the various chat mediums I have to stay contacted much easier and that makes my life better, so I’m willing to pay for the app. Now, though, with the introduction of Trillian Astra, the team over at Trillian seems to be honing in more and more on what exactly I want to have as an every day social power user. The newest release, Trillian 4.1 (released today) is no exception, catching me a little off guard with some of the great options it has provided me with.
In addition to using every available chat medium to stay in touch with different groups of people, I use Twitter… a lot. I have several accounts for several different reasons and they all have unique needs. In the past these unique needs have made me do a lot of juggling to be able to manage everything.
No more, thanks to Trillian’s new release of Astra. I mean, the client has all of the basics that you would expect, but in addition to those basics are the following reasons that Trillian Astra is now my favorite Windows based desktop Twitter client:
Multiple bit.ly Account Support
Sure, lots of clients allow you to manage multiple Twitter accounts. I’ve been using TweetDeck with decent success on that front for some time. Then there are some clients which actually allow you to integrate with your bit.ly account, so that when the Twitter client automatically shortens a link for you the link is added to your bit.ly account so you can track it like you would any other. But what about clients that let you manage multiple Twitter accounts which are each attached to their own unique bit.ly accounts? Is it really that mind-boggling that this would be something a power user would want? Who knows, but Trillian Astra got it right. Add your Twitter account then right click on the account in your contact list, click settings and WHAM-O you’re ready to enter your bit.ly API key and go to town.
Intelligent Character Limitation Counting
Something else that other clients should get on the ball with is knowing how many characters things like image uploads to TwitPic are going to take. No more wondering, biting your nails and hoping that your image upload URL doesn’t throw your character count over by one character, ending your perfect digital planetary alignment.
This one is really nice for technical tweets / blogs / etc. Basically, you can use any image in your tweet via TwitPic by dragging it into your message. But if you right click in your message, you have the ability to actually trim out a screenshot to use. Nifty!
I don’t check news sites any more. I don’t check my favorite band sites any more. I don’t have to, because I have a constant stream of updates that interest me flowing through Twitter. Now, thanks to Trillian’s function of docking to the side of your monitor (reserving space so that maximized windows don’t overlap it), something they’ve had for a long time, that stream is constantly available at a literal glance to my left.
There are, of course, still a few issues that exist (when you open a retweet you have to type / delete a character for the character counter to register) and some functionality I’d love to see added, but nothing that overrides how awesome the new Trillian is at managing my fairly advanced Twitter needs.
This isn’t a Twitter specific update, nor is it unique to Trillian. But the ability to place your notification popups where you want them, even with multiple monitor support, means they don’t get in the way of something else that you were trying to do. It’s a really nice touch that makes a big difference to me.
Nice job guys! Now, about that post I made on your forums asking for the ability to have a transparent background with fully visible text…
I don’t have enough time to make a short post here, so I’ll likely be leaving a long, rambling one. You’ve been warned. ;)
I’m a Trillian user. I love it. I bought it, I will continue to give them money as long as their product continues to meet my need of having EVERY chat network known to man connected at the same time. I know my IRC pals laugh at me for using Trillian, but whatever.
There were a couple of things I wasn’t crazy about in Trillian Astra, however. The primary being that the default skin was bulky, and the included secondary, minimalist skin (Cobalt) didn’t contain any dark themes. I’m sorry, but using a white background on chat windows just makes me feel, as a friend said, “flashbanged” every time I chat.
Surprisingly, there aren’t that many good skins out yet using the new features provided by Astra. There are a few, however, if you can figure out where to look. So I’m going to make that easier here and provide a collection of links to resources I used to get what amounts to a dark version of Cobalt.
There, maybe I’ll come back later and write up how to disable specific sounds without losing the ones you want.
Update – 01.20.2010 – A new Trillian build was released today that improved, among other things, Trillian’s support for Twitter. This could change the way I use Twitter, moving me away from TweetDeck. However, the skin I had been using (Cobalt Black Magick) doesn’t yet support the new character counter functionality. So I’ve added a link to the other skin I love from the list, Avion Pro. – DG
I can’t help it, I like Twitter. I love the format of communication it provides. People don’t have to know who you are for you to get their updates… and you don’t have to know who someone is for them to get your updates. That makes for some really interesting possibilities. Additionally, since the media blitz surrounding Twitter has continued to build, more and more “service” type of accounts have popped up which actually provide useful, timely information in a quasi-push format.
In general I’ve used pretty standard Twitter clients. Ones which were obviously based around what the standard Twitter web site provided as an interface. It’s a basic approach which just shows all the tweets that have come from all of your friends since you last took a look at it. I’m not particularly unhappy with the clients I’ve been using (in particular Twittelator Pro is good) but a month or so ago I decided to look around and see what was out there. Enter TweetDeck.
TweetDeck, right from the get-go, is different. It offers columns, which are basically different views of your Twitter information arranged… in columns. These columns can be built however you want to build them, which is where I have found my new best Twitter tool friend.
By default TweetDeck offers what you would probably consider pretty standard columns, “All Friends”, “Mentions” and “Direct Messages.” For a while, I depended on these and while they were cool, they didn’t offer much functionality that I didn’t already have elsewhere.
Then I got the bright idea to start using the columns to separate information. “What if I didn’t have an ‘All Friends’ column at all?” Well, it turns out that’s a great thing…
So I set about making a column for “Friends and Family” which included… er… all of my friends and family. Then I made a column for my “Professional” folks. I kept the mentions and direct messages columns. And here’s where it gets fun, I made a column for “Celebs and Bands” (I follow a lot of bands and band members) and one for “Services.” The “Services” column is where I did some things that were new to me… I followed several of my favorite news services and added them to this column. Now, I can use Twitter to keep up to date with my friends, post ideas / discussions and now… dun dun dun… keep up with news!
Further, what’s really, really cool is that TweetDeck allows you to create a TweetDeck account and save the columns you have created. Once you save them, you can sync your columns anywhere you use TweetDeck (it works on Windows, Linux, Mac [all using Adobe Air] and the iPhone). This is great for me since I use several operating systems as well as the iPhone. This made things really easy and I’ve found myself using Twitter more and more.
While it is admittedly early to be talking about a full-blown review, I’d like to at least take a moment to discuss one of the most significant browser releases in recent history.
As someone who has spent the last 13 years writing web applications I’ve seen first hand the path modern browsers have taken to get to where they are. Knowing what I know about this path, I can also say that the journey has been a long one full of good intentions and without much concern for developers (or standards). That’s why I’m so impressed with what Google is doing here.
Apparently Google “accidentally” sent a notification about their browser intentions a day early, resulting in a frenzy around their creative and informative announcement “comic.”
Then, today, they officially released the browser that was the source of all of the discussion. With their claims of speed, performance and standards compliance I was skeptical. After all, like I said I’ve been fed the “we made it faster” line a thousand times over the past 13 years and I’ve almost never been impressed. Sure, you can benchmark browsers and prove a 3% increase in speed but what does that buy me in the real world?
I’ve read where some folks had problems with pages, but I’ve looked at all of the ones I am responsible for and found no issues whatsoever. This is probably because I test them in Safari, which uses the same engine for rendering as Chrome.
So for now, those are my thoughts. I’ll post more here if things go insanely awry, but I plan to use Chrome as my primary browser at home for a while to see what I run into. Oh… and I posted this using Chrome on WordPress, so we know that works!
More Chrome Information: http://tools.google.com/chrome/intl/en/features.html
Download Chrome: http://tools.google.com/chrome/