How do tech startups win the hearts of developers with their products? What does it take to create value and get developers to use their tools? Our guest Vasil from AndroidPal talked to us about these challenges and shared a few tips on Android development.
I’m Vasil, owner and CEO of AndroidPal Ltd. and other businesses like Belvek Ltd. I have been into computer technologies most of my life, during the last 10 years — professionally.
My interest in technology and computers started when I was very young, probably at the age of 7. Back then people did not have computers at home. My brother and I had the chance to land in an after-school activity to learn programming. It was only once per week and we couldn’t wait for it to start. We were taught BASIC back then on computers called Pravetz.
We’ve initially worked with 8-bit but later 16-bit computers which were mostly identical with the Apple II computer. It seemed I had a knack for programming, maybe because I was good at Maths.
Additionally I’ve studied and worked with other popular at the time programming languages and technologies like VBScript (yes, it was a thing), Visual Basic, Delphi, OpenGL, PHP, ASP (prior to .NET) and of course HTML.
Fast forward 15 years and I started my own IT company. We’re based in Sofia, Bulgaria and have been providing software development and related services for more than 6 years now.
Most of our clients are from USA, Germany, Austria and Italy. We also have our own products and services in different fields – education, travel, gaming and entertainment.
We’ve been developing one way or another for Android for almost exactly 9 years now. I can still remember the first Android phone I got – HTC Desire. I think it must have been mid March 2010 when I’ve heard of the phone. I really liked it, but said to myself that I can buy it only after I’ve created a simple app for Android and learn more about Android development.
Back then developing for Android was not easy, the current Android version at the time was Android 1.5 but I remember that writing Android apps I had to support Android 1.1 too.
Developing for Android was done with Eclipse. Eclipse is an open source IDE and back then, at least developing for Android with it was not easy. There were too many issues with the IDE – it required too much memory, freezed often, needed restarts and obscure workarounds to make it stable.
So, that first app that I built used Android NDK and had C and C++ code to allow fast image manipulation. And fast it was – probably 3 to 5 times faster than manipulating the image data directly in Java. Of course a year later the Dalvik VM got JIT which would make a Java implementation comparable in terms of speed.
Ever since that first app I and later the people I work with are developing more and more for Android working on big or small projects for various industries.
And yes, I bought that HTC Desire phone on May 21st 2010 (I know the date because I bragged to a friend over email).
AndroidPal started because of a problem. We were working on an Android app with a particularly complex graphical user interface. We’ve inherited the code of another company and struggled making certain views (the interface) work. To such extent that we had to create a tool to inspect the layout better. This is how our own View Hierarchy Inspector tool was born.
We thought it would be very useful to developers like ourselves and it would be great if we created other helpful tools.
With more than 2.7 billion active users undoubtedly Android OS is the most popular OS. There constantly are new technologies and frameworks and SDK updates and languages coming out. We know how overwhelming it can be for developers, and it is.
So we thought we start an online community centered around Android Development — this is what AndroidPal is all about. It’s a website where you can find useful information, chat with peers and learn. The site has different sections like – Questions, Libraries, Knowledge Base and Chat.
We’ve built all of these as only the foundation onto which we can implement all our other ideas. AP Studio is part of AndroidPal and the name is just a short version of “Android Pal Studio”.
AP Studio offers tools which Android Studio does not. One example would be the Icon Creator, probably the most popular AndroidPal Studio tool among existing users. Then there is the Shape Drawable creator and other tools. Say you want to create a Shape drawable resource file, you might need to check the docs to recall the exact specs and write XML text code. Our tool works visually. It has controls based strictly on the specs so you can’t go wrong.
Among other things this saves time. The tools are built into the IDE and there are quick actions to streamline the process. For example when you create an icon for your app AP Studio can immediately and automatically set it as your app’s launcher icon.
Then there is the snappiness of AP Studio. It does not have the heavy requirements of Android Studio and feels much quicker. In our work we sometimes need to make a small change and see the result right away, no need to spin another instance of Android Studio in such cases. We’re dedicated to increase the snappiness factor even further.
Our best ideas are yet to be implemented. One such idea is how to organize and reuse resources and experience from different projects. One way is to have a library of resources, for example a library of icons or library of layouts. Something that you can navigate easily. A public as well as developer’s very own private library. Our Shape Drawable Creator tool does have a public library with 8 free items, we’ll add more and accept submissions by developers and improve and categorize things a lot in the next iterations of the software.
Indeed everything in AP Studio is ad hoc. Android Studio is based on IntelliJ Idea which is a great software, but has been built as a generic purpose IDE. Google had to create a plugin for it. At some point we wanted to create our own plugins for Android Studio, but the IntelliJ Idea plugins documentation and the effort required to do so seemed overwhelming. Simple things would require a lot of work.
Therefore being ad-hoc and using modern technologies allows us to have a special touch in everything and to quickly respond and implement user suggested features.
To summarize, I would recommend developers use our IDE because it offers new tools and ultimately saves time and leads to less errors.
Building an IDE is not a trivial task, it was much more effort than we’ve initially imagined.
Entering an unknown territory was very challenging. It’s a different kind of software than what we’ve done before. Also the sheer amount of technologies involved, the research of how things work and why, reading and understanding the (sometimes lacking) documentations – it’s a very big effort.
But it’s fun and rewarding to see things work. To get to a stage where we can start paying more attention to UX as functionality is already fine.
Martin, one of the main developers of the project had this to say:
“Having only been working on web sites and web apps I found using Angular for a Desktop app was something completely new to me. In my work on the project I’ve encountered things which were different from my usual Web development work. It was a tough but interesting work and certain tasks seemed overwhelming, but I did not give up and as a result became a better developer overall.”
Even though it’s well featured IDE now and offers everything you need to develop for Android we’re long way of having all our ideas implemented.
On the whole we want to improve the online part and include interactive guides for beginners, different tools. To name but a few things coming:
One other non-technical aspect of the project is AP Academy where we would apply our experience in teaching and explaining Android topics to a wider audience and in ways that would make the whole learning process better.
Software development is not an easy thing. Being a professional software developer means you have to keep up with all technologies as much as you can. Learning and improving is a lifelong process. Becoming good takes years. The best piece of advice would be to not give up when there’s a tough problem to solve. So, keep calm and don’t give up.
For most developers there would always be someone who is better in a particular aspect of programming. We should be humble and strive to learn.
As software developers we should always try to solve problems. Not to learn the syntax of a programming language as best as you can. Or learn the most number of programming patterns. What brings value is solving problems. Being creative when solving problems is equally important.
But this is just some developer with 10 years experience talking. There are far more experienced developers who have been into technology from much earlier days. There are great books out there every developer should read. The list might be long and depend on what kind of programming you do, but I would always recommend the books of Uncle Bob (Robert C. Martin) — for example one of his best known books “Clean Code”. Another book I’d recommend is “The Pragmatic Programmer” by Andrew Hunt and Dave Thomas.
One way or another we use the following technologies across AndroidPal and in AP Studio in particular:
Then there are libraries and frameworks within those technologies which are too many to list.
Using HTML5 for the interface made so many things so much easier than in other platforms (comparing for example using existing Java GUI frameworks or creating our own). The freedom and ease such a mature technology offers is something we’ve really learnt to appreciate.
HTML5 and Angular made the big difference. Can’t even begin to imagine how much more effort it would require to do this with traditional technologies.