CS students wanted

August 27th, 2008

Seems like there is always new and cool stuff we want to add to Xerpi. But, honestly, I am swamped right now -- I've got a few too many projects going on (more below). So, before I go to my alma mater (UVA SEAS) with "Part-time student help wanted" flyers, I thought it would be best to make the plea to my readers. Of course, the probability that one of the three of you are actually a Computer Science student and/or an HTML/CSS savvy geek type who "gets" things like source code control and development environments is low indeed. I mean, its not like it is even truly random cause I probably already know all three of you and you aren't CS students. :(

Regardless, we are in desperate need of part-time help. However, we do require some rigor and exceptional tech skills for this position. What we can offer is an exciting, edgy set of projects and some moolah. So, maybe this isn't you, but someone you know -- we do think a student is a great fit since we offer flexible hours and work from anywhere and we are sure that the experience and mentoring we offer will be invaluable for those just learning about programming languages, data structures, and algorithms analysis.

So, shoot me an email if you are interested. This is totally fun and exciting work -- it is very rewarding to see your work immediately used as well, we could use some fresh perspective and ideas to add to our queue of enhancements: wray(at)godomedia.com.

What are the many projects? Well, Xerpi's parent company GoDo Media (yes… that's the Global Online Optimization Conglomerate…hahaha) is focusing on our optimization services. Xerpi has been imperative for us to become a real contender in the bookmarks space, but ultimately our expertise is in knowing how to leverage that data in a way to make everyone's surfing experience better and more relevant. Face it, the Internet isn't "for free" anymore. We are faced with a continuous onslaught of ads that help pay for services such as ours -- our mission is to increase the relevance of this experience leveraging anonymous data optimization techniques and ultimately putting the users back in control of their online experience. And that is not intended to be a marketing plug, it is just where we finally are. Come work with us and you can delve into that area too; talking about an ideal real-world application for fourth year and grad school level Systems and Software Engineering folks. So the projects: browser apps, iphone apps, facebook apps, optimization algorithms, systems development (in all the hottest solution-driven languages), web development, etc.

I'm also engaged in other fun projects that are all a part of our desire to test the utility of web-oriented services and figure out the current driving force behind the Web. I mean, the techies are still kind of driving this ship, but there are more and more sites whose simplicity and zero resistance sign-up are catering to the everyday Web users. These folks may not understand much more than simple search anyway. Buttonall (sheesh, here I go again plugging that site on this blog) is a good example. And, I do bring it up, cause you can try it now with a search channel that includes Xerpi search!!

Buttonall with Xerpi Search

And, of course there are all the animals (kids included) that keep things busy and so fun and funny.

FF buttons, new bookmarklet

August 21st, 2008

