October 7, 2015

It’s been 6 weeks since I joined TubeMogul leaving Salesforce. The decision to leave Salesforce was not an easy one, as Salesforce is one of the leading and most innovative software companies in the world with approximately 17 thousand employees. When I joined there 8 years back, they had a little more than 3 thousand employees. So I saw Salesforce rising at a pace, that is only believable if you live in Silicon Valley’s startup atmosphere. I was in a good book in my own department and had a good network of people working in different departments; as I have been working there for so long. There were further growth scope and no doubt Salesforce pays good enough to employees in Silicon Valley (I have to assume elsewhere too). So why move out of Salesforce at all? Here was my rationale.

I have been working in IT Applications Development since my early years in Salesforce. The first half (4 years) I was working on a Java based module and the last half I have been working on Force.com / Apex (Salesforce’s own programming language developed on top of Java). During the second half I started feeling that I am getting out of touch with the Open Source projects and Java community; as being an application developer, I didn’t get a chance to do platform development which allows you to experiment with lots of cutting edge new open source frameworks coming out or the JVM based programming languages. So I considered moving within Salesforce to one of their platform teams but then I became part of a very large project (Project Delight) which I didn’t want to miss. The project took 2 and half years to finish and it was a very good experience in my career, seeing first hand how a large number of teams, each having its own development culture can work together to achieve a bigger goal and what various types of obstacles can come on the way. But once that project was done, I was getting ready for a bigger role on the next big project. But then I started feeling that the core problems that are awaiting me, we have already solved many of those in my last project. So instead why not jump into something completely new, where I will be hopelessly helpless?

That’s when one of my ex-colleague simply submitted my resume to a software company despite my reluctance (confession: I am a lazy person). But as my interview was scheduled. I started looking into what is there in the latest java world and I saw that the companies are moving to Java 8. When experimenting a few programs in Java 8 following the Manning book, I clearly understood it’s a complete revamp of the Java programming language. Lambda expressions, streams, functional style programming are few that excited me too much and I was no more ready to get back to Apex coding (not that Apex is bad, its just proprietary). I honed my Java 8, data structures and algorithm, spring and other open source projects familiarity for couple of weeks to get ready for interviews.

As naturally happens, I got selected by a few companies and rejected by a few others during the interview process. The job market is so good that I had at least half a dozen more interviews waiting for me the next week before I decided to stop interviewing and pick the best I had upto that time. TubeMogul was a clear winner in many areas. Of them are –

They are complete java and open source shop

They have different engineering teams where you might be able to move around over time – platform core (rtb), machine learning, big data & stats, ui, udb, appeng and more….

They are the 5th best place to work in San Francisco Bay Area according to Glassdoor review of 2015

They are a mid size company (500+ employees) making it ideal for a growing company and yet not too small to go bankrupt

Their business domain Real Time Bidding (RTB) is something completely unknown to me. So it will definitely pose challenges to me in multiple levels (which is what I was looking for).

They offered me a decent package. Although I humbly note that if you are working in Silicon Valley as a software engineer, most of the companies will offer you a good package; otherwise they won’t be able to attract or retain good employees.

I liked talking to each of the 4 people who interviewed me in TubeMogul as well the recruiter who handled the whole negotiation process in a very professional manner. My manager Murtaza is a very composed man, something similar to Rajesh Misquita at Salesforce whom I admire a lot.

I did let my team in Salesforce know 6 weeks ahead of time about my decision. I went to Bangladesh on vacation for 3 weeks to attend my brother’s marriage in between. I left a good relation with the management and peers before leaving Salesforce. I will always cherish the memories of working in such a nice a big company like Salesforce. But it’s time to move on.

When I joined TubeMogul, I saw my assessments were mostly correct. Except Java, I think everything else was simply unknown to me or I have used/worked on more than a decade ago. I still have not mastered the way to explain what RTB industry is all about. One of the very first things I did here is formed TubeMogul Chess Club. The pace of work is fast and everyone is very friendly. Let me go through a few more months, but as of now I believe my decision was correct to join TubeMogul.

May 13, 2013

June 15, 2012

My friend Paul from East Coast, forwarded this article to me in the morning. While I was reading it, I became, happy, sad was laughing around loudly in the BART train to office and also got thinking. Too many things in it from the experience of an engineer.

November 25, 2011

One of my colleague who works on performance tracking and tuning of applications asked for some helped around how to find the union and intersection of large lists. He works mostly on Python and Perl. Being a Java guy, I prepared a sample program for him to do this allowing to determine the size of the lists by himself. He was happy to get the program and once I explained him a bit about the retailAll(), addAll() and removeAll() API of Java and how I used those to determine the union and intersection, it was very clear to him. I am giving that program here in case it helps you as a reference implementation.

February 11, 2011

A few days back my Google Reader RSS Feed took me to http://www.noteslate.com and from then onwards NoteSlate is roaming around my mind. I believe Kindle solved my problem of reading books, iPad solved the problem of a personal organizer cum web surfing but none of them really addressed the issue properly of writing or taking notes. NoteSlate will do that if I understood correctly what there current ad shows. Ah, I have to wait 5 more months to verify it!

My colleague John asked for a tool from me last week so that he can finish the translations / localization works that he was doing. To solve it in a lazy way, I did some google around a bit but couldn’t figure out any easy tool that will convert Unicode characters \uxxxx to native locales. There are plenty of tools available to convert natives to UTF-8 and even the below simple command works in java for native to utf-8 :

1. Make sure sure you have JDK installed in your system. Set the environment variable JAVA_HOME in to point to JDK (alternatively there is a shorter way that I can show you).
2. Copy the source java file from the following network location into your machine – \\moorea\departments\AppStore\Comergent\Programs\SfdcUnicodeToNativeConverter.java
3. Open the source file in TextPad or Crimson Editor and replace the value for the variable sentenceToConvert to the actual sentence that you are trying to translate / convert.
4. Compile the java file that I wrote using the command javac -d . SfdcUnicodeToNativeConverter.java
5. Run the program to generate the output file using the command java com.salesforce.test.SfdcUnicodeToNativeConverter
6. A new file named output.properties should be generated in the same folder from where you ran the program.
7. Open this file with Altova Xml Spy or Notepad with UTF-8 Encoding to preserve the file format correctly. You may see some characters that look like junk. Don’t worry, those are not junks.
8. Copy the content from the file in Xml Spy or Notepad and paste those into a new MS Excel Spreadsheet. Now you should see the native characters properly. You can use those for translation purposes I your models.

I have tried to write down the steps above clearly as you will need to perform those repeatedly for each line of translations for each locale. Being a little innovative, you can use the steps above for multi-line translations as well by adding proper \n” + ” to hold many properties / values in the sentenceToConvert variables.