This short post will help you access the things and dplsubmit from home. For now it will focus on the Windows environment, but I may expand it to include screenshots from Linux too (sorry Mac, u no can haz tutorial).
NOTE: The following should work for Linux as well, but from past experience I know it doesn’t always go smoothly.
Go to vpn.uwec.edu and follow the instructions to install Cisco AnyConnect. Visit http://www.uwec.edu/Help/drives/vpn.htm if you are having problems.
Once AnyConnect is installed log in using your UWEC username and password.
If you don’t have PuTTY yet, you will need to go here and download it.
Open PuTTY and in the Host Name box enter the address of the server you want to connect to; for example, “dplsubmit.cs.uwec.edu”. You can also preface this with your username: “username@dplsubmit.cs.uwec.edu”. This will save you a step later.
After entering the host name, hit enter or click “Open.” A terminal will open; log in with your UWEC username and password.
There you have it! You can now, from the comfort of your own bed, do your CS330 homework you’ve been putting off!
]]>Our final project will allow users to control the Orbotix Sphero using pre-defined paths. The application will also allow users to create their own paths which the Sphero will follow. A final goal of the application would allow the user to string together paths and have the Sphero to follow the final composite path.
The main difficulty will come from taking the path and sending it to the Sphero in a way the Sphero understands. If we have time, we would also like to create another layout to be used for tablets, since the greater screen space would allow us to make more elaborate paths.
One task to be completed is to create the user interface. This will require a user interface that allows the user to select paths to send to the Sphero and one to create paths. Andy has started this task, and I will assist.
Another task is to take a path and transform it into something the Sphero understands. After we have created that, we should be able to send commands to the Sphero and have it move! Luke is working on this task, and I will help him out when needed.
]]>I have been a customer of T-Mobile for several years now. In fact, other than my first phone contract (which was with AT&T) I’ve always been a T-Mobile customer. One of the reasons that kept me coming back to then is their “WiFi Calling” feature. Basically as long as you are on wifi, you can send and receive both calls and text messages.
Or at least you’re supposed to be able to. Recently (within the past couple of years) T-Mobile changed how they implement the WiFi calling feature. I used to have very few problems with it, but now it either doesn’t work at all (there are many times I look at my phone and see an error message because of WiFi calling) or when it does work the quality is poor.
You might wonder why this feature would be so important to me. I’ll admit it’s probably not extremely necessary for everyone, but where I live has poor cell reception as it is, so when I’m down in my basement I have no signal whatsoever. And of course I don’t have a land line.
So recently I went on a journey to find an alternate solution to T-Mobile’s built-in feature. What I came up with is:
Now you may be wondering, “How can I get a piece of this freeing, free, functional, Google Voice, GrooVe IP pie?” Well, lucky for you all you have to do is follow the how-to below!

I have been wanting to set up a VirtualBox remote desktop server so that I can access my VMs from anywhere, but I don’t want my computer running all the time. I’m not going to go into the details of the process of setting up the server, but I will do a high level overview of how I set up my computer to wake up with a simple button push from my phone. To accomplish this, you have to use a technology called ‘Wake-on-LAN.’ Basically with this enabled, when your computer is asleep, you can send a ‘magic packet’ to the computer that wakes it up. My phone will be the thing sending the magic packet.
Because everyone’s hardware is different, I can’t give a how-to that’s going to work perfectly for you. The relevant hardware in my setup includes:




