Return to Melombuki!

So this is a little embarrassing. Seven months with nothing to share. This post will have nothing useful in it either. No really, you can stop reading this one and scroll down a bit for something hopefully useful. This one is more for me and getting back to this site and actually doing things again.

Let’s see, school – done. State of personal projects – stale. State of this blog by extension – stale. New job – check. The last one leads me to a possible new focus for projects and posts. Web development, specifically JavaScript/TypeScript/Angular (1 and maybe 2) and hopefully a little Node.js if I run out of fun things to do with the other topics.

I recently completed the start of an RSS reader for the NPR web API. There are some definite limitations to it right now, but it is still in a fun state of workingness. It currently allows you to access almost 100 different news feeds and shows the latest 20 articles with title, short summary and picture if there is one for each. Clicking on any of the articles takes you to the source NPR page for the article. And its all dynamically generated thanks to Angular.js. It needs to be expanded to include NPR’s music articles and links for sure. I’ll share some of the internals here, as I think they are pretty interesting and see if I can set up a separate page here at Melombuki for those who are interested.

Also, in desperate need of an actual project to work on. If you have any suggestions please post them below. I would appreciate any input.

Updates to AtoB!! And the Daily Programmer.

ArrowPointerI recently pushed out an update to AtoB. Nothing major, yet. On the very first level, you now get some help if you don’t know where to begin. A giant green arrow points to the first tile, enticing you to touch it. Once you touch the first tile (any tile for technically), the arrow disappears never to be seen again. That is until you play the first level again and still can’t figure it out.

The arrow was my second choice. I tried to draw a pixelated hand, but the results were slightly less than appropriate for younger players. Needless to say, the hand never made the cut. It looked rather phallic in nature, and I’ll just leave it at that. I didn’t realize how bad it looked until it was already in the game. Maybe that’s because I am such a none artist. I almost laughed to death when I first realized it. Anyway, there is an entirely politically correct, harmless green arrow.

In other news, I have submitted a new solution to one of Reddit’s “Daily Programmer” problems. This problem was given a “Hard” difficulty rating. It was actually easier than an intermediate I attempted earlier.

Here is the problem: Create an adjacency matrix from purely text input like this:

This was one of the more elaborate examples, but once you have a working general solution, it really doesn’t matter what gets thrown at you. I tackled it in Ruby again, because Ruby is just so much fun to use. Here is what I came up with:

I wouldn’t argue with you if you saw some room to optimize this a little. All in all, this solution isn’t too shabby. That’s what happens when you start coding and get really into it to the point of not being able to stop at 2:00 A.M. in a relatively new language still. Consuming the dashes and path lexemes while following the path really cuts down on the processing required to parse the text input. That was my favorite part of this solution.

The whole thing spits out a nifty little adjacency matrix as you can see below (actual solution for the example text input seen above):

Melombuki is on Reddit’s “dailyprogrammer”

If you are an aspiring programmer and want to get some practice, or even just like to solve random coding problems, you should have a look at the “DailyProgrammer” page on Reddit. People post new challenges all the time with varying difficulty. Participating is a good way to keep your edge. According to the “DailyProgrammer” info page:

Dailyprogrammer is about challenging programmers of all skill level with weekly programming challenges. 3 challenges a week are posted at increasing difficulty. Solutions are peer reviewed and redditors can ask for the community for feedback and comments.

The typical posting of challenges occur on or near the following days.

  • Mon [Easy]
  • Wed [Intermediate]
  • Fri [Hard]

Challenges are developed from ideas posted on /r/DailyProgrammer_ideas and ideas from the moderator team.

It is important to keep in mind a few basic considerations of the difficulty. The difficulty of a challenge is rated roughly for the required knowledge, theory and effort required to complete. There does not exist a simple or easy measure of rating challenges. What might seem [Hard] might turn out to be [Easy] for some redditors while some [Easy] might be [Hard] for other redditors.

Also note that the moderator team might not be able to post a challenge for an assigned day. This could be for many reasons. Although the moderator team strives to keep challenges posted as needed but if a challenge cannot or does not get posted, please consider looking or working on older challenges and continue to wait for the next challenge.

The intermediate level challenge today was to estimate the value of PI from a picture of a circle. The circle is all black with an all white background. There are two different images that your solution must work on below:

5GScbUedRko2KH

Yours truly came up with the following solution in ruby. It involved requiring “chunky_png” for raw image manipulation. There are certainly better solutions as there is almost always a way to make things faster, etc.

And here is the output:

I would say that the estimates are fairly accurate. Give it a try. If you make this code better, post your modifications here and on the Reddit page. Or even try a different language, or try a different challenge. Just have fun with it.

Podcast Tracking App is Up on Heroku

The podcast tracking web application is up and running on Heroku!!!

Click this link http://rocketboostertv.herokuapp.com/ or enter it in manually in your web browser to check it out. You can create your very own user account and start tracking all of your favorite podcasts. The best part is, all of your podcasts will still be there for you whenever you decide to return. Get your account fast though, because there is a limit to the allowed size of the database with the free hosting agreement.

