Sunday, October 27, 2013

Recent Developments: College Life and Bruin Lyfe


I haven't really had time to post recently because of college.  I moved in and I have been kept busy with my classes.  After getting here, I found out that someone developed an iOS app called Bruin Life, which had dining hall menus among other information.  Sadly, he never ported it to Android, so a floormate and I decided to fix the situation ourselves.  Over the past few weeks, he and I been developing our own app and it's coming along great!  You can see in the screenshots above that it lists all of the dining hall hours.  When the  user clicks on a time (i.e. De Neve lunch), it opens up another activity that lists the menu for that time period.  More updates will be coming, so stay tuned!


Thanks for stopping by!

Chris Konstad

Friday, September 6, 2013

The Future of Mobile Development

A few weeks ago, I had the privilege to attend the Qt Insights meeting in Palo Alto, CA.  I met with some other Qt developers and we discussed the findings of the Qt Insights project.  For the first time, a clear picture of the Qt community is coming together.  Through Qt Insights' report, we can see who is using Qt and which industries it's being used in.  The report shows that Qt is gaining new developers and that, overall, people are happy with Qt.  While at the Qt Insights meeting, the question of Qt's ability to target multiple mobile OSes came up.  One tangent that we didn't have the time to fully discuss was: how can Qt apps fit into their target platform (UX-wise) if they are written once and deployed everywhere?  To help answer that question, I wrote the following blog post.

The Future of Mobile Development

What I see as the future of mobile development is a unified native API that spans across OSes and systems from various manufacturers.  Want to write an app?  Great!  Learn one language with one API and you can deploy your app to Android, iOS, Windows Phone, BlackBerry, Ubuntu Touch, Sailfish, etc.  The problem is, how do we get there from here?  It is no easy task to create such a language or such an API.  Thankfully, the language already exists, and it is well known.  Have you heard of C++?  Yeah, that language that works across all of those platforms (and many more!) already?  Well, C++ is already gaining popularity after the whole "managed languages rule!" trend of the past decade.  "But Chris," you might ask, "what about the unified API?"  Well, that's coming from everybody's favorite C++ framework: Qt.

The Current Status of Cross Platform Mobile Development

People are already partially working in that cross platform development utopia in which one language and one API let you deploy to every mobile OS.  Many games and other apps have a C++ back-end wrapped in the platform's SDK language (Java for Android, Obj-C for iOS, etc.).  That wrapper creates the UI and let's the C++ core access other platform APIs.  The only problem is that the developer MUST learn the SDK languages and APIs for each platform they want to deploy to.  While that may be alright for big time developers, for hobbyists and self-taught programmers that can be a major roadblock in deploying apps across multiple OSes.  We need a single API that we can use across all systems; a cross-platform language isn't enough by itself.

Problems with the Future

Each mobile OS has a very different UX that must be catered to by the developers because of user demand.  Android users absolutely hate it when the Android app uses the UI of the iOS version of an application.  It makes the Android version feel cheap and like an afterthought.  The mismatched theme devalues the application and it tells the users that the company doesn't care enough about them to rewrite the UI for Android.  There can be other issues, too.  For example, in iOS, application settings are often handled in the system preferences app.  However, on Android, each application usually has it's own settings fragment within the application.  What I'm getting at here is that even with the future of mobile development (one language, one API), developers cannot simply write an app once and deploy it across every OS available because the UX wouldn't be native for each platform, even if the on-screen UI elements are.

How to Remedy the Problems

The solution to the problem is quite simple, really.  Write a new UI for each target platform!  I mean, developers already do that when they have the C++ core and SDK language/API wrapper, right?  Only with a cross platform language and API, the developer can reuse more UI code, simplifying the process while retaining a native-feeling UX.  Think about it.  Even though the developer would have to tweak the UI/UX for each target platform, they could do so using the same set of tools and knowledge!  On Android, this would mean the developer wouldn't have to know about the JNI or Java to make a native feeling Android application.  On iOS, this would mean that the developer wouldn't have to know about Obj-C.  All the developer would have to do is move around a few UI elements and select the target's theme.


