Search This Blog

Showing posts with label EmbeddedSW. Show all posts
Showing posts with label EmbeddedSW. Show all posts

Thursday, May 7, 2020

Sharpening Your Programming Skills!

The problem I have with looking for work is finding something to keep my programming skills sharp. Just like a knife can get dull if it is not sharpened, so can programming skills.

I was recently introduced to an interesting site as part of an interview process. Codility is a site recruiters and hiring managers use to see if you really have the coding skills you say you do,... But it is also so much more.  It's a place where you can learn and practice your skills.

Verifying Your Skills

My introduction to Codility was as part of an interview. It helps answer the questions of "Do I know what I say I do?" and "How do I approach solving problems?"

Unlike many of the sites I have taken coding tests, this tests not only your programming knowledge, but also your ability to take a problem, solve it, and deliver working code in a real language. There are no questions like

What is the value of y in this C++ code?

int x;
auto y = x + 2;
y /= 2;
 
A) 0   B) 1   C) 231  D) undefined
 
Instead, you are given a problem to solve with your own code in your choice of language (C++, C, Java, Basic, and a lot more). You have access to an online compiler so you can test your code, and you can even create your own test input. There is some pressure, as you are given a limited amount of time to do it. Once you submit your code, you are done, and automated testing evaluates it.

