Another Round of Personal Web App Updates

Calendar Syncing

Calendar

One of the top items on my to-do list from the last post was to integrate the Google Calendar API to sync my app calendar with my Google Calendar (which is synced with my iCal as well).  By writing code that creates and edits events in Google when I edit them on my app and by writing a cron job that updates events in my app from Google on a regular basis, I was able to fully sync the calendars each way.  You might say, "What's the point in having another calendar?"  The answer is that a mass-market calendar like Google Calendar or iCal can never be as customized or integrated as your own, written from scratch.  What I've done with this calendar is pull in all of the other information that is date-related inside my web app.  One of the most useful parts of this for me is workout tracking.  I can glance at my calendar now and know that I'm either over-training or slacking off.  I also have my local weather pulling in.  I plan to integrate contact birthdays, Facebook events, to-do items with due dates, and even more things that I haven't foreseen yet.

 

Contextual Information & Design

(download)

To add context to category pages on the site, I added more databased information (like my jobs, employers, degrees, and courses) as well as some custom RSS feed parsing to show dynamic information from other websites, like the climbs I've most recently done, my most recent cycling results, and related news headlines.  I also took some time to revamp the designs of repetitive page elements (what we call 'partials' in the Ruby on Rails world).  Keeping a visual hierarchy via text size and color was important as well as providing more context than just an element title in a preview.  I borrowed my 'adventure' partial concept fromiPhoto.  The 'project' partial just felt more natural to me--having a single photo (that I can select) for each project reduced visual clutter and freed up space to add a description.

 

Social Elements

Adventure

I've just begun integrating some of Facebook's Graph API into the site to add social elements.  I had already done this with my contacts (showing dynamic Facebook profile photos), but I'm now using that contact database in new ways to help enhance content on the site.  For example, I've added a relational database table to keep track of which friends accompanied me on which adventures.  This lets me display their profile photos alongside the adventure description and helps provide even more context for readers.  In the future, I plan to add Facebook comments and like buttons via their new Javascript SDK.

 

Homepage Design

Home

Finally, I liked the iPhoto-style adventure partial so much that I integrated it onto the homepage to give visitors a quick overview of what I've been up to most recently.  I like the way the visual turned out, with lots of contrast between the dark and light sections, as well as a feeling of depth.

Check it out at www.jeffreyjhebert.com and tell me what you think!  Until next time,

 - Jeff

Comments (0)
Posted

Progress on the Personal Web App

The application is really coming together and I figured it was time to write a post about all of the progress I've made over the past month or so.  Check out http://www.jeffreyjhebert.com to see how it's shaping up.

The majority of the public content on the site is split into different categories, which include Work, Education, Climbing, Cycling, and Music, as well as a number of others that don't show up in the public navigation of the site.  These category pages are where I'm aggregating all types of related content like projects, adventures, workouts, shopping lists, to-do lists, and even category-specific content like my degrees, courses, jobs, employers, albums, etc.  Adding some of these specific content types was motivated by the desire to have this personal website also serve as a portfolio and linked-in profile on steroids.  The category pages constitute the vast majority of the public content on the site.

A few other goodies I've been working on are contact management (with links to both Address Book and Facebook), real-time personalized news aggregation, personalized weather forecasts, and some nifty charting and schedule viewing for my workouts.  I've included a few screenshots to show what some of these private pages look like.  The utility of having all of this data online and in the cloud is already becoming apparent to me--if I don't have my laptop or phone handy (or lose one), I can still reference almost anything I could need.  Hosting all of the photos and videos currently costs me $0.07 per month with Amazon's S3.  I could expand the amount of data being hosted dramatically and it would still be dirt cheap.  The site hosting itself is on Heroku and is running with their completely free plan since the site will never receive high volumes of traffic.

I have integrated both geo-location and the Google Maps API for almost anything with a location tied to it.  This lets me show all of my adventures, photos, videos, and contacts on custom maps and has proved really interesting and fun to build as well as useful.  I'm using the Weather Channel's XML API to grab forecasts in real time and display them on the appropriate days within my calendar.

