Jim's blog about programming and monkeys.

SHUT UP. You had me at
Hello world.

Scroll down

Reduceer tot 30% op uw Mobiele App Ontwikkel kosten

Inleiding

Als organisatie wilt u maar bezig zijn met 1 ding. En dat is focussen op uw Core Business. De explosieve groei van Apps & de dood van de PC zorgt ervoor dat veel bedrijven een mobile-first strategie toepassen. Een website begint zelfs een beetje oubollig te worden.

Een leuke WordPress site heeft u al voor zo’n 3000 euro. Dit geldt echter niet voor een simpele (native) App. De ontwikkel kosten van Apps brengen al snel hogere kosten met zich mee. Sommige organisaties lossen dit op door “hybride Apps” te ontwikkelen. Dit zijn Apps die niet specifiek voor Android, iOS of Windows Phone worden ontwikkeld. En met behulp van een extra laagje toch kunnen draaien op alle platformen. In de praktijk blijkt dit niet lekker te werken en veel bedrijven hebben zich hiermee in de vingers gesneden. Gelukkig leest u nu deze blogpost.

De oplossing

De oplossing wordt gevonden door visie, technische kennis en het boeren verstand te combineren. We beginnen met het opschrijven van alle blokken die er ontwikkeld moeten worden voor een typische App in de oude & nieuwe situatie.

De oude situatie

In onderstaand plaatje is de Back-end links getoond, met de typische software blokken zoals een Database, een Controller, Model, JSON Parsing/Creating en een HTTP Framework om het allemaal over de lijn te versturen. Wat opvalt is dat zowel iOS als Android exact dezelfde blokken hebben.

old-approach

Stel de App toont een lijst van katten winkels met kattenvoer. Wat gebeurt er dan precies?

  • App: vraag de Back-end API om een lijst te krijgen van katten winkels met parameter { kattenvoer }.
  • Back-end: query de database.
  • Back-end: Controller maakt hier objecten van in het Model.
  • Back-end: Controller transformeert dit naar JSON taal.
  • Back-end: HTTP framework verstuurd dit over de lijn naar de App.
  • App: Controller transformeert JSON terug naar model.
  • App: tonen van de lijst aan de gebruiker.

De nieuwe situatie

In de nieuwe situatie maken we gebruik van een Mobile Back-end As A Service, zoals:

De ontwikkelaar voegt een bibliotheek toe aan zijn App en kan dan alle queries rechtstreeks draaien op de database. Een Controller & Model is nog steeds nodig maar is een stuk eenvoudiger geworden.

new-approach

  • App:  Stuur een query naar MBaaS om een lijst te krijgen van katten winkels met parameter { kattenvoer }.
  • App: Controller transformeert JSON terug naar model.
  • App: tonen van de lijst aan de gebruiker.

Een stuk korter, minder code, minder onderhoud. Een bijkomend voordeel is dat in de oude situatie de API vast staat. Als men dus een lijst van hondenvoer wil, moeten er wijzigingen worden doorgebracht in de Back-end. In de nieuwe situatie wordt er simpelweg een nieuwe query gedaan.

Welke MBaaS is voor mij?

De meeste bedrijven willen hun data in eigen data centers hebben. Startups daarentegen prefereren om te betalen voor het gebruik & toegang. Voor bedrijven is daarom Parse.com het meest geschikt en voor Startups AWS Mobile Hub

Andere voordelen van MBaaS

Beide MBaaS services bieden “standaard code” aan voor veelvoorkomende App functionaliteit zoals Facebook login, Push notificatie etc. Dit scheelt wederom een hoop tijd in ontwikkel kosten.

Benieuwd wat wij voor u kunnen betekenen?

Wij besparen u tot 30% op uw ontwikkel kosten & doen het Server beheer. Zo kunt u zich weer focussen op uw Core Business.

 

 

 

 

 

Jim-Clermonts

Jim Clermonts is een Freelance Android & iOS ontwikkelaar.

 

Best of 2015: A Special present for smart people

Happy-New-Year-Images.

Introduction

2015 Was a beautiful year. I would like to thank everyone that helped me progress in achieving my life goals. For these people & others I’ve made a selection of my top valuable videos of last year.

They’re divided in 5 categories:

  • Software
  • Inspirational
  • Visions
  • Productivity
  • Money & business

Thanks to the internet & good, free tutorials on almost any topic, there is no excuse anymore to learn & become great. And without further ado, here is the list:

Software

  1. The Clean Code Talks
  2. Just enough you need to know about JavaScript, Linux and Command shell
  3. Design Patterns
  4. Algorithms
  5. GIT Tutorial 3
  6. Learning to program in C
  7. Developing iOS 7 Apps
  8. Android fundamentals
  9. Writing Clean Code for humans

Inspirational

  1. Tai Lopez how to become great
  2. Jason Silva London Real
  3. Everything is a remix
  4. Tai Lopez
  5. Tai Lopez TedX
  6. De Techmens
  7. Oren Klaff
  8. Tony Robbins
  9. Zeitgeist 1
  10. Zeitgeist 2
  11. Zeitgeist 3
  12. The Secret
  13. Robert Greene
  14. De herovering van het nu
  15. Jack Dorsey
  16. Inventing on principle
  17. Ryan Holiday
  18. Ricardo Semler

Visions

