February 2012
2 posts
3 tags
Access Denied Error when using XHR PUT and DELETE
Late one night, I was attempting to wire up a delete button on a Rails app using XHR. However, every time I attempted to make the XHR call, I saw AccessDenied in the server log and my session was un authenticated. Since it was late, I remapped it to a different URL and moved on. However, the fact that this did not work still bothered me and when I revisited it after a good night’s sleep,...
Feb 8th
3 tags
Access Denied Error when using XHR PUT and DELETE
Late one night, I was attempting to wire up a delete button on a Rails app using XHR. However, every time I attempted to make the XHR call, I saw AccessDenied in the server log and my session was un authenticated. Since it was late, I remapped it to a different URL and moved on. However, the fact that this did not work still bothered me and when I revisited it after a good night’s sleep,...
Feb 8th
January 2012
1 post
@Autowire with AOP Proxy Classes in Spring
This is an issue that gets me once every blue moon. Lets say that I have two classes DependencyClass and MainClass: http://gist.github.com/1568484 DependencyClass makes use of Spring’s @Transactional support, which is provided through AOP Proxies. This code works when I fire it up. However, if I add another implementation, and want to change the code to the...
Jan 6th
November 2011
2 posts
Can Vertical Acuity Stop Your Site Losing... →
It’s always fun to wake up in the morning and see Mashable do a write up on your company. Vertical Acuity Quick Pitch: Vertical Acuity is a self-serve content syndication…
Nov 22nd
(Trying to) Sanely Deal with Maven Dependency...
One challenge of the maven way is how to sensibly version dependencies in a large, but constantly changing, project. In the ideal maven world, each module is a highly defined project, with a highly structured team and releases only occur once the contract has been fully defined, tested, and whatever else enterprise teams do. In many realities, projects are simply logical constructs that...
Nov 5th
October 2011
3 posts
Getting Rid of My Personal Server
A few years ago, I stopped hosting my site on physical hardware and got a VPS from Linode. This worked really well for a few years, but I’ve gotten busy with other things and linux server administration really doesn’t interest me anymore. Since I blog so infrequently, every time I was tempted to write a blog, Wordpress begged me to update it. By the time I installed the patches,...
Oct 19th
3 tags
Using Noah to Configure Properties in your Spring...
On a recent trip through our code base, I realized that there were multiple projects that used identical properties defined in files that sat on the file system. I find DRY is a superior pattern to copy and paste I wanted to consolidate these into a single location. One approach would be to move them up a level in the source stack, and either rely on the properties being included in a jar or...
Oct 8th
13 notes
3 tags
Import your wordpress blog into Tumblr
Last week, I searched rather fruitlessly for a way to import my wordpress blog into Tumblr. There were a few snippets and examples out on the web, but they all used the older API or required email addresses and passwords for authentication. Since I couldn’t find what I was looking for, I opened up my IDE, fought with OAuth, and created a Wordpress to Tumblr importer. Using the importer...
Oct 2nd
6 notes
June 2011
1 post
Re-evaluating Vaadin : A Difficult Framework for...
I just had to make the rather painful (well painful for my free time) decision to re-write the project that I and a team member had written in Vaadin with the old standby’s of JQuery, JSP’s, and Spring MVC. There was a lot of frustration that went into maintaining the project over the last year and it simply became very difficult to deliver what the product team wanted in a timely...
Jun 10th
May 2011
1 post
Logging Standard Exceptions with Spring AOP
One of the challenges of working on a large system with multiple developers is the management and handling of application errors and exceptions. Often, developers get frustrated with managing typed exceptions and all interfaces either throw or catch Exception. Another common approach is to change all exceptions to RuntimeException to avoid cluttering interfaces. An alternative approached is...
May 19th
March 2011
1 post
Stripping HTML Tags from your ActiveModel Model
Finally a Rails post! This one is short, basic, and probably has a bunch of other examples on the net. Rails3 escapes HTML by default, so this isn’t strictly necessary, but I still believe that what goes into the datastore should be clean. After all, the data will probably last longer than the front-end. I found this post that explains how to do it for your ActiveRecord models. However, I...
Mar 30th
February 2011
1 post
Data Serialization notes with Flex4 (Actionscript...
Unfortunately, I’m back to developing Flex applications and mostly been focused on the communication layer between our Flex application and the Java backend. Adobe’s BlazeDS product is the easiest way to communicate between a Flex client and a Java backend. BlazeDS integrates cleanly with Spring, has annotations to expose methods as services and integrates directly with Spring...
Feb 12th
January 2011
3 posts
Reading about How Facebook Pushes Code
I was just reading this article found on Hacker News about the development process at facebook. The line I liked the most was: most engineers are capable of writing bug-free code. it’s just that they don’t have an incentive to do so at most companies. when there’s a QA department, it’s easy to just throw it over to them to find the errors. I think this ties back to another point, that...
Jan 17th
Messaging in Java
At my current employeer, we’re starting to reach the point where we need a messaging infrastructure to scale our product. The traditional Java approach is to use a JMS broker, such as ActiveMQ. However, there’s a new alternative API in the form of AMQP. Our first use-case is a fan-out queue and I took the opportunity to see how the solution would look using both API’s within...
Jan 16th
Going Cable TV Free
The title of the post is just a little mis-leading. We’re not going cable free, we’ve been so for more than 3 years. I just felt compelled to write this post now because I finally have a setup that I like and is easy to use. The first thing to know about going cable free is that it’s probably going to take a while to break even on cost. If you get a bundle, the cable bill is...
Jan 6th
December 2010
1 post
Macbook Air (13") Review
The question I had to ask myself was is it really worth upgrading from a 1st gen MBA with a 1.8Ghz Core 2 Duo to a brand new one with a 1.86Ghz Core 2 Duo and could I do something better with the money. Since I was already buying lots of gear for the upcoming trip, I put my old one up on CL and wandered over to MacMall. A few days later, I got rid of the old one, had the new one, and had a more...
Dec 6th
November 2010
1 post
Ruby Full Text Search Performance: Thinking Sphinx...
Full text search support has come a long way since the early days of Ferret. I’ve been using Ultrasphinx for a few years, and while it runs great, it doesn’t work out of the box with Rails 3. Two search projects that seem to be garnering a lot of support from the community are Thinking Sphinx and Sunspot. Thinking Sphinx is the most logical successor to Ultrasphinx, since both...
Nov 5th
August 2010
1 post
Evaluating Vaadin: A Java Web Application...
Vaadin is an interesting RIA platform built by Vaadin, LTD. Vaadin differs from your standard RIA by existing almost exclusively on the server. All application state remains on the server and all events are handled through communication with the server. The display layer is written as a layer above GWT and the whole project is open source and free. This evaluation post is the first in a series of...
Aug 5th
July 2010
1 post
Creating a Custom XSLT Function in Saxon HE
In our XSTL workflow we make use of a lot of XPATH 2.0 features, such as it’s built-in regex support. Unfortunately, the default Java6 XML parsers only support XPATH 1.0. The library we settled on is Saxon HE, since it was free, supported the features we needed, and could be extended with Java functions. One of my tasks was to convert all relative paths in an XHTML document to absolute...
Jul 23rd
June 2010
1 post
Keeping Test Emails out of the Wild In Rails
There are a few cardinal sins for a developer: deleting the production database, deploying code to the wrong machine, and sending out emails to all the mock users. These situations happen because the terminal window on production looks an awful lot like the terminal window on dev. I don’t have solutions to the first two problems, but preventing emails to the test user database is pretty...
Jun 30th
March 2010
1 post
Manually Set the Terminal Title in OSX
Having the process automatically set the name of the terminal in OSX almost never works for me. A little googling turned up the bash sequence for setting the process name in the terminal. echo -n -e "\033]0;TerminalName\007" This command will set the name of the terminal to “TerminalName.” Instead of trying to remember this string, I created a little...
Mar 14th
February 2010
3 posts
Using Java Enums to Return Collections of Other...
I really like Java enums as a way to organize and consolidate all the string constants that come with building systems with a lot of settings files. In our case in particular, we have an ETL process that moves data between sources that have no knowledge of each other. All checks to ensure that there are only valid values in each system need to happen in the Java code. Enums are perfect for this,...
Feb 25th
JBoss Hot-Deploy With Maven
If you’re a web-developer, one of the best features of Eclipse is the JBoss IDE plugin. The mere fact that you don’t have to re-compile/re-deploy the war for every change saves countless hours per build. If you don’t want to use Eclipse, you can replicate this behavior with Maven and run the app out of your working directory. The first step is to navigate to the location...
Feb 3rd
Splitting Personalities
I’m not a software developer, entrepreneur, or engineer. That’s just what I do. There’s a lot that I’m interested in beyond my work. For the longest time, my online presence has been at ViJedi.net. However, in the era of micro-blogging and increased social interaction on the web, I’ve found myself holding back from posting things that I find interesting. I’m always faced with the...
Feb 3rd
January 2010
3 posts
Dear Eclipse
It’s over, we’re done. No need to come by and collect your stuff. Your workspace is already in the trash. There’s no trace you were even here. I still remember when I first gave you a shot. I had tried other IDE’s, but all they seemed to offer where headaches. Vim and Ant simply worked better. But then you came along, with compile as you type and amazing CVS...
Jan 23rd
Sizzle: A Standalone CSS3 Selector Library
Sometimes a full blown javascript library like JQuery, MooTools, or Dojo is impractical. I just had such a project, but the one feature I could not live without was CSS3 selectors. Walking the DOM manually would have taken hours to implement correctly, especially since each page needed to be treated differently. My first thought was to rip out the JQuery selector functions. That’s when...
Jan 20th
2009 In Review
It’s the first work day of the new year and in order to delay heading out into the frigid cold (it’s about 15 right now), I figure it’s a good time for a 2009 recap. It was definitely one of the busiest years of my life. The year started normally enough, with both Sonali and I working for a large public company. Unfortunately, it didn’t take long before the economic...
Jan 5th
December 2009
1 post
Is better photo printing worth it? (and fotoflot...
The holiday season is in full swing, which means shopping, lots of eating, some traveling and lots of pictures. If you’re not 80 years old, every photo you you take is now digital. Of course there are always a few each year that you really want a physical copy of, and maybe one that you would love to see blown up hanging on your wall. There’s no shortage of digital photo printing...
Dec 24th
November 2009
2 posts
Zimbra Disaster Recovery
I had queued up a post about the improvements/deprovements in Zimbra 6. Except a comedy of errors led the power supply my mail server to die before I had the chance. This is the second hardware failure this year, so we decided to move our mail and calendars to Google Apps. That was the easy part, the not so easy part was moving the 4+ years of email sitting on the dead servers hard drive. ...
Nov 23rd
Hackintosh
There’s a sizeable gap between Apple’s low end stand-alone desktop (the mac mini) and the next tier (the $2500 mac pro). I found that my current mini wasn’t keeping up with what I wanted to do. Textmate, passenger, a couple virtual machines and Photoshop were enough to send the machine, and it’s 3G of ram to it’s knees. Therefore, I did what any person that can...
Nov 20th
September 2009
3 posts
Are you there to ship, or write code?
Amro Mousa tweeted about a great post by Joel Spolsky about Duct Tape Programmers. Also known as hackers, rockstars, and problem-solvers duct tape programmers are the ones that just get it done. The line that resonated the most with me is the following quote from Jamie Zawinski: But that’s not the point—you’re not here to write code; you’re here to ship products. Unfortunately, I...
Sep 24th
LASIK vs PRK: Differences and benefits with each
Disclaimers first. This post is not medical advice and I’m not a medical professional. Always consult with your eye-care professional about anything involving your vision. Always. With that out of the way, I want to answer a question that I’ve gotten a lot recently. Almost everyone has heard of LASIK (laser-assisted in situ keratomileusis). Most companies and doctors offering...
Sep 17th
Startup Compensation and Fortune 500 Extraction
This topic starts with a conversation I was having a while back about how small developer pool available for startups in Atlanta and how difficult it is to pry development talent from jobs in large companies. While never explicitly stated, the difficulty baseline is The Valley. I think that this situation is not as bad as many make it out to be. Home Depot, UPS, Delta, AFLAC and SunTrust...
Sep 9th
August 2009
2 posts
Standalone Rails Migrations
One of the most annoying things about deployments are dealing with databases. In the Java world, using Hibernate to generate your schema is pretty common. It works well in development, where you generally re-create and re-seed your database after each model change. However, it can be disastrous when deploying. It felt like each sprint needed a dedicated day for diff-ing the database schemas...
Aug 17th
Migrating TestTrack to JIRA
In another long fought battle that eventually led to victory, we finally moved off TestTrack to JIRA Studio. Of course, now I got stuck with the task of figuring out how to get the open defects from one system to the other. Thankfully this ended up being somewhat un-painful. The Jira4R gem allows for easy creation of issues with just a few lines of Ruby. There are a few caveats to using this...
Aug 5th
July 2009
3 posts
Grafting Spring Transactions on Legacy Transaction...
In another part of the continuing series on getting Spring to work properly with our legacy components, I recently had to revisit our the way were were handling transactions. In the previous post on this topic, I demonstrated how you can use a HandlerInterceptor to control your transactions. In this post, I demonstrate how you could use spring transactions, even if you can’t use the Spring...
Jul 30th
Ruby-Enterprise Edition, Fusion Passenger, and...
I’ve got a 512MB Slicehost instance that I needed to launch a new Rails app (details coming soon). Since 512MB isn’t a whole lot of memory anymore, I wanted to optimize the services on this machine as much as possible. The most efficient setup appeared to be running nginx, Passenger-Nginx, and Ruby Enterprise Edition. It was actually pretty easy to get all this running and would...
Jul 26th
ViJedi is in the Cloud
A few months ago the power supply on my server totally tanked. The cost to replace it was somewhere around $99 and some elbow grease, but it got beyond the point where I wanted to maintain my own hardware. This would be the third hardware failure in as many years and I was frustrated. I still wanted my own server with full access, so I got an account with Linode. Since I found it very...
Jul 2nd
June 2009
3 posts
Customizing Spring Security with Legacy...
A few months ago at work I got stuck with a rather daunting assignment: to make Spring Security work alongside our legacy security model. The rationale was sound. We have a legacy UI and we want a smooth transition to the new one. Which means that as much of their information, including their credentials need to carry over. Furthermore, our application runs load-balanced in the production...
Jun 23rd
Hiking in Fort Mountain
Sonali and I haven’t been to North Georgia in forever so we decided to brave the heat and head some place new. When we lived in Alpharetta, we frequented the Northeast side of our state a lot. Lately we’ve been trying to see what’s there on the Eastern parts. Fort Mountain has a lot of trails, but most of them seem somewhat unused and infrequently traveled. We traveled on...
Jun 22nd
Colorbox: A customizable JQuery Lightbox
As soon as someone mentions Web 2.0, you know that you’re going to need a modal dialog. If a designer is involved, then you know that it’s going to have to look nothing like any of the standard lightbox clones. The de-facto standard for modal dialogs with JQuery is Thickbox. However, if anything above sounds familiar, I recommend giving Colobox a try. Colorbox is missing a few...
Jun 7th
April 2009
1 post
Integration testing Spring MVC Annotated...
Annotations and POJO controllers make dead simple to unit test the web layer and ensure that the logic within it is correct. What’s not as clear is how to quickly (and automatically) test the configurations of your controllers and ensure the correct controller method is called with the correct parameters on a request. After looking through the Spring MVC tests, it becomes apparent that you...
Apr 3rd
March 2009
4 posts
Acer Aspire One Clock Adjust
Since the time change, I’ve been having an issue with the clock on my Aspire One. Everytime it sleeps, the clock is exactly one hour in the past. It wasn’t a timezone problem, since running date correctly showed the time as EDT The fix for this is to run the follow two commands: $ sudo ntpdate us.pool.ntp.org $ sudo hwclock --systohc This will sync your hardware clock to the...
Mar 27th
Cruising - Jacksonville, Key West, Nassau
[flickr-gallery mode=”photoset” photoset=”72157616693268038”]
Mar 22nd
Reasons for using the GIT SVN bridge
I’ve already posted about why I like Git better than Subversion. This motivated me to install the GIT-SVN bridge up to my work SVN repository. Using the bridge is a bit confusing at first. This tweet by Calvin Yu pointed out is right on the money. Git’s interface isn’t great, but it is powerful. There are two major resources that I use to use the bridge effectively: this...
Mar 12th
Snow in Atlanta
Real snow, in Atlanta, at the beginning of March. [flickr-gallery mode=”photoset” photoset=”72157616680828760”]
Mar 3rd
February 2009
5 posts
Evaluating Javascript Performance
There’s a lot of factors that you have to take into account when you pick a javascript framework. Picking the right tool is a balance of developer familiarity, the task at hand, and performance. Measuring a framework’s performance is tricky. The reality is that no benchmark will account for what your app will do in real life. Making the task harder is that each framework has...
Feb 26th
StartupRiot 2009
Sonali and I have been working a project to make a light weight and hosted project management tool. We’re calling it SCMPLE and yesterday was our first pitch. You can checkout Our Slides. For those that don’t know, Startup Riot gives startups like ours a forum to present and connect with like minded individuals. We’re barely out of the idea stage, but we still had a bunch of...
Feb 20th
Chaining Mootools Events Explained
There’s tons of doc out there explaining how to chain Mootools events, but very little of it really explains what’s really going on, why the code looks the way it does, and most importantly, how to get it to do what you want. This is my attempt to fill in the gap with Mootools 1.2.1. Chaining The basic problem is that the way people do transitions in javascript. Every transition...
Feb 14th
Moving On Up
Wordpress is now the CMS for vijedi.net. Everything that I do on the site is recorded here in some way. It just made sense to have wordpress actually be at the top level directory. I know this post isn’t very interesting, but I wanted to write something to see if my feeds still work.
Feb 12th