It’s LIVE! Check out the bootcamp signup here.
Thanks for all the comments and interest on the previous post. In that post I discussed the importance of great app design and showed some of the cool newish demos I built to highlight the general direction. I also talked about the importance of personal mentorship especially with new/elaborate mobile technologies where everything is different.
I also discussed the bootcamp with broad strokes, I won’t go into too many details about it today (I’ll write more later in the week). Just to clarify the general direction, the main focus will be on UI/UX. This means we will build a complete production grade application from the ground up with server connectivity and everything… I’m aiming this as an advanced bootcamp (deep into native interfaces etc.) but I have provisions for people who are new to Codename One.
One of the things that really excites me is getting to know you (our community) better on a more personal level. I find it very hard to keep up with all the thousands of people that I’ve communicated with in the past 5 years. Putting faces, voices and some context is something I’m eagerly looking forward to.
It’s been over 10 years since Chen and I started what would later become Codename One and almost 9 years since we open sourced that to the world at Java One. Over these years our offering grew and shifted so quickly that we sometimes forget to mention or document some substantial pieces…
Case in point: Steve implemented an integration with Spring based on yeoman a while back and I don’t think we told anyone.
E.g. you can do this using npm/yo:
sudo npm install -g generator-cn1-spring-app
yo cn1-spring-app MySpringApp
sudo command might not be needed on all platforms
I’m not sure if I’ll use this in the bootcamp though… Chen is pushing for Spring Boot while I have some thoughts about using JHipster or maybe something else?
If you have strong feelings/opinions on this please let me know in the comments.
I’m not sure how crucial this will be as the core focus is on the client side and the communication layers. On the server we’ll work a lot on the networking aspects, push etc. but most of that stuff is very simple. My goal is to create something that will be generic enough that you can adapt it almost seamlessly to your environment.
From Zero to Millions of Downloads
One of the main things I want to focus on is "real life" and the transformational effect of this approach. One of my best examples for this is Ram Nathaniel who is probably one of the first developers using our platform.
Ram picked up Codename One during the beta & built one of the coolest apps ever back in 2012. It’s a bit dated by now with its design but it works well and had gained a loyal following because it’s an amazing app.
Ram shipped his app on iOS & Android without a problem but it stagnated for a couple of years. Ram like a lot of us didn’t have the proper expertise in marketing and promotion to push the app to the prominent place it needs to be. A lot of apps die in this exact spot… Most of us think of a competitor as the worst thing that can happen to our app and a strong competitor is exactly what happened!
A highly visible YC funded company entered the field and got a lot of visibility/PR.
This sounds like a disaster right?
In Rams case this was a blessing!
Typically for that time the newcomer was available only in iOS. Ram seized the opportunity & as a result people searching for similar solutions on Android installed his app increasing his install base by leaps and bounds. These users shared the app socially boosting his iOS installs as well.
While the specific app Ram built is unique, the lessons learned are not. Getting into the market fast and supporting secondary markets such as Windows Mobile is often a powerful play for smaller companies. You still need to invest in design, marketing and the general alphabet soup as you don’t want to rely on luck alone.
This isn’t unique to the startup world. I worked with customers ranging from banks to operators and so forth. They all benefited from a simpler approach to mobile.
I got a lot of feedback both in the emails and comments in the various posts I made on the subject. The feedback has been overwhelmingly positive and raised a few interesting points. I won’t quote emails/comments directly as I didn’t ask for permission beforehand…
So here are some of the things I want to address within the bootcamp:
Full application development process from certificate to final app in the store
Multi-DPI and resolution independence
Building a gorgeous UI - adopting it from PSD. Adapting to platform native conventions or overriding them entirely
Using both designer and using CSS to build UI
Animations & Transitions - the different types of animations, where and how to use them
Threading, the EDT & network threads
Custom components, composite components and lead components
Working with GUI builder and it’s underlying XML
Localization, Internationalization & RTL/Bidi
Working with sqlite DB
Application design - separation of concerns, best practices & Codename One’s interpretation of MVC
Tuning performance and memory usage for consistent cross device usability
Working with native code, integrating native library
On device debugging with a Mac
Client server communication - webservices & web sockets
Server initiated push
Time permitting I’d like to also cover things like parse, databinding with properties, debugging the Codename One sources etc.
Because of the way a bootcamp is structured this is pretty fluid and we’ll shift it around add/de-emphasize things based on the desires of the group.
I’m also still looking for feedback on that list so if you think something is missing please let me know.
Later in the week I want to outline the exactly how everything will work out as there is obvious logistic complexity with my time and how we are going to run this bootcamp.
I’m thinking about it as a startup experience to go thru together, it’s hard, fast and very effective. The intensity is a core part of a good bootcamp and it applies to everyone who takes part in a bootcamp including me. The trick that always works for me is to dive head first into the challenge.
I got a lot of personal contacts and a some comments asking how they can join. I’m sorry but we just haven’t scheduled everything yet so I don’t know for sure. I’ll try to get the basics up by the end of the week & by early next week I think I’ll have the final details. What I can tell is that we’d like to move fast and open/close signup quickly as the scheduling for this is turning out to be really difficult.
P.S. Thanks to all of you who shared my last post within your social circle, I really appreciate that as it brings more people into the discussion and helps us make a better product overall. I would appreciate your taking the time to share this article as well!