Oh yeah, btw -- finally got the Firefox extension updated to work with FF 3. In fact, the new Firefox "post to" button has been enhanced to match our new "post to" bookmarklet. What is a bookmarklet you say? Or, did I hear you say, yeah, bookmarklet -- where is it? Well, until it makes it into our new help, just copy this link onto your favorites toolbar (in FF and Safari this is just dragging the link up to your browser's favorite toolbar, in IE this is right-clicking and doing the add to favorites thing). Ok, here is the bookmarklet:

Post to Xerpi

If you've been meaning to tell your friends about Xerpi, now may be a pretty good time. We've revamped the signup page and process again. This has actually been a work in progress for some time now as we have been juggling some other upcoming enhancements (mostly based on user feedback, thank you):

  • Updated bookmarklets that include an improved post-to and *surprise* functionality
  • Updated FF buttons (that will work on FF 3)
  • Enhanced FF bookmark import (and export)
  • More streamlining for sign-up to make users immediately productive
  • Better help so we can show off all our capabilities
  • I'll try to make it a better habit of at least updating my blog here whenever any new nuggets are added. And while I'm at it, maybe I'll drag out the ol' soapbox to make my posts a little more entertaining and less marketing.

    Tech updates

    August 12th, 2008

    It has been way too long since I've posted here and hopefully I can make this a bit more regular!

    Just wanted to let folks know we are addressing the issues we are having with our buttons and Firefox 3. I apologize for the inconvenience and the timing has been a little tough cause we are actually revamping our buttons for Firefox. Look forward to some improved buttons for Firefox with enhanced functionality. These should be ready by the end of this month. We are also working on streamlining our browser import capability. So, if you have any comments or suggestions on that process, please let me know.

    I have been pretty busy with several projects including buttonall that was nicely promoted on this very blog! Buttonall has customization now too. Check it out and you'll see some of the very drag and drop tricks -- that make Xerpi so nice -- present in the search channel customization.

    More users make us better!

    October 27th, 2007

    I will be the first to admit that I have issues with criticism. In fact, since Xerpi is somewhat like my 3rd child it is hard to take even constructive criticism about my baby. However, the more feedback we get, the better we can make it! And, as we are implementing enhancements (we already have lots of areas targeted for improvement), user direction is the best way to ensure we are doing the right things in the right way.
    So, feel free to email me directly: wray@xerpi.com . I am anxious to hear not just what you like about Xerpi, but what you don't like and any ideas you have for making it better. In fact, I am looking forward to getting completely overwhelmed with emails so we can start a xerpi user mailing list and/or discussion board. We are here to help you get the Internet under control -- preserve your favorites dynamically and in a way that is simple to organize and re-organize.
    Spam me!! (sheesh, should I really say that?)

    Xerpi encourages sharing

    August 24th, 2007

    It is hard not to laugh at my daughters inability to share. In fact, the most desirable item around our house is the thing that the other one currently has. Amidst the screaming and tugging, you have to work hard to hide your laughter, "can they really be fighting over a straw?!" Even the most boring toy is suddenly new and exciting when being held by the other!
    Luckily, in our virtual world we have solved this dilemma found in the physical world. My favorite sites can easily be copied and cloned for others' enjoyment. Don't worry, I don't mind you fetching the bit copies of my favorites. I can't even see you clutching on to them and savoring their presence just before you follow them on a web path to enlightenment.
    Okay, what I'm trying to say here is that public tabs are available again on Xerpi! Today we released a version of public tabs that far exceeds the former hack (whereby you used the secret codeword "public" to make a tab public). I've got an example at http://www.xerpi.com/9002 . If you are already logged into xerpi when you go to this url, the tab will be added to your list. You can even add your own blocks to it, or if it bores you, you can delete it from your page. I'll have to admit, I haven't spiced it up yet, but the "most recently added" block is pretty cool to track favorites as they are added to xerpi.
    And, hot on the heels of this release will be enhanced functionality that allows multiple users to edit one of these public tabs and even more functionality to support "community" tabs with designated editors and viewers. So sign-up now if you haven't already so you can be the first to setup xerpi communities for your interests.

    We are live and rockin'

    July 19th, 2007

    I've been a little quiet here and that is because I've been a little busy. We rolled out our new version on Monday and things are cruising along. There are so many new features and, of course, a new design that it is hard to decide what to say in this first post in a long while.

    So, let me just go right into a surprising (for me) xerpi use case... Mom.
    My mother is slowly getting into the 21st century and has a pretty decent desktop now, so she is always asking me how to "pull up" this or "pull up" that and it is typically a struggle. I am either on the phone with her dictating "H-T-T-P-COLON-SLASH-SLASH... no, forward slash..." And you can relate to how fun it is when you get to the "A-S-P-X-Question Mark-Item-EQUALS-THREE-FOUR-EIGHT...." And, even shooting her a link in email backfires cause somewhere along the way the link gets chopped and it is truly impossible to explain how to "rebuild" the link.
    So, how does Xerpi help? Well, I set Mom up with Xerpi and made it her home page and dropped a few of her favorites in a link block. Then, I added myself as her friend and setup a friend block for me and a tag filter of "for_mom". This is great. Now, as I go through my favorites or find something Mom may like, I simply tag it with "for_mom" and it will show up on her home page. So, it doesn't get much easier than that.
    So, sign-up and tag things for your Mom or your Dad. Then we can all do a Xerpi search on "for_mom" or "for_dad" to find more sites to pass along!

    BTW - Xerpi renders nicely on the iPhone, but the iPhone interface interferes with the drag 'n' drop functionality! :O

    One month down

    June 11th, 2007

    I'm pretty happy with the progress we made in May on the next version of Xerpi. The foundation is much more flexible and the cases of use for the new system will be extremely flexible. Going through some of my integration test cases brought out a lot of cool concepts that will be very powerful for users. The challenge, of course, will be to expose this power in a way that is truly usable. Definitely let us know if you are interested in a preview of the new release -- in exchange for feedback.

    BTW -- last week I enjoyed a week-long vacation on the Outer Banks. Even though our cottage was equipped with WiFi, I resisted the temptation to work on the rewrite! And, this is probably the first time in a long time that I wasn't all depressed at the end of the week just "thinking" about going back to work. This stuff is really fun, but I guess that is why I am the "Xerpi Geek".

    Time to go clutter my closet again!

    Closets cleaned

    May 25th, 2007

    I have been very amiss at keeping this up to date. However, I have been having too much fun doing this re-write. Just in case anyone was left hanging, I caught up on my laundry and now have cleaned the clothes off the floor of my closet. My facade of organization runs a little deeper in the bedroom now (that sounded a little weird). Also, the Xerpi closet is in order as well. In the past three weeks I have completely re-thought out the domain model and implemented it relying heavily on ActiveRecord's capabilities. It is especially cool to get back into the TDD mindset and have not just a working business tier, but also a whole suite of unit, functional, and integration tests to go along with it. Now, I'm dealing with the front-end stuff. I think it is a bit more frustrating because one can't really write unit tests for it first and then work until that passes. One has to tediously go through trials and errors, looking at how pages render and spending way too much time fretting over pixels!

    We'll be going through our first round of QA on this stuff in a week, so I'm trying to get as much of the UI components done before then. But, we can all rest assured, cause there is no facade here -- I started at the core and worked out to the user-interface, so things are in order through and through.

    A shell of organization

    May 9th, 2007

    Con Way's organization piece really hit home for me. I had no idea that the simplicity of Xerpi could reveal some complex personality traits (and this is before we have started pushing the social networking aspect of having xerpis). So, Con Way has shown his disorganization to the world, whereas I have successfully maintained my facade of organization with my Xerpi. You see, I built an entirely new tab to carefully populate with a neatly organized subset of my favorites. Xerpi has become a metaphor for my treatment of organization and neatness.
    For example, my wife and I generally keep our room very clean; however, open up _my_ closet door and you will find a pile of clothes (mostly dirty) strewn about with a few articles hung up or put away and a lot of empty hangers.
    Another example, I hate to work on a desk that isn't "neat", so we have this plain country style desk that I love to keep clean (in fact, clearing it off is one of my best procrastination tools). I enjoy the simplicity of a wireless laptop on an empty desk with maybe a monitor to give me some more virtual estate. And that armoire behind me looks awfully neat all closed up. Dare to open it and you will be faced with my pile of tax folders and another pile of "to be filed" items along with the sundry tools, toys, pictures, envelopes, miniDV tapes, blank DVDs, and there is even some velcro strips and some canned air in there!
    So, I say build your Xerpi and show it off to the world -- be bold and show your true colors like Con Way or adopt the true facade pattern and maintain your shell of organization. We'll work on the algorithm that can determine your personalysis based on your Xerpi page.

    First week

    May 6th, 2007

    I wrapped up my first week as a full-on Xerpi Geek and cannot be happier. I feel like I've gotten more done in one week than I did in the previous month or so! Along with some cool improvements and enhancements to the beta codebase, I completed a balanced (balance between complexity, generality, and practicality) domain model and just about defined all of the business services. By mid-next week, I should be pretty deep into implementing the tests for these services and therefore start on the implementation! In the overall MVC application architecture, my plan is to go top-down from the controller interface (whose parameters directly drive the object model) and therefore build the controllers/models first leveraging Rails scaffolding for the base view implementations. Of course, we will pick up with adorning the views as appropriate after the "business tier" is mostly complete, for I know there will need to be some refactoring in order to support some of the user/organization-based view customization we currently provide and desire to improve.
    I just can't say it enough -- this work is so refreshing for me. You see, I've spent way too much time and effort trying to convince others (typically management) that this Engineering / common-sense approach to Application Architecture and overall Software Systems is not just useful (or maybe in their opinion wasteful), but truly the professional way to build software. It was especially frustrating to be hired to come in and re-architect something when 1) the business did not want to spend time (re)defining the problem domain (so I could truly validate a design) and then 2) the business really wanted a re-shuffling of an existing architecturally unsound product. Combine the two and it spells huge frustration for folks with background and experience like myself.
    Xerpi management just gets it. They/we understand that your first implementation is not necessarily your best (this is probably like number 3). You try to get some objective measurements and are flooded with subjective comments on what you have and, if necessary, discard what needs to be (even if it is the guts) and rebuild. And throughout that process, you get to redefine your strategy, goals, and objectives to ensure that the next iteration of software is aligned with the latest thinking. Ultimately, our software will be used more and more as the core becomes more stable (and abstract you Robert Martin/OO followers) so that when we reach that point where our system needs to be maintained by many and reliably scale, our system will already have all those ilities. My goal is to ensure that we won't have to call in the "Architect" to save our business from a flawed foundation. And, you know what, if we do, then we shall let her/him do what is necessary to sustain an optimal system.

    It has begun

    May 2nd, 2007

    Today is my third day "full-time" on Xerpi! I actually cannot believe it -- this is so much more satisfying than my most recent gigs. It is very nice to be back down at the code level with a platform that allows me to quickly make tangible improvements. In two days I have been able to make a nice dent in our open issues on the current codebase, plan the rewrite, and begin work on our new domain model.
    But wait, that is not all. I am doing all of this from the comfort of my own home with my two daughters (10 month old and 30 month old), dogs, cats, and horses, and my MacBook Pro, of course. Can't beat sitting on the front porch in a relatively rural setting deploying code via ... [technical details removed to protect the innocent] .
    The rural/high tech contradiction cracks me up. In fact, aside from my laptop laying around (or my wife and her laptop when she is working at home) the technology in our place is pretty well hidden. And the neighbors who do know that I do "computer stuff", probably think I am running a pron site.

    Xerpi Rewrite

    April 26th, 2007

    I am days from commencing our rewrite in earnest. In order to accomplish this feat (hopefully in a month), I am taking a long-awaited sabbatical from the office world (a topic that I should address later). I guess I am a geek at heart, cause I really can't wait to get my hands dirty again and quench my thirst for accomplishment. As of late, the roles I have played were slanted towards management and oversight. So, along with being a geek, I am an Engineer and therefore have a hard time being fulfilled at work unless I have helped design and built "something" that is delivered and used. In summary, I am truly excited to rebuild Xerpi's foundation in order to make future functionality additions easier (i.e. faster satisfaction over the long-run). There will be no limit in the direction we could take the site once we go through this refactoring -- and we'll then have the appropriate separation of concerns to implement some "back end" ideas that will make Xerpi the place to maintain your "favorites".

    Xerpi Tech

    April 18th, 2007

    For those of you interested in the technology behind Xerpi, here is a quick summary:
    Xerpi is a Ruby on Rails application! The database is MySQL, of course, and our hosting provider is RailsMachine. We are about to completely re-write the existing application in order to build a better foundation that will allow us to add new functionality fast. Moreover, the existing code (beta release) relies heavily on custom JavaScript and we want to take better advantage of AJAX-oriented JavaScript libraries and the appropriate Rails Helper abstractions to those libraries.

    Just a little background... I've done a lot of Enterprise-level distributed development (C/C++ on DCE/Encina, C++ on CORBA, and Java on J2EE, Spring + Hibernate). I was also lucky enough to get early exposure to Python in school. And, I definitely have some opinions with respect to Python vs. Ruby that I won't go into here, yet. Regardless, RoR is simply a dream platform for problem domains like Xerpi. I had become so disillusioned with the "bloat" of Java-oriented development/configuration, especially when compared to the "form is liberating" approach of Python, that RoR and its "convention over configuration" is a very welcome change for me.

    To sum up, I am truly excited about the technology and very passionate about the functionality we have lined up to bring to the web. This summer shall be very exciting!