Why should startups pick hybrid

When starting an app based startup you have a couple of options, one you could pick one platform to target first, two pick to hit all platforms at once with their own native app or build a cross platform app using a technology that allows you to build cross platform from the one code base.
Depending on the size and budget of your startup maybe a factor for which option you pick. For those single founder companies, a guy with an idea but not the technicial skills to build an app the cross platform approach is a good option.
Going down this route allows you to find a developer who can build apps with one of these cross platform technologies and then work with them to build the app you are after.

Usually this developer is a solo developer who will/should work with you hand in hand helping you build the app you have in mind. Finding this developer can be tricky you need someone you get on with, someone who delivers and someone who will help advise you. It’s your idea but they need to use their skills in order to create the best cross platform app for your business.

So if you have an idea for an app, but don’t know how to build one, maybe a cross platform hybrid solution would be the best option to see your idea come to life.

Being a fan of Indie Devs

I remember a few years ago reading about MicroISVs, it was a term created by Eric Sink it stands for independent software vendor. I always liked the idea of being a one man/person software shop. Being your own products, making a living for yourself.

When the app store was launched there were hundreds of developers now using the app store to make their living, the Indie Dev movement was born.

Like I mentioned I’ve always been a fan of this indie dev movement. I liked reading blogs from developers like David Smith, Daniel Jalkut, Marco Arment and of course John Saddington who created DeskPM the tool I’m using to write this post.

While I was always a fan of these people, I always had the plan to eventually become a Indie dev, spending all day developing my apps (usually from the beach) making a comfortable living from my own apps, but I’m a web developer. I have no Objective-C experience. So making apps for the app store was just a dream.

Now thanks to platforms like Ionic, NativeScript and AppCelerator a web developer like me can start building apps for the app store (both Native and Hybrid). This is great, but there is another thing that was holding me back the horror stories of developers trying to make a living on the app store and failing (as a family man with a mortgage I really can’t take the risk).

But after listening to David Smith and Marco Arment’s new podcast Under the Radar in the episode about Work/Life Balance David Smith mentioned that you shouldn’t just jump into Indie Development from working full time. He said that it took a few years of building apps in his free time until he could make the move over to full time indie. Using this balance between consulting and his own apps, he eventually moved over when he was making enough to go full indie with his own apps.

So now with tools that allow you to use web technologies to build apps there is no reason why I shouldn’t start this slow movement over to becoming a Indie Dev/Micro ISV owner (sounds like a good theme for this blog)

Contracting Setup Options

Yesterday the start of the 30 day writing challenge from Marc Jenkins. For my first post I wrote about why I like being a contractor. I originally wrote this post on Medium, but for the rest of the 30 day challenge I’ve decided to just use this site.

For today’s article I’m going to continue writing about life as a contractor, part of a series I’m going to call the Contractor Chronicles.

So if you want to become a contractor in the UK there are two main ways you can go about this. Either be a Limited company or work for an Umbrella company. For me I decided to be a Limited company.

If you don’t know the difference between the two is when you are a Limited company you work for yourself as an employee of your own company. If you work for an umbrella company, then you work as an employee for that larger company. They handle all paperwork, the invoicing, the tax and accounting aspects of running a company. As a Limited company you are responsible for all these jobs (though you can and should get an accountant to handle the tax and accounting parts of running a business).

I went for the Limited company route the reason for this is if I decide later to be a company that sells a product (apps for example) then this is easier to do as a Ltd company. Also if I wanted to grow the company and get employees it’s far easier to start this as a Ltd company.

I prefer the Ltd company approach. It may not be for everyone, yes there is paperwork to do, but with tools like FreeAgent, this is so much easier. So if you want to be a Ltd company, get registered, get a good company name (PooWoo Tools is not a good name), get an accountant and get started, good luck…..


Picking a new theme for site

I’m in the process of picking a new theme for this site. Instead of having a free theme I’m looking for a paid one that matches the type of business CGCSoftware aims to be over the next 12 months.

So I’m looking for one that reflects that CGCSoftware is a mobile web development consultancy who can help other software companies with their mobile development needs, a hard thing for the theme to sum up.

What my theme does need to do is, be responsive (can’t be all about the mobile web and not work on phones), not be to design agency that’s not what I am and look clean and professional.

When entering the world of WordPress themes its amazing how many there are, the theme industry is massive. It may take a while to find the one I want.

30 days of blogging 

I’ve recently signed up for Marc Jenkins’ 30 Days Writing Challenge to improve my blogging output. I do like reading blog posts from developers who writing about their day to day working lives as well as technicial posts.

I’ve not really written many technicial posts, just because I don’t want to write something that is incorrect, but I do remember what Remy Sharp once said that he wrote a blog to remind him of something. So he could look back and be reminded of something he learnt. Great idea.

So Marc’s course starts soon I’m looking forward to the course and see what is involved.

