Category Archives: open source

End Of the Semester

For Jon and I this is the end of the road for undergrad.  This Android project was a great way to end it.  All three of us want to continue to work on the app after school ends, we still have plans for it.

 

I’ve learned quite a bit over the course of the semester, not just coding with Android but how to work with a team.   We all became pretty good at using git, although sometimes the project still hates me and doesn’t want to work but that’s ok.  We have hundreds and hundreds of emails over the past few months talking about the app.  We also took advantage of the library TVs and did a bit of code review at our (bi)-weekly meetings.  Of course, we all learned Java for Android quite a bit, too and attempting to use the GUI for XML.

 

This was a great experience and a great way to end my undergraduate degree.

 

 

Thanks to everyone who helped along the way,

 

James Celona

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

Using 3rd Party Libraries

Task Butler uses two open source third party libraries: ActionBar Sherlock and AmbilWarna

ActionBarSherlock is an excellent library that emulates the Ice Cream Sandwich action bar in older versions of Android. This was crucial for our app because we were developing for 2.2+, and having to design an entirely different UI would have been inelegant and a massive amount of extra work. Jake Wharton’s ABS uses the same API calls as Android’s official library, so one can follow Google’s API specification to use his library. Google has its own support library with limited features available, but ABS is a much more complete solution. It was critical to the design of our UI and I thank him for developing it and releasing it for free.

The AmbilWarna color picker dialog is a neat piece of code that provides a color selector for users. We needed a way for users to pick colors for their categories and this seemed like a much nicer solution than giving users limited choices like other apps do. Picture attached.

ColorPicker_1

From the blog Code Your Enthusiasm » WSU CS by Jon and used with permission of the author. All other rights reserved by the author.

QA Testing

The release candidate is ready to go and so starts the crazy amount of bug testing we will need to do.  We need to assure we check all the edge cases and all the scenarios in which the user could break our app.  It reminds me of the last time working before a Mahadev assignment is due and checking if anything could go wrong.  We need to make sure things like:

repeating alarms actually set to the proper date.

what happens if you delete a task right before it’s due, does the alarm still go off? What about deleting it before looking at the notification? (we corrected this one earlier)

What happens if you set something to go off in the past, how will our app handle it?

Do the notifications stack correctly if it repeats frequently?

Does the app do anything about SQL injection?

Does anything happen if a task has all the same information?

what about categories, does the name matter?

If you create a category in a different activity can you use it in addTaskActivity?

———

The list seems to be endless and ones where we need to create like 20 tasks to make sure everything works at that high of a load is up to Jon/Dhimitri since my VM doesn’t really play nice.

Questions like these are a great way to test to make sure the app is functional.  I’ll doing another write up about what google would like our app to.

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

Great Meeting the Other day

Synergy! haha, Jon Dhimitri and I met up on Thursday to discuss the final process in the app.  I figured since Dhimitri has that little netbook that he can’t do much with that I would bring a VGA cable to the library and set my laptop up on the big screen.  I’ll remember not to listen to Dhimitri though because the VGA cable wouldn’t fit so I had to run back and grab an HDMI, the result:

Look at him pointing, Synergy!

It actually worked out really well, and I wish we had started doing it earlier.  We used My/Jon’s laptop and were able to solve a problem in Dhimitri’s ViewCalendarActivity which turned out to be some weird problem with using .get__() (it was a call to a different class outside the package) which it didn’t like and wouldn’t allow the calendar to move more than a month away.

The meeting lasted a pretty long time where we discussed where the app was going and who was testing it.  I suggested we use r/androidDev from Reddit considering we would definitely get some feedback from knowledgeable app devs who are happy to help.  I think it might be a good idea to get some freshmen CS students into the testing too, I’ll email whomever is doing 101/140 this year and ask.

The app is looking awesome, excited for these next few weeks.

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

First Meet With Dhimitri

Jon, Dhimitri and I had a meeting today to catch Dhimitri up on what we have been doing and the plan for the next few months.  We met in the library and discussed how to set up Action Bar Sherlock and demo’d the app again.  We plan on following the style guide very thoroughly so the app will flow how normal Android apps work.  We also talked about trying the app done to a point where we could start field testing the app with students around campus and get a feel for what works and what will need improvement.

 

Everything seemed to go pretty well, I’ll be working on editing a task that has been previously made using ‘add task’ and I think I may just have the edit copy the old task and replace the new data instead of just updating, not too sure yet.

 

We talked about doing SQLite a little bit but the point still stands about leaving it out until later (if we want/need it).

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

Working on a facelift

Howdy all,

Jon and I aren’t graphic designers, actually I just ran into this problem at work,  and it’s pretty obvious this app isn’t going to be the prettiest bell at the ball.  Whatever, form follows function.  Right now I’m working on making the ‘create activity’ section contain everything we’re going to need Calendar style date picker, notes, title, priority radio buttons and that should be it for now.

