Constraints

I was working throughout the vacation yet I feel I have lost handle of horizontal view of all the things going on in my life.

For sometime I have stopped using anything digital for managing myself. Digital can be easily added or deleted or changed. That’s too easy and distracting. I went paper and pen. I now have maybe over 20 pages describing everything I want to do.

These daily random musings from now on will hopefully be tied in a hundred words. Constraint is a beautiful phenomena. You lack it and you won’t make progress or you have too much of it will end up in same rut.

Remote Working

My app which was working just fine suddenly started misbehaving. It looks like an architectural bug to me. I have tried every possible way to mitigate the issue by moving around the code but none turned out to be a correct solution.

I am at home and am working at a speed of 512 kbps or 256 kbps. I am able to work fine except a few things. Watching videos is a very problematic. You can only do one thing at a time. You are never sure if your app is slow or its just network. At least a speed of 1 or 2 mbps would be nice. Mobile internet is very expensive to be used with work machine. I need to look into more offline coding tricks.

Today for the first time I referred to source code of Android to figure out my problem. I wanted to know what happens when one sets an adapter over and over again. I referred to the code and that was enlightening.

As I am working from home I have realized that one of the important things is that you need a stable place where you can setup things to do your work. A space that doesn’t change. The way my current house is designed makes it hard to do that.

Next time I plan something I will try to look for these things. If there’s a power outlet or not. What about table and chair? And the elephant in the room, Internet.

Popular Movies Stage One Udacity Android Nanodegree Project One Experience

After wasting almost two years reading various books and courses I started feeling lack of discipline and plan in my work. When I sat down to write app from scratch I had no idea how to begin what to implement first. How to plan and execute the plan. It’s quite easy to make apps with only single screen doing a minor task. It gets to another level when you have multiple screens interacting with each other. Sending data from server to one screen to another.

That’s where I began to do Udacity’s Android Nanodegree course. It’s exactly what I needed. Android Nanodegree revolves around writing code. There’s seven projects that one must do in order to graduate from the program. These projects come with course material to help one get familiar with material, there’s implementation guide giving you nitty gritty details about project where you might get struck, there’s rubric to keep students focused, there’s webcasts to talk about specific things and then there’s discussion forums to get involved with other students and ask questions from coaches. Overall it’s a great learning environment.

I really wish India’s open universities would adopt similar structure or better collaborate with one of these MOOCs to improve India’s education by many folds.

I begin coding for project one early on. Initially I didn’t feel it very time consuming or hard. I was quickly able to implement RecyclerView. RecyclerView unlike ListView is a decentralized component. So it done one thing for you to show a list. You have to handle click events, animation, etc. yourself. There’s classes to help you with that. I enjoyed learning about Adapter. I am still getting my head around the ViewHolder Pattern.

Next interesting part was JSON parsing. I have been hearing all these text format names for a long time. JSON, YAML, XML, etc. As scary as they sound it was really fun parsing JSON. I felt like how Neo felt in Matrix when I suddenly knew Kung Fu. I felt like I know JSON. It’s really just walking through  objects and array.

Networking boilerplate was the worst of all. I think I should get used to boilerplate. ContentProvider is coming in next project. I was able to hack through most of the project simply by reading blog posts. Nop not networking boilerplate. I had to go back and work through Sunshine app. In the end networking boilerplate is a bunch of classes that I need to keep bookmarked somewhere and use it over and over. I understood when I read about it but I keep forgetting about it.

At this point I had the main activity of Popular movies ready which looked like the image below.

Popular Movies Titles Screen

During all this living close to family means you will be traveling a lot. I did. I registered for the Nanodegree on 1st of February. It is March 19th. Almost a month and a half. That’s too long for a project like this. But what can you do. Better late than never.

After I had implemented the main screen I had to implement Parcelable to send Movie object to the detailed screen. I found a nice plugin to do that for me. Along with Setters and Getters it also generated Parcelable code for me. Nice. Then there wasn’t really a lot to do except to hookup onClick code to trigger start of details screen.

Orientation changes killing activity is a interesting problem. I am using two activities and two fragments in this project. I have to be cautious about how fragments are moving through activities and I am not starting or ending things prematurely. I have read Activity and Fragment lifecycle way too many times and they make no sense to me in real app.

I am also skeptical about my work in details screen. I wasn’t able to implement much material design in the details screen. The thing is that there isn’t enough time. Most of the things that I wanted to implement would require me days to work on. I suppose that’s how first versions are. So here it is.

Popular Movies Details Screen

Writing Android app is like being a thief at least at the beginning stage. You may also call it working with lego if you don’t like the word thief. I spend a huge amounts of time just gettings things working with each other.

It’s a lot of hard work to end with a short note.

Remote Work

Woke up. Had breakfast. Slept. Woke up. Had lunch. Not much. Looked for what should I do. Had dinner.

Some days are just magnificent.

I would have to kill the magnificence in order to try to explain it.

One of the things that were in my mind when I started learning programming was to live freely. Work and live. That hasn’t materialized yet.

It’s hard to switch between work and play. I get so attached to my environment that it’s you feel odd everywhere. You can’t really control your environment too. How can you focus where there’s like seven people around me?

Maybe it’s in my mind.

Kindness In Words

Kindness in words creates confidence. Kindness in thinking creates profoundness. Kindness in giving creates love.

Lao Tzu.

Learn The Basics

As I am progressing in my Android learning experience I feel severe need of collaboration. As a result I decided to look for projects that I can contribute to.

WordPress fan that I am I tried to get into it. WordPress’ codebase is huge. It didn’t make much sense. I wasn’t sure where to begin. Also I have never really used WordPress’ mobile app.

I am also a big fan of ownCloud. I have tried to contribute to their Android project but I couldn’t do much. Things have changed and I am a little more experienced now. I would say I have had enough eye time with the ownCloud repository. I quickly found an AlertDialog that could use some love. My pull request is up waiting to be merged.

It is interesting to see that Android developers are writing so much about new things in Android. Libraries, MVC patterns, etc. but in real world folks are still running AsyncTask and all. The morale of the story is that learn the basics. Learn the lifecycle. These are the keys.

March 11th 2016

Technically it’s March 12th but the hasn’t ended for me yet.

This year’s weather has been weird. Scorching Sun is already upon us.

I read some things about HTML, XHTML, and HTML5 today. I am still not sure the difference among them. Especially XHTML stands for Extensible Markup Language which can be XML too. Maybe there’s a hyper that I can’t remember.

Not much app development today. System is yet not in working conditions.

I tried Kubuntu 14.04 which has previous generation of Plasma which works very well but is old. I am not sure where the real problem is. In my head or the system. Ignorance is the key.

No walk either. I did end up cleaning the flat. It’s always a nice thing to sit around in clean environment.

Pam Selle wrote about working remotely on her blog thewebivore.com. I do wish if I could do similar experiments.