Preparing the airline interview

icon-603x Aviation

This app focuses on the technical side of the airline interview.

After browsing couple of technical interview samples, and adding my little touch on the subject which I think will be interesting for the student and even the veteran pilots, here it is…

Always nice to revisit the theory, which for some of us, were a long time ago…

So rewarding to achieve something after so much frustration and so much pain of learning by yourself. I had my sacrifices and felt I was crossing the desert…

Worth every moment of it! 🙂

The app is available on the App Store.

Advertisements

Re-inventing yourself at 53!

iphone-63x

I can not believe that it is now 9 years since my first website was published on the net.

I had to learn funny languages which brought other languages, to finally being able to publish some apps on the App store by using modern programming languages, such as Objective-C and the latest new language from Apple, Swift which was launched in 2014.

Wow! What a journey…

The DIY (Do It Yourself) acronym really sticks to me and fits perfectly my way of learning 🙂

The other day, the TV news was talking about people being discriminated for jobs above 45. One of the reasons was because people above that age were not good in modern technologies.

Really?… I think I have no problem to compete with the young guys coming out of universities with a computer degree. 😉

Do not kill the old guys too fast!

But reality is as it is, yes, modern technologies are moving with the speed of light…

So, what is the best way to surprise people or future employers/collaborators?

Re-invent yourself and in my case, use what I have learned and publish it! Is it going to work? Maybe, maybe not, but at least I am trying and maybe, will surprise few people…

This app “Freelance pilot”, is just another way to put your cv/resume online. Be modern, be imaginative, be different…

How many future employers/collaborators do carry their smartphones with them? 99,99999 % I would guess. How about being on their smartphones as well as an app?

But beside putting your cv/resume online, I have added a functionality to make it even more attractive. Ok, this is aviation stuff, but I am a pilot after all, no?…

Few years ago, a former colleague asked me to make an app which could calculate the distance between 2 airports and give the estimated time en-route between those airports. Bummer! I was not ready or even close from this required knowledge…

Few weeks ago, I was reading an article in one of those specialised forum which was talking about latitude and longitude and how to use them in your app.

Yeah baby, challenge accepted!… 🙂

After trials and errors, the help of stackoverflow (famous among programmers) and specialised forums, I managed to install a file of over 28.000 airports and link the file with my code.

The end result is that the app will calculate pair airports distance (great circle) and time from any airports around the world without the need of being connected to the internet.

Big deal Didier, it exists already you would tell me. Yes, of course! I do not re-invent the wheel but for that information, you will need to connect to the internet…

Here, no internet connection. The file is embedded in the app, so you can access the information from anywhere without asking: “Is there wifi here?“…

The app is built with Swift 3.0, requires iOS 10 or later and is available from the following URL: https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1157894398&mt=8

May the force be with the 45+… 🙂

 

 

Another frustrating day!

img_5657

Can’t make the code work! Time to take a step back… Have grabbed my bicycle for a spin to clean-up my mind.

Am gonna get it, am gonna get it!…

I checked everything, the latest update, the minimum required. This compiler is still giving me errors…

Is it the Beta version of Xcode or something else? I thought I nailed it yesterday but today I hit the button build and… Build failed!… Over 20 errors!… Grrrrr!…

Time to read instructions carefully again…

The behind the scene of an app.

intro

What you see is a screenshot from X-Code, the IDE from Apple. Also the simulator on the foreground where you can check and feel how it looks when modifying your code.

Building an app from scratch is of course very rewarding but can be very frustrating as you progress into your project. You very often end up being stuck as the language used is very strict.

This app is built in Swift, the new language introduced by Apple in 2014. As a new language, there are always flaws and of course and as it matures, the language gets a lift-up every now and then. Sometimes minor changes, and sometimes a bit more than that…

Swift 3.0 is coming very soon, and of course all apps I have built so far will need an upgrade to reflect those changes working with iOS 10.

In the left column, you can see couple of files where your code lives. The famous M-V-C model is the norm when coding an app. It’s basically an architecture where you split your code for better reading…

