Author Archives: cyberaka

About cyberaka

I am an experienced Senior Solution Architect with proven history of designing robust and highly available Java based solutions. I am skilled in architecting designing and developing scalable, highly available, fault tolerant and concurrent systems which can serve high volume traffic. I have hands on experience in designing RESTful MicroServices architecture using Spring Boot, Spring Cloud, MongoDB, Java 8, Redis and Kafka. I like TDD (JUnit), BDD (Cucumber) and DDD based development as required for my projects. I have used AWS primarily for cloud based deployment and I like developing cloud enabled POC as a hobby in my spare time. I have deigned and developed CI/CD pipeline using Jenkins and leveraged Docker, Kubernetes for containerizing and deploying some of my applications. I am highly experienced in creating high performing technical teams from scratch. As an ex-entrepreneur I am very much involved in the business side of the IT industry. I love interacting with clients to understand their requirements and get the job done.

Articles Digest for Week #5

Some Articles which I found quite interesting

iOS conferences around the globe
http://www.raywenderlich.com/29341/top-10-ios-conferences-in-2013

Popular shortcuts of Eclipse.
http://pcquest.ciol.com/content/Developer/2013/113013001.asp

Control your Android phone via a Windows PC.
http://pcquest.ciol.com/content/handson/2013/113012903.asp

Cool and Innovative apps using Raspberry PI
http://pcquest.ciol.com/content/techtrends/2013/113012903.asp
http://www.businessinsider.com/10-mind-blowing-raspberry-pi-projects-2013-1

Service Tax Payment in India for digital income
http://www.labnol.org/india/service-tax-bloggers/27749/

As a policy I disable Adobe Flash and Java on any web browser I use on my computers. This article supplements this idea by showing how to disable plugins in Chrome.
http://www.labnol.org/software/google-chrome-flash-crashes/27753/

Interesting article about generating leads online
http://www.incomediary.com/how-to-attract-leads-and-land-clients-online

Finding Duplicates of Images even if the duplicates are retouched
http://www.megaleecher.net/Duplicate_Image_Finder_Pro

An interesting tool to clear up space on your phone
http://www.megaleecher.net/node/2072

Some tech secrets from Business Insider
http://www.businessinsider.com/business-insider-tech-secrets-2013-2

Installing and running Android on a Windows PC
http://geeknizer.com/install-run-android-on-windows-pc-natively/

Prioritizing Network Connection in Windows

Windows somehow gives LAN cable connection priority for connecting to internet. This was a mystery which has boggled me for quite some time. Recently I landed in a scenario where on my laptop I had a LAN cable connection as well as a WiFi connection. Now in this situation both Ethernet and WiFi adapter have got internet access via different ISP and the gateway for both are different. Now I wanted my FTP client to download stuffs via my LAN cable and I wanted my Dropbox client to upload files via my WiFi connection. After spending some time on internet I found out that the only solution that guarantees result is to take control over the metrics of the network adapters. If the metrics of WiFi is made lower than the metrics of Ethernet then Windows OS routes all internet traffic via WiFi. After changing the metrics I checked and confirmed that my Browser and Dropbox applications were using WiFi instead of Ethernet. This seems to be working reliably for now. I performed the following steps:

  1. Open command prompt (type cmd.exe in Start Menu in Win 7 or in Run dialog in Win XP).
  2. Type ncpa.cpl (This will open the network connections windows)
  3. Right click on your Wireless Network Connection adapter (WiFi).
  4. Click on “Properties” in the popup. This will open the properties dialog.
  5. In the properties dialog choose “Internet Protocol Version 4 (TCP/IPv4)”.
  6. Click on “Properties” button. This will open the “Internet Protocol Version 4 (TCP/IPv4) Properties”.
  7. Click on the “Advanced” button. This will open the “Advanced TCP/IP Settings”.
  8. In this dialog uncheck the “Automatic Metric” checkbox.
  9. Type ‘1’ without quotes in the “Interface metric” text field.
  10. Click on OK in this dialog and the underlying dialog to save your changes. Click on “Close” in the properties dialog to conclude this task.
  11. Now in the Network Connections window select your “Local Area Connection” (Ethernet Adapter).
  12. Repeat steps 4 through 10 with the only difference that in step 9 type ‘2’ instead of ‘1’.
  13. That’s it you are done.

The idea is that if you provide a lower metrics to your WiFi and a higher metrics to your LAN/Ethernet adapter then Windows OS will always use your WiFi connection for all Internet traffic. This worked well for me.

Using wget to do high speed HTTP transfer within LAN

Today I needed to transfer contents between my Linux servers using a CAT5 LAN connection. The source server served files via HTTP and also had a FTP server running. I ruled out using FTP for transfer as I wanted to do the transfer via command line recursively so the natural candidate was wget. On the target Linux box I executed the following command to get a good transfer speed:
wget -r -nH –cut-dirs=2 –no-parent –reject=”index.html*” http://192.168.111.116/files/dump/
The speed received was something like this:
Downloaded: 2476 files, 27G in 45m 49s (10.0 MB/s)

