Archive for 2006

Some Advice for Facebook on Integration

This post actually is a comment I left for this blog post, but decided I would also post it here.  The author’s post discusses contrasting opinions on using several separate social media websites vs. using Facebook for everything.  My comment is below:

Great post!  In a way, I would strongly agree with you.  In a way, I desire more integration.  Ironically, I actually found/read your post through Facebook Notes because you tagged Richard.

I, too, am an avid user of the “best” social networks (Flickr for photos, del.icio.us for bookmarks, YouTube for videos, LinkedIn for professional networking, etc).

Here’s what I like about what Facebook is doing: making these services available and known for “the masses”.  Blogging/Notes, Photo Sharing, and now Shares.  For people who wouldn’t normally use any of these features at the above named other websites, this is great.

Automatically recognizing blogs listed as “websites” and integrating/importing blog posts as Notes is genius.

In my opinion, this is the kind of the thing that Facebook really needs to do.  Here is another example:

What if Facebook extended this type of functionality to watch your del.icio.us (and other popular/competing sites) bookmarks and automatically import them into “My Shares”?
[Aside: you may not want to pollute everyones News Feed each time someone bookmarks something, but perhaps a message like: “Phil Freo has Shared _7 items_ today.” with a link to those items would be good.]

The magic for Facebook can then happen when a lot of del.icio.us users have all their bookmarks as Shares.  “Normal users” (the kind that don’t use del.icio.us) can then benefit from everyone else using it by being able to search/find the best websites about anything.    By keeping the current Shares model, I would never think to search Facebook Shares for a good website (or search my own bookmarks) – but this would cause me and a lot of other people to rely on Facebook for even more, which is exactly what they should want.

So, what else can Facebook do to both integrate *and* allow non-techies to benefit from?  Here’s three to get you started.

  1. Automatically watch/import/tag my del.icio.us (and competing) bookmarks as Shares.
  2. Automatically watch/import my blog’s comments in imported Notes
  3. Automatically watch/import/tag my Flickr photos where possible into My Photos.

[Aside: yes, there are issues with each of these, but I’m more than confident they can be worked out.]

For the average user, there is just a massive amount of very valuable content on Facebook.  For the power user, they now have all of their own content on Facebook.  Everyone would then be happier – especially Facebook.

CSS Tabs, BrowserCam, and Temporary Email Addresses

After spending time today with frustrating IE6 CSS issues with borders on ul and li tags, I finished my CSS navigation tabs. The CSS is based on the XHTML produced by the WordPress K2 theme, but can be easily matched for any site.

css for k2 theme tabs in wordpress

Here is the CSS:

ul.menu {
margin: 9px 9px 0 9px;
padding: 5px 0px 6px 10px;
border-bottom: 1px solid #afafaf;
}

ul.menu li {
margin: 0px;
list-style: none;
display: inline;
}

ul.menu li a {
margin: 0;
padding: 5px 12px 6px 12px;
border: 1px solid #afafaf;
background: #DDE;
font: normal 12pt Georgia, 'Times New Roman';
color: black;
text-decoration: none;
}

ul.menu li a:hover {
background: #333;
color: #eee;
text-decoration: none;
}

ul.menu li.current_page_item a,
ul.menu li.current_page_item a:hover {
border-top: 1px solid #afafaf;
border-bottom: 1px solid white;
background: white;
color: #333;
text-decoration: none;
}

BrowserCam is an extremely useful (and quick) tool to easily see a screenshot of your websites in over 30 different OS/browser/version combinations. It’s incredibly handy instead of guessing whether it work in other browsers, or trying to install multiple versions of each browser. It’s free for 1 day for every email address you have…

On an unrelated note, 10 Minute Mail, 2 Prong, and Mailinator allow you to have an instant free temporary email address for those sites that require you confirm an email address but you know you don’t need your real address. Leave your browser window open until you get that “confirmation” email and then forget about it.

PS - If anyone has any advice as to how to easily paste CSS or other code and have WordPress preserve it’s formatting (line breaks and spaces), let me know.

Yahoo! Time Capsule / Cali Fun / OpenDNS

I just got back from another trip to the Bay Area in California, where Yahoo! generously flew me out to be a part of their Time Capsule Camp event…

