Skip to main content

Posts

Showing posts from November, 2012

solr making AND as default operator

I had a requirement to make all optional parameters in query to match i.e. make all of them mandatory. We didnt wanted to write parsing logic and add + sign in front of each expresion. It seems edismax was the answer and you have to just set mm to 100%. All you need to do from solrj is         SolrQuery solrQuery = new SolrQuery();         solrQuery.set("defType", "edismax");         solrQuery.set("mm", "100%"); I also had this requirement to match use  user's input against 5-6 fields. There are two solutions: 1) user copyFields in schema.xml and append everything to a field called as "textDump" and then you can make this as the default field. 2) use dismax parser. I chose to use dismax because copyFields will increase the index size to almost double and solr performance is directly proportional to index size. Hurray dismax as it neatly solved both my requirements:).

Throwing more Hardware vs developer time in tuning on a single db

Last weekend I read two interesting articles on scaling up vs scaling out http://highscalability.com/blog/2012/11/22/gone-fishin-plentyoffish-architecture.html and then I read Jeff atwood's http://www.codinghorror.com/blog/2009/06/scaling-up-vs-scaling-out-hidden-costs.html .  By the way I am a big fan of Jeff Atwood and if you guys haven't read him you should start reading him :). But at our company we planned for a scale out model because being a startup sometimes management wont order hardware worth 100-200K or more in one shot and also if you have a table with 1B rows and you are doing agile programming then you are ought to build something and throw it in prod and then refine it. This can sometime lead to alter tables and data migration. While scaling up is good, doing alter table to add a column with default value on even 100M row table will incur significant downtime and we cant afford that. So when I designed our metadata db we chose to scale out.  As of now we are

hierarchical locking using mysql database

We are a cloud file server company and one of the requirements we have is to be able to hierarchically lock the paths i.e. for a particula customer if one user is trying to move a path /shared/marketing/Dallas then no one should be allowed to add/delete files/folders in Dallas and its children, also no one should be able to make any edits to shared or marketing folder.  But users should be able to add files to any sibling hierarchies like /Shared/Engineering/test or /private/kpatel or /Shared/QA. so the requirement is to have an api where I can do try { lockManger.lockPaths("/Shared/source", "/Shared/sbc", "/Shared/ target"); ..... .... Do some long running task (may be 1msec to 10 minutes). .... ... } finally {    lockManager.releaseLocks(); } I evaluated some alternatives so here is the summary : 1) Apache commons has this locking api with class org.apache.commons.transaction.locking.DefaultHierarchicalLockManager and it has a method ca

User perception using elevator joke

I am attending a startup lab workshop by Steve souders and he makes a very interesting note about user perception. I mean I had read about this in his book but he explains it much better using this joke. So it starts like: An Apartment complex has two elevators and tenants are complaining about longer waits times and slow elevators so the owner calls a civil engineer and asks him what it takes to fix the issue. The civil engineer replies we need to add few more elevators and it would take 5 Million dollars and we have to close the complex for 6 months. The owner was like hmm so he called an computer engineer and asks him what it takes to fix the issue. The computer engineer was like hmm i would need to first monitor the pattern over a time as to when and how people are using the elevator write and come up with some AI algorithms to optimize the solution. The owner was like hmm so he called a systems engineer and he was like hmm all we need are TVs. The owner was like what? So the

Should you join a startup?

You should if you are passionate about learning new things and going through the pains of scaling the team and inventing something new.  But there are some cons also: 1) your healthcare benefits may suck. So if your wife has good benefits then this may be a moot point. 2) Your HR may suck, you might have no or non existent HR and sometimes small things can take an ample amount of things to be done. Like getting a document for your greencard process can take 2-3 months so dont join a startup if you are waiting for greencard as you can run into complications if the startup closes shop. 3) Startup may be demanding on you but at other times it can be a lot flexible also. So if point 1 and 2 are not of concern then yes offcourse you should join it.

Brother MFC 490CW unable to clean 46

Day before yesterday after printing one page it started giving "unable to clean 46" and then I thought its an ink issue, as the yellow ink had ran out. I ordered new ink and plugged it in but it again gave same crap. Finally found this blog post with detailed steps and solution 2 worked for me http://fix-your-printer.blogspot.com/2011/03/unable-to-clean-46-error-message-on.html Thanks to whoever wrote this post.