The problems are interesting and designed to test different parts of your programming talent. Based on the ones I have tried, a problem might be something like this: (I hope I don't guess a real one!)

Given a set of arbitrary positive integers, find all of the prime numbers in the set and then calculate the mean, medium and average of those primes. You have 30 minutes.

[Oh cr*p! having written that problem, I feel the need to try solving it myself.]

Sharpening Your Skills

After taking a couple of tests, I found out about Codility for Programmers. This is where you can sharpen your skills by going through lessons and completing challenges. Working through a few lessons helped me remembered things I hadn't used in a while, and learned how think through all of the possible ways my code might fail.  [I have been using Qt so extensively for the past few years that I sometimes forget how to use the C++ Std functions instead. Working through the lessons and exercises helped me refresh that knowledge.]

If you want to keep your coding sharp, you really should check out the Programmers section of Codility at https://app.codility.com/programmers/.

Another way to Learn (or blatant self promotion)

If you are interested in learning more about programming with Qt or doing Embedded Development with Qt, please consider checking out Hands-on Embedded Programming with Qt. In it I introduce you to almost every aspect of Qt programming and how you can use it for Embedded Software.  It's available digitally and in hard copy on Amazon and the Packt Publishing website.

Stay Safe!
-John

#Packt #Qt #Qt5 #EmbeddedSW #Codility #SharpenTheSaw #TestYourSkills #KeepLearning

Free Qt Training & Convention!


UPDATE: Videos of the sessions are now available online:




The world has changed the last few months. Many events have been cancelled or rescheduled. I was hoping to go to the 2020 Qt World Summit in May, but it was cancelled... or was it.

I recently came across a post from the Qt company. It looks like the conference has been virtualized, and it is free!


Our free *Qt Virtual Tech Con* online event registrations are now open! Join 36 stellar speakers from around the globe! The live sessions with interactive Q&A are on the way to help equip you with the tools & skills you need for your technology objectives on May 12-13!

Register for free here: https://hubs.ly/H0p9ZPW0

Topics include, but are not limited to:
* The Qt roadmap and bridging the gap​ between UI/UX designers & software developers
* Qt basics​
* Embedded & solutions ​
* Platforms ​
* Staying ahead
and many more topics to choose from! Not only this, but you also have the Qt hotline to ask questions and get answers to best practices while you get inspired during the show.
Register and invite your peers to #QtVTC20....


Why not attend some sessions?  

Since I am at home, looking for work, and waiting for hiring to re-start, I will be there!  Will You?

#embracethesuck #QtWTC20 #Qt5 #QML #Qt

Monday, February 3, 2020

It's Been A While...

Greetings!


When I started this blog, I promised myself I would do at least one post every month and try for one every two weeks.

That hasn't happened because of... you know.... life.

Anyway, now that we a month into the new year, I thought I would at least post something to let you know I am still alive.

What's Been Happening

After returning from a whirlwind trip and speaking in Pittsburgh back in October, I got to work on my next book, Hands-On Design Patterns with Qt. It has been taking a bit more of my time than I expected. I will say that I am learning a lot during the process and I am already starting to see both where I have been using design patterns for years and how I can more efficiently design things I am coding.

Finding A New Tool

One of the big things I had to figure out while writing my upcoming book was how to draw the pretty pictures I am using for illustrations. I am doing most of my work on Ubuntu Linux Machines, so Microsoft's Visio wasn't a good answer. What else was there?

State Machine Drawings

For state diagrams, I have been using the excellent SCXML Designer that is part of Qt Creator. It has allowed me to create state diagrams in Qt Creator, turn them into executable code, and even export them as PNG files.

This state diagram was a rather complicated example I came up with for a simple Cruise Control system. The really cool thing is that to add it to an existing Qt Project, I only had to tell the Qt project that I was using SCXML, create the diagram, and then import the header file for the working state machine.

I talk more about designing with State Machines in an earlier blog post, Designing with State Machines, and also in my book, Hands-On Embedded Programming with Qt.

With state machine drawings figured out, it left me looking for a tool for Class and Sequence Diagrams. Qt Creator has some support for modelling them, but it wasn't quite a feature rich as I wanted.

Class and Sequence Diagrams

I looked at a variety of solutions. I tried LibreOffice, but it didn't quite do what I wanted. Finally, I settled on the Dia Diagram Editor. It comes with optional support for UML and is available for Windows, Mac OSX and Linux. This GPL'd software works very well for drawing both Class and Sequence Diagrams.  Here are a couple of examples I did for Hands-On Design Patterns with Qt.

The fist is a simple class diagram for the Observer Pattern.



This second is a Sequence Diagram for one of the exercises. It uses the Broker Pattern.


When Hands-On Design Patterns comes out, you will find many more diagrams created with Dia.

Speaking of books, I really should have mentioned this promotion about a month ago, when it started.

Book Sale!

Writing books is one of the things I really enjoy. Part of the enjoyment is in explaining and teaching new things, and another part is in learning new things on the way. 

I keep a copy of my first book, Hands-On Embedded Programming with Qt, on my desk. I treat it much like a notebook. I will often crack the book open and look up the solution to the problem I am trying to solve in Qt. My skill is really in knowing where to find answers, not knowing all of the answers. That's why I refer to my book and other resources like Stack Overflow or the all encompassing search engine of my choice.

Lately, it has been Hands-On Embedded Programming with Qt. I put a lot of work covering just about every aspect of Qt I could fit in the book. While I wrote it for others to learn, I also wrote it for me so I could find the answers to problems I know I have already solved.  (I expect my next book will be the same.)

Right now, Packt is finishing up a sales promotion on all of their books.  You can pick up Hands-On Embedded Programming with Qt for $5 until the end of the promotion. Just follow this link:

Other Things

I have way too many other interests. One of those, Digital Photography, came back in a big way. A few months ago, I purchased a OnePlus 7 Pro [right before the 7T and 7T Pro came out -- duh!]. If you don't know the OnePlus brand, I wouldn't be surprised. They are a bit of a niche Android phone maker for people who are interested in good solid hardware, Android unburdened with bloatware, and reasonable prices. They listen to their customers and try hard to be customer focused.  They have become known for their camera sections. The OnePlus 7Pro (and 7T and 7T Pro) feature three different hardware cameras: Normal, 3X and 0.3X, and they produce very nice quality pictures, sometimes exceeding older DSLRs. (I also carry a Nikon D7000, so I have a basis for comparison.)

Seeing as the OnePlus 7 Pro is easier to carry than my D7000, and I always have my phone on me, I am finding I am taking a lot of pictures with it and looking for opportunities to use it.

I also discovered a myriad of ports of Google's Pixel Phone Camera App. These ports can run on almost any Android phone and often offer a variety of customizations. This led to me seeking out even more software and configuration files to try and taking more photos.  It's an endless cycle, but there are some cool things that have come out.


If you want to check out more of my photos, you can follow me on Instagram, Flickr, or SmugMug.

-John

#Qt5 #Qt #cplusplus #softwareengineering #embeddedprogramming #embeddedDevelopment #programming #embedded #designpatterns #swengineering #scxml #statecharts #statemachines #flckr #instagram #smugmug

Tuesday, October 22, 2019

Meet Qt Pittsburgh 2019 Presentation

I recently presented a Lightning Talk at the Meet Qt event held in Pittsburgh, PA on October 17, 2018.  the topic of my talk was Embedded Development without Hardware. While I plan do a full blog entry about the topic in the future, I thought I would share the presentation with you now.

The presentation file can be be viewed here: http://bit.ly/NoHardwareDev-2019

Enjoy,
-John

Monday, October 7, 2019

Self Promotion, Paying the Bills, or Just some Good Resources

I've spent the last 28 years developing embedded software, the last 10 years working with Qt, and the last year writing a book on how they can be used together.  The book has been published by Packt.

If you haven't checked out Packt's Hands-on books and are interested in learning new software development ideas, you really should see what they have. I have bought several books myself so that I learn things like GPU programming.

For a limited time, Packt is offering some great discounts on their books in print and e-formats, including mine. Check it out: https://bit.ly/2Moffku.

embedded programming with QT

-John