TLDR: Qt 5.2, which introduces iOS support, marks the beginning of a decent cross-platform develop suite for mobile apps.  Yes, the UI/UX will have to be tweaked for each target, but it can be done using one set of tools and the same knowledge.

Thanks for stopping by!

Chris Konstad

Monday, August 26, 2013

Monterey 3.0 Crash on Windows

Just a quick warning that Monterey 3.0 is crashing on some Windows systems (win7 32bit AND 64bit) with a VC++ runtime error, which is weird because I compiled it with Mingw32 and I get no errors on my system.  I can, however, reproduce the error on another machine in my house.  I'm working with the person who found the bug to fix it and I'll post the fixed release as soon as I can.

Monterey was compiled with MinGW 4.8 32bit with Qt 5.1.0(mingw48_32) from the Qt SDK on Windows 7 64bit.

Sorry about this,

Chris

Tutorial: Adjustable UI with QSplitters


Monterey version 3.0 now has an adjustable UI!  Not only is the window itself able to be scaled, but now you can apportion the UI how you'd like.  If you want, you can make the graphs taller or shorter (even hide them), and you can adjust the widths of both side panels.  Upon closing, Monterey saves your window geometry so when you open it again, the UI is setup the way you like.

Here are the relevant pieces of code:
As you can see, it's all pretty simple and easy to do.  The default values are set using QSplitter::setStretchFactor(int index, int value), which uses the relative weight of each stretch factor to adjust the sizes.

Thanks for stopping by,

Chris Konstad

Monday, August 19, 2013

Monterey 3.0 Status Report

Good news!  Monterey is coming along nicely!  It is due in 13 days and it looks like we'll be able to make the release date.  There are still a few minor bugs left, but those are being worked on and progress is being made quickly.  The last "feature" that we have left to implement is the addition of a few more graphs along the top of the video display.  Then, Monterey should be ready to ship!  The bottomside code might experience some updates/changes to accommodate any changes in hardware , but Monterey itself will be ready.  And keep in mind, there will be periodic updates to Monterey after the 3.0 release that address any additional bugs and add features that were not able to be packaged with this release. 

I am incredibly excited about this release of Monterey as it will be a HUGE improvement over every previous version.  The addition of video capabilities is a key part of that!  

Thanks for stopping by!

Chris

Friday, August 16, 2013

Monterey 3.0 Status Report

This is a screenshot of the most recent version of ROV-Suite's Monterey ROV control application.  There is now a working HUD and a newer, nicer theme thanks to QuantumCD's Dark Fusion palette.  As of right now, there are 12 open issues between Monterey 3.0 beta and Monterey 3.0 stable, but they should all be fairly easy to take care of.  A few of theme are graphical changes (removing those LEDs and replacing them with nicer status indicators) and some of them fix bugs.  Check here for more information.

Now I also have an important announcement to make.  Monterey has been shifted from my personal Github account to an ROV-Suite organization account.  You can find all repos and releases relating to Monterey at http://github.com/rovsuite.  I really do apologize for moving ROV-Suite around so much, but I do think that it's for the better.  I also wanted to make this change before releasing 3.0, which is a huge milestone for Monterey.

Please note that in it's current state, Monterey does not compile on Linux or run on OSX.  Both of those bugs are being looked at (I have already fixed the Linux issue but I still need to push it) and will be addressed soon.  Monterey will NOT be a Windows-exclusive.

Thanks for stopping by and I'll post some more information regarding changes to Monterey soon!

Chris Konstad

Sunday, August 4, 2013

New Download Location for ROV-Suite

Since I began moving ROV-Suite from SourceForge to GitHub this past year, I've been trying to figure out where to host the binaries for easy downloading.  After all, not everybody wants to have to compile an application before they use it.  Thankfully, ContingencyCoder told me about GitHub's "releases" sections of GitHub repos.  From now on, new releases of ROV-Suite, including Monterey, will be hosted on Github.  To find the latest binaries of Monterey, look here.

Thanks for stopping by!

Chris