Nicolas Giannette

About

Hi there, my name is Nicolas Giannette. Ever since an early age I have had a strong interest in technology and how it worked. Since then technology has become one of my biggest passions and I have come to teach myself many programming languages. I have over 3 years of experience with Objective-C and the Cocoa and Cocoa Touch frameworks on the Mac and iOS devices respectively. While Objective-C is not the only language I know it is currently my strongest. I can work my way around PHP, HTML, CSS, Javascript, Python, C++, and even C# if I need to. I have a lot of experience setting up servers using Apache and configuring them. The website you are currently on is coming from a Mac mini running to Mac OS X Lion in the Server configuration. As both setting up Apache and configuring deeper settings on Mac OS X Lion requires Terminal knowledge this makes me able to navigate my way around CLI or command line tools with ease. In my early days of Linux this was fueled by my desire to './configure & make' every package I could get my hands on. Although I have experience with Linux this doesn't mean that any flavor of Linux is my prefered Operating System. Mac OS X, because of it's community of developers focused on making great software and it's focus on design cause it to be my preferred Operating System of choice.

Missiontop

My mission when creating apps or projects is to take a vision and set a list of goals and meet them each step of the way. I hold the highest regard when it comes to quality and simplicity of design for the user. I value experiences in which the user is not aware that they are using an app and they are more aware of the content that they are presented with. With each project or app I make I strive to create the most bug free and circumstantially tried app by methodically listing the expected and desired functions of the project so that no unexpected "why did this happen?" moments occur. While my experience and expertise may not be in design I certainly have the 'eye' for and the desire to create apps that look good and are a joy to use. While I do like and sometimes go by the saying "If it isn't broke don't fix it," my favorite question I like to ask is "Why is this step necessary to accomplish this?" and then stomp all over the previous method of doing so till a simpler and more effective solution arrives that works great and abstracts away the effort required to consciously make something work.

Projectstop

In working with Objective-C I have along the way of teaching myself it created numerous projects. Here I will showcase them to you and what experience I learned from each project. I am still in the process of adding images and links to these projects. If they aren't available please check back at a later date.

Musica was a project that I had not planned on creating. I downloaded the EyeTunes framework by "Alastair Tae" and created a sample project that allowed me to play music and show the album artwork. One thing lead to another and before I knew it I had begun work on creating a Bowtie clone. I tried my best to imitate all the features I could from Bowtie to gain experience with NSStatusBar and keeping the NSWindow pinned to the desktop. Along the way I became very familiar with subclassing classes and creating my own views and/or subclassing existing views to customize them to fit my needs. This project was also the first project where I made it my goal to keep the CPU and memory usage very low. I wanted the app to open as quick as possible and be as fluid as necessary. During the time with Musica I learned to manipulating the properties of NSWindow and NSImageViews. I also learned how to track the mouse entering and exiting a field of view. Musica gave me many valuable experiences and also taught me how to register NSNotifications and send them between different parts of the program.

Degrees was a project planned and designed right from the start. There is no greater feeling than setting a goal and accomplishing each and every one of them along the way. I designed a simple program to be shown from the menu bar that would show the current weather for the location you were at using CoreLocation. I wanted a weather utility that required zero configuration and always showed you the correct weather no matter where you were on your portable Mac such as a MacBook Pro. It was during this project that I learned the importance of having a specific function or method set on a routine period of time or schedule. I had to make the program check at the defined period of time, which was every 15 minutes, for new weather.

Music Swipe as I called it was a project that I began when iOS 5 was still a developer preview. This project also was planned from the very start and I met each challenge that came my way. The vision I had in mind was similar to the fluidity of changing a channel on a TV or radio station but instead having this logic mapped to switching albums. You were presented with one album image, the currently playing album. You could then swipe this album to left or the right and a new one would slide in from either the right or left respectively and replacing the current one. This allowed the user to effective "flip" through album stations to find the album that they wanted to listen to by sampling the first song of an album. While programming Music Swipe I learned to interact and read the iPod Library using the MediaPlayer framework. Because this was iOS 5 and not iOS 4 I had the opportunity to learn new APIs and frameworks there were not present before. Using iOS 5 exclusively allowed me to familiarize myself with the new Storyboard format in Interface Builder and the new Twitter framework. I allowed the user to tweet the current playing song using the new Twitter framework building to iOS 5. While iOS 5 was the biggest new thing to me about Music Swipe, perhaps by far the most important thing to me was that the idea was born not out of Interface Builder but Photoshop. I gained valuable insight into how to design a background, create a button pressed and unpressed and make a gloss overlay for the album images.

NoteNow may not be my app but it has my signature design and quality written all over it. Someone I followed on Twitter, @manolosavi asked for some assistance building a simple note taking app. I felt obligated to help not only to get experience saving information in an app but also to learn to how to work with and collaborate with another person on a project. It was during the work of this project that I learned to save information to file on iOS. The biggest piece of experience I learned through working with NoteNow had to be learning to keep a NSMutableArray up to date with items. When a note was removed from the app I had to remove it from the array. Because of the high standards I hold myself to and the level of polish that I appreciate I decided that when a note is removed that it would slide off screen when you swiped up on it. A new note would then slide in from the right to replace that note if it was the only one and if it wasn't the only one then the previous note on the left was slide in from the left to the right. This helped me understand to work on certain specific circumstances and create the right conditionals for them. Because this app wasn't mine and it was in the App Store I had to maintain compatibility with older generation devices that were not capable of multitasking. I had to make the app work the same way it would be expected to work on the newer generation devices. The issue that came up for me was that I saved notes on the registered exit of the app to the background. This caused problems for older generation devices because the iPhone 3G didn't have multitasking and thus the app would never go to the background and therefore the notes would not be saved. I learned to work with this and create a backwards compatible experience the app.

Socialtop

The code I have publicly published is available on my GitHub account. If you like my work or wish to follow me on Twitter you can do so by following @CodinGuru. I don't always tweet every waking moment of the day but I do like to check my timeline a lot and will usually respond if you 'mention' me on Twitter. I do not usually accept people I haven't met in real life (there are some exceptions) on Facebook so don't expect me to accept your 'friend request' if you add me unless we have met in person more than once. I don't have a Dribbble to show off but if I did you would likely find it here too. I may at some point add a link to a blog on this site but for now I am done blogging as I just couldn't find the time, reason or motivation to write entries. If you are still reading this let me take this opportunity to also tell you that I have experience setting up and maintaing a WordPress installation.