My app is a comic book inventory tracker. It allows the user to add, modify, search, and delete comics with various attributes (title, publisher, image, grade, purchase price, and a few others). I am an amateur comic book collector and never have a good grasp of which comics I have and in what conditions, so I thought this would be useful. The user interface is pretty bad, but I did make two layouts – one for phones and one for tablets. When entering the comic, I force the phone layout into portrait (the only way it looked good). The tablet I forced into landscape when adding the comic to take advantage of the screen real estate.
To edit or delete comics, I added options to the options menu when displaying the comic you want to modify. To delete, just select the delete option and confirm. To edit the comic, I made an AlertDialog listing the various things you can edit. Selecting on of those brings up another dialog where you can either edit the attribute or cancel.
I learned quite a bit with this project. I don’t know if the way I accomplished it is considered a hack, but forcing certain orientations based on the screen size was an interesting problem. I also had never used the options menu, but know that I know it’s not too difficult, I may use it more often to simplify my layouts and make my apps seem more professional. I also learned that I will never, ever be using SQLite for anything more than a couple of tables.
The code is located at https://bitbucket.org/tboettcher/cs491.persist.
]]>My application allows the user to enter a word or words and select the output function. When the user submits, the string is sent out to Wolfram|Alpha’s API where it is encoded. What happens when the encoded string is returned depends on the output function: one function uses the camera’s flash to flash the morse code; another uses the phone’s vibrator to vibrate the morse code; and the final function simple adds the morse code to the clipboard allowing the user to paste it into another application.
The other part of the application pulls a list of links from www.twodee.org and presents them in a ListActivity’s ListView. Each item is clickable and directs the browser to the clicked title’s link.
There were a lot of components to the functionality of this application, and a lot of it was fairly new to me. I learned how to access the phone’s Vibrator and Clipboard, which were both easy enough to do. I decided to add a warning to the MorseCodeActivity, so I learned the basics of creating an AlertDialog. I got to play with the Observer pattern a little, and I got to learn a little about morse code. Above all, I learned that working with other people’s poorly documented code is difficult, and although I didn’t add a lot more commenting to this project, I will strive in future projects to create easier-to-read and well documented code.
If you are interested in viewing the code, it is located at https://bitbucket.org/tboettcher/cs491.web_api
]]>In my application, I wanted the user to be able to select the number of players in the game. The application would then generate a list of the players and their scores (initialized as “Player 1” with a score of 0). I then wanted the user to be able to click on a player, taking him to a page where he can enter the various things needed to calculate the final score.
To do what I wanted in the MainActivity was pretty easy. I used a TextView and NumberPicker to ask the user how many players there are, and a Button to submit that to the next activity.
To list the players and their scores I extended ListActivity and created a custom layout with two TextView widgets, one for the player’s name and one for the player’s score. When the user clicks on an item it brings up the next activity, expecting a result to come back to it.
Finally, I was able to allow the user to enter values for the various items to calculate the score. Because there are so many of them and I wanted to user NumberPicker to select the values, I had to embed the entire layout in a ScrollView. I hadn’t used ScrollView before, but after I figured out that’s what I needed, it wasn’t hard to implement at all. For the underlying layout, I used a LinearLayout with TextViews, an EditText (for the player’s name), and NumberPickers. At the end of the layout (seen partially above), I wanted to ask a yes or no question, use a CheckBox to record the answer, and have the question’s TextView and CheckBox next to each other horizontally. To do this I embedded another LinearLayout in my vertical LinearLayout, which worked well. Finally, at the very end of the layout I had a button that, when clicked, would calculate the score from the values given above and return to the list of players. I also made sure the back button did the same thing in case the user accidentally hit that instead.
To do most of the passing back and forth of data, I had to really become used to using Intents and Extras. However, once I did one and really understood what was happening, the rest wasn’t bad. Another thing that held me up was the ArrayAdapter for the ListView, but again, once I reviewed our class work and videos, it really wasn’t too bad.
If anyone wants to look at the code, I have it all in a Mercurial repo on Bitbucket: https://bitbucket.org/tboettcher/cs491.u_and_i
]]>I signed up for this class with an idea in mind: by the end of it I wanted to be able to complete a project I had been contemplating for a while. I use a program called GnuCash to keep track of all my personal finances, but it has no mobile or web-based components. I am hoping with the knowledge I get from this class I will be better equipped (and motivated) to write a web service and be able to connect to that using a mobile application, allowing me to save transactions on the fly to my existing GnuCash file (I’m also hoping by that time I will be able to say if this is even feasible or not :P ).
Other programs I want to explore include: