Indigo – Life Changing.

Note: I’ve been sitting on this post for nearly a month now, tweaking it and sanitizing it to make it convey how strongly I feel, but at the same time respect the people I care for. I feel that it is ready now.

I worked on what may become a darn popular web site.

I pulled several 60 hour+ weeks (consecutively).

I fell in love with the big city.

I was surrounded by damned smart and fun people.

I met an amazing person.

My initial thoughts on working at Indigo went something along the lines of, Oh great… this is glamorous. I visited the office prior to my start date and found an old, nondescript building that had but a Chapters banner hanging on the front. Unimpressed would be an understatement. What can I say, I’m influenced by first impressions and this one wasn’t good.

That’s not even mentioning the fact that I’d be working in Toronto, which was lumped into the places to avoid category, in my big-cities-are-bad mentality. Having grown up in Charlottetown, spending an extended period of time in a crowded, bustling place didn’t appeal to me in the least. I figured it was expensive, noisy, and dangerous – again, a function of that first impressions thing of mine.

Coupling the above two thoughts, it was one semester I wasn’t looking forward to.

In a way, I’m glad I commuted 2 hours each way for the first two weeks, even though it was killer (physically/mentally). It eased me into the city atmosphere for the day, but I didn’t have to spend all my time there, yet. However, seeing as working overtime would be too difficult with the commute and that I was simply spending too much time on the road, I bit the money wad and rented a studio in a condo, that was sort of out of the way (if you count a 20 minute walk to the heart of the financial center ‘out of the way’). Pardon the explicit foreshadowing, but if I did it all again, I’d move 20 minutes closer.

I think my job title was UI Developer Co-op, but I ended up delving further back into the code-base than simply HTML, CSS, and JS, just as I wanted. Probably an indication of my being partial to business, I also got involved in requirements review, was as proactive as was possible, and worked directly with the business team which, I later found out from my team lead, he frowned upon slightly. (On the other hand, this did give me the opportunity to be involved in requirements planning which as a co-op I normally wouldn’t expect.)

Yeah, I’ll admit it, I suck up a bit, and whether it’s intentional or not doesn’t really matter in the grand scheme of things. I’m really glad my team lead was blunt about it (he was two things: extremely smart and completely to the point on everything). I hadn’t realized it in this case, and I consciously watched my actions with business from that point on. Hey, office politics are an integral part of the co-op experience as much as whatever work one actually does. May as well learn it now.

I worked like a madman. It helped that nearly everyone else at the office was a part of my madman family. I worked past midnight on many occasions, but was (surprisingly) never the last person in the office. The flexibility offered by the team director was beyond description, but I’ll try anyways. I could roll in whenever I wanted. Although I never took advantage of this to its maximum extent (I’m too structured for that unfortunately), some of the others did, skipping the day and arriving after most people had left for the evening. I didn’t bat an eye when I decided to stroll around downtown mid-afternoon on a weekday for a couple hours to do some photography. The freedom and trust placed in us was, well, liberating. I’m not sure if I’ll ever find another workplace like it.

I overcame my fear of the city. In fact, my feelings of Toronto quickly progressed from anxiety to neutrality to adoration. There were countless choices for food within a couple blocks of the office (so much so that it was hellishly difficult to choose anything). The Toronto Symphony Orchestra was but a 5 minute walk away and musical theatres lined the street. It doesn’t get much better than that, as I soon found out. I went to a few phenomenal TSO concerts and saw the musicals Spamalot and The Sound of Music. What’s more, I didn’t feel like I was going to be stabbed, shot or mugged at any point, even when walking around well past midnight.

And the people. The work was already pretty good, but the environment, the people, made the job. I looked forward to going to work almost every morning. There’s something to be said about enjoying the work – it doesn’t feel like a chore you do to get by. It didn’t feel like working with co-workers. It was as though I were amongst friends. Generally, there was no fakery – people were blunt when they needed to be and felt comfortable giving and taking social jabs. I think it would be best described as comfortable.

That comfortable atmosphere also afforded me the chance to interact with some people beyond simply work, but to a level of friendship. One of my fellow co-ops was especially a blast to work with. We seemed to be on the same wavelength. He was more of a back-end developer and more often than not, we’d write our code individually and it would just work together on the first try. I’ve been keeping in touch and hope to do so for the foreseeable future.

And that amazing person. She’s one of the most phenomenal people I’ve met in my short (as she reminded me on more than one occasion) life. Although not significantly older, in the presence of her maturity, I felt rather innocent and naive (not necessarily in a negative way). I attribute it not to immaturity on my part but a vast amount of life experience on hers. Having gone through a similar university program to what I’m currently undertaking, I learned a lot of what to expect over this last year and a bit. I also garnered invaluable lessons in life. I hope to keep in contact for as long as I can, but even beyond that, I won’t soon forget her.

I’m certain even many years down the road, this semester will still stand out in the grand scheme of things. The experience encompassed everything from office politics to deep personal interactions to, oh right, learning a heck of a lot about web design and development. The contacts I’ve made are ones I hope to keep beyond using just as career-building tools.

Oh, and the project I worked on?

Shortcovers

DropBox – Synchronization Simplicity