The event was a lot of fun – we “made media” for the Time Capsule. We had a big mobile scavenger hunt by The Go Game and ended up with some funny video (it’s long) and pictures (full photoset). Go team super6 (we won)! We then had some great food and a workshop on Flickr and Jumpcut. It is clear that Yahoo! is about social media.

Next up was some unscheduled fun with Bre from Make who set up his balloon aerial photography unit (here’s a great photo). It was crazy letting loose a digital camera attached only to a big bunch of balloons and a line of 1000 feet of string.

Monday night was a dinner, thanks to Paul, with David Ulevitch and Allison Rhodes from OpenDNS. We had a great dinner and conversation as well. If you haven’t already, go set up OpenDNS now (it will only take 1 minute) for a better, safer, and faster internet. OpenDNS protects users from phishing scams, and if I type example.cmo, I will automatically be redirected to my intended domain.

Overall it was a great trip. It is always good to catch up with friends from Yahoo! and hang out with fellow previous interns like Paul, Richard, Doreen, and Britta. (And can’t forget some good In and Out burger with Jason Katzer)

Update on Google Calendar

As a follow-up to my post noting some issues I’ve found with Google Calendar – namely what seemed to be a security hole, I was extremely pleased to see an email from Google on the matter:

Hi Phil,

We came across your blog post about sharing Google Calendar and wanted to follow-up with you: https://philfreo.com/blog/big-security-flaw-in-google-calendar/

We understand that you’re concerned about the security of Google Calendar because you can see all of your friend’s events although he only shared his free/busy information with you.

We suspect that the reason why you can see the details of your friend’s events is because his events are marked as public events. When events are marked as public events, other users can see them even if the calendar itself is set up as a private calendar.

To resolve this issue, can you please ask Bryan to check the privacy settings of his events? To do so, he’ll need to click on events, then select “edit event details” > “Options” > “Privacy.” Under “Privacy”
section, if “Public” is selected, he needs to change the selection to “Default” or “Private.”

Lastly, we understand that many users want the ability to create one main calendar that they can share with their friends without clattering their friends’ calendars. We also understand that our printing features need some improvements. We really appreciate your constructive feedback on Google Calendar and will keep them in mind as we work to improve the quality of Google Calendar.

Regards,
The Google Team

I did have Bryan check and indeed, the settings on each individual event had been set to “Public” rather than to “Default”. While I’m still not sure how that happened (he didn’t do it on purpose), it is much more relieving to know there was a good reason for what otherwise looked like a security hole.

Additionally, it is great to see Google say that they understand the other problems with Google Calendar (such as multiple calendars per person cluttering a friend’s calendar, as well its very ugly print interface). I now have more confidence that it is something they are working to fix.

I have now integrated Google Calendar on another website and am very pleased with how easy it is to give multiple people access to add/edit events. Additionally, subscribing to the calendar’s events make it a wonderful way for people wanting to keep up with the latest events from an organization without having to constantly check back. This was the perfect solution to the previous way it was happening: dozens of email reminders sent a week via the listserv.

However, since Google apparently is listening, I might as well point out a few more things I’d like to see changed in their iframe page:

  • More styling options. For example, there is no way to change the color of the month name from black, and it looks very bad on a grey background.
  • Event wrapping. With often < 700 pixels to work with, you can’t see much in terms of detail when the events don’t wrap. I would much rather lose vertical/height space than how it currently is.

New Website Launched – 24/7 Tutor

I just completed a web design project for 24/7 Tutor – a new Gainesville-based tutoring service for UF students. They let students call them literally 24 hours a day for tutoring in a growing list of difficult classes…

The site’s back-end is run by WordPress – I am very happy with using it as a complete, but cost-effective, content management system (CMS) solution. The back-end is not fool-proof (lot’s of things to click) but certainly is not too difficult for most clients. Most importantly, being able to take advantage of a such a well-written, open-source solution enables clients to have a CMS with little additional cost.

In addition to using WordPress, I integrated a Google Calendar, allowing the company to add events to a good-looking calendar easily through Google’s existing calendar website. Even more exciting is the fact that users of the site can then “subscribe” to the calendar, or copy specific events to their own personal Google Calendar.