If I would have written the same app in Objective-C, the other language used by Apple, I would have had to add double files as that language needs .h and .m files, thus adding memory to the app itself.

I dropped on this very interesting article comparing the two languages, and it seems that Swift is definitely the winner…

Honestly, it took me a while to migrate to Swift as I was too lazy to learn something new. Yeah! At 53 years old, it takes a while before the wheel starts to turn… 😦

The app in this article is  CAT-C Airports in Europe. Another app I use every now and then when going to special airports.

It’s on the App Store for sale of course! 😉

 

 

 

Publishing your app on the App Store

vaac_prom

Finally there! After months of development and study, here comes the big day…

Publishing your app on the App Store. It’s like giving birth…

It seems so easy but believe me, you have to go through a lot of trials and errors before it can be published.

Even though approved by the store and published, sometimes the appearance is not what you were expecting, or the market was not interested at all in your app for different reasons, or just there are millions out there, very often much better than what you published. Yeaph! You’re not the only one…

That’s ok! Think like this is your first marathon and obviously, your don’t expect to finish within the ten first runners. I wish but the world is not made like that…

From 2013 to 2016, what did I learn? Well, first two programming languages (Objective-C and Swift) and for a guy of my age, that’s a win baby! 🙂

Is that it? Oh no!… Those technologies are moving with the speed of light and everyday new things come into play.

This app is built with Swift 2.2 and guess what? Swift 3.0 with IOS 10.0 is coming in fall if not tomorrow already… 😦

I feel like that as soon I finish to print one book, I can throw it already and print a new one…

If at least those politicians in charge of education could see that it is so important to learn at least one programming language or the foundation as soon as possible, even in primary school.

I was shocked to hear that in my country, on the French speaking side at least, one third of the population could not use internet or send an email??? Can’t believe it…

This is going to be my fight with the education system. Completely obsolete what we’re teaching and will not make our kids in a better situation on the work market tomorrow…

Enough said about politics, obviously we all have our opinions and my blog was not made for it, sorry. Just sometimes I need to express myself to get rid of the frustration…

Just if someone reads this blog, please keep on studying. Don’t stop after school, the world is moving with the speed of light…

If interested in the Volcanic Ash Advisory Centres App, please visit the iTunes or App Store.

The app represents the 9 VAAC centres which cover the world. I have been using and still use it for situation awareness when flying. VAAC give you the latest alerts on volcano activities.

Important of course for the aviation and travel industry!

You can see a preview on my YouTube channel or my personal web page.

Completely free and built for iPhones and iPads. No Android yet, sorry! Another language to learn 😦

Brainteaser

casseTete

Every now and then, you get this assignment where you have to resolve a logical mathematical question.

I don’t know for you but for me, it’s always a challenge…

Here was a question on the https://projecteuler.net website for the first question:

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000”.

It’s like whaaaat???… Oh, boy!

What is a natural number by the way? The first thing that came into my mind… Sorry, I was at school but that was a long time ago…

Hopefully, Google came to the rescue… Of course! How could I forget about it? Shame on me! 😦

But how do you translate this logical mathematical question into code?

Baby, I need coffee! And make it strong! Just keep the aspirin not too far…”

For a definition of the natural number, see this site: https://www.mathsisfun.com/numbers/evolution-of-numbers.html

Natural number below 10: which means 1, 2, 3, 4, 5, 6, 7, 8 and 9.

Multiple of 3 or 5, which means:

1 x 1 = 1

1 x 2 = 2

1 x 3 = 3 ==> good

1 x 4 = 4

1 x 5 = 5 ==> good

1 x 6 = 6 ==> 3 x 2 ==> good

1 x 7 = 7

1 x 8 = 8

1 x 9 = 9 ==> 3 x 3 ==> good

 The sum of these multiples is 23.

3 + 5 + 6 + 9 = 23

Pfff! One thing done! Coding is like trying to solve one thing and then jumping onto the next one…

Ok! Here I need a kind of loop to go through from 1 to less than 10.

“MAYDAY! MAYDAY! MAYDAY!”

Swift language to the rescue, or any other programming languages will do the job.

For the loop, I am going with the “for.. in” loop, foundation of the programming language.