I actively work with two computers, a desktop for stationary, computationally intensive work (and play) and a Dell XPS M1330 for portability. This setup is well suited to the kinds of work I do in the different places I use computers (laptop in class for note-taking, web, and lab work while the desktop stays home to do photo processing, gaming, and movies). However, there is overlap in the workload as well, for example class notes and lab reports. I generally prefer to work on my desktop when at home, so it’s essential that I have my files on both computers. Enter Dropbox.

DropBox

It wasn’t until I started using Dropbox that I had an efficient way to synchronize my files between two computers. Dropbox is installed a small client service that runs at all times. In its current form, simply set up a synchronized folder and everything and anything that gets put into that folder will be synchronized with the online storage at Dropbox and any other machines that have the Dropbox client installed. All files can be accessed through a web interface. The free version of Dropbox gives users 2GB of storage, which is far more than enough for me.

DropBox
Used: 1.5% of 2GB = 30MB

Dropbox also has a simple versioning system in case you modify or delete a file by accident. Furthermore, a news feed-like list is kept of recent activity on the Dropbox account. Presumably, for multi-user scenarios, one would be able to see at a glance what has changed recently. Photo and file sharing capabilities are built into Dropbox. I don’t use any of these extra features and rely solely on the folder synchronization function. It’s simple and works well.

Dropbox’s simplicity is also a limitation. By forcing the user to put all the folders and files they wish to synchronize into a single folder, it means instead of accomodating the existing file structure the user has, the user must rejig their storage system somewhat. I normally keep all my school work in a separate folder on my hard drive, but I’ve since consolidated the folder into the Dropbox folder as I have little other choice. For this reason, I’ve started dabbling with other folder synchronization applications, such as Live Mesh and Live Sync.

Indigo .NET UI Development

Well this was the week to find out where I’d be working and come September, I’ll be taking my web development and design hobby to the next level at Indigo, Canada’s largest books retailer. That’s right, you’re looking at (err, reading) a soon-to-be professional web developer.

Of course, I had my sights set on the Product Planning position at Microsoft, so I was decidedly disappointed when I didn’t get an offer from them. For days while I awaited word, I went over the two interviews I had for the position again and again in my mind. There were so many things I wanted to say, to show what I could bring to the table, but it seemed like the topics just never came up. I attribute it partly to the short length of the interviews, but also in large part to faults of my own. I need to work on my interview skills; I feel that regardless of what the interviewer asks, I should be able to portray myself the way I want to and to guide the direction of the interview, even if those questions don’t come up.

Another time, perhaps. I do have one more work term left and I’ll be taking these lessons learned to heart.

Enough moping. Back to Indigo. I’m very excited about the position as I’ll have the opportunity to work on both the UI/design aspect of the project as well as back-end development. In the web market, too often you only have the chance to do one or the other. Speaking of the project, it’s a new web application just in the design phase now, so by the time I get there in September, I should be entering it at the ground floor. Hopefully that means I’ll have some control over how it’s implemented.

The Indigo interview was a different animal from the Microsoft one. I was in complete control, and I let my passion for the web industry ooze. In fact, this blog played a large part in getting the job. After speaking about my design experience, I decided my point would be stronger with a tangible example, and pointed the interviewer to randomprocess.ca. It didn’t take long for him to be impressed by the design as well as clean XHTML and CSS. Combined with my ASP.NET and PHP development experience at Sybase, I painted myself as a well-rounded web developer and designer.

The office is in downtown Toronto, which, in my mind, is one of the detractors. I’m just a small-town kid, having grown up in Charlottetown. My experiences with the big city consist of being a tourist, seeing how things are so different. I’ll be giving the city a chance; then no one will be able to say I don’t like the hustle and bustle just because I haven’t experienced it.

Moved Domain Email to Google Apps

I’ve been getting a ton of spam in my random process domain inbox, so much so that it’s a pain to filter through it to retrieve the comments and contacts I’ve received legitimately through the contact form here. I’ve enabled the spam filter provided by the web host and I’ve been generally careful with where I’ve posted the email (only in comment forms) so I’m not certain why or how I’m getting crushed with spam. I’ve been gritting my teeth and dealing with it.

Spam email

I’m not sure why I didn’t think of it earlier, but I realized that there was a simple solution to the problem – outsource. That’s right, I’ve now outsourced my email system to Google Apps, using Gmail. The spam filter is actually good and I’m able to use the Gmail interface that I’m use to, and not the terrible, non-user friendly UI of the webmail service provided by default through my host.

It’s quite simple really, and very beneficial.

  1. Set up a Google Apps account. The personal, free one will do.
  2. Verify that the website is yours. This involves either uploading an HTML file to your web host or creating a new CNAME value. The verification may take up to 48 hours as per Google’s warning message, but is typically verified much, much quicker than that.
  3. Now it’s time to send a few back and forth emails using the temporary email address before we go messing with MX records. Google provides a temporary test email – send a few emails back and forth to an email you can check.
  4. Once you’ve determined that all is working fine, it’s time to modify the MX records. My host uses cPanel, where the option is listed as ‘Modify Mail Exchanger’. Specify that you want to change an MX record and change it to the Google suggestion, ASPMX.L.GOOGLE.COM. (Requires the dot after the address).
  5. You’ve completed the setup, so just perform another test to make certain the emails are flowing back and forth properly. There’s no need to use Google’s test email address; use whatever one you created.

This is a much nicer solution that using my web host’s webmail service. I only wish I thought of looking for a solution earlier as it would have saved me a lot of hassle.