Blog

IronC0d3r Coding Competition

On Saturday, September 27, I participated in my first ever programming competition: the IronC0d3r Coding Competition, which was hosted by Cardlytics and took place at Georgia Tech. The atmosphere was great, there was a LOT of food, and some of my friends were even there! The competition was scheduled for 3 hours with 10 problems to solve. Each problem was 10 points, which are earned by submitting an output text file based on the input text file that was given. A percentage of the points are given proportional to how close the output was to the correct answers. Unfortunately, there were a lot of issues with the website and the input files, making us all lose quite a bit of time. I even lost 30 minutes in the beginning due to some weird error I was receiving and couldn’t fix for a while. However, I pushed forward and was able to answer 6 of the 10 problems, earning 58.10 points, putting me in 9th place overall out of a total of 34 students who submitted solutions! If I had about 15 more minutes, I am confident that I could have earned another 15-20 points and been in the top 5. Either way, I’m very proud of myself for at least making top 10 in my first competition and I hope to improve on my pacing in future competitions!

If any interested reader wants to see what the problems were like, I posted the code to GitHub!

Faction Wars – Ludum Dare 30 Entry

A little bit late thanks to schoolwork, but I completed my Ludum Dare Jam entry: Faction Wars! I entered the 72-hour Jam instead of the Compo as I had my awesome artist, razorquick, draw the planets and UI backgrounds.

I followed through on that 4X game idea, making it turn-based as inspired by the game that introduced me to the 4X genre: Moo4K. This game was a submission to the Java4K competition where you try to create a game under 4 kilobytes. I took the idea and added the ability to control the ships by sending them from planet to planet and (to fit the theme) create ‘connections’ between planets. These connections siphon resources (money) from planet to planet, making it easier to tax only a few planets, thus wasting less and less turns.

Unfortunately, my weak point is AI, and I had no time to improve on it, so you are left dealing with a weird unpredictable AI that may either do nothing or take over your planets without notice. I really liked the game idea though and might improve on it if I have time in the future.

For now, I’m doing a bit of Python and web development, but I will definitely be back to play around with OpenGL and post about some cool things I’ve done with it.

Ludum Dare 30!

Ludum Dare 30 is here and I’m hard at work brainstorming and programming a rough idea for the theme: Connected Worlds.

So far, I’m thinking in the direction of a 4X game in space where you try to conquer and connect all the worlds back to your mother planet to harvest their resources. With my trusty artist razorquick, we’re hoping to make good progress over the remaining 55 hours in the Jam (as we’re working as a group; 48-hour compo is only solo). I can’t draw to save my life so I’m glad to have some help.

Monday of this week I started my first day at Georgia Tech. It is such a large campus! I got lost a few times and was going around in circles; I ended up having to use my GPS sometimes! I tested out of a very easy Java class (scored a 97… missed a silly question) and am now taking 6 courses (1 of which has a 3-hour lab) to total 16 credit hours.

  • CS 2340: Objects and Designs (3 credits) – working in teams to create a game using JavaFX
  • CS 2110: Computer Organization and Programming (4 credits) – low-level into circuits, the CPU, and programming in assembly and C! This might become my favorite course so far.
  • CS 1801: “Special Topics” (1 credit) – apparently it’s for new and transfer students at the College of Computing, talking mostly about the computing job market, helping with resumes, help with career fairs, etc…
  • MATH 1522: Linear Algebra (2 credits) – I’ve been looking forward to Linear Algebra for a few years now. This will be a lot of fun!
  • APPH 1040: Health (2 credits) – silly required health course… I’ll try not to fall asleep.
  • EAS 2600: Earth Processes (4 credits) – I’m required to take a third lab course, so I chose this one as earth processes, such as earthquakes, volcanoes, hurricanes, etc… do really interest me.

JGO Enhancer Chrome Extension

On the Java-Gaming.org forum, there is a page that shows “All Unread Posts”, with a tiny “new” icon to jump to the newest unread post.

'new' icon

With 30 unread posts per page, this can become tedious and annoying to middle click (to open in a new tab) repeatedly. What does a power user like me do? Create a Chrome extension of course!

JGO Enhancer

This extension inserts an “Open Below Threads in New Tabs” link to the left of the “Mark All Messages as Read” link:

Open Below Threads in a New Tab

This link will then automatically middle click the “new” icon for each post in the current page, and then refresh the page after 5 seconds to allow the threads to load. Life will never be the same!

Internship, Summer, and Georgia Tech!