Google Calendar is officially my second most-relied-on service by Google (search is #1, personalized home is #3). Even though it does have its share of problems, I now rely on it to pretty much run my life, since I switched from Outlook Calendar a few weeks ago.

Hopefully John, Tom, and Maxim from 24/7 Tutor are happy with the site – and hopefully it will bring them a lot of new business.

Edit: someone asked me if there’s really that big of a market for personal tutoring for a University. There certainly is. TutoringZone currently dominates the market I believe (although with a crappy web design), TutorGator looks like they just ripped off Facebook’s site design, and I know there is at least one other company.

Issues with Google Calendar

Update: Google responds.

Google has been doing a great job innovating lately through the integration of their products (Docs and Spreadsheets, Calendar and Gmail, etc). This integration, however, has not come without security issues arising. TechCrunch has covered several of them – but I believe I have found another…

This may be hard to believe, but I can view unauthorized and unshared events on my calendar. Let me explain:

My friend Bryan has a Google Calendar with the following security/sharing settings:

GCalendar Security - Bryans’s settings

Note that, as you would imagine, he only wants me to see free/busy information for his schedule.

And MY settings for HIS calendar are as follows:

GCalendar Security - Phil’s settings

The settings all look correct – I should be able to see only free/busy information about his events. But this is not the case – I can actually see all his event details.

I have had him unshare and reshare his calendar, with no better results. Luckily, Bryan and I are friends, so it is not a big deal that I can see his event details. But one can only imagine how this could be a big deal when your calendar has sensitive appointments.

I have to know – can anyone else reproduce this huge security bug?

Another problem I have with Google Calendar – and maybe I am not using it the way developers intended for me – but here’s what I do: I like to have different events in my life categorized in different calendars. Then, I can show/hide a certain set of events (personal, business, school, etc) quickly, and I can see by color coding how much time I am spending in each category.

The problem arises when I want to let someone else see my free/busy schedule on their own calendar. This means, not only do I have to share 5 calendars instead of 1, but that person then has to keep 5 calendars in their list. Why can’t there be a way to combine calendars into 1 for all my friends wanting to see free/busy status, or event event details? It is a big clutter for them to have 5 calendars just from mine to see when I’m free.

Lastly, I’m unhappy with the PDF that the Calendar generates to print both the month and week view. I am not against the idea of generating a PDF for printing complex designs – it is a good idea – but their implementation leaves much to be desired. The design and UI of the online version of the calendar is beautiful, however it seems as if the print layout was something thrown together a day before the product was to be released.

My biggest qualms are 1) it’s ugliness, 2) lack of details for events (it doesn’t even show the location of the event), and 3) lack of consideration for many events (when I have overlapping events sometimes it creates a box with no event name shown).

Google is doing a great job with many things, that is why when I notice issues like the above, it really stands out.

Update: Google responds.

Interesting School Projects

This semester has lended for some school projects a little different than usual. Some seem to be even… useful?

In “Speaking & Writing for Engineers,” I was required to write a resume and application letter to apply for an internship (optional on whether we actually sent the letter). Already being a step ahead of the class with an existing resume, this provided for a good time to produce an updated resume for your reading (and hiring) pleasure. I was sure to fill it with lots of buzzwords (yes, I do agree with Buzzwords say all the wrong things, in general) and acronyms, knowing that many companies these days simply scan resumes and run queries on their database for matching people. Additionally, I am going to be on both sides of a mock job interview soon to come.

Having an updated resume came just in time for UF’s Career Showcase – a two day event in which hundreds of employers speak with students about job openings in their companies. There were some big companies there and I got to meet a lot of recruiters. I spoke with a guy from Microsoft (with Windows Live) who asked me what AJAX really is. Not surprisingly, he said I was the only person so far that day that had a good grasp of it. (The “not surprisingly” is more from the lack of web-awareness of normal Computer Science/Engineering majors and less from the fact that I am just incredible).

In Java II, my latest project was to create an analysis, design, and implementation of a Travel Agency. We’re still doing simple console applications but are getting into different types of inheritance in Java. My UML diagram and screenshot below:

TravelAgency program screenshot

TravelAgency program UML

Facebook, part 3

Facebook – after recently getting a “facelift” with its News Feed (which delivers constantly updated information about your friends) and Mini-Feed (to show your friends what you have been up to) – has been up to a lot more. By opening itself up to anyone with any email address today, the once-exclusive social networking site can now be accessed by anyone. This is not big news though, Zuckerberg announced this would happen a while ago.

What I do find interesting, is how the site identifies users as unique…