I’ve ran into a bit of a problem with saving the tasks and I can’t figure out why they aren’t being recreated on restart for now I’m just leaving it alone (which is why nothing has been committed yet).  Since Jon built most of the onRestart() I’m sure he’ll know what’s wrong once we meet THIS SUNDAY FOR SURE so I’m not too concerned.  I found out today that the GUI for android dev is terrific, it really is.  I was fussing around with all the ugly xml and switched over only to see the GUI version was so smooth and easy to use.

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

Catching Up on GIT

Howdy all,

Luckily Jon and I have been working internships all summer using some sort of variation of a Version Control System.  I guess I didn’t learn as much as I thought in 401 for GIT as I really needed.  My git-foo has improved significantly (Jon’s is still way above mine, though. )  Right now I’m working on my james-dev branch (at least the one I push to) and usually branch when I’m trying something new.  I’m really digging the issue tracker but, I think one day this week I am going to take some time out, probably with Jon, and really get our Wiki in gear.

In other news, old news that I never mentioned, Joe was MIA for a while and I finally got in contact with him and he said he was too busy and couldn’t commit I emailed Karl about it but I never got a response, I’m sure he’s just enjoying summer.

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

Whoops.

(This blog post is a few weeks old and never was posted), I’ve been pecking away at the app, though.  Jon built a great foundation for our app and it’s time to get cracking and finish this bad boy.  Right now I’m playing catchup on all the documentation for Android (big thanks to Jon for meeting and walking me through).  TheNewBoston started to get too slow and I started using google development docs, big difference and ultimately better.

Finals are coming up for my summer class and then I can focus on this app.

From the blog jamescelona » WSU CS by jamescelona and used with permission of the author. All other rights reserved by the author.

The Liberated Pixel Cup! – Dev Blog 2

It’s been a slow start, but hopefully things will start to move a bit faster. I am on vacation for the week and I have managed to get some work done.

I spent several days trying to figure out the best way to represent Actors on the world maps where the player can walk around. The Actors walk one tile at a time, fitting to the grid, rather than having “free” movement where Actors can move by any increment. It is much easier to implement free movement (which is what I’ve done in the past) than tile movement. I re-wrote the code that handles all of this several times before I found an implementation that was clean and functional enough.

In this screenshot there are several randomly spawned Actors that have walked to random places on the map. They do this by using the A* pathfinding algorithm I talked about in the previous post. There is an Action class that actually performs the walking animation. This Action is smart enough to re-route upon collision with another Actor.

The player can touch/click on a map tile to walk a path to it. For desktop users or certain Android devices, the D-pad can also be used to move the player around on a tile-by-tile basis.

I have also started work on an interaction and dialog system. In the screenshot, the text box shown is a result of the player interacting with the sign on the building. Right now the text box only displays one string of text, multiple strings and maybe even branching dialog paths still need to be done. Item chests are on the to-do list as well. Hopefully I can get them done soon.

From the blog David Thompson » WSU CS by davexunit and used with permission of the author. All other rights reserved by the author.

The Liberated Pixel Cup! – Dev Blog 1

Image

The time is finally upon us. The art portion of the Liberated Pixel Cup has reached its deadline, which means that the programming portion of the contest has begun! The competition is a month long in which us code monkeys need to use the art assets that were generated to make the best possible game that we can. Since this pixel cup is “liberated”, all of the source code will be available under the GPLv3.

I am working with someone that I only through IRC (#liberatedpixelcup on Freenode) with the nickname of fr33mind. We will be making a Pokemon inspired game where you control monsters to use in combat. The actual gameplay details will get fleshed out more as the competition goes forward.

We are using libGDX to make the game. LibGDX is a fantastic Java library that allows us to write a game that runs on the desktop (GNU/Linux, Mac, Windows) and on Android devices with very little platform specific code.

Above is a screenshot of my experiments with libGDX. Here you see a path of ghosts that was generated by my implementation of the A* pathfinding algorithm. It took a long time to wrap my head around it but it is a crucial element to the game considering that users will move across the map not only with arrow keys, but by touching/clicking areas on the map (my Android phone has no D-pad). This makes decent pathfinding a must have so I wanted to try to get it out of the way early. The code performs well on the desktop but for some reason takes about 3 seconds to run on my Android phone, which is a serious problem. My choice of data structures or too much memory allocation could be the problem and I need to investigate who the culprit is. I’m using a PriorityQueue and a HashMap to maintain lists, and a Pool (in libGDX) to minimize memory allocation, yet the problem persists.

I’m going to try to keep this development blog going over the course of the month with screenshot updates. Let’s see if I can manage to actually do that.

UPDATE:
Turns out the performance problem was because of how I was drawing the path on screen and NOT the algorithm itself. I have since abstracted away the things that are dependent upon a specific tile map implementation and have a rather generic set of classes to use for pathfinding.

From the blog David Thompson » WSU CS by davexunit and used with permission of the author. All other rights reserved by the author.