As I mentioned in the previous blog post, I was offered a 12-week part-time paid Software Engineering Internship with Travelport beginning mid-February and ending early May. My role there was with the Enterprise Architecture team where I worked on a research project into Event-Driven systems in conjunction with Service-Oriented Architecture (SOA). I gained experience with JAX-WS (the Java API for XML Web Services) to build web services, using IBM’s Rational Application Developer (Eclipse-based IDE) and WebSphere Application Server. I learned about SOAP and sending messages between web services defined by a WSDL file. With these tools, my research was mostly WS-Notification, a standard for a Publisher-Subscriber design pattern, and how it might be useful for sending messages from a single or multiple publishers to many subscribers. I wrote code, compiled documentation, and presented my findings to the CIO and the Senior Leadership Team. Overall I really enjoyed the experience, loved all the new technology that I learned, and had a lot of fun learning from and interacting with the other interns there.

After the internship and the Spring semester ended, I decided to forgo taking Summer courses or working. As the internship required 20 hours per week in addition to the 17-credit-hour courses I was taking, I had lost a massive amount of sleep and endured quite a bit of stress, therefore I was in desperate need of rest. Thus these 3 months of Summer I am taking a break from working and going back to playing video games, hanging out with friends, and relaxing with my programming hobby. The video game I mostly play is Battlefield 4 but I just bought the BioShock Triple Pack from the Steam Summer sale and will be finally playing all 3 games of the series.

For my programming hobby, I have multiple interests at the moment. OpenGL is currently my favorite tool and I’ve been playing a lot with it, especially using shaders for really cool effects! I’m also branching out into web development, and I’ve started learning more HTML+CSS along with backend languages such as Ruby, Python, and PHP. I’ve been told to avoid PHP as much as possible, however I will learn its basics just to be prepared as it is still in the top 10 most used languages according to the TIOBE index unfortunately. Java (and the JVM in general) is still the best for developing backend services, with excellent frameworks like Spring and Play! that I’ve been playing with. Another interest that I’m trying to dabble more into is more low-level into assembly, C, and C++. I received Bjarne Stroustrup’s latest edition of The C++ Programming Language for my birthday last year and I’ve been reading it bit by bit whenever I have time. For now however, I don’t seem to have settled on a direction for myself, as I’m interested in all things code so as I play more with these tools, I will settle and specialize in my favorite (taking into consideration what will get me a job 😀 )

Lastly, as I mentioned in a blog post over a year ago, my plan was to attend Georgia State University for a year and attempt to transfer to Georgia Institute of Technology. I’m glad to announce that I’ve been ACCEPTED to Georgia Tech starting in Fall 2014!! This university is in the top 10 Computer Science schools in the US and I have dreamed of attending it since I realized Computer Science was my future in high school. I worked very hard to maintain excellent grades in my year at Georgia State and I will now be working even harder to maintain a very high GPA and graduate with highest honors from Georgia Tech! Hopefully it won’t be too difficult to find the motivation to study my ass off as I have passion for this subject and its courses.

Reflection On First College Year

It’s finally summer time and after a surprisingly quick school year, I get to rest my exhausted mind and body. This also means writing a long-overdue blog post about the very busy and eventful first year of college!

All the AP courses I took in High School earned me a total of 30 credit hours, meaning I was a Sophomore (2nd year) student on paper before even starting. This gave me the tremendous advantage of taking higher-level courses early and giving me a shot at transferring to Georgia Tech after only 1 year.

My Fall semester at Georgia State University, I took 5 courses to receive 14 credit hours:

  • ENGL 1101 (English 1)
  • ECON 2100 (Global Economy)
  • PHIL 1010 (Critical Thinking)
  • CSC 2310 (Principles of Computer Programming)
  • CSC 2510 (Theoretical Foundations of Computer Science)

CSC 2310 was basically a beginning Java course so I easily breezed through it, barely showing up to class and acing all the test/quizzes/homework assignments. CSC 2510 was a very challenging discrete mathematics course, and I had a lot of fun with this one. After a lot of stress and studying, I earned an A in the class! The other three were trivial core classes that I had no trouble with.

The first semester, I took mostly easy courses to slowly ease myself into the college life, especially as I lived in the dorms, rooming with a very good friend from high school. I had an excellent first semester, enjoying the downtown Atlanta city life with all the sights, places, and delicious restaurants (the Vortex is the best burger place I’ve ever been to!)