As my friend Bryan Scott (of CampusTrade.com) recently mentioned, it is extremely easy for someone to get multiple email addresses. What is not easy to get is multiple cell phones. Therefore, if websites should use cell phones as unique identifiers to make it much harder for spammers and bots to abuse systems. Two weeks ago we were trying to figure out what that means for TapNote, and today Facebook is using the same idea.

Public email account users (those without a school or work email address) who do not confirm their cell phone address on Facebook can still do everything on the site. They are, however, required to enter one of those “are you a human” image codes every time they want to interact with someone on the website.

facebook-cell-verification

By doing this, Facebook has ensured that it stays spam-free, as it grows extremely quickly. I can only image where Facebook will be in another year. And I don’t just mean at Yahoo!.

“Facebook Notes”

Facebook, on a roll launching new features, just launched “Facebook Notes” which automatically imports posts from common blogging platforms (WordPress, Blogspot, even Myspace) and displays them in a new “Notes” section in your profile. Facebook automatically detects links in your profile to any supported blogging platform and allows you to import all yours posts.

Clearly Facebook is wanting to get into as many areas of social networking as possible, with the recent release of the Facebook API (developers.facebook.com). I’m glad they’re becoming more open, as well as trying to integrate with existing blogging platforms. Although I’m not sure quite what I think about their term “Notes,” I’m glad they are bringing blogging into an even more “mainstream audience”.

developers.facebook.com

Facebook just launched developers.facebook.com, allowing developers to interact with Facebook through an API. This is a great step for Facebook. It will increase functionality as developers create new applications and makes the system more “open”. At the time of writing, there are already 2 applications in the “product directory”. One creates a photo mosaic of your facebook picture with your friend’s faces. The other is an expense tracking program. Neither are too exciting as of now, but the possibilities have just been opened. Check it out:

developers.facebook.com
One key thing to note: the API does not allow the retrieval of member’s ever-so-crucial contact information (neither cell number nor email address).

My guess is Facebook is trying to protect its most valuable asset: a huge directory of contact information, while at the same time protecting its members from getting spammed as a result of the API. The API has a decent balance of allowing developers to do what they want, while still pointing a lot of traffic back to Facebook.com. For example, you call pull a lot of information about friends, photos, walls, and so on, but anytime you want to let a user actually do something on facebook (write a message, poke, make friends, etc), they have to be directed back to the site. This makes sense in regards to security and Facebook’s business model. Nobody can really screw up their own facebook account through a malicious API, nor can anyone easily create a Facebook competitor.

I’m looking for good ideas for an application using Facebook’s API. I have a couple ideas already in dealing with photos, which I may try and implement if someone doesn’t beat me to it. I’m just wondering how long until someone makes a Facebook “Hot or Not” website.

Edits:
Interesting: I just got my Facebook API key / “developer account” and was given an “app_id” of 151. So two products have been submitted to the directory, while 149 other people have received API keys already. It will be interesting to see how many of these turn into production applications, my guess is less than 5%.

I also like seeing the Facebook Developers Discussion Board. It’s getting to be active quickly and is a good place to keep an eye for applications in development.

I also believe Flock could benefit greatly from this by increasing its photo support from Flickr and Photobucket to include Facebook Photos, as well as notifications to wall changes, friend changes, etc. Note to self: email a flock community ambassador.

Internship with Yahoo! Completed

I have officially completed my internship with Yahoo! in Sunnyvale, CA for the summer and am back home in beautiful Jacksonville, FL. Overall I had an incredible experience and learned a ton. My eyes were opened to the large amount of tech start-ups and large companies in the San Francisco Bay Area. I got to see the office buildings of Yahoo!, Google, Apple, Microsoft, Cisco, eBay, Adobe, Altera, McAffee, WebEx, Facebook, Flock, and Meebo. You just can’t do that anywhere else. I always knew there was a Silicon Valley, but living in the area and rubbing shoulders with so many talented people in one area was a new experience for me.

I also got to work with talented engineers at Yahoo! and learn a lot. I was able to take a half dozen courses on various front-end engineering topics to either refine my skills or teach me new stuff while I was there. I was able to see what the workflow in a large organization (a company of 12,000 people) is like – the good and the bad – and work on projects for a company which impacts half of the world’s internet users every month. Yes, they are still more popular than MySpace.

Having intern events with nearly 200 other interns was fun too. It was great being able to meet and become good friends with a bunch of talented young people. Thanks to this crazy new toy called the “internet,” hopefully we will be able to stay in contact.

