Android Studio Mac OSX Installation Error — NoClassDefFoundError: Could not initialize class javax.crypto.SunJCE_b

Today I decided to play with Android and build a simple app. I downloaded the latest version of Android Studio for Mac from the official website http://developer.android.com/sdk/index.html. As soon as I tried to install the Android Studio on my Mac book (OSX YoseMite 10.10.2) I was greeted with a weird error message as shown below.

Internal error. Please report to https://code.google.com/p/android/issues

java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.SunJCE_b
at javax.crypto.KeyGenerator.a(DashoA13*..)
at javax.crypto.KeyGenerator.(DashoA13*..)
at javax.crypto.KeyGenerator.getInstance(DashoA13*..)

You get this error because you need to have Java 6 installed on your Mac. To get rid of this error, just download the Java from this link https://support.apple.com/kb/DL1572?locale=en_US. Once Java 6 is installed, open the Android Studio app again and you will be able to work with Android Studio :)

How to resize a Virtual Box virtual machine hard disk size

Today while working on a project I had to resize hard disk size of one of the virtual machines. The Windows virtual machine was created using veewee. To resize a VM hard disk size, you have to perform couple of steps:

1. Run the $ VBoxManage modifyhd ~/VirtualBox\ VMs/windows2008/windows20081.vdi –resize 20480 command.

2. Follow the steps mentioned in this post http://derekmolloy.ie/resize-a-virtualbox-disk/ to understand how you can use the gparted to allocate the unallocated space.

Writing Test Automation Framework for Installers

Last few weeks I have spent considerable time writing integration test suite for one of our product installers. The goal of this test suite is to automatically test functionality of the product on various operating systems. Currently, we are running our automated test suite on Windows 2008, Windows 7, and Windows 8 systems. In this blog, I will first talk about the technology stack that we used to build our automation framework and then I explain  how you can write such test suite using Java installer as an example. Continue reading Writing Test Automation Framework for Installers

Writing your First Technology Book

So I wrote my first book. It is a great feeling to find your book available on Amazon http://www.amazon.com/OpenShift-Cookbook-Shekhar-Gulati/dp/1783981202/. I have read many motivational books or quotes that suggest everyone should write at least one book in their lifetime even if no one reads it. I hope people will find my book useful and learn from it. This blog is not about my book but it is about the lessons I learnt while writing the book.

  1. Limit book scope: As a first time writer it is very tempting to include a lot of related topics in the book outline. I made this mistake in my book outline but as I started writing the book it became clear that I should drop few topics to write a cohesive book. Pay a lot of attention to the book outline and don’t try to put everything in the book. For example, my book is about OpenShift, a platform as a service that supports Java, Python, Node, Ruby, PHP, and Perl runtimes. In my book outline, I proposed to include everything except Perl and Ruby.  After writing few chapters it became clear that we can’t include everything in one book as it would lead to a book that covers lot of topics but none of the topic would be covered in entirety. Keep in mind book outline will change so always try to keep publisher updated on the same.
  2. Your Estimates will be wrong: The book started with the initial estimate of 250 pages and 6 months writing time. We ended with 430 pages and it took more than 10 months to finish. I suggest you take book writing as another software development project. Like most software development projects, book estimates can also be wrong. The better way to write a book is by taking an iterative approach where you re-estimate after writing each chapter. Consider book writing as an Agile software development project rather than a waterfall project.
  3. Plan your book: I suggest if you wish to write a book on a topic then you should first write a blog series on that topic. I have written close to 70 blogs on OpenShift and that helped me a lot. This not only help in content creation but also gives you an audience that would like to read your book. Make sure to tell the publisher in advance that you would use your blogs.
  4. Managing your time: Writing is a very tedious and time consuming task. Writing a technology book involves various tasks like writing book text, creating sample applications, learning new changes introduced in the topic etc.There would be days when you will be productive and write a lot of content and there will be days when you will not be able to contribute much. Be prepared for lean patches as book writing can tire you more quickly than writing code. Initially I used to write book only on weekends but that didn’t worked for me as my writing flow suffered during the week. I tried writing on weekdays after office hours but that too very quickly became tiring. It is very difficult to write a book with office work. Try to plan few weeks holiday to work on the book. I took a couple of weeks off and only worked on the book. This really helped me finish book and maintain my writing flow.
  5. Read books: As a first time writer there will be times when you will be unsure about a topic or how to correctly convey it to the readers. Reading books can help you learn some tricks or improve your writing style that will help you convey your point better to the readers. Try to steal ideas from good books and apply to your book.
  6. Become comfortable with the book format: I wrote a cookbook that required me to use a predefined template. This sometimes restricts you and slow you down.
  7. Keep all book artifacts in a version control system: I used a private Github repository to store all my book artifacts  including content, images, invoices, source code etc.This not only helps as backup and version control system but also helps to analyze your writing habits. For example, the Github repository contribution graph shown below clearly show my writing flow throughout book writing period.book_contributions_over_timeI also used a separate public Github organization https://github.com/OpenShift-Cookbook for the web applications I developed in the book. This helped me keep all book related application source separate from my own Github account.
  8. Plan for software updates: The biggest problem in writing technology books is that technology changes/deprecates very rapidly. There could be a significant change in the software library that would impact your book quality and correctness.

Hope you find these useful when you write your first book.

How to Write Node.js Applications in Python using PythonJS on OpenShift

Today I came across an interesting library called PythonJS that converts Python to JavaScript. It converts to JavaScript and generates JavaScript, CoffeeScript, and Dart code for the given Python code. In this blog you will learn how you can use PythonJS to deploy Python’s Tornado web framework application to OpenShift’s Node 0.10 cartridge. Read the full blog here https://www.openshift.com/blogs/how-to-write-nodejs-applications-in-python-using-pythonjs-on-openshift

Java EE7 Development and Hosting on OpenShift with Wildfly: Part 1

This is the first blog post in a series where I will cover how to build web applications in Java using Java EE 7. Java EE 7 is the latest release of the Java Enterprise Platform, with a focus on HTML 5 and developer productivity.

Java EE 7 introduced five new specifications covering WebSockets (JSR-356), JSON Processing (JSR-353), Batch Applications (JSR-352), Concurrency Utilities (JSR-236), and Caching (JSR-107). Apart from these new specifications, three existing specifications (JAX-RS 2.0JMS 2.0, and EL 3.0) have major updates and a few other specifications have minor updates. We will cover most of these specifications in detail in this blog post series.

Read full blog here https://www.openshift.com/blogs/java-ee7-development-and-hosting-on-openshift-with-wildfly-part-1