My thoughts on the mobile web 

Currently the mobile web is growing and growing, every week there is a new ways of using web technologies to create mobile apps.My weapon of choice is Ionic, mainly because the Ionic team have created a framework that allows a web developer to create apps that work well and look fantastic. 
It really shows the power of the web, it’s everywhere, you can build anything with just HTML, CSS and JavaScript. For a company who want their product to reach as many platforms as possible, the mobile web is the ideal solution. A single web developer can built apps for mobile, tablet, desktop and now TV.

The web has always been an exciting place to be, but now with the options for the mobile web, being a web developer is a great place to be.

Unfortunately with more and more technologies coming out, different approaches to using web technology to develop cross platform apps. This ‘my technology is better than yours’ arguments start. Usually these are fuelled by the companies who’s technology it is. I mean they have to sell their product. But what is better, native, hybrid, or these ones that use web technologies to compile down to native. They are all great, but for me as a web developer I want to be able to create great apps for as many platforms as I can. For the people who use these apps, they don’t care what technology the apps was developed in. All they care is it works as they wanted to, it’s fast and looks good. For me as a web developer I want to use something that I can use my current skills for and Ionic is my platform of choice for these reasons.

So web developers enjoy this current growth we have in the mobile web it’s a very exciting time.

SyncHerts mobile development event

I went to my first SyncHerts event in a while. It was about mobile development, a favourite subject of mine, so I was keen to see what others in the local area are doing.

This was the second part of a 2 part event. In the first event people broke into teams and wrote user stories and made UI designs. In this the second part they needed developers to actually make these apps.

so again we split into teams and as the developer in the team I started making the app with Ionic. We only had 20-30 minutes before we had to demo to the other groups, which isn’t long enough to create a fully featured apps. But with the power of Ionic I was able to build an app that loads in a JSON file with a list of pizzas (it’s a pizza ordering app) then when you select on a pizza you get to see the full details of the pizza. Finally we added a Order button, so people could chose which one they wanted ordered for the next meet up.

We weren’t the only team using Ionic, another team had created a Ionic app that used a carousel to go from one pizza type to the next. Another team used Xamarin, and another team used Bootstrap with ASP MVC.

It was interesting to see how quickly people could get something together in such a small space of time. It was also interesting to see what technologies people would use.

I was impressed with how quickly you could build something that looked OK and worked using mobile web technologies like Ionic.  I was also able to load the app on my phone to demo using Ionic View.

I might add to the app and get it on GitHub

 

Using SQLite instead of LocalStorage with Ionic

For the last few Ionic apps I’ve built I’ve used Local Storage to save data, usually app settings or a list of names. Generally a small amount of data so it was fine in local storage.

Now on the app I’m building for myself I need to use a better data storage solution, one of the possible options is SQLite. Searching on the internet I found Nic Raboy’s great introduction on how to set up and insert data into an SQLite database in your Ionic app.

Use SQLite Instead of Local Storage in Ionicframework

This is a great intro, the one thing I did find was I was running my app in the Chrome emulator and the SQLite database wasn’t being created. So I have to build my app and get it running the iOS emulator, which with the power of the Ionic framework takes only 3 lines to do:

  1. $ ionic platform add ios
  2. $ ionic build ios
  3. $ ionic emulate ios

This launches the iOS emulator loading your Ionic app. Then if you open Safari and go to the developer tools you can use the inspector to look at what your app is doing  (Develop > Simulator) any console logs you have in your code will appear in the console.

With a combination of Nic’s article and using the Web Developer tools in Safari I’m able to get SQLite up and running in my app and move away from local storage.

Adding Buttons to Sidemenu Ionic Template

I’m working on a new Ionic app, one of my own ideas. For the layout of the app I’m using the Sidemenu template instead of the Tabs template, which I’ve used a few times before.

In this app I wanted to have a New button in the top right corner of the app. So you can add a new item to the app from anywhere within the app.

Now I wasn’t to sure how to add this in the Sidemenu template. It looks as though all the views load into <ion-nav-view> which is in the main index.html page. So adding the new button in <ion-nav-buttons> in the index.html page doesn’t work.

In order to add this New button I needed to add it to the menu.html page where the toggle menu button is. This view is displayed all the time, so my New button is available either in a list view or the details view.

To position the button to the right of the app I simply added the side attribute as ‘right’. This is how my page was set up:

 

<ion-side-menu-content>
<ion-nav-bar class=”bar-stable”>
<ion-nav-back-button>
</ion-nav-back-button>

<ion-nav-buttons side=”left”>
<button class=”button button-icon button-clear ion-navicon” menu-toggle=”left”>
</button>
</ion-nav-buttons>
<ion-nav-buttons side=”right”>
<button class=”button”>New</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name=”menuContent”></ion-nav-view>
</ion-side-menu-content>