What now? Back to school and doing freelance work. I’ve got a decent school schedule this semester: Differential Equations honors, Applications of Discrete Structures, Circuits I, Java II, and Technical Writing for Engineers. I’ll be moving in my Gainesville apartment in about a week and will be building a loft for my tiny bedroom…. more on that later hopefully.

Freelance work is starting to come back on strong with a few programming projects starting up for designer friends. I just launched a new dynamic website for UF Campus Crusade. The site is a redesign of an aged site, now written with CSS and web standards in mind. While building upon the existing PHP backend, I have also added some new features and increased usability. I did not have time to do everything I wanted to on it this summer, but hopefully it will still serve as a great resource and advertising for the UF ministry of 300+ students.

Yahoo! Corporate Blog Launched

Yahoo! launched its corporate blog entitled the Yodel Anecdotal.  I have to admit, it’s a good name, way better than the one I suggested.  Paul and Doreen (other Y! interns) have been working hard on it, so I’m sure they’re happy they get to start the actually blogging now.  I also have had the privilege of being included in some upcoming content for the blog.

No, I won’t tell you what it is, you’ll have to wait and find out =).  Without plugging Yahoo! too much, this blog is exactly what I wish existed in March when I was trying to decide whether or not to accept the internship.  There is a great video tour as the first post which shows most of what I see on a day to day basis at work.   Don’t tell anyone, but since I don’t drink coffee, I’ve been ordering chocolate milk every morning at the free coffee bars.

Yahoo! User Interface (YUI) JS Libraries updates released

Some exciting news for front-end developers today: The Yahoo! Developer Network has released the newest version of it’s YUI JavaScript libraries today. With extensive documentation, great support for cross-browser coding, and a couple new components, these tools are becoming an even better solution for JavaScript developers. Check out more at the official YUI blog. Here is what’s new:

Updates to the previously beta versions of:

  1. An event utility
  2. DOM collection manager
  3. Connection manager (for AJAX / XHR calls to the server, now with file upload)
  4. Drag & Drop utility
  5. Animation Library (now includes color animation support!)

Additionally, the release of improves upon:

  1. AutoComplete
  2. Calendar
  3. Container (including Module, Overlay, Panel, Tooltip, Dialog, SimpleDialog)
  4. Menu
  5. Slider
  6. TreeView

And adds a new control: the Logger (beta).

What’s so great about these YUI Libraries? What about Prototype, Dojo, and Mochikit? As a former Prototype enthusiast before coming to Yahoo!, I noticed a couple things beneath the surface that I began to really appreciate when I made the switch:

  • I like knowing that a company of 12,000 people is backing, using, and continually supporting/improving my JavaScript library. They have a full time staff of people that are incredibly at handling all the annoying cross browser concerns and repetitive JavaScript tasks, so I don’t have to.
  • I have grown to love the heavily name-spaced nature of the YUI libraries. Sure, at first glance it may seem annoying to have to type YAHOO.util.Event.addListener, but it makes code highly independent and guarantees that it won’t interfere with other functions of the same name. One trick: add YUE = YAHOO.util.Event at the top of your page and you’re golden. I’ll admit, I do miss the $ function, but that can always been added individually.
  • The ability to extend the YUI classes is great. Say you need an extremely customized version of the Drag & Drop library. Easy, just take what they give you, and overwrite through inheritance in your own file the individual functions you need to modify.
  • Unlike Prototype (and others), there is not one massive JavaScript file.  Instead, if you only want Event Handling, you only include a small global yahoo.js, as well as event.js.  Then if you later want to add animation, you just include animation.js.  The point is, you only add what you need.

My absolutely favorite part of developing with the YUI libraries is getting to use these cheat sheets. Go print them now!

Some lessons on business from traveling

I am fortunate enough to be able to work from Florida for a couple days due to July 4th, leaving me with a nice 9-day visit back home. While traveling, I observed a couple of interesting things about business, opportunities, and life. Check them out…

First, while waiting in Phoenix at the Southwest Airlines gate to board my plane, the guy guarding the boarding door was about to do his usual thing, preparing for boarding the plane, when he did something that made everyone look up. He said

“Do you guys want me to give you all the boarding information in a song?”