After the end of the fall semester, I went back to live with my parents for the winter break. It was at this time that I was offered an IT Consultant position at a local company where I had good connections. This position was mainly shadowing the IT guy and responding to HelpDesk tickets. I began in January and absorbed as much knowledge as I could. I learned a tremendous amounts of the inner workings of server rooms, Microsoft Servers, and, of course, SharePoint.  I got hands on with moving computers around, patching cables, fixing issues employees had, writing scripts to automatically update software, and tons more! I completely enjoyed my time there! However, I did not stay for long. Late January, I received an email from the Travelport internship manager to setup a phone interview for a potential internship opportunity with the company. After a successful phone interview, I was offered the 12-week part-time paid Software Engineering Internship beginning mid-February and ending early May. I had to make the difficult decision of leaving my IT job to accept the internship as I felt it was more in line with my career and future. I will be talking more about my experience at the internship in a separate blog post.

My Spring semester at Georgia State, I decided to increase the difficulty a bit and challenge myself with sophomore/junior-level college courses. This worried me a little bit as I was also doing 20 hours/week at the internship. Needless to say, I lost massive amounts of sleep but thankfully came out on top at the end.
I took 5 courses to receive 17 credit hours:

  • ENGL 1102 (English 2)
  • HIST 2110 (US History)
  • MATH 2215 (Calculus 3)
  • PHYS 2212K (Calculus-based Physics 2 + Lab)
  • CSC 3410 (Data Structures)

English 2 and US History were again trivial core classes that I had no problems with. CSC 3410 was another Java course, this time focusing on data structures such as lists, queues, stacks, and trees. This was a very easy course, so easy that I felt I could have taught the class better than the professor himself, as I did not feel he was very knowledgeable. This inkling made me yearn to transfer to Georgia Tech as soon as possible, as I longed for difficult computer science courses with knowledgeable professors where I could actually learn!

Physics 2212K, or Calculus-based Physics 2 accompanied by a lab, was the most difficult course I have ever taken in my life. I have never experienced this much stress, anger, and frustration before. The in-class lectures were completely out-of-sync with the labs, the professor could barely convey the material in an understandable manner, and the material itself was very difficult to understand and memorize! I was very relieved to manage a B+ in the class, my only B this semester.

Thankfully, I still had a fun math class to enjoy: Calculus 3. To say that it was a joy to show up to class is an understatement. I looked forward to it as we were dealing with calculus in 3 dimensions! My love for this material was proven when I finished with a 107 average (above 100 thanks to completing extra credit assignments), giving me an A+.

All in all, I finished my first year with a 3.91 GPA and earning 61 credit hours, making me officially a Junior (3rd year) student after only 1 year of college. 😀 Thanks to this, I have applied to transfer to Georgia Tech in the fall and I am waiting to hear back on June 15, this upcoming Sunday, about their decision.

Now for the summer, I have decided to take a break from classes and work. I am spending more time with friends and much more time on the computer, keeping up and expanding into my programming hobby. I am currently beginning to do more web development, diving into HTML and CSS while learning backend languages such as Ruby and Python and tackling frameworks such as Spring, Play! framework, Rails, and Django. So far I’ve had a lot of fun and hopefully things keep improving from here.

If you have read this far, I am flattered with your interest into my life and I hope you keep reading in the future! I have much more to share and I will push myself to post more programming-related blog posts, no matter how dull they seem.

Status Update and Source Code Release

For the past few weeks, my site has been down due to my server’s hard drive crashing. Of course, this just had to happen at the worst possible time: moving in to college. I had no time to replace the hard drive, reinstall the LAMP stack, and reinstall WordPress. However, I realized how important and valuable a personal website is, especially when I’m beginning to go internship/job hunting. All my work is (and will be) on here, and this is important to potential employers who will need to know my experience.

So I finally buy a new hard drive and begin work to recover the site from my backups…which I then discover are corrupt! Everything was lost…but there was hope: Google Cache. A friendly person on IRC suggested going there to recover my site. I was able to recover my blog posts, website layout, and content. After installing everything, I re-created each post and page. Unfortunately I couldn’t recover any of the comments, but that wasn’t too important.

Tip 1: MAKE SURE YOUR BACKUPS ARE WORKING.
Tip 2: Google Cache is your friend 🙂
Tip 3: IRC is the best!

Anyway, I’ve finally moved out, started college, studying computer science! I’ve also got a TON of more free time, which I’ve mostly invested in doing more 3D development. Blog posts about these adventures are to come!

Meanwhile, as of August 22, 2013, the high score servers for JDoodle Jump and Snake finally went down. With that taken care of, I can confidently release the source for these games. Along with those two, I realized I never released the source for Master Mind, Minesweeper, and the Multiplayer Test. All are now public under the BSD 3-clause license:

All of these projects (except for Minesweeper) require my GameUtils library to be able to run.

Graduation, Free Time, and Keto

