Skip to main content

Posts

Switching to Cloud only email

4 years ago I was a windows guy and used to use outlook for emails. Though I used gmail for personal accounts when it comes to office emails somehow I liked the native look and feel and offline nature of outlook.  Then I joined the startup and the development environment was ubuntu so I first started using thunderbird but then moved to evolution. Now evolution  had its own problems but again it was native and i was using it mainly as a task management. Daily emails would flow in via pop/imap and I would keep a copy of them on server. Then as and when I would  reply to an email or took action on it I would move  it to a folder by year. But evolution used to suck, it had performance issues handling 2000+emails so I started deleting emails to trash but again it had performance issues. But I kept using it as I could integrate gmail calendar and it would notify me about events and contacts were offline so when I was on aeroplane I could use it. Then I moved to ubuntu 12...

A journey of Scaling generation of file system snapshots

We are a cloud file system startup managing billions of files for thousands of customers and one of the constant scaling issue is "how do you generate a snapshot of cloud filesystem" and send it to the client to start an initial sync. To elaborate more let say a customer has so far uploaded 25M files. Now he starts a new office and wants to setup a Netgear/NAS appliance and install our server sync software. Before the Netgear/NAS appliance could start syncing it needs a consistent snapshot of cloud filesystem so it could start that as a starting point before it could start syncing  changes based on events.  Now 25M is a big number right now but 5 year back the same problem was with if a customer has 500K files and a new employee joins and installs a sync software on his laptop, how do you send the sync client a consistent server snapshot. It seems every 1-2 year or so we solve this problem and as scale increases we have to come up with something new to make it more faster t...

Redis publish subscribe to node.js

Disclaimer: This is no way a comparison between RabbitMQ and Redis. RabbitMQ is a great product and we use it in our startup as a queuing system. I just wanted to try out redis in my pet project so I did it. I am intrigued by the hype around node.js so am planning of writing a node.js to push real time events from server and do push notifications in browser from server. Now mostly I saw that people use a myriad of technologies from websocket, nginx, nodejs, redis/rabbitmq and in backend produce the message from Java or any other app.  Basically node.js is only used for long polling and decoupled from the main app using a message queue as a broker. So my first goal was to push message from Java to message queue and I have already used RabbitMQ in past so I thought let me this time try redis and boy it is much much easy then RabbitMQ (however at this moment I trust rabbitmq more than redis for production as I have much more experience scaling rabbitmq as a queuing system,  I...

windows server 2012 missing flash player Internet explorer 10

I was trying to get selenium tests working on IE10 on a windows server 2012 box in EC2. The IE10 kept saying that flash player is not installed and gave get Adobe flash player link  but when I click it Adobe site says that IE 10 has flash installed. It gave me steps to go to Manage addons and enable Shockwave Flash or disable ActiveX filtering. But when I went to Manage addons I didnt found Shockwave Flash. I even tried installing the windows 8 update for flash player but that said this is not a valid installer for your machine. Finally I found that I had to install windows server 2012 "Desktop experience" from add roles and features. Installing it solved the issue.

Encrypting stored passwords in spring web application

We take security very seriously and have taken steps to harden our services so if some one has ssh access to the box he wont be able to read the files but the webapp has to be able to read the spring config which has passwords to database so we need to protect it from any file download vulnerability. So the plan was to encrypt passwords stored in spring files and decrypt it at runtime. As we had to decrypt the passwords back this has to be a symmetric encryption but with salt.  After doing some research I found jasypt library that would be able to do this. The steps I followed were: 1) move all passwords to a separate  file called as XXX_passwords.properties 2)changed spring xml to use property placeholders like ${mysql.user.password}. 3) added spring beans to load the password and decrypt them using the ENV variable ENCRYPTION_PASSWORD and added two jars to class path jasypt-1.9.1.jar and jasypt-spring31-1.9.1.jar     <bean id="encryptablePropertyPl...

Offsite

Last week I attended first offsite in my carrer. I had no idea what offsite meetings were so it was an interesting experience for me. Honestly I was skeptical that about entire offsite thing and thought it would be a waste of time. I work from home and I vist Bay area may be twice a year. I have a 4 year old and going for these one week trips are not fun for the family as wife has to manage the kid alone along with her hectic job. So I try to avoid a trip to Bay area as much as possible. Also these bay area trips are not at all productive for me, I somehow feel productive if at the end of the day I deliver some tangible code and in bay area trip as I am pulled into all sorts of meetings its not at all suitable to write any kind of code, there are too many distractions.  The max amount of code that I am able to write is on the 4 hour aeroplane ride back and forth.  Anyway coming back to offsite, we did it over 2 days in 4 sessions. In the first session marketing,sales,and manag...