Books, Post mortems, Multi-tenenacy, SaaS, Kindle, SQL, Tomcat, Maintainability
Post date: Jul 10, 2012 4:06:49 AM
Well, I have had more time than usual to dig thorough all kind of information. Here's just some of it.
- Summer reading / books:
- http://singlepageappbook.com/
- http://www.12factor.net/
- Finished reading: Simply a Great Manager.
- Those four books have been completely read and understood.
- Added some more wonderfully delightful summer reading to my Kindle.
- Next in queue: The Four Steps to the Epiphany by Steve Blank, Rework by Jason Fried, The Art of the Start by Guy Kawasaki.
- Also added What Every Body is Saying by Joe Navarro.
- I have been always very analytical person, but I need to study psychology side bit more. It's just to strengthen my full skill set. From entrepreneur books it's clear that you need to have psychological management skills to ride that start-up roller coaster out without becoming too desperate.
- Amazon, Heroku and Netflix postmortems and what did they learn from these power outages. Again, it's very important to do root cause analysis or at least five whys.
- Applications and services should be designed so that do work in off-line situations. If possible, devices, applications and services should be able to live with off-line situation. In this case, it was the data center end that was unavailable. But most people just forget, that even if data center being down is big deal. It's much much more common to have the network disruption at the client end. Therefore designing systems so that being off-line isn't a problem is quite a good idea.
- Lot of tuning with Linux / Xorg and Nvidia drivers. Uh oh. XFCE, Multi screen desktop etc.
- Studied more multi-tenancy and SaaS stuff. I'm quite happy about this, now when I read something about the subject, it's really easy so scan books / documents through because I know most of it. It means that I have pretty good basic knowledge level.
- After last Kindle software update "Turn wifi off" option isn't available anymore. Of course you can achieve same result by enabling "Airplane mode", but it's buried under settings instead of main menu. I assume they want to know more about your reading habits. Kindle is now updating all information to their servers in near realtime.
- Studied IPv6 tunneling and tested bypassing firewalls, filters & virus checkers with it. So, teredo / miredo and 6to4 can be real security risk unless those are properly handled.
- Fixed a few apps with SQL inefficiencies. One app made tons of independent queries, I replaced that with one in statement. One app lacked indexing completely, slow query log was really flooded. One app did really many queries using loops, I replaced that structure with a few pivot queries. One app requested data from db in wrong stage of loop, reading same data over and over again without internally storing it. Source table wasn't too big, but it still made one query on every iteration, which wasn't required at all. Now I load all data before loop to in memory dictionary. After this minor change that process run about 50 times faster then it previously did.
- One app wasn't reusing Tomcat sessions. It opened new session when ever it needed to access web service. Then sessions were left open, until timeout. That's what I would call really bad design, app used tons of memory and Tomcat (Apache Jakarta) came really slow and unresponsive after about 5000 sessions being open.
- Thoroughly studied HTTP Speed+Mobility specification from Microsoft and compared it with latest SPDY specs.
- Carefully studied documentation: Mepin for Service Providers and for Consumers.
- Studied book how to create maintainable products: challenges created by organic growth, last of refactoring, technical debt, etc. Simply put, how to make well / easily maintainable products, it's way too easy to end up with spaghetti code which unfortunately makes even small projects very quickly totally unmaintainable.