tag:blogger.com,1999:blog-38604550715841666882024-02-06T20:31:08.400-08:00Chris's Tech BlogA blog with updates and information regarding my many Qt, Android and Arduino projects.Unknownnoreply@blogger.comBlogger78125tag:blogger.com,1999:blog-3860455071584166688.post-15961971037025486272014-07-13T15:43:00.001-07:002014-07-13T15:43:57.575-07:00Monterey 4.0 Feature Preview: ROV Configuration FileTime permitting, I'm planning on posting little blog entries about each of Monterey's new major features. Since Monterey 4.0 is still in progress, any of these features may change before the final release. <br />
<br />
<b>ROV Configuration File</b><br />
A problem with Monterey 3.0 and earlier is that in order to customize the ROV configuration, you had to re-compile Monterey from source. Well, that is a ridiculous requirement for such a common operation. With Monterey 4.0 and on you will be able to use a JSON file to configure your ROV.
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46n6dltD3tmAC4dGD9Ff_D-yH483Dj1Zs67PKmCC02d6hnqEMN57V6Y2kuPjHW44n7XXaFqleMrkgIhmUGKn4XlbJ2vD2WxFVDUD4qysOBhCFpLPkLB2yCwMob6CBWwDH_Va1zJBlgoU/s1600/screenshot_079.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46n6dltD3tmAC4dGD9Ff_D-yH483Dj1Zs67PKmCC02d6hnqEMN57V6Y2kuPjHW44n7XXaFqleMrkgIhmUGKn4XlbJ2vD2WxFVDUD4qysOBhCFpLPkLB2yCwMob6CBWwDH_Va1zJBlgoU/s1600/screenshot_079.png" height="400" width="336" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">rov.json configuration file</td></tr>
</tbody></table>
The configuration file is located in the same folder as Monterey, although default settings can be loaded if the config file cannot be found. Because it is a simple JSON file, it is easy for humans to read and edit it, so there is no configuration application.<br />
<br />
<i>Relays</i><br />
With the relay JSON objects, you can specify a name that will be used in the UI.<br />
<br />
<i>Servos</i><br />
With the servo JSON objects, you can specify a name, minimum value, maximum value, and a default (starting) value. <br />
<br />
<i>Sensors</i><br />
With the sensor JSON objects, you can specify the name of the sensor and the units.<br />
<br />
<i>Motor layout</i><br />
This is where you specify if your ROV is a <i>vector</i><b style="font-style: italic;"> </b>or a <i>tank</i> ROV.<br />
<br />
<i>Max depth</i><br />
This is where you specify the max depth of your ROV. The units for this measurement are the same units for your <i>depth</i> sensor.<br />
<br />
The UI is automatically configured to display the right amount of buttons, sliders and sensor displays based on your config file. Also, the received UDP packet format is based on your config file. The order that Monterey expects the sensor values to be in is specified in the order of the sensor JSON objects (in this case, Monterey would expect to get depth, voltage, current and heading in that order). Monterey automatically adds any needed values to the sent packet (motors, relays and then servos, in that order).<br />
<br />
Certain UI elements, like the depth and heading tickers, are only updated from their respective sensors. The look for sensors labeled <i>depth</i> and <i>heading</i>, respectively. If you don't have those sensors in your ROV config file, the UI will still display the widgets but they won't update with useful information.<br />
<br />
Thanks for stopping by!<br />
<br />
Chris<br />
<br />Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-3860455071584166688.post-80544466182323810442014-06-20T21:55:00.000-07:002014-06-20T21:55:04.522-07:00First update in a LONG time (Spoiler: ROV-Suite updates)Hey! It's been a LONG time since my last post (too long for my taste), but I've been pretty busy. I finished up my freshman year of college well. I had a great time! I've also learned a lot about programming and CS in general since the last time I worked on one of my projects so the quality of my work should be increasing.<br />
<br />
For this summer, I'm interning at a large software development company in NYC. I just moved in recently but I've been having a great time so far! It's very cool to live in a big city and the company's work seems really interesting. <br />
<br />
I've also been planning improvements, features and bug fixes for Monterey for months now. I didn't have time while in school (and I barely have time now that I'm working from 9-5), but I'm trying to get some updates for Monterey pushed out as soon as possible. The biggest change that I'm currently working on is allowing people to configure their ROV from a simple JSON file and having Monterey's UI and networking code take care of the rest. See <a href="https://github.com/rovsuite/monterey/tree/json" target="_blank">here</a> for more information.<br />
<br />
Another big improvement for Monterey that I have planned for this summer is unit testing. Yes, one of my big goals is get Monterey set up with a unit testing framework. More on that later!<br />
<br />
Thanks,<br />
<br />ChrisUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-3860455071584166688.post-7600385610338508742014-01-31T23:29:00.000-08:002014-01-31T23:29:30.189-08:00Monterey v3.0 Video Streaming FixWhen I updated the Windows release for Monterey recently I forgot to add the image format plugins required by the web browser to see the video feed from the Raspberry Pi. I have since updated the release on Github which you can grab <a href="https://github.com/rovsuite/monterey/releases/tag/v3.0.0" target="_blank">here</a>. I apologize for the error! Monterey would start up just fine without the plugins but it would display a question mark instead of an image on any web page shown (i.e. the RPi video feed webpage). Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-75300245185975429902014-01-24T00:17:00.000-08:002014-01-24T10:25:23.895-08:00Monterey 3.0.0 - Windows Executable Released!Hey! It's been a while since I last wrote an article. I've been kept pretty busy with school work (2 CS classes, a math class, physics and a job on the side). Anyway, I received some incredibly nice emails and PMs the past few days from some users from the <a href="http://www.homebuiltrovs.com/rovforum/" target="_blank">Homebuilt ROV Forums</a> thanking me for working on Monterey and releasing it for free. They had some feedback for making Monterey easier to use, and I've taken their feedback to heart. The most pressing issue was that there wasn't a compiled version of Monterey for Windows for new users to download (Windows is by far the largest target audience according to my Sourceforge download stats). It has been months since I last looked into fixing the deployment issue that Monterey faced with the switch from Qt 4.X to Qt 5.1. I sat down tonight after finishing up some math homework and tried getting Monterey to work with the help of <a href="http://contingencycoder.wordpress.com/" target="_blank">QuantumCD</a>. Here's what happened. <br />
<br />
(Quick note: Since I did not have access to another Windows machine, I would rename my QTDIR so that any applications trying to reference it would not be able to find it.)<br />
<br />
I tried getting some Hello World Qt apps to "deploy on another Windows machine." I got that working and QuantumCD verified that it worked on his system, too. Then, I tried Monterey. Monterey ran just fine before I renamed my QTDIR. However after renaming it, Monterey would fail to launch and even fail to display <b>any</b> warning or crash dialogs. That meant that Montery was trying to load up something from my QTDIR. So I went through and copied mingw48_32/bin into Monterey's directory. Then changed my QTDIR... and crash. So that's obviously not all that I have to do. I kept experimenting, but this time, instead of changing my QTDIR's name, I would rename subfolders in it until Monterey would crash, signifying that Monterey needed something in that directory.<br />
<br />
After about 10 minutes of this, I figured out the <b>one</b> folder that Monterey needed that I had never copied over to Monterey's directory before (and NO online tutorials or forum posts said to copy this over). I figured out that QTDIR/mingw48_32/qml/QtQuick.2 was needed for Monterey to run. After copying that directory into Monterey's directory, I figured out that qtquick2plugin.dll and qmldir were both required. Bam, deployment problem solved!<br />
<br />
RootDir<br />
-platforms<br />
-qwindows.dll<br />
-qminimal.dll<br />
-QtQuick.2<br />
-qmldir<br />
-qtquick2plugin.dll<br />
-icudt51.dll<br />
-icuin51.dll<br />
-icuuc51.dll<br />
-libgcc_s_dw2-1.dll<br />
-libstdc++-6.dll<br />
-libwinpthread-1.dll<br />
-Monterey.exe<br />
-Qt5Core.dll<br />
-Qt5Gui.dll<br />
-Qt5Network.dll<br />
-Qt5OpenGL.dll<br />
-Qt5PrintSupport.dll<br />
-Qt5Qml.dll<br />
-Qt5Quick.dll<br />
-Qt5Sensors.dll<br />
-Qt5Sql.dll<br />
-Qt5V8.dll<br />
-Qt5WebKit.dll<br />
-Qt5WebKitWidgets.dll<br />
-Qt5Widgets.dll<br />
-SDL.dll<br />
-sdl-config<br />
<br />
I'm happy to have finally fixed that issue! Now I feel as though work on Monterey can continue this summer. I won't promise anything before then because I'm kept pretty busy here. I'm hoping to score a software development internship for this summer, which would be incredibly fun and educational. The UC system is looking at having us start even later than we already do, which means that I'd have almost a month after my internship to work on Monterey. <br />
<br />
When I do work on Monterey this summer I want to focus first on making it more polished, and then adding features. I want to make it easier to customize (probably using config files) and QuantumCD and I have been talking about making it themeable. Stay tuned for more information!<br />
<br />
You can grab Monterey 3.0.0 <a href="https://github.com/rovsuite/monterey/releases/tag/v3.0.0" target="_blank">here</a>.<br />
<br />
Thanks for stopping by!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-61475415020036287812013-10-27T14:04:00.001-07:002013-10-27T14:04:09.133-07:00BruinLyfe 1.2.0 - Tutorial added, better screen support<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiL0dLV6RPrAL34KjKxHb5nZmdSe1Z0HDUwt7ChYVrSL7pwdDMhENUSHWuH60ze5SYXe3GnSECllEAzLDOZuSzDB6_99O7almFCIgr7guXA56qEfFCoDeyyc9uFsNcsoXXAoRwY3xisro/s1600/tutorial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiL0dLV6RPrAL34KjKxHb5nZmdSe1Z0HDUwt7ChYVrSL7pwdDMhENUSHWuH60ze5SYXe3GnSECllEAzLDOZuSzDB6_99O7almFCIgr7guXA56qEfFCoDeyyc9uFsNcsoXXAoRwY3xisro/s400/tutorial.png" width="240" /></a></div>
<br />
BruinLyfe 1.2.0 has been pushed out to Google Play today. It brings better support for 7in+ screens and it also brings a first-run tutorial. There have been plenty of changes over the past 12 hours! Other updates include improved algorithms for detecting which dining halls are currently open, optimizing JSON parsing code and removing depreciated API calls.<br />
<br />
Thanks for stopping by and don't forget to download BruinLyfe <a href="https://play.google.com/store/apps/details?id=com.bruinlyfe.bruinlyfe" target="_blank">here</a>!<br />
<br />
You can check out the source code <a href="https://github.com/chriskonstad/BruinLyfe-Java" target="_blank">here</a>.<br />
<br />
Chris KonstadUnknownnoreply@blogger.com2tag:blogger.com,1999:blog-3860455071584166688.post-15037820957347418042013-10-27T00:59:00.000-07:002013-10-27T14:04:24.182-07:00Recent Developments: College Life and Bruin Lyfe<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_p_V_rYtD_tTywQZt3Mp7WoqXjO9w6Tobifg8z2ohGsTagN1aFpsBwx71IZ9aiWQVLmok9jrD2wqtbvOPXZFTFrJeVyka2jw1tFxTj4N84p6u9QcSI9yWdu99y3FZXOzyRGNf6OTvbDw/s1600/device-2013-10-26-162807.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_p_V_rYtD_tTywQZt3Mp7WoqXjO9w6Tobifg8z2ohGsTagN1aFpsBwx71IZ9aiWQVLmok9jrD2wqtbvOPXZFTFrJeVyka2jw1tFxTj4N84p6u9QcSI9yWdu99y3FZXOzyRGNf6OTvbDw/s400/device-2013-10-26-162807.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAU-jWJQ80D-F2FXWQRy9p94ibK3OqrbQu86prEW8lattyPNIRNdI_XXB7UU2LMduH9EGUWvu_FBbkUSlbeCsFK4alYV-0ymFf6YGlQRY97Bnn0l6oAkqzS2myMJw47bk1f96JgNnCfVk/s1600/device-2013-10-26-162832.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAU-jWJQ80D-F2FXWQRy9p94ibK3OqrbQu86prEW8lattyPNIRNdI_XXB7UU2LMduH9EGUWvu_FBbkUSlbeCsFK4alYV-0ymFf6YGlQRY97Bnn0l6oAkqzS2myMJw47bk1f96JgNnCfVk/s400/device-2013-10-26-162832.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://play.google.com/store/apps/details?id=com.bruinlyfe.bruinlyfe" target="_blank">Get it on Google Play!</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Thanks for stopping by!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Chris Konstad</div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-3860455071584166688.post-45627782153357801942013-09-06T12:25:00.000-07:002013-09-06T12:25:39.681-07:00The Future of Mobile DevelopmentA few weeks ago, I had the privilege to attend the <a href="http://qtinsights.com/" target="_blank">Qt Insights</a> 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.<br />
<br />
<h3>
The Future of Mobile Development</h3>
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. <br />
<br />
<h3>
The Current Status of Cross Platform Mobile Development</h3>
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.<br />
<br />
<h3>
Problems with the Future</h3>
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.<br />
<br />
<h3>
How to Remedy the Problems</h3>
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. <br />
<br />
<br />
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.<br />
<br />
Thanks for stopping by!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com3tag:blogger.com,1999:blog-3860455071584166688.post-5904430785525358312013-08-26T22:40:00.001-07:002013-08-26T22:46:02.111-07:00Monterey 3.0 Crash on WindowsJust 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.<br />
<br />
Monterey was compiled with MinGW 4.8 32bit with Qt 5.1.0(mingw48_32) from the Qt SDK on Windows 7 64bit.<br />
<br />
Sorry about this,<br />
<br />
ChrisUnknownnoreply@blogger.com4tag:blogger.com,1999:blog-3860455071584166688.post-1183467408928711492013-08-26T14:13:00.000-07:002013-08-26T14:13:29.257-07:00Tutorial: Adjustable UI with QSplitters<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYYfQB5rLFXaEj-rnkcKDPxXabLSUYPuoq78KMkIfr28gFSRZ3dcctP45XKTvZ-GycMYqs3gkZ-rWvgcWQzib44BCCfhmV0e32xDX0Rg7918uB8efUdVwfnf5vudeWoKX_H779T83Io4s/s1600/Monterey+3.0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYYfQB5rLFXaEj-rnkcKDPxXabLSUYPuoq78KMkIfr28gFSRZ3dcctP45XKTvZ-GycMYqs3gkZ-rWvgcWQzib44BCCfhmV0e32xDX0Rg7918uB8efUdVwfnf5vudeWoKX_H779T83Io4s/s400/Monterey+3.0.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqbM0PB89A9pzcO6htb1P9AnyvHJjjeg4CLbnwwUxcTLre29XvRSjxQW2yr6XgMwyOOeySjIW0T-k1nz8GOmrexD6jAGf2nb3YFjb3Pe-7EAF27e9G8tYuVmq3mLB8AAtUtQO1d9BMvFw/s1600/adjusted.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqbM0PB89A9pzcO6htb1P9AnyvHJjjeg4CLbnwwUxcTLre29XvRSjxQW2yr6XgMwyOOeySjIW0T-k1nz8GOmrexD6jAGf2nb3YFjb3Pe-7EAF27e9G8tYuVmq3mLB8AAtUtQO1d9BMvFw/s400/adjusted.PNG" width="400" /></a></div>
<br />
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.<br />
<br />
Here are the relevant pieces of code:<script src="https://gist.github.com/chriskonstad/6346619.js"></script>
<br />
As you can see, it's all pretty simple and easy to do. The default values are set using <span style="font-family: Courier New, Courier, monospace;">QSplitter::setStretchFactor(int index, int value)</span>, which uses the relative weight of each stretch factor to adjust the sizes. <br />
<br />
Thanks for stopping by,<br />
<br />
Chris KonstadUnknownnoreply@blogger.com3tag:blogger.com,1999:blog-3860455071584166688.post-67531725245618959092013-08-19T11:29:00.000-07:002013-08-19T11:29:12.470-07:00Monterey 3.0 Status ReportGood 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. <div>
<br /></div>
<div>
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! </div>
<div>
<br /></div>
<div>
Thanks for stopping by!</div>
<div>
<br />Chris</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-83275460257680953092013-08-16T00:04:00.002-07:002013-08-16T00:04:46.668-07:00Monterey 3.0 Status Report<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjX-5i_eJPv1jY9V_mi48b-GPZ0xbOBjDE5z0cCCxrsgZzqLW07JYRYajx5V8oS4XNbferGEXrf0tn9N-in_7c-HwOeOQd9slZ7e3i8W4J0h2Tr1QYUW_RZPbaW3-J0HKkgPJZVZT8jV8/s1600/Monterey.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjX-5i_eJPv1jY9V_mi48b-GPZ0xbOBjDE5z0cCCxrsgZzqLW07JYRYajx5V8oS4XNbferGEXrf0tn9N-in_7c-HwOeOQd9slZ7e3i8W4J0h2Tr1QYUW_RZPbaW3-J0HKkgPJZVZT8jV8/s400/Monterey.PNG" width="400" /></a></div>
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 <a href="http://contingencycoder.wordpress.com/" target="_blank">QuantumCD</a>'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 <a href="https://github.com/rovsuite/monterey/issues?milestone=1&state=open" target="_blank">here </a>for more information.<br />
<br />
Now I also have an important announcement to make. <b>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 <a href="http://github.com/rovsuite">http://github.com/rovsuite</a>. </b>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. <br />
<br />
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. <br />
<br />
Thanks for stopping by and I'll post some more information regarding changes to Monterey soon!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-69569846966028560392013-08-04T10:28:00.001-07:002013-08-04T10:28:33.938-07:00New Download Location for ROV-SuiteSince 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 <a href="https://github.com/chriskonstad/monterey/releases" target="_blank">here</a>.<br />
<br />
Thanks for stopping by!<br />
<br />
ChrisUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-3860455071584166688.post-23113390788892251022013-07-16T20:50:00.003-07:002013-09-06T12:26:51.729-07:00Setup Your Raspberry Pi to Run an ROV (along with an Arduino and Monterey)Big news! I spent some time today writing some scripts that will install all of the necessary software to configure a fresh Raspbian install to stream video, uptime and CPU temperature to Monterey. Check it out at <a href="https://github.com/rovsuite/raspberrypiscripts" target="_blank">GitHub</a>! More features will be added later. Right now, it downloads all dependent packages, compiles MJPG-Streamer and setups up autorun scripts. All you have to do is put the scripts at <i>/home/pi/</i> and run <i>setupscript.sh</i>. It'll take care of the rest! An internet connection is required.<br />
<br />
I have a few extra features planned for Monterey now that the Raspberry Pi setup script is working.<br />
<br />
<ul>
<li>Autoload video stream based on RPi's IP address</li>
<li>Arduino firmware loading (script still needs to be written)</li>
</ul>
<div>
Thanks for stopping by!</div>
<div>
<br /></div>
<div>
Chris Konstad</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-88304901106348166502013-07-15T13:19:00.002-07:002013-07-15T13:19:33.423-07:00ROV-Suite: OpenROV Compatible Bottomside<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Ip2dbp61jCJrbeM2C3kv65Xqz6wZUCCSJ9_urq61vaW_RWUPMYsjMwnSxYeRgd6v1zVHN37sK-3VwYqKciyxm2v_P7pbizsbqkGTRoGKObb8Dh8ARtMw8yLG1QnwqXgEN5SIkCDZAp4/s1600/OpenROV+Wiring.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Ip2dbp61jCJrbeM2C3kv65Xqz6wZUCCSJ9_urq61vaW_RWUPMYsjMwnSxYeRgd6v1zVHN37sK-3VwYqKciyxm2v_P7pbizsbqkGTRoGKObb8Dh8ARtMw8yLG1QnwqXgEN5SIkCDZAp4/s400/OpenROV+Wiring.png" width="271" /></a></div>
Here's the wiring diagram showing how to wire up the Arduino and Raspberry Pi (powered by a <a href="http://www.hobbyking.com/hobbyking/store/__4319__turnigy_3a_ubec_w_noise_reduction.html" target="_blank">uBEC </a>of your choice). It's missing ethernet and the webcamera (along with any sensors of your choice), but those are easy to figure out where to plug in. The webcamera plugs into the Raspberry Pi's second USB port (the Arduino is in the first one). The ethernet might need to go to a small networking hub, but both the Arduino and the Raspberry Pi should be plugged into the ethernet. Unlike OpenROV, which uses the BeagleBone as the only attachment point for the network which then forwards the command packets to the Arduino over serial, the Raspberry Pi in this setup doesn't act as a forwarder. Instead, the Arduino gets the packets directly from Monterey. The Raspberry Pi is there to forward the webcamera video, allow for remote Arduino firmware flashing, etc. It is also used to power the Arduino, but that could also be done using the uBEC and the Arduino's VIN pin. <br />
<br />
Thanks for stopping by!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-12078526060097050072013-07-14T20:13:00.000-07:002013-07-14T20:13:04.815-07:00Monterey Update<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYmHN7QMBe4qSss65CvGA3uLharmnk1lXN4K9S4-sJoW03LWAI8yyBArMSMBz3aQ8Dx3twXUeYsB-ZfYlbFA_usCnTXVgsWUBMIslbpfJpiNkDFV0fczx9gRXlJPWv-JNflHtRLVAxyyc/s1600/Monterey+with+Video.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYmHN7QMBe4qSss65CvGA3uLharmnk1lXN4K9S4-sJoW03LWAI8yyBArMSMBz3aQ8Dx3twXUeYsB-ZfYlbFA_usCnTXVgsWUBMIslbpfJpiNkDFV0fczx9gRXlJPWv-JNflHtRLVAxyyc/s400/Monterey+with+Video.PNG" width="400" /></a></div>
Good news, everybody! I've successfully gotten video to stream from a webcamera to Monterey through my Raspberry Pi! Here's a picture of Monterey's GUI, with me sitting at my computer (a custom built desktop with dual 21.5" 1080p monitors, K70 mechanical keyboard, G500 mouse, etc) as an example IP video stream. <br />
<br />
I set up my Raspberry Pi following this <a href="http://wolfpaulus.com/jounal/embedded/raspberrypi_webcam" target="_blank">tutorial</a>. I used the official OpenROV spec'd webcamera, a WideCam F100. Everything about it works pretty well! My only complaint is a slight bit of lag, but it should be useable, especially for observation missions.<br />
<br />
I want to add the ability to take high-res still photos with the ROV and send them up to the topside, as requested by <a href="http://openrov.com/forum/topics/ability-to-take-still-shots-using-camera" target="_blank">Marcus</a>.<br />
<br />
<a href="https://github.com/chriskonstad/monterey/tree/be80d864fd709539f535186adae8795fd0bb8d29" target="_blank">Here's the latest commit in the HUD branch.</a><br />
<br />
If you'd like to see features added to Monterey, or if you find any bugs, please open an issue with your request <a href="https://github.com/chriskonstad/monterey/issues" target="_blank">here</a>.<br />
<br />
Thanks for stopping by!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-3860455071584166688.post-10469610498217028582013-07-11T23:54:00.000-07:002013-07-11T23:56:34.978-07:00Monterey v3.0 BETA in the works!<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWO-iN-OhQwko8UK82wW0mK_PH7p9pvIfK9ssNr7kzuGjq-KpSqrN6UOaqq8ZRHmVvePkQlgY707sHJ0zVV7AdbPxjctSEjmezXpnm1-2ojDEf1P-egFvjDVyakLL1YwAv6_rrO1mM0nI/s1600/Monterey3.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWO-iN-OhQwko8UK82wW0mK_PH7p9pvIfK9ssNr7kzuGjq-KpSqrN6UOaqq8ZRHmVvePkQlgY707sHJ0zVV7AdbPxjctSEjmezXpnm1-2ojDEf1P-egFvjDVyakLL1YwAv6_rrO1mM0nI/s400/Monterey3.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">An early, ugly and pre-alpha build of Monterey v3.0.</td></tr>
</tbody></table>
Here's a screenshot of the latest version of Monterey, which is very much still a work in progress! I've shifted hosting the latest version of the code from Sourceforge to <a href="http://github.com/chriskonstad/monterey" target="_blank">Github</a> because Github is a better service, in my opinion. To keep updated, please look to the Github page (http://github.com/chriskonstad/monterey). I've finally gotten video to work (kinda) by streaming the video feed from a USB webcamera using a Raspberry Pi and MJPG-Streamer, following <a href="http://wolfpaulus.com/jounal/embedded/raspberrypi_webcam" target="_blank">this tutorial</a> (the Google hompage is just a QWebView acting as a placeholder for the video feed). <a class="g-profile" href="http://plus.google.com/113103179869186207520" target="_blank">+Eric Stackpole</a> wrote a blog post on <a href="http://openrov.com/profiles/blogs/ui-and-ux-design-for-openrov-cockpit" target="_blank">OpenROV's blog</a> detailing his thoughts regarding OpenROV's UI and UX, and I'm not going to lie, it really influenced how I think Monterey should look. Themeing Monterey is less important than getting features working, though, and I have some really cool features in the pipeline!<br />
<br />
<ul>
<li>Remote flashing of ROV software using a Raspberry Pi</li>
<li>IP video via Raspberry Pi</li>
<li>HUD</li>
<li>PID algorithm for position holding</li>
<li>Exponentially weighted moving averages for smoothing sensor data</li>
<li>Vertical speed indicator</li>
<li>Tailored for OpenROV electronics and hardware (with the exception of replacing the BeagleBone with a Raspberry Pi)</li>
<li>An awesome theme borrowing heavily from Eric's mockup</li>
</ul>
<div>
I've already done some work the past two days on Monterey, bringing much needed improvements to the package. I've learned more about proper software architecture and UI/UX design since I last worked on Monterey, and I hope it'll show in my new work. While adding features to Monterey, I'll also be refactoring the older code to made it cleaner and easier to work on. Also, Monterey 3.0 will link with the Qt5 libraries and use QQuick2 for some of the widgets (see the depth-tape for an example).</div>
<div>
<br /></div>
<div>
Features/bugs already worked on:</div>
<div>
<ul>
<li>DiveTimer has been moved to it's own class and now automatically starts and pauses when the ROV enters and leaves the water.</li>
<li>Monterey now has a fullscreen mode!</li>
<li>The UI is now scalable, meaning Monterey now works on netbooks with 1024x600 displays through laptops with 1080p monitors. This feature was long needed, and I'm glad I've gotten good enough at layouts to add this functionality.</li>
</ul>
<div>
Thanks for stopping by!</div>
</div>
<div>
<br /></div>
<div>
Chris Konstad</div>
Unknownnoreply@blogger.com26tag:blogger.com,1999:blog-3860455071584166688.post-90205519366140764612013-06-24T11:50:00.000-07:002013-06-24T11:50:54.454-07:00MATE International ROV Competition 2013<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-prn2/q73/s720x720/983956_665820836766542_1429848919_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-prn2/q73/s720x720/983956_665820836766542_1429848919_n.jpg" width="400" /></a></div>
The past week, I was in Tacoma, Washington at the <a href="http://www.marinetech.org/rov-competition/" target="_blank">MATE International ROV Competition 2013</a>. My team, <a href="http://jesuitrobotics.org/" target="_blank">Jesuit Robotics</a>, took first place in the collegiate level ("Explorer" class)! There were many awesome teams there with fantastic ROVs!<br />
<br />
I'd like to take a moment to thank the team at MATE for putting on this incredible competition. Through my time competing in the MATE ROV competition, I have learned much about machining, 3D CAD, electronics and software. In fact, MATE is what introduced me to programming. In college, I plan to do some research into ROV control systems, and I'd love to take a trip on a real research vessel. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrXTOf5Hekpaj50v4UpGNdC6taaw9mWJw0n5Gry6tNiQkdC1ZQCi-hcYm2TKOOfYHOXMl9lsFouxJxYdRzTpZPa53VILaWYEgAA7CFCkgZu7y-4rfjWCPnlMNINOIyXFu6Bob7B5PmUXg/s1600/DSC_4292.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrXTOf5Hekpaj50v4UpGNdC6taaw9mWJw0n5Gry6tNiQkdC1ZQCi-hcYm2TKOOfYHOXMl9lsFouxJxYdRzTpZPa53VILaWYEgAA7CFCkgZu7y-4rfjWCPnlMNINOIyXFu6Bob7B5PmUXg/s400/DSC_4292.JPG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOfcsfr9hKrMqqfSQ651WRSJXG9r_YfMpraZLK2EkDhlqXCEuNwVpmjCgo5vvtb4ceKtlc4vZA6CxpQuhnuLj1YC6eH26Askpo_3Q0Tx3Fng_21kXP73v7r4toCGkj7D8uSYq8zFR9wQw/s1600/DSC_4293.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOfcsfr9hKrMqqfSQ651WRSJXG9r_YfMpraZLK2EkDhlqXCEuNwVpmjCgo5vvtb4ceKtlc4vZA6CxpQuhnuLj1YC6eH26Askpo_3Q0Tx3Fng_21kXP73v7r4toCGkj7D8uSYq8zFR9wQw/s400/DSC_4293.JPG" width="400" /></a></div>
The two pictures above are of the <a href="http://www.bmstu.ru/english/" target="_blank">Bauman Moscow State Technical University</a>'s ROV control system. That TV built into the TCU (see the upper picture) is a 3D TV with a view of the ROV's fully articulated arm. Using an XBox360 controller to control the arm was easy, precise and intuitive thanks to the 3D vision! Depth of field when operating underwater with a normal 2D camera system is non-existent. I found the 3D vision system to be really useful! Also, they mounted a touchscreen monitor between their joysticks to act as an instrument panel. I think they have one of the coolest control systems at the MATE competition. I would like to implement some of their features in my own software along with some other ideas I've been thinking of adding (an IMU for total position hold, for example).<br />
<br />
Thank you, MATE, for putting on such an awesome competition! Also, I'd like to thank the mentors of my robotics team, especially my dad, for putting so much time and effort into helping teach high school students about everything from NTSC video signals and composites to CNC mills and User Datagram Protocol packets. Everyone involved in the MATE competition (administrators, judges and mentors) is helping the next generation of engineers learn how to be professional engineers in a fun and exciting field. To everyone involved, thank you!<br />
<br />
Thanks for stopping by,<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-55948918787102859232013-06-14T12:28:00.001-07:002013-06-14T12:28:43.091-07:00What's Kept Me Busy the Past Week<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0EUAcg3Kb7iuxU-FT7vbMpD_TJrvV4mtCfDnCUlSM8H0vE4pb3cIWPP_HMlhIZDhZiGwYPMiMxaTSTXqILp9VXDI1q1ZcLZOEAHcxn8ZuVRgyXfpErlWTfUUgXaZo17n90uHmiUbpMyw/s1600/png.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0EUAcg3Kb7iuxU-FT7vbMpD_TJrvV4mtCfDnCUlSM8H0vE4pb3cIWPP_HMlhIZDhZiGwYPMiMxaTSTXqILp9VXDI1q1ZcLZOEAHcxn8ZuVRgyXfpErlWTfUUgXaZo17n90uHmiUbpMyw/s640/png.png" width="382" /></a></div>
This is the new <a href="https://play.google.com/store/apps/details?id=com.chrisk.UnitCircleQuiz" target="_blank">Unit Circle Quiz</a>, rewritten from the ground up in Java. I decided to start doing my Android development the "proper" way, using Java instead of C++ and JNI. I'm really pleased with how my app runs! And while I still have a ton of reading and learning to do, I am LOVING Android's activities, intents and fragments! I also love how the resources are split up, the strings.xml file (among others) and I really love the IDE. I'm using the buggy and sometimes unstable Android Studio, but the feature set is fantastic. I really cannot wait for Google to polish it up some more because, while not quite there yet, it is becoming an awesome IDE. <br />
<br />
The new <a href="https://play.google.com/store/apps/details?id=com.chrisk.UnitCircleQuiz" target="_blank">Unit Circle Quiz</a> app has a lot of firsts for me. It's my first Java application, ever. It is my first app that has access to the Android APIs. It is my first app that uses a SQLite database. It's my first app with haptic feedback. And... it will be my first app to have a free, ad-supported version alongside the normal paid version. My goal is to release both versions of this app before I leave for Seattle for the MATE 2013 International ROV Competition with my robotics team, but we'll see what my schedule allows. For now, the paid version has been updated.<br />
<br />
<a href="https://play.google.com/store/apps/details?id=com.chrisk.UnitCircleQuiz">
<img alt="Get it on Google Play" src="https://developer.android.com/images/brand/en_generic_rgb_wo_60.png" />
</a>
<br />
<br />
Thanks for stopping by!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-25376167301943933872013-05-30T18:12:00.003-07:002013-05-30T18:12:59.844-07:00Sorry for the QuietnessI've been kept really busy recently with my high school graduation and my robotics team's practice schedule, so I haven't had much time for personal programming projects. For robotics, I had the opportunity to learn all about Qt's Event Filters, which are pretty cool and I'll definitely be using them more. This summer, I plan to get more practice with QtQuick2 and I want to start learning Java because I'll need to know that language for college. My goal is to publish a few more paid apps this summer so I can start making money on my programming hobby, but we'll see how well that goes.<br />
<br />
Thanks for stopping by and please don't expect regular updates until sometime in July (once robotics is over)!<br />
<br />
ChrisUnknownnoreply@blogger.com7tag:blogger.com,1999:blog-3860455071584166688.post-7372071635029188522013-04-23T22:04:00.001-07:002013-04-23T22:04:50.545-07:00College UpdateI've been really busy the past few weeks with college tours and scholarship interviews, and everything is finally coming to a close. This next year, I will be attending the University of California, Los Angeles for Computer Science. I can't wait! Scholarship-wise, I have received a $10,000 scholarship from the <a href="http://alumni.ucla.edu/" target="_blank">UCLA Alumni Association</a> and $10,000 from the <a href="http://www.coca-colascholars.org/" target="_blank">Coca-Cola Scholarship Foundation</a>. I have met more amazing people through both programs than I could have ever imagined and I highly recommend that people apply for both scholarships! <br />
<br />
For the Coca-Cola scholarship, I was flown out to Atlanta, Georgia for a weekend of fun and interviews. There were about 250 of us scholars and we listened to presentations, toured various landmarks and were interviewed by some Coca-Cola Alumni. It was an amazing program! I met outstanding high school seniors from all over the country that had started non-profits, worked for defense contractors and fought gang-violence in their communities (just to name a few). I can't even begin to say how truly honored I am to have met them! <br />
<br />
For the UCLA Alumni scholarship, I had to go through a 3 part competition with the other 30-something scholars from around California. I had to miss the first day, which was team building and games, because I was in Atlanta for my interview, but the second day was a ton of fun! I met many awesome people and I can't wait to go to school with them next year! <br />
<br />
Thanks for stopping by and Go Bruins!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-3799801481350731252013-04-10T13:21:00.000-07:002013-04-10T13:21:10.483-07:00Update: Spring Break, College Acceptances, etc.Sorry for being so quiet for awhile. I went traveling with my family during Spring Break and didn't have access to a computer or internet for almost 2 weeks. It was great to unplug for awhile! <br /><br />In other news, I found out that I was accepted by USC, UCLA and UCSD for computer science! I'm pretty thrilled to be able to choose between such great schools!<br />
<br />
Right now, I have a few small tweaks coming down the line for the Unit Circle Quiz android app. I fixed a small UI bug and I'm adding a main menu screen. I might add some other features soon, and maybe a "lite" version, but we'll see. For my school, I have a fair amount of work to do with our school club directory app, so that'll take up more of my free time from now until just after it launches. And finally, I have a ton of work (as usually) to do for my robotics team. I'm kept pretty busy!<br /><br />I have big plans for this summer (my first summer without summer homework, and also my longest summer vacation to date). I want to push out a few more Android apps and write a BUNCH of QML/C++ tutorials as I more fully learn how to leverage them together. The official release of Qt 5.1 will help out with that...<br />
<br />
Thanks for stopping by!<br />
<br />
Chris KonstadUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-79469391605395550332013-03-17T09:18:00.002-07:002013-03-17T12:26:23.591-07:00UnitCircleQuiz<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/H7baYJQPyd8g14IMXifnxyXjZ3ucxl_56J8SSoH_pmvly0XCmhy610nRYvlnrFJI0BE" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://4.bp.blogspot.com/H7baYJQPyd8g14IMXifnxyXjZ3ucxl_56J8SSoH_pmvly0XCmhy610nRYvlnrFJI0BE" width="250" /></a></div>
Good morning! I have finally written and released my first paid-application! It's called <a href="https://play.google.com/store/apps/details?id=com.chrisk.UnitCircleQuiz" target="_blank">UnitCircleQuiz</a> and I wrote it to help people memorize the unit circle. It displays all of the angles in Radians and their corresponding coordinates within the unit circle. The timer at the top records how long it takes you to complete the unit circle and the progress bar along the bottom shows you how far through the round you are. Once completed, a high score list is shown with your best scores (percentage correct) and best times. <br />
<br />
You can find it here: https://play.google.com/store/apps/details?id=com.chrisk.UnitCircleQuiz.<br />
<br />
For the technically inclined: I wrote this app using QML and Qt C++, which was a pretty amazing experience! I could easily and instantly test out any screen resolution and aspect ration by debugging the QML UI file as a native application on my computer. If you're looking for a language to develop Android apps in, seriously consider QML and C++!<br />
<br />
Thanks for stopping by!<br />
<br />
Chris Konstad
<br />
<br />
<a href="https://play.google.com/store/apps/details?id=com.chrisk.UnitCircleQuiz">
<img alt="Get it on Google Play" src="https://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
</a>Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-3860455071584166688.post-18493256227443615462013-03-05T16:51:00.001-08:002013-03-05T16:51:21.785-08:00Important: Fixed Monterey 2.0.3Beta Download for WindowsSo I found out over the weekend that my zip archive on SourceForge for Monterey was lacking one DLL that caused Monterey to not function. I just fixed the issue and uploaded a new zip. You can find it <a href="http://sourceforge.net/projects/rov-suite/files/Monterey/2.0.3Beta/Monterey%20Win32-2-0-3-Beta.zip/download" target="_blank">here</a>. I feel really embarrassed for letting such a glaring issue slide by for so many months. Sorry if I caused any problems! <br />
<br />
I'm thinking about shifting rov-suite from SourceForge to Github because I like Github's social features and Github is just generally more polished. If I do that, the executable binaries will be hosted elsewhere, maybe in the public folder of my DropBox, and linked to the Github page. <br />
<br />
Thanks for stopping by,<br />
<br />
ChrisUnknownnoreply@blogger.com6tag:blogger.com,1999:blog-3860455071584166688.post-62317744142244744622013-02-18T17:04:00.002-08:002013-02-18T17:04:38.364-08:00Networking Test Update: Fixed Phone Layout<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-tWTH-Nd-E9k/USKy14B-ciI/AAAAAAAAAnk/xaFYipnecMk/s1600/Screenshot_2013-02-18-14-53-32.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-tWTH-Nd-E9k/USKy14B-ciI/AAAAAAAAAnk/xaFYipnecMk/s400/Screenshot_2013-02-18-14-53-32.png" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ruafCyFM1dc/USKyyxjQzDI/AAAAAAAAAnc/1we-UBS3uos/s1600/Screenshot_2013-02-18-14-53-41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-ruafCyFM1dc/USKyyxjQzDI/AAAAAAAAAnc/1we-UBS3uos/s400/Screenshot_2013-02-18-14-53-41.png" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I updated NetworkingTest today to fix how it scales for phone screens. Now, the tabbed UI gives you a better view of your received packets while improving the layout of the settings dialog. Feature wise, nothing has changed. This update only fixes a few bugs (see <a href="http://play.google.com/store/apps/details?id=org.rovsuite.NetworkingTest" target="_blank">Google Pla</a>y for more information) and fixes the scaling issue.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I highly recommend that you update to the latest version.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Thanks for stopping by!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Chris</div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3860455071584166688.post-39580262312480642262013-02-17T23:54:00.002-08:002013-02-17T23:55:40.888-08:00Thumb Hypoplasia Update: Version 1.1<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc7LHB3BBag8KsWp4knxr0_vTGXgiYIhJfHVZJUH30AUcx7qs_fkcr6ORf-1vBS0-n7k7dOOMICnJ0oIVGulhnFSrTY7c8nbIOGd5mgHA3pWym-g2d-ajxq4VycQsJNT1t0ePqYxcWQwg/s1600/Screenshot_2013-02-17-23-47-49.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc7LHB3BBag8KsWp4knxr0_vTGXgiYIhJfHVZJUH30AUcx7qs_fkcr6ORf-1vBS0-n7k7dOOMICnJ0oIVGulhnFSrTY7c8nbIOGd5mgHA3pWym-g2d-ajxq4VycQsJNT1t0ePqYxcWQwg/s400/Screenshot_2013-02-17-23-47-49.png" width="240" /></a></div>
<br />
<br />
I just updated Thumb Area to version 1.1. In the update, I cleaned up the source code a little and I added a few user-visible features:<br />
<br />
<ul>
<li>Overwrite protection: The user can no longer accidentally overwrite saved thumb data</li>
<li>Informative Save Successful Dialog: The dialog now shows the full file path instead of the path to the folder</li>
</ul>
<div>
This update is small but it is important. I highly recommend updating!</div>
<div>
<br /></div>
<div>
Thanks for stopping by,</div>
<div>
<br /></div>
<div>
Chris Konstad</div>
Unknownnoreply@blogger.com0