Going forward, I plan to spend more time syncing up my calendars, using the Google Calendar API.  I also want to build a light version of Evernote within the site to be able to easily remember things and hash out ideas in a central place.  I'd like to take my weather forecast and kick it up a notch to have a simple message at the top of the site if I need an umbrella on any given day.

Check it out and let me know what you think.  Any ideas for improvement or additional features that would be useful in your own website?  Let me know!
 - jeff

(download)

Comments (0)
Posted

Syncing Up Life - Elements of a Personal Web App

My first step in creating a personal web application was developing specifications and a basic site outline.  As I mentioned in my first post on this subject, the app is first and foremost for me, but I plan to build it in such a way that it would be useful for just about anyone. I started by asking a simple question:  What information in my everyday life needs to be organized, archived, consolidated, and shared?

The answer resulted in two major types of content - public and private.  The following categories are general enough that they should cover most individuals.
Private
  • Calendar
    • aggregates iCal, Google Calendar, plus workouts and social events
  • Contacts (Address Book)
    • import and sync data, provides backup and 
  • To-Do Lists
    • categorized individual lists with a consolidated view
  • Grocery & Shopping Lists
    • simple, secure, shared list functionality for use by roommates/family as well
  • Health
    • workout and competition tracking in calendar, personal stat tracking (weight, etc.)
  • Notes / Journal
    • simplified Evernote-style system
  • Social Networking Input Feeds
    • pull together Facebook, Twitter, and all others into a single feed
  • Events
    • aggregate evite, Facebook invites, etc. into calendar
Public
  • Blog
    • integrated into the site as a subdomain
  • Weather Forecast
    • Tailored to where I am on any given day - do I need an umbrella?
  • Bookmarks and Links
    • categorized, computer and browser-independant listing with favicons
  • Adventures (trip reports)
    • descriptions of trips with locations, maps, photos, etc.
  • Media (books, music, and movies
    • currently reading/watching, lists of media to purchase, backup repository
  • Education
    • personal and professional development resources and info
  • Projects / Work
    • portfolio, current projects, LinkedIn integration
  • Social Networking Output Feed
    • push out my various public feeds like Twitter, blog RSS in one place
I have created an application with some of this functionality already and will continue to build it out over the coming weeks and months.  If there is anything you do on a daily basis that could benefit from being consolidated into this kind of system, let me know!

Comment (1)
Posted

Syncing Up Life - The Experiment Begins

Larson-oct-1987

In this age of 30+ applications on your iPhone, hundreds of browser bookmarks, rss readers with tens of feeds, multiple email accounts, multiple calendars, and more, I've found myself hoping for a better way to sync it all up.  

One of the reasons Facebook is so popular is that they have become the de facto aggregator of your social life online.  Nevertheless, you still use LinkedIn for aggregating your business network.  And much of the time, you get evites instead of Facebook event invites.  You post some photos to Flickr and some videos to YouTube and Vimeo.  Sometimes you buy things from Amazon, sometimes on eBay, and many times from specialty online retailers.  You watch videos on Hulu, network websites, YouTube, and from random links your friends forward.  You have sites that you visit for keeping up with your hobbies.  God knows where you keep your to-do lists.  The simple truth is that the Internet has succeed in allowing us to handle much more data than we used to, but it's getting so distributed that it can feel unmanageable.  Some companies like Google, Evernote or Springpad try to help you organize your life.  The problem is that many of these services end up becoming just another site you have to visit to get the whole picture.

I've decided to use my expertise in Ruby on Rails to develop my own personal website to organize and sync up my life.  I plan to start with the basics and eventually achieve a cohesive site that organizes and displays all the information I have to try to hold in my head right now.  While the data will be completely tailored to me and my life, I hope to architect the application such that it could be used by just about anyone.

It's an ambitious goal, but I'm motivated to give it a shot and see what happens.  If you have any ideas or input, you can leave a comment here, post it to my Facebook wall, email it to me, text it to me, or give me a call : )

Comments (0)
Posted