The future of software and our society:

  1. The future of technology Jason Silva
  2. Yuri van geest Exponential growth
  3. Yuri van geest Singularity
  4. Adjied bakas
  5. Exponential Thinking Peter Diamandis
  6. Peter Diamandis Abundance
  7. The future with Oculus Rift
  8. Cybertopia
  9. The networked Society
  10. Networked Society Shaping ideas
  11. Kees Zegers over de toekomst
  12. Ray Kurzweil – Transcendent Man
  13. Peter Thiel’s altruism
  14. Chris Dancy: The journey to existence mapping
  15. Tegenlicht: Peter diamandis overvloed
  16. Carlo van de Weijer: Future mobility
  17. Yuri Van Geest: The singularity
  18. Zero Days
  19. Digitaal geheugenverlies
  20. Persoonlijke data
  21. Jamie Bartlett – Inside The Digital Underworld | London Real
  22. Salim Ismael Exponential Finance

The future of working:

Het nieuwe werken

The future of education:

The future of learning

Maurice de Hond over iPad scholen

Ivory Tower

The future of Business models:

Einde van bezit

The future of money

Bitcoin documentary

Productivity

  1. Tim Ferriss
  2. Fed up
  3. Sicko Michael Moore
  4. The plateau Effect

Money & Business

Money

  1. De wall street code
  2. Inside Job
  3. Het snelle geld
  4. Belasting betalen is voor dommen
  5. Bitcoin Evangelie

Business

  1. Startup engineering
  2. Venture financing

 

I wish you all a very entitled & insightful 2016

 

Yours truly: Jim Clermonts

Programmers are from Saturnus, Customers are from Jupiter

When talking to customers I often notice that Programmers and Customers think they understand each other, but actually they are not on the same page. This is because the customer sees a problem with it’s customers and wants a solution. The programmer sees a technical challenge and wants to solve it the best he can, in order to prove his uber coding skills. Good programmers are obsessed with doing things right. But, when you start, it is even more important to do the right thing. When you’ve released a stable, but ugly V1 and have shown it to the customer, and he agrees that this is what he wants, and his customers use it and understand it. Only then do it right. But from experience I know, this is usually not the case the first & second time, so stop wasting time!

Socrates said, ‘Know thyself.’ I say, ‘Know thy users.’ -Joshua Brewer, Twitter

What the customer says:

“I just want it to work”.

How the programmer translates it:

“Deliver something without a single bug. Oh and perfect user experience for any audience, that includes my grandma and my daughter”.

Don’t blame the programmer. I think a good programmer will never finish anything. Because it is impossible to write something with zero bugs. And you do want a programmer that is passionate about making it as good as possible.

123

This picture is a bit cliché, but so so true :).

Things a customer can do

DSC00291
 Use wireframe tools such as Pop App. Make drawings on a paper and take pictures of it. It makes it so much clearer for a programmer. Picture on the left was taken during StartupWeekend Enschede, and this was my team for the weekend. In the back you see the paper drawings. Within an hour we had drawn the ‘flow’ of the app. Step 2 is to take pictures of this flow with Pop App. Then you can make clickable buttons so you can really click through it and put it in the hands of your users.

Things a programmer can do

Keep replying to each answer with “why do you want to …. “ – attached in front of it, or keep “digging”. Finally, make a summary of what the customer has said.

Example of an actual conversation between me and a customer:

  • Customer: “I want a clean, simple user interface.”
  • Programmer: Why do you want to have a simple user interface?”
  • Customer: “Because of my target audience.”
  • Programmer: Who is your target audience?”
  • Customer: “Elderly people who have bad vision”.
  • Programmer: “Okay so high contrast, a big non-curly font is of importance?”
  • Customer: “Yes”
  • Programmer: “So if I understand correct your definition of a simple user interface is high contrast, big font and it’s non-curly?”

Do’s and Don’ts with a customer

  • Challenge what he says, be critical. Don’t agree right a way with everything he says.
  • Make a priority list, chances are he will run out of money earlier before all functions are designed.
  • Summarize what he says at the end.

Do’s and Don’ts with programmers

scene-anchroman

Scene from Anchorman 2, Courtesy of Paramount Pictures

  • Don’t look him directly in the eyes, programmers usually are a bit more shy and introverted.
  • Make it as clear as possible: how many buttons, which color, how many pixels??
  • Don’t feed him cookies. Cookies leave online traces. Programmers hate that!
  • Make the “definition of done” clear. Is zero bugs the definition? Prepare to sell your Lambo then.

“A wife sends her programmer husband to the grocery store for a loaf of bread. On his way out she says “and while you’re there, get a carton of eggs”. He never returned.” Typical Programmer’s joke that customers don’t seem to understand.

Behaviour Driven Development

From this step I usually deliver a Requirements document, with rough hour estimation. After approval I start developing the product. What I’ve learned is that we need a solid requirement document, but often it’s too technical for the customer to grasp. So to solve this challenge, I’ve started using BDD.

Behavior-driven development (BDD) is a software development methodology in which an application is specified and designed by describing how its behavior should appear to an outside observer.

The old requirement document way:

  • The app must show a popup saying “Do you want GPS to be enabled?
  • The app must get a new GPS location on startup and send this to the Parse.com back-end.

The new BDD way:

BDD has 2 parts. The part the Customer writes, and the part the programmer writes.

Example of a BDD feature: “only show jobs within user’s own range”

Part the Customer writes:

As a System
I want to know the location of the user
When he uses the app
So that I can serve him jobs which are in his own surroundings

Part the programmer writes:

Given the Wobbly app with GPS enabled
When I start the App,
Then a new GPS location is acquired
And send back to Parse.com back-end.

That’s all for this week! Next week I’ll be writing a post on ways to increase a programmer’s output. I would like to close of this blog post with the “Picture of the week”:

bill-gates-desk-picture

And the award for most Sexy Programmer ‘1978 goes to…. BILL GATES. LADIES LADIES PLEASE TAKE A NUMBER, and get in line…

 

Send me an E-Mail: