Sunday, July 31, 2016

React whaaaaa!!!

So getting back into mobile development I heard about a new way to "do" apps so that they run on iOS and Android and it's called React.js. My friend told me about it and then I saw this Code Academy module and thought this might be interesting.

I don't really have a lot of experience at JavaScript but the first half of the module seems straight forward enough, and it seems interesting how react.js keeps track of virtual DOM elements, and then only re-renders DOM elements when they change; as opposed to re-rendering everything all-da-time. This is supposed to make it super performance efficient and I'm excited to see how it works out in practice.



Athletic Web App

So after several months of sitting on top of a database that I have been saying that I should build a web application for--I finally did!

My uncle who is really into track and field, is paying for an expensive web app service that manages 3 pages and a 17MB database. So I've been saying that I should develop a simple web app and host it on digital ocean for 5 bucks a month.

So over the last couple weeks I've spun up my first droplet, installed all of the necessary software (with the help of my good friend and classmate Dekker), and developed a really simple, but astoundingly bootstrap beautiful, web application: Ă…land Athletics.

It was my first time working with AJAX calls to make a dynamic dropdown, it's built on a LEMP stack, and I used git on bitbucket to keep track of version control.

There are some things that are still a little buggy, and one thing that I would like to do is to move it over to a model, view controller framework, because right now it's just accessing the DB from php files that then echoing <html> tags. #thatGhettoDevThough And the DB isn't even in first normal form so that needs a total renovation, but I'm definitely proud of what I've made and it's super nice to get back into web development and actually make something myself.

Saturday, July 30, 2016

Interface Aha Moment

So yesterday programming from this Android training document: I totally realized what interfaces were actually used for. Albeit, I am a little embarrassed to say that I hadn't learned this properly earlier. Nevertheless, I am very happy to wrap my head around what an interface is and how it is used.

My understanding is that when you have two classes, one can create an object for the class and then call it's public methods to communicate with that object. Now if that object wants to communicate with the first class object there is a problem doing it the same way. Because if the second class creates a new object and calls public functions of that class, then there are actually two instances of the first class.

The way to navigate this properly is to make an interface in the second class, which is pretty much a method declaration, get a reference (a cast) of the first object, and then in the first class write the method implementation. This way the second class can pass an argument through that interface method to the first class.



Back to basics

Coming back from a little bit of a break from this blog, I feel really good to get back into keeping up with/ and track of some of my new computer science projects.

This past year, I've finished my first year of my masters program in computer science at Uppsala University in Sweden. It's been a great year and I've taken some amazing courses from some top notch professors and PhD students. The classes I've enjoyed the most this year are: Computer Assisted Image Analysis I, Secure Computer Systems (an awesome hacking course), Advanced Computer Architecture and Computer Graphics. Another valuable lesson I've learned this year has been what subjects in computer science I don't especially care for. I had a very difficult time in my functional programming course where we learned SML and I also had a rough time in Data Mining I and Data Mining II.

This past year I haven't done a lot of personal projects because I've been in the leadership for my student orchestra, but this Summer and for this upcoming year I'm going to focus more and building up my CS toolbox. I'm looking forward to getting some practical experience making things on my own and without an instruction guide or course assignment.