for i in 1..<10 {

// do something

}

So translate like: for each index from 1 to less than 10, do the following inside the curly braces.

“i” is the name of the variable ( “i” like index) that will change every time you reiterate through the loop until you hit the wall of less than 10.

1..<10 ==> range from 1 to less than 10.

Ok, I need 3, 5, 6, and 9. How can I tell the code to highlight those numbers between 1 and less than 10?

There is a trick, and it is called the modulo (see YouTube example at: https://www.youtube.com/watch?v=b5cb_nfDyyM)

In other words, you’re looking to have a remainder of 0.

3/ 3 = 1.0

5 / 5 = 1.0

6 / 3 = 2.0

9 / 3 = 3.0

Multiples of 3 and 5; I’ll need to check those 2 numbers within the loop.

% is the symbol for modulo.

i % 3 or i % 5 must equal to 0, where “i” is the index I pass on every time the loop goes through, yeah? So i = 1 the first time, then 2, 3, etc. until it hits the less than 10 condition.

if (i % 3 == 0) || (i % 5 == 0) {

// if one condition or the other is true, do something.

}

|| = “or” in this language.

== is the equal we know.

if (i % 3 == 0) || (i % 5 == 0) {

sum += i

}

“sum” is the variable I have declared on line 5 in my playground (var sum = 0).

“var” stands for “variable”, a drawer from my closet that I have reserved to contain my variable, so to speak.

The “+=” is a short cut for “sum = sum + i”. Easier to write “sum += i”.

Like you would say “FYI”, for “For Your Information”. Just a question to get used to it…

Then on line 12, I just print the result of my variable “sum”.

“Open the drawer baby and show me what you’ve got!”

Pfff! Brainteaser…

Like the iron man, you need to train your brain to resolve problems. 😦

Same in aviation, we train a lot. Actually, I found a lot of similarities between piloting and computing. Pilots have a real potential of becoming good coders (problem solvers) 😉

See one solution here below. All roads go to Rome, so there is more than one solution 😉

solution

I’ve used Xcode IDE, the IDE for building apps for Mac, iPhone, iPad, Apple Watch, and Apple TV.

For more information please visit https://developer.apple.com/xcode/ide/

 

DRY principle

dry

So many times, you hear the instructor saying: “Use the DRY principle, DO NOT REPEAT YOURSELF!” during one of his multiple videos.

Yeah, yeah, yeah, I go it, thanks! It’s not going to happen to me, don’t worry…

One of my kids used to come once in a while to check my code to see how I was doing. I could see a smile on his face and I was asking what was the problem?

Dad, you are repeating yourself”...

What do you mean I am repeating myself? Of course, I have no choice if I want the code to work.

Then, by magic he showed me in a simpler way for the exact same result.

Gash! I hate this when your kid makes you feel as if you understood nothing…

Again, I was reviewing the video and comparing with my solution. What is the problem? Ok, it’s a different route, longer, but it doesn’t affect the end result…

Then, every now and then, I had to revisit my code because I wanted to change a date or just wanted to add something I thought was relevant.

Guess what? Obviously, I had to check line by line and figure it out what was I thinking at that time? Was it this line or that one that I had to modify? Not very efficient I would say…

Obviously, I could see that I was repeating and repeating the conditions. This is what the instructor was calling “code smelling” in his videos.

I should have known that the simpler, the better of course. This makes sense…

One old pilot told me one day when I was a young co-pilot to keep aviation bloody simple. Coding is very similar…

Code files are available on my GitHub account. Those codes are written in php, a scripting language that is especially suited for web development.

One file is the original and the second, is the same but re-factored to obey the DRY principle. Less code, easier to read and maintain… I am sure, I can still improve it but it’s ok for the moment.

What is this code doing?

Uploaded to a server, the file is checked every day, and if a condition is met, the program will execute the file which will send an alert, in this example an alert for Blue and Red disk (charts and navigation database), and terrain data base (TDB) updates to the pilots.

This code example can be used for other repeating tasks, of course.

My old captain should be proud of me. I listen what he told me at that time J