After 4 long and arduous years of slaving away at the mercy of punitive teachers, I have finally graduated from high school. My finals took place last week and the week before: 5 lengthy and difficult AP exams, blegh! Fortunately, all that is now in the past and I am now officially a college freshman! I will be attending Georgia State University, studying Computer Science. I am also planning to transfer to Georgia Tech after a year or two so hopefully that pans out.

However for now, I will not be thinking about any more school work. Three months of free time await me (except for a short little vacation to Rome at the end of June) and I plan to use it to sleep, work, and code. I will be working feverishly to finish porting the C++ code from the excellent Arcsynthesis OpenGL tutorials to Java+LWJGL. For more information about that, check out the Github repo!

I have also undergone a whole lifestyle change about 6 weeks ago. After living too long with my overweight status, I grew tired and sick of myself and decided to finally do something about it. I began this new diet called the Ketogenic Diet. This is a High Fat/Moderate Protein/Low Carb diet where, although I still maintain a caloric deficit, 70-90% of the calories I eat per day should be from fat with a strict limit of 20 grams of net carbs, which is calculated by getting total carbs minus fiber because fiber isn’t ingested. Carbs include wheat, flour, starches or sugar resulting in no bread, rice, pasta, starchy roots like potatoes, fruits, and sweets. Since blood sugar decreases dramatically as a result of this, the levels of insulin also decrease. This triggers the liver to deplete its stores of glycogen (backup sugar basically) and then undergo ketosis. In ketosis, the body begins using fat as its main energy source and weight loss results. Accompanied with regular workouts at the gym, impressive weight loss can occur!

In this new diet, I have lost a whopping 7 kg = 15.5 lbs already! With the plenty of free time in my hands now, I will be going to the gym more regularly to work out and hopefully accelerating the downward curve. I have no goal weight for now as I really don’t know what my ideal weight should be due to the amount of muscles that I have but I will know when I reach it. I will not return to a normal diet with carbs after I’m done though. I will only increase the amount of carbs allowed, but I will still keep myself in ketosis for the foreseeable future.

About Me

I might have failed to mention this before, but I am actually very active on an online Java programming forum: Java-Gaming.org. You can find me there as ‘ra4king’. There just recently, someone posted in the General Discussions section asking questions to more experienced programmers. I believe my responses have been good enough to also post here as they give more insight into who I am.

– Why did you want to start programming? (What was your motivation?)

  • I’ve always been fascinated by video games since I was little, playing on the Dreamcast 😀
    When I got an Xbox 360 for Christmas ~6 years ago, I was blown away by the graphics and became more determined to learn about programming.
    Then I got my very first computer: a laptop, the next Christmas. As I tinkered and tweaked with errors sometimes exploding in my face, my technical knowledge grew at a very rapid rate. When I started with actual programming is best related to the next question…

– Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?

  • Well for the first year that I had my laptop, I wandered around not knowing where to start. I was always at the local bookstore reading programming books, feeling ever more hopelessly lost. Then just my luck, I failed to discover the programming class offered at my high school! Luckily, I had a friend who signed up for it and he told me what language they started with and shared with me some code: Java.
    And so I decided that I shall start with Java: I bought a Java book at the bookstore, and began coding using the Windows Notepad and the command prompt. I never began using an IDE until a whole year later!
    I have since learned other languages along the way but I still stick with Java because of its ease of use and attractiveness (and kickass IDEs! 😀 )

– How long ago did you get started? And where are you at now?

  • I started teaching myself 4 years ago. I now fully know the language and am very experienced with OOP and code design. I don’t have many games to show for my experience, though, as I am more focused on learning now than actually making games. This website has a few games I made a long time ago, one of which (JDoodle Jump) got hugely popular and I was forced to remove it by the original creators of the mobile game (more info here). This game helped me the most with game design, as it allowed me to gain experience in entity management and code design/layout. It also spawned a relatively fully featured Java2D library with a networking, UI, and entity systems that I think are awesome. I’ve used it for all my LudumDare games too. It can be found here.

– What learning methods did you employ personally to help you develop your skills in programming?

  • Notepad+Command prompt for learning *all* of Java’s syntax. I never had any editor help, which also helped me develop a strict set of formatting rules for myself so the code doesn’t get messy 🙂
    IDE’s are for experienced coders who want to see results *fast*. As a beginner, you are in no rush to see results: you just want to learn.

– What advice could you give to other programmers who might be feeling a little lost in what direction to take?

– Is there anything you believe should be a “Rite of Passage” for programmers (such as the need to create hello world, or a snake program, etc etc)

  • There are no definite “Rite of Passage” programs, although I do strongly recommend recreating classic simple games such as Snake and Space Invaders.