If you are into web application programming, or are just getting started, chances are that you have already heard about Heroku. The site makes it relatively painless to publish web applications. The best part is, if you are just a hobbyist and don’t care about having the fastest, dedicated service out there, you can use Heroku for free!! Did I mention FREE!! That’s pretty hard to beat.

Your free Heroku account and services do come with some limitations, however. This is what their website says about a Free account which also includes its features (or limitations if you please):

Ideal for experimenting with cloud applications in a limited sandbox

  • Sleeps after 30 mins of inactivity
  • Must sleep 6 hours in a 24 hour period
  • Custom domains

512 MB RAM │ 1 web/1 worker

The next level of service is the Hobby account. Of course you get a little bit more, but at a small cost. The Heroku site says this about the Hobby account:

Perfect for small scale personal projects and hobby apps

  • All Free Features +
  • Never sleeps
  • Multiple workers for more powerful apps

512 MB RAM │ 10 Process Types

The catch is that you pay $7/month per dyno. For those of you who don’t know what a “dyno” is, like myself a few hours ago, Heroku defines it as such again on their website:

“A dyno is a lightweight Linux container that runs a single user-specified command. A dyno can run any command available in its default environment (what we supply in the Cedar stack) or in your app’s slug (a compressed and pre-packaged copy of your application and its dependencies).”

There are two more service levels, both of which are considered professional packages. I will leave it up to you if you really want to know more. Check out the Heroku website for more information.

Blue host certainly doesn’t make hosting a Rails application easy. I have tried a few times to get everything set up to run right here on www.melombuki.com, but no luck so far. I will keep trying and let you all know how I did it once I figure it out. The instructions from Bluehost are either very dated, or extremely vague.

Either way, it is up and ready for you to enjoy. So head over to http://rocketboostertv.herokuapp.com/ and try it out for yourself.

“A to B” is now on Google Play!!

It is official! A to B has made its way into the Google Play store. You can find it under games, or search for “melombuki”, your humble publisher and developer. It will be the only thing to pop up as of this post. I’m not promising anything, but I have been bitten by the app bug (the good kind, to be clear).

The game is totally free, and requires only the permission to make your phone vibrate. Don’t worry, it was kept to a minimum for your battery life, just don’t mess up making the routes and your phone won’t complain to your hands, or lap or whatever. The game is also only 21MB as of right now. I will be looking into ways to make it smaller, but this is certainly an acceptable size for now.

Screen Shot 2015-07-22 at 6.07.17 PMIt has been a fun project to work on. It’s also fun to see it finally make it to being published. You should all download it, play it, give it 5 stars and leave a glowing comment 😉 I hope you enjoy it as much as I did making it.

The game is far from done. I have a few ideas of my own that I will be including in future updates. And with new found time after completing my college degree, they should be relatively regular, or at least that’s the idea, life permitting.

If you have any ideas, or features you would like added, leave a post here and I will see what I can do. I’m open to trying anything that makes sense and makes this a better game.

 

 

AtoB from Unity 4.6 to 5.1

While finishing up with school, AtoB has definitely taken a back seat. However, this all about to change. School will be wrapping up for me in the next week, and then it’s time to get back to business.

Over the last few days, I have migrated the game AtoB from Unity 4.6 to the new (free) Unity 5.1. It was almost as easy as just installing the update and then opening the old project in Unity. There was one minor issue that was easy enough to fix. One animation refused to play on the initial test run of the game. This was solved by removing the animation from the animation controller, saving everything, closing Unity, reopening Unity, and finally reattaching the animation to the controller. I’m really sure why the gymnastics were necessary to get it working again, but it wasn’t really a big problem.

After rebuilding the project and testing it again on Android, I noticed that a few extra permissions had made their way into the Manifest file, namely

<uses-permission android:name=”android.permission.READ_PHONE_STATE” />
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />

I had made absolutely ZERO changes to the project, other than upgrading it from a Unity 4.6 to 5.1 project. Something within the new version of Unity is automatically adding these new permissions. After poking around various forums, I had found several different “solutions” to try getting these removed. One “solution” called for building the Unity project, checking the Temp/StagingArea folder for the auto generated AndroidMaifest.xml file, copying it into the folder /Assests/Plugins/Android file with the offending lines removed and rebuilding. That didn’t work, so don’t bother.

Screen Shot 2015-07-21 at 4.15.32 PMThe solution that worked for me was to export the project as a Google Android Project by checking the box in the build settings window and then clicking build. This creates a project that can be opened with Android Studio. Using Android Studio gives you a lot more control over the configuration than letting Unity take care of everything for you.

After importing the project into Android Studio, you can easily remove any new and unwanted permissions from the file AndroidManifest.xml. This file should be located under your project name in the folder /app/src/main/AndroidManifest.xml. Simply delete the lines with the permissions that you don’t want. My game, AtoB, showed no adverse side effects after removing them. **Disclaimer** Do this at your own risk, it’s up to you to ensure that your app really doesn’t need them. I take no responsibility if you mess your app/game or whatever up.