This completed the job in a a short while with no residual HTML file being generated in target.

Founding Principles for a Development Shop

A development shop can be broadly associated with service delivery (consultation and service at cost) or product delivery (product sold at cost).  I think the following principles could be applied to both:
  • Always try to Innovate
  • There are different ways of solving a problem. Try finding the best approach.
  • Have faith in your teams capability to deliver anything.
  • Have faith in yourself and believe that you have potential to change the world.
  • You need to have flexibility and the capability to move fast.
  • Always try to work in the team but also hold your identity.
  • Believe in sharing knowledge and tips.
  • Trust your colleagues.
  • Avoid bureaucracy and politics like plague.
  • Customer is the king. If a customer doesn’t know something be ready with a training session.
  • An absurd idea is not always a stupid idea. Be open and receptive.
The core belief is the willingness to innovate and allow customer to be the final judge.

Traits of a bad programmer

A bad programmer is somebody who I personally consider a liability to any team. This category of programmers have the potential to bring down a project and even a full team. It is always better to either notify them of their deficiencies so that they improve or to ultimately save the team by removing them. I tend to identify a bad programmer from their following traits:

Lack of curiosity
If a programmer is not curious about the API and considers superficial knowledge as sufficient then it is the first warning bell that this particular person will have a mediocre knowledge and as a result mediocre performance.

Difficult to Understand Code
If the code a programmer writes is bug laden and the code itself is messy and unnecessarily large then you are dealing with a bad programmer.

Lack of Depth in Knowledge
Superficial knowledge about a topic is a dangerous attribute of a bad programmer. This can bring less than optimized behavior in the software. This superficial knowledge can range from programming API, tools of trade and even the problem domain itself.

Unwillingness to do defensive coding
A programmer has to consider lots of scenarios which can be documented as test cases or even unit tests. If a programmer only considers a general scenario and fails to accommodate the not so general scenario then the result is often a bug laden software.

Unwillingness to comment or improve code
A commented source code is an asset and an un-commented source code is a liability.  A programmer rarely works alone and if the source code written by them is not documented then it doubles up the amount of time required to fix their code. If a programmer never has time to comment the code or even simplify the code by writing smaller pieces of a large piece of code then this is a dead give away of a bad programmer.

Aversion to feedback
Any programmer worth his salt should be open to feedback from his peers. If a programmer is unfazed by negative feedback and doesn’t consider his responsibility to fix his code as a result of feedback then he is a bad programmer. A programmer should learn to make decisions based on experience and also the feedback received from peers and customers.

Eclipse RCP – Application … could not be found in the registry.

While trying to integrate Eclipse Forms into an existing Eclipse RCP application I encountered a launch issue where the launch failed with this error:

java.lang.RuntimeException: Application  could not be found in the registry. The applications available are: org.eclipse.equinox.app.error.

Well the strange thing was I could do the relevant import of Eclipse Forms package in the Java editor while doing development but I got the above error while launching it. I thought it might be launch configuration issue so I went to Project Properties > Run/Debug Settgins > [Select Launch Configuration] > Edit. This opened up the Edit Configuration dialog where we have a Plugins tab. In the plugins tab sure enough the Eclipse Forms plugin was unchecked. I checked this check box for this plugin, saved the configuration and launched the application. This time no error happened.

By default Eclipse RCP didn’t tell me what the problem was. I spent some trying to guess the problem before finding the solution. The lesson from this experience is that we should always use “-debug” argument in the launch configuration as it clearly outputs on log any error which might not be properly reported via error dialog.

Kodak, where are thou?

Kodak filed for Bankrupcy this month and I believe this is a wake up call to all the small, medium and big tech companies out there who are resting on there laurels based on their performance so far.  The million dollar lesson which we should learn from Kodak’s demise is that a company has to innovate and stay relevant in their business. They have to innovate in order to stay relevant, they have to stay relevant so that they can survive in their current business, they have to survive in their current business so that they can look for expanding into new business. Kodak had everything going a few decades ago and as per records it had the right mix of patents and innovation to actually make a huge mark in digital camera and cell phone industry. Kodak really had a shot at launching a kPhone just like an iPhone and be relevant on todays stock market index, but somehow they didn’t take advantage of all these facts. Its sobering to see a behemoth like Kodak go down under and it serves as a lesson for every company operating in tech-biz to keep innovating and stay relevant or risk obscurity.

Interesting Articles 13 July, 2011

Here are some interesting articles I found from various sources.

Java Meets Objective-C

Secure Login in AJAX Applications

Sizing Android Visual Elements Correctly

Adobe Woos Mobile Developers With Flash Builder 4.5 and Flex 4.5

Secure Login in AJAX Applications

11 Insider Tips You Must Follow If You Want Your App To Succeed

How To Create A Game Like Tiny Wings Part 1 Using Cocos2D

iOS 5 beta 3 released for Apple iPhone, iPad, iPod touch, Apple TV