গত শুক্রবার থেকে বড়ই আজাবের মধ্যে ছিলাম। জ্বর একবার ১০৩ তো ১০৪ ওঠানামা করে আর সাথে প্রচন্ড রকমের ঘাড় ও মাথাব্যথা। আমি সাধারন ভাইরাল ফিভার মনে করে সেইরকম ট্রিটমেন্ট নিচ্ছিলাম। কিন্তু তিন দিনেও জ্বর তো কমলই না, উল্টো প্রস্রাবের সাথে রক্ত যাওয়া শুরু হল। আমরা প্রচন্ড দুশ্চিন্তায় পড়ে গেলাম। আমার বোন মেডিসিনের উপরে অনেকদিন ধরে প্র্যাকটিস করে, সে বলল ইমিডিয়েটলি ইউরিন ও ব্লাড টেস্ট করাতে, আর সাথে মেডিসিন স্পেশালিস্ট কে দেখাতে, কারন সে সন্দেহ করছিল এটা হয় ইউটিআই (ইউরিনারি ট্র্যাক ইনফেকশন) অথবা হেমোরেজিক ডেঙ্গু।
আমার তখন ত্রাহি মধুসূদন অবস্থা। ১০৪ ডিগ্রী জ্বর, বমি আর ব্যথা। সুমি পপুলার ডায়াগন্সটিক সেন্টারের উত্তরা শাখায় মেডিসিন স্পেশালিস্ট ডক্টর রওশন আলীর কাছে সিরিয়াল নিল, সিরিয়াল নম্বর পেলাম ২৬। আমি, সুমি, রানা, নিলাভ আর পল্লব ওয়েটিং রুমে বসে তীর্থের কাকের মত সেকেন্ড গুনছি যে কখন আমাদের ডাক পড়ে। আমি কোনরকমে বমি আটকাচ্ছি বসে থেকে। একসময় ডাক পড়ল – যাক বাবা, হাঁপ ছেড়ে বাঁচলাম আমি, আর অন্তত বসে থাকা লাগবে না।
আমি আর ডাক্তারের চেম্বারে ঢুকলাম। মধ্যবয়স্ক চশমা পরা একজন মানুষ বসে আছেন। আমাকে জিজ্ঞেস করলেন নাম কি?
আমি: হাসিন হায়দার
ডাক্তার: বয়স কত
আমি: ৩২
ডাক্তার: ঠিক আছে বলেন আপনার সমস্যা কি
আমি বলা শুরু করলাম, ২৫ সেকেন্ডও মনে হয় যায়নি এরপরে, হঠাৎ ওনার মোবাইল বেজে উঠল। ডাক্তার মোবাইল এর নম্বর দেখে আমার দিকে তাকিয়ে বললেন “স্যরি, একটু রিসিভ করে নেই”। আমি মাথা ঝাঁকিয়ে বললাম “অবশ্যই”
এবার শুরু হল ডাক্তার সাহেবের বিশাল গল্প। তার বন্ধু তাঁকে ফোন করেছেন কোন পেট্রোল পাম্প থেকে পেট্রোল নেয়া গাড়ির জন্য সাশ্রয়ী সেটা জানার জন্য। ডাক্তার সাহেব বিজ্ঞের মত এক এক পেট্রোল পাম্পের অকটেনের সম্বন্ধে মন্তব্য করতে লাগলেন “আরে না, নিকুঞ্জের পাম্প থেকে নিও না, ওরা তেলে কি দেয় কে জানে, আমার গাড়ি বেশি চলে না….হ্যাঁ হ্যাঁ, টঙ্গীর টাও ভাল…”
আমি বসে ঠকঠক করে কাঁপছি ঠিক ওনার পাশে, ওনার আর তেল গবেষনা শেষ হয় না। প্রায় নয় দশ মিনিট তিনি তেল নিয়ে আলোচনা করলেন, অবশেষে তেলের প্রসঙ্গ শেষ হল। আমি ভাবলাম, এবার বুঝি আমার কথা শুনবেন। কিন্তু ডাক্তার সাহেবকে বলতে শুনলাম “বন্ধু তুমি যখন ফোন করলা তখন তোমার কাছ থেকে একটা পরামর্শ নেই। বলত আমার রহিম আফরোজের ব্যাটারী ঠিক এক বছর পরপর নষ্ট হয়ে যাচ্ছে কেন। আগের বার ওয়ারেন্টি ছিল তাই ওরা বদলায় দিছে, এবার তো নাই, কি হবে?”
আলোচনা চলতেই আছে। আমি ভাবলাম বের হয়ে যাই নাকি। কিন্তু বের হলে আমারই লস, আমার তো চিকিৎসা টা দরকার।” কিন্তু ডাক্তার সাহেবের ব্যাটারি নিয়ে আলোচনা আর শেষ হয় না। কোন ব্র্যান্ড কিনলে দাম কম হবে, কার মামার খালা শ্বশুরের কাছে গেলে ডিসকাউন্ট পাওয়া যাবে ইত্যাদি বিতং চলতে থাকল। আমি শুধু ছটফট করি পাশে বসে।
অবশেষে প্রায় পনের বিশ মিনিট পরে আলোচনা শেষ হল। ওনার অ্যাসিসট্যান্ট এসে মনে করা দিল নামাজ পড়ার সময় হয়েছে। উনি ২০ সেকেন্ডে আমার কথা শুনলেন। কয়েকটা টেস্ট লিখলেন আর হসপিটালের নাম লিখে বললেন এখানে ভর্তি হন, আমি পরশু দিন গিয়ে দেখব।
আমি একবার ডাক্তারকে জিজ্ঞেস করলাম, ডাক্তার সাহেব, আমার প্রবেলম টা আপনি ঠিক মত শুনেছেন তো? উনি বললেন হ্যা শুনেছি। বলে আমার কাছ থেকে ফি টা নিয়ে ঝড়ে বেগে নামাজ পড়তে বের হয়ে গেলেন।
আমি মনে মনে বললাম “শালা চামারের বাচ্চা”।
পরে আমরা আরো আধঘন্টা ওয়েট করে আরেকজন মেডিসিন স্পেশালিস্ট কে দেখিয়ে হসপিটালাইজড হলাম সেই রাত্রেই। আল্লাহকে ধন্যবাদ যে এটা ডেঙ্গু ছিল না, ছিল ইউটিআই। মোটামুটি সহজেই বেঁচে গেলাম এযাত্রা। তিনদিন হসপিটালে থাকার পর আজকে দুপুর ২ টায় ছাড়া পেলাম।
জনাব বিশেষজ্ঞ ডাক্তার মোহাম্মাদ রওশন আলী সাহেব, আপনি যদি কখনো এই ব্লগ পড়ে থাকেন
আর আমাকে চিনবার খায়েশ হয়, তাহলে আপনার সুবিধার্থে জানিয়ে রাখলাম যে আমি পেশেন্ট নম্বর ২৬, সেপ্টেম্বরের ৬ তারিখ বিকাল ৪:৪৫ এ আপনার সঙ্গে আমার মোলাকাত হয়েছিল 🙂
Miproapps—The newest service around, Miproapps allows users to design a fan page by simply dragging & dropping elements to the center of the page. I found it to be one of the best services I’ve tried so far because it really is very easy to use, and it only took me a few minutes to create an interactive fan page.
A chart on that page will help you to quickly understand how each of these services differ from others. I am sad that MiproApps missed a quick point on “Custom Tab” which actually is there in MiproApps, just the process is not automated. It is possible only by request. All you have to do is open a support ticket and our engineers will take action as soon as they are in office.
We are working on this issue to make this process fully automated.
Facebook is changing all their page width to 520 px from 760px, effective from today. So if you haven’t worked on your page, it is your chance to get your hands dirty 🙂
Note: MiproApps is developed using PHP on top of Zend Framework, Memcache and External web services. Right now we are providing a whooping collection of 35 widgets in total, which you can add instantly on your facebook fanpage and they will work from your pages without any problem. The drag-n-drop style designer will make your job even easier 🙂
Supported Widgets (categorized):
1. Static Content category Static Images, Static Text, Link Builder and Contact-us form
2. Blogs category Posterous, WordPress, Tumblr and Blogger
3. Status Services category Tiwtter and Google Buzz
4. Video category Youtube, Vimeo, UStream, Any external video in flv format
5. Photo sharing category Flickr and Picasa
6. File sharing category Box.net
7. Audio category Last.fm and any externally uploaded mp3 audio
8. Facebook tools category Comments, LiveStream and Invite-Friends
9. Bookmark services category Digg, Delicious, Stumbleupon, Reddit and Technorati
10. Miscellaneous category Paypal Donation, Google Maps, External flash file, RSS feeds, IFrame, Poll, Image Slider (carousel) and SlideShare
Hope you will enjoy MiproApps, a nice application developed using Zend Framework :). MiproApps has been brought to you by my small startup Leevio
In MiproApps, our Visual Facebook Fanpage Desiger from Leevio, everything is built on top of a scalable plugin based architecture. Every plugin manages it’s data using a central plugin manager. Most of these data are isolated from each other, stored and served by the plugin manager without any special coding required from plugin developers. That makes everything simple. As storage and serving is fully managed by Plugin Manager, it helps us to cache, validate and sanitize user data properly from a single place.
But when we decided to add support for box.net, there comes a challenge. We have asked for username and password for box.net account from our users to pull out the data from their shared folders and files. “PASSWORD” – and that is the thing everyone thinks twice before providing to a third party. Everyone cares about their personal data security.
In MiproApps every data collected from user are submitted to storage service via Ajax request. And we simply cant send plain password collected by users in an Ajax request. What we did in this case is we had signed user’s sensitive information using a 128 bit public key (RSA) in client side. The private key is stored securely in our server and that encrypted information is decrypted only in server side. So client application has just the public key.
There were other challenges as well, while we went to implement this encryption in client side by Javascript and Decryption by PHP. Unfortunately PHPs Mcrypt doesnt support RSA, and Zend Framework doesnt provide any component for that. And there was a trick when you encrypt your data in JS. You must add a null byte at the end of your data, otherwise PHP cant decrypt it.
You can see some example code at here and you can use the RSA public/private key pair either by openssl shell command or the RSA key generator from ohdave.
The service layer is working smooth. Plugin developers doesnt need to bother about encryption and decryption. Everything was managed transparently under the hood. And so far we are only developing our plugins, data is secured and safe. Users can add their publicly shared box.net files directly in their facebook fanpage. For a sample output, you can check out my page. You will find the box.net component at the bottom right corner.
This week it was full of fun in Leevio. Our new wing ThemeStudio is now fully operational and working on exciting themes every month, and has already released a cool theme “StoneHenge“. ThemeStudio is working hard to update admin panel and bring new features to make our wordpress themes more usable everytime.
And there were two new updates on MiproApps this week. We have added support for Box.net and that means you can embed files from your box.net account directly in your Facebook fanpages. And we’ve also added a new widget for creating polls and collecting feedback from your Facebook fanpage visitors.
Releasing new updates and products are always fun! But that’s not the all for this week. We went to Bandarban (A nice place with lots of mountains and forest) and spent three days over there. It was just beautiful and refreshing. I will update some pics of this event on my Facebook profile, very soon.
We’ve released StoneHenge, a beautiful two colored and custom home page powered wordpress theme today. This theme comes with a image slider, featured posts, featured links and advertisement section and you can configure all of them using the easy to understand admin panel of StoneHenge
This is a list of available features in StoneHenge
* jQuery based Image Slider, fully configurable
* Widget Enabled
* Custom Homepage with featured posts, advertisement & featured links
* Links to your lifestream sites on homepage
* Custom footer, sidebar and categories
* Easy to use and not-feature-bloated admin panel
* Beautiful page navigation
* Sidebar with tabified latest, commented and popular posts.
* Simple yet elegant, Completeley Free!
It started in a funny way rather than a typical project plan, and finally turned into an important project for us in Leevio. Everyone in our team was so much excited to release our first flagship product, a web based service (mashup you can say) we called MiproApps. It is a visual designing tool for Facebook fanpages.
Facebook fanpages are popular media to publish your company information, portfolio or upcoming events on Facebook. To make your product outreach a massive amount of users, it is a popular tool that works good. While creating our fanpage for Leevio, we found that we are limited by available applications to decorate and present a page “really” well. What we could do is design our page in an ordinary way, like writing FBML tags and and embed those in a tab. Or we could develop an application and embed it’s tab to another tab on our page. Which one did we go with? NONE!
We thought that it would be really interesting if we can develop a service (some sort of a visual designer for such pages) by which everyone (anyone, seriously) can design and decorate their fanpage with some data they really want to deliver to their audience. So we did a quick meeting to find out if it was really possible by us, and the challenges we found are the followings
1. Limited canvas size,
2. Works with different data sources
3. Drag and drop friendly, with proper layering.
4. Compatible with major browsers (Firefox, Safari, IE, Opera and Chrome)
5. Proper caching and storing widget data
We decided to develop this project in a “release early, release often” fashion. We didnt want to deliver a HUGE giant bloated with too many widgets and services after working for tons of hours. Instead we wanted to deliver a working barebone skeleton for our users which performs it’s job pretty well, and then to add feature s gradually in a regular interval. It would also help us to decide quickly how users are reacting with our project.
We four developers worked really hard for next couple of weeks to make it work, in short sprints and milestones. And now it is available for your use – you can check it out at http://miproapps.com. There are more than 25 pretty useful widgets to help you designing your fanpage impressively. We’ve also added tutorials and screencasts for you. Lets see how did we work with all our challenges.
1. Limited Canvas Size
To make sure users still be able to design his page easily, we keep three pre defined size for each widgets. Width of these three sizes are designed in such a way so that anyone can design multi-column page, easily.
2. Works with different data sources.
The core of MiproApps are external data sources and a very well designed parser to parse those data source in an unified way. Guess what, most of these data source are ready to be pulled out. Almost all of them offers valid RSS/Atom feeds. And that saved us HUGE (GIGANTIC cud be more appropriate) amount of work to do by ourselves. We just collect username for each of these data sources (like twitter, youtube) and then we pulled out feeds for that specific user. Everything is about public data, and that also saved us from some pain about treating private and sensitive information. Except one widget (I will come to that later) we just asked for plain username from users. And for twitter, we had to deal with oath based authentication system so that we can pull out user’s timeline using their token. These tokens are for read-only access to be more trusted by our users. We set a caching time of 10 minutes so that we have to call only 6 times max for an user in an hour. Do you kno what is the current rate limit per user per hour in Twitter? it’s only 75!
3. Drag and drop friendliness
We choose jQuery UI as we are very good at jQuery. And I must confess, that was a very good decision indeed. The excellent support of managing draggable and droppable components in jQuery UI made our life really easier. The only thing we found tricky was to persist the draggable state of each component on “Design Canvas”. But anyway, it was done very effectively and is working really great. You should check this out at http://miproapps.com
And oh, by the way, the z-index layering was quite a UI challenge for us. On a Facebook page canvas area, the internal Facebook components has maximum z-ndex of “101”. So we had to deal with that to keep our components z-index lower than that, to avoid an overlay over any internal Facebook item (a dialog box, for example, or the notification dropdown 🙂 )
4. Compatible with major browsers
Oh boy, we were doomed in hell with a monster called IE and that really made our day terrible every minute!. However, we tamed the beast quite good and now it works well with MiproApps. Another friendly monster betrayed us at last minute, has a name “Chrome”. we are working on that subtle UI issues and hope to deliver some updates pretty soon.
5. Proper caching and storing user data
Now that was a major challenge we dealt with. Each user can use hundreds of widgets, which colt actually pull data from hundreds of different data sources out there. So caching is a very important step we’d taken care of from the first day. We used Memcached. And we designed the architecture to cache data from every widget separately, not as a page in a whole. And it was challenging to deal with failsafe condition (you remember twitter’s fail whale, right?). Some widgets needed to be dealt with extra care for the caching technology of Facebook itself. But in overall it was a good architecture and worked impressively well. We are proud of it!
Lets have a look at the tools, libraries and services we use for MiproApps
1. Subversion, definitely a life saver version controlling system.
2. Springloops as a subversion repository and deploy manager. It’s deploy manager is really awesome!
3. Lighthouse for Issue Tracking
4. Netbeans as our IDE, Mac OSX and Ubuntu as development OS. PHP and ZendFramework. For oAuth, we used PECL oAuth library. Memcached was used for caching.
5. jQuery and jQuery UI. The image slider you see on the front page was done using the brilliant Coin Slider.
6. Screencast was recorded by Screenium. Tutorial screenshots were taken using Jing.
7. Icons came from MediaLoot and legendary Silk by Famfamfam.
So that’s It – have a look at MiproApps at http://miproapps.com. Currently the application is in beta mode (all plans are free during beta – beside that, there will always be a free plan for everyone) and we are adding exciting widgets everyday. Hope you will like it.
Its been one month and two days in Leevio, my small start up. We’ve started officially from May 1st. It is always a great feeling to start something from scratch, shop for the office and decorate everything. We took our office on 7th floor, with a nice terrace in front of it.
Right now we are a small team working on some small projects. And working hard to release our first product very soon 🙂 Currently we are five men in the team. Raquibul Islam Rana and Ashfaque Hossain Rocky joins from the very beginning. Rana has recently graduated from RUET and he is playing a vital role to co ordinate everything in the team. He is a nice kid having very good knowledge on facebook application development. Ashfaque, on the other hand is our quality assurance engineer. He is a very good free hand artist. Apart from that, he is doing one of the toughest job for us by assuring the quality in our web apps.
Kauser Sarker Nilove joined us on 1st may. He had also graduated from RUET this year and he has good base on codeigniter, the framework that we currently use. We are giving him constant pain by forwarding all jQuery related stuffs, and he is managing them quite nicely, lol. I am sure, he started hating jQuery more than anything else 😛 – We love his expertise on codeigniter, honestly.
We have appointed Zaman A Piri Pasha (Pollob) on 13th the unlucky day. And we’ve discovered that he has a very good base on CSS, apart from his skill on codeigniter and jQuery. Pollob is a very fast learner and loves to sleep when he has nothing to do.
We are trying to develop communication skill of everyone by introducing weekly tutorial days. And we are trying to keep a nice environment in our office.
By the way, did I forget to mention about thrilling urban terror sessions that we play everyday after lunch? 🙂 We play on Riyadh and almost everyone plays with ZMLR 300. I am trying to increase my skill on G36 and Ashfaque is very good at sniping – lol
It was a nice evening at Tech Seminar: Beyond 2010 in Brac University. This event was arranged by Blueliner BD and was organized by BUCC (Brac University Computer Club). I presented my session on “Yahoo pipes and YQL” which you can download from here.
After searching for help to connect with LinkedIn via their oAuth protocol using PECL oAuth extension, I’ve found that lots of people are posting in their forum for the code samples. And only very few obscure code examples are available. I’ve found phplinkedin script but that is just too bulky for a simple oAuth dance 🙂
So here are two files to perform 3 step oAuth Dance for both twitter and linkedin. Just set your consumer key and consumer secret key in these scripts (config.php) and in your LinkedIn and Twitter application, set the url of these scripts as authentication callback 🙂 thats it 🙂
As like before, LightningTalks4 arranged by SQABD was really great this time. This time it was sponsored by bGlobal Sourcing and I really enjoyed a nice evening with all the techy geeks after a long time 🙂
I presented my session on “BanglaInput Manager, jQuery Plugin” and you can download the slides from the following two links