I also made a second change. After building the apk file, it was automatically called app-release.apk. I wanted it to be called AtoB.apk. This was a little trickier, but still not a terrible headache to fix. in the /app folder, there is a file called build.gradle. If you are trying this, make sure it is the build.gradle file in the /app folder and not the build.gradle file in the main project folder.

There should be a section under android {…} called buildTypes {…}. Under buildTypes{…} there should be a section called release {…}. In the release {…} section simply add the following lines of code at the end:

Where you see output.outputFile.name.replace(“app-release”, “AtoB”), replace “AtoB” with whatever you like. Now when you build the apk file, it will be named whatever you put there. If for some reason Android Studio automatically names the apk file something other than  “app-release” just change that in the line above to match and it will work.

AtoB.apk is now available for free download

I have made the apk file freely available right here on melombuki.com. The download link for AtoB.apk can be found in the games section or by clicking here.

There is one minor issue that I will be fixing soon, but even now AtoB is very much playable. Once you download AtoB.apk, you will have to put the file on your Android device in order to install it. There will be some warnings about installing from an unknown developer. You will have to allow the install in order to play this awesome game. The app contains no ads, does not track anything, has no connectivity with anything. Much like this website, it does not try to monetize your time, actions, or attention. It is simply a fun game that you should definitely check out.

Podcast Tracking Web App

More promises: I am working on a podcast tracking web application. It’s actually pretty cool, and I have enjoyed using it so far myself. The only problem is, the working version was written with Grails. I can’t host a Grails app here. I am working on porting the app to Ruby on Rails and am making giant leaps and bounds of progress every time I sit down with and code.

It is something you will want to check out if you listen to any podcasts so check back here often.

If you plan on getting into, or just checking out web application programming, I would highly recommend taking a look at Grails. You can see how cool and easy it is for yourself at grails.org

According the the official Grails documentation found on the project’s own website:

“Dynamic frameworks like Rails, Django and TurboGears helped pave the way to a more modern way of thinking about web applications. Grails builds on these concepts and dramatically reduces the complexity of building web applications on the Java platform. What makes it different, however, is that it does so by building on already established Java technologies like Spring and Hibernate.”

Rails and Grails are extremely similar. I have found, personally, that Grails is a little easier and more user friendly for someone with no prior knowledge to get started with. I have had to spend hours trying to configure Rails just to get it to work for my particular project. Building everything from scratch might be a different case. Either way, if you decide to check out Rails or Grails, it is really fun to play with.

Hopefully you will be seeing some changes to the site soon. I have 2 weeks left in my final class in order to complete my Bachelor’s degree in Computer Science with a minor in Cybersecurity. It has been a long an difficult road, but this chapter is finally almost over. Anyway, this should mean a lot more time for my own endeavors, unless I start a Master’s program soon 😉 I will finish my game “A to B”, and you will be seeing it (finally) on the Android Market in the near future.

School, school, and more school

People often comment that getting an education, or attending a school can get in the way of actually learning. I agree with this to some extent.

I have been working full time and attending as many college classes as I can handle and then some. The work load is absolutely ridiculous, and I often don’t have time for much else outside of work and homework. There are so many things that I would like to continue learning with regards to computers and computer programming: MySQL, Unity3d and a deeper understanding of C#, PHP, this website, etc.. I have a couple side projects that are becoming a little neglected in exchange for completing a B.S.

Fortunately I am currently in a computer graphics class exploring programming in C++ with OpenGL. This is getting in the way of my current endeavours, but its a pleasant distraction. A while ago, I started programming with JOGL, OpenGL for Java. Its nice to revisit this in a different language.

Perhaps there will be yet another game coming soon as a final project, or at least a few articles on using OpenGL. So standby for more updates. Hopefully they will be coming more regularly. The other class I am taking that is eating up my time involves digital image and signal processing. Oy, MATH!! But is remotely related (or at least could be).

AtoB alpha testing complete!

It looks like AtoB is ready for the most part. The game has been tested on several different phones with many different resolutions and on a tablet. It works beautifully in all cases. I will have to clean the code base up just a little bit before final testing and the highly anticipated release!

For anyone else who is developing games/apps all on their own, ALPHA TEST YOUR PRODUCT. I received a lot of great feedback. People were happy to try the game out too, which was nice. The advice from testing pretty much set up the next stages of development too (2.0!!!!!).

Important aspects to consider when testing are usability, difficulty level, how the layout looks on different devices (resolution), and features.

I will be working on some way to show the user exactly what they need to do at the beginning, even though testers found the mechanics easy enough to pick up right way. I will also start looking for a better GUI. As it sits, the GUI is fine, but I would like to add trophies or stars for completing levels faster and with fewer “moves.” I will also be working on a level editor so users can create their own levels.

At any rate, look for AtoB in the Android Play store soon!!