Not sure if he was serious at first, people began nodding. So he started – and sang an entire song to the tune of Edwin McCain’s I’ll Be. The guy actually had a really good voice and gave us all the usual information, but in a really exciting and new way. In the end, everyone applauded and had a smile on their face. This is a great way to do business. I hope that guy gets a raise because he took what is usually a very boring experience and added life to it. Even his coworkers from the booth were smiling and enjoying themselves.

On the other hand, I went out to eat this afternoon with a pretty large group of 13 people to Clarks. While I usually like the place, today the waiter sucked – he was overall unfriendly, rude, and short with us. So what if a few people ordered water? That doesn’t mean “refills” should be given by slinging one pitcher of each drink on each side of a very long table. I noticed the not-so-great service but wasn’t going to say anything. However, it was bad enough for several girls at my table to be unhappy about it. Because of this, I simply asked for his name, and informed the manager that I love the restaurant, but was receiving bad service due to a rude waiter. I hope this guy gets a one-on-one meeting with the manager and either begins to improve or get replaced by someone like singing-airplane-gate-guy. And it really is in the waiter’s best interest – better service results in better tips.

What’s the point? That a little personality and effort go a long way in creating a good impression and making happy customers.

And last but not least: airplane rides are great for networking. After briefly meeting a young couple while listening to singing-airplane-gate-guy, we ended up sitting next to each other on the plane. I had a great conversation with the guy. I taught him Sudoku, talked to him about Jacksonville, discussed web design and business ideas. He told me about his own business and how he created a simple website for himself using a free online tool. After a simple conversation, without seeing any of my resume or previous design work, this guy says:

“I really wish I hadn’t already signed a contract for my new website, I would hire you right now. But if you want to do any search engine optimization contract work, that would be great.”

Why would he say this after such a short conversation with no evidence of my abilities? I think it has to do with a few things. Just like above, having a personality and engaging in conversation almost always are good things. More important than resumes or portfolios, people just like to know that they can simply talk to you and trust you as a person.

Fun times in Cali – including BarCamp

I’ll post about working for Yahoo! more later, but I just want to write about some fun times in northern California over the last couple weeks. From disc golf in Santa Cruz (photos) with Dimitry Bentsionov and Scott Schiller, to taking a road trip to Santa Barbara with some local Kappa Sigma guys, or just hanging out in San Jose (photos), my time here has been great so far.

Today was good. I met up with Dimitry, Bryan Veloso, and Paul Stamatiou (another Yahoo! intern) and went to a car show in San Francisco to show of Bryan’s sweet ride. After, the three Y! interns headed over to BarCamp San Francisco upstairs in a Microsoft building downtown. It was a good time meeting and hearing from some people in the industry. Later, Will Pate rode Caltrain back with us and gave us a tour (photos) of the Flock offices (thanks Will!).

Yahoo! Summer Internship Offer

In late March of this year, when I was at school and was just starting to think “what am I going to do this summer?”, a big opportunity opened up for me almost all at once. I was literally sitting in a Calculus 3 class when my cell phone started buzzing, and an unknown, out of state number appeared. That was nothing new or special, but they left a message, making me more interested. Once I got out of class, I listened, and sure enough, “Hi my name is …, I’m a recruiter from Yahoo! … and we want to talk to you about some positions with the company…”. I really couldn’t believe it at first and I won’t lie, I think I listened to the message at least 4 times. When I got back to a computed and checked my e-mail, sure enough, there was a legitimate email:

My name is … and I’m a recruiter with Yahoo. When you have a free moment I would like to discuss Front End Engineering positions we have open. When might be a good time to speak?

Many phone calls and emails later, I got a (generous) offer letter packet in the mail and accepted it, but it had not been an easy decision. I already had several opportunities to stay in Jacksonville with family and friends, to work on a project of my own, do freelance, or possibly repeat my internship from last year. However, this was an opportunity I decided would be foolish to pass up. A job at the headquarters of the world’s most popular website doing what I love, while gaining great experience for myself, my resume, and picking up a good bit of cash.

PS – thanks to everyone who helped show me that this was an opportunity not to miss. And thanks to Chris Dawson who reminded me to check for cheap Kappa Sigma housing in CA, so that I’m not actually losing money by working out here. Photos of “my crib” are available.

Wohoo, a Blog – and a job with Yahoo!

After telling enough people that I’m “going” to put a blog on my site, it’s time to finally do it. And what better time than now.

So here goes. Expect semi-frequent ramblings about my life, web development, college, interning at Yahoo!, entrepreneurship, and anything else I feel like.