Categories
Archives
Monthly Archives:
August 2008
Not Your Average Internship
Here's a recent blog entry from one of our summer interns, Ben Rossi:
"Arc90 is the first place I've worked where company politics played little to no role in the architecting of software. There are of course the "politics" of the clients we write code for - or more accurately some design practices that allow them to better leverage their own methods and employees (ahem, stored procedures) - but these constrains make a lot of sense. As the company founder Rich said, Arc has been lucky enough to experience a certain degree of autonomy despite any client constraints, and lucky enough to have a voice in the way clients run their business, helping them acquire a competitive edge through the utilization of software.
I believe these values are what are needed to run a successful company. In OO design pattern terms, I think the SuccesfulProductFactory is more important than any individual instance of SuccesfulProduct we produce, and this "factory," or ability to churn out success is due to the culture here at Arc. The basic elements of this culture are admitting when we're wrong, being pragmatists (but not to the degree where innovation is stifled), and striving for cleaner and purer architectures we can continue to leverage and re-use for a while to come. In general, doing the "right thing."
I've noticed that Arc90 feels a lot like a startup company. People get very excited about what they're doing and work long hours. Waiting for the elevator at 12:30 to get lunch, you might see a group of four people clutching their iPhones, reading the last RSS bite that came through in the thirty seconds it took them to leave their workstations and walk over to the elevator. Un*x terminals are ubiquitous, and there are many people who can tell you how to run a set of obscure terminal commands to get your RFID enabled coffee machine to alert the paramedics when you've gone over the humanly safe consumption limit of espresso.
At the same time, being at Arc90 feels like being at a mature company, with decisive leaders who have the experience to make astute business decisions. Time is allocated among multiple projects, some experimental and innovative, and prioritized towards the things that will keep Arc in a financially secure position, so as to continue innovating. Some people are even working on software to help us better track and manage that time.
A true mark of a good experience is when you can take something back from it that continues to reward you. Whether it be memories, knowledge gained, contacts made, or something you've created that is useful. At Arc90 I feel I've accomplished all four of these things. The framework I built in Java with fellow intern Alex, HARE (Hibernate-based Arc90 RESTlet Extension), whose name is inspired by RARE (RARE is Arc90's Restlet Extension), I plan to use in some of my own projects (an automated trading platform is one). I would be very excited to see this framework live on and flourish, and the possibility that I will continue to maintain and extend this framework while using it in my own projects is another reason why reusable solutions, while initially more time consuming, end up beating non-reusable ones.
Tomorrow is my last day, and I would like to thank everyone I've worked with here for making this a fun place to work."
Permalink | Comments (0) | Technorati Tags :
Posted on August 29, 2008 by Tim MeaneyArc90's first summer internship
So today is the last day of our first summer Internship Program. All-in-all, a huge success, both for Arc and for our first two interns--Alex and Ben. These two guys shattered any preconceived notions of 'intern' that we had going into this summer, which makes sense, as they've each been programming for over a decade (it just so happens that that represents more than half of their lives...). Seriously though, these two guys are brilliant--the bar for next year is high.
We learned a lot this summer about how to structure this Program going forward, particularly the size and scope of the efforts we should embark on, and how to structure their work within the company. I wish I could go back and do some things differently, but when I voiced that concern, both Alex and Ben were quick to let me know that they wouldn't have had this summer any other way. Oftentimes, you learn more from challenging and ambitious efforts, than from safe work.
Anyway, don't take my word for it, read Alex's and Ben's recaps, in their own words.
Thanks guys--good luck in school this year.
Permalink | Comments (0) | Technorati Tags :
Posted on August 29, 2008 by Alex QuickAn Intern's Experience; or How Code Learns
Until recently my conception of a software company consisted of two guys crammed into a former closet, surrounded by ashtrays stacked on ashtrays stacked on servers and other assorted hardware, both functioning and non. Being asthmatic, this never appealed to me. My only other imagining is Mike Judge's, and as charming as the Initech boys were the corporate atmosphere is as strangling--if not more strangling--than the smoke-filled closet. Where, then, do I fit in?
Continue reading "An Intern's Experience; or How Code Learns" »
Permalink | Comments (2) | Technorati Tags :
Posted on August 26, 2008 by Doug BurnsSecuring Java Objects for Plain Text Transport
Recently I needed a way to secure some data that was going to be placed into an XML document. By using the Java APIs SealedObject class, along with the public domain Base64 class, I was able to secure an entire object, then encode it as text for inclusion in the XML.
To accomplish this, I created a class called Encrypter which provides one method for encryption and serialization, and another for reversing the process. I've listed the code for that class below, as well as another that demonstrates its use.
Update: We have posted the source for Encrypter, along with a compiled .jar to the Arc90 lab.
Continue reading "Securing Java Objects for Plain Text Transport" »
Permalink | Comments (0) | Technorati Tags : java security encryption decryption text
Posted on August 18, 2008 by Avi FlaxRESTful Hullabaloo
I've always wanted to use the word "hullabaloo" in a published piece of writing, and now I can finally cross that off my list of life goals.
There's been a lot of hullabaloo about REST in the web-tech-o-sphere lately, and rather than sum it all up here, and then add my 2¢, I just want to point out that Tim Bray has already done so, with his usual insight: REST Questions.
When all is said and done, I agree with the moderate view that REST is a very useful architectural pattern, but nobody wins when it's turned into a religion. There are pros and cons of following REST for a given situation, and they should be considered. No architectural approach is a good fit for all situations.
Continue reading "RESTful Hullabaloo" »
Permalink | Comments (0) | Technorati Tags :
Posted on August 15, 2008 by Joel PotischmanEmpty Subclasses Are Good
I write lots of server-side software with XML APIs. I'm constantly taking an XML document as input, maybe transforming it to another format, sending that XML doc somewhere for processing, then returning the resulting XML back to the client. It's all nice and flexible and loosely coupled, but if all my parameters are of type XmlDocument my code is hard to read, and I may accidentally confuse parameters and still compile just fine. By subclassing XmlDocument and adding no new code, I can get compile-time checks against parameter confusion, better readability, and all the XmlDocument functionality I know and love still works unchanged.
Continue reading "Empty Subclasses Are Good" »
Permalink | Comments (0) | Technorati Tags :
Posted on August 4, 2008 by Ben SgroDoubleChecking your PHP
PHP allows you to define variables anywhere, at any time. They do not have to be defined prior to use. This can lead to silly bugs when you misspell a variable name. Anytime I found one of these errors in my code, I'd say to myself, "I wish I had a script that could show me alphabetized variable lists with a count" - so I built this script to save myself debugging time.
DoubleCheck (db.php) can be run against a PHP file and will output an alphabetized list of variables with their count. It will also print out methods with their count. Its still in version 0.1 and I hope to expand on it in the future.
Feel free to contact me with request or bug fixes.
Enjoy!
Permalink | Comments (2) | Technorati Tags :
