Quick tip on learning

In software engineering you are always learning. Technologies are young and ever-changing so staying on top on the latest trends is important. Yet it can also be time-consuming and often skipped. Recently I found a way to brush up on various tech topics in an afternoon or less.

Go to a site like stackoverflow.com and look at the most upvoted questions for your language or technology area of interest. I just did this for C# and was pleasantly surprised how useful it was to go over the posts. Even if posts themselves might not give you all the answers you need, you can use them as a starting point to branch out. Similarly by checking what is trending for a week or a month can give you some useful insights into common issues and conversations.

I used to ignore these top lists or “trending” lists, and I think that is still good idea to do in news sites or social media sites. Often these lists will be influenced by advertising and will waste your time. But now I realize that in some areas these lists are quite useful so I should use it where applicable.

Obviously that is only a one way to learn but I figured I will share along. Based on my observations at the very least it gives you broad topics that you can then narrow down on or gives you an idea what others are looking at and struggling with so that you can come in and help out or at least think about these problems as an exercise to keep your mind sharp.

Learning Spanish progress

Learning a new language is a popular goal to set. Now that the world is more connected than ever it can be quite useful to speak a few languages. In addition to physical travel, we are now exposed to each other much more closely over the internet and interacting with people in multiple languages is much more common than it was previously possible.

I started learning Spanish mostly for fun. Spanish is a good fit for me because of where my wife and I vacation most frequently. We have visited Puerto Rico, Dominican Republic, and Costa Rica just in the recent years. We love the culture, weather, and the people and will continue to visit Central American and eventually South American countries in our future. She speaks Spanish quite well but up until recently I only knew an occasional word or a saying. So I decided to change that so that the next time we visit I can interact with the locals more. Also I love learning. Acquiring knowledge is a fun process and I decided to go after it.

I have been working on Spanish on and off for two years now, with some mixed results. Just to give an idea of the progress, I started with zero knowledge and the best I have done so far is have a somewhat decent conversation with a Spanish tutor on Skype. In between, it has been a lot of ups and downs, progress and frustrations, and all part of the learning adventure.

Duolingo has been the most influential and wonderful tool. You don’t have to know the language at all when you begin. If you spend a month with Duolingo you will get enough of the vocabulary for the most rudimentary conversations. I like their manageable sizes of the learning sections. That helps to get a sense of making progress. And making progress helps tremendously with motivation to continue to learn. The user interface is fun and it even has point systems and other “gamification” aspects to it to keep the learner engaged.

One year in with Duolingo, I felt like I knew a lot of words but speaking was still tough. I would “freeze up” whenever I had to say a sentence spontaneously. After all, you can’t hide from the fact that in order to speak the language you have to practice speaking it. It sounds so obvious but the mind has its ways of hiding that truth from us. Besides, for the most of us it feels so intimidating to approach a Spanish speaking stranger when you have absolutely zero confidence in your speaking skills. So you try to avoid for as long as possible. But the truth is, if you want to speak it, you have to actually speak it. That was when I decided to start looking for Spanish speakers.

Internet can solve many ills and that includes finding the language partners. Italki is by far the leader in language learner community. It is a site where you can find tutors as well as other people learning languages and connect with them via Skype sessions. I have had 5 tutoring sessions so far. Two of them awesome, one so-so, and two absolutely terrible. My first time around I think I had the best session ever. To my surprise I could explain to the tutor where I lived, what I was doing, what was my family doing, etc all in Spanish and without much trouble! I had never done that before so I was feeling ecstatic. But then once the initial excitement worn off, it was getting difficult to get any good use out of the tutoring sessions. I am not sure what was I missing, but I felt like I wasn’t learning much and then eventually started to dread the sessions. Currently I am taking a break from them and see if I need to try something different.

I also tried connecting with just regular Spanish speaking people that were learning English. The results again were mixed. You get to talk to people and practice language skills while learning about the culture of others, which is wonderful. However there are also some issues with the approach. First, I think it is much harder for beginners to talk to strangers who are so much more advanced than you in their native tongue and also speak great English. They end up dominating the conversation and have no patience for your slow pace. Second, most of the people I ran into were young students that loved talking about music and movies at the level that does not interest me at all. So basically finding a common interest was tough. After about five sessions I stopped as I was getting bored and learning very little.

So what am I doing now? To keep the vocabulary fresh, I am still doing duolingo. Also just started a course on memrise. I need to solve the issue of finding the native speakers or finding the reasons to talk in Spanish. Perhaps volunteer for some organization that will bring me closer to the natives where language learning is not a goal but a way to communicate to accomplish an organizational goal. Let’s see where I end up with this. Safe to say I am not giving up and will continue to move forward.

Eso es todo por ahora, hasta luego!

Fitness update

Barbell lifts has found another fan. I was a complete novice with barbells when I started out so enlisted the help of Starting Strength book. If you are not sure what Starting Strength is, you can read all about it on their site. It is a way of exercising using full body exercises that mostly involve barbells. Even though I was not following a strict Starting Strength program, I still managed to achieve results that I am very happy with:

  • Deadlift increased from 135 to 315 lbs
  • Squat increased from 135 to 265 lbs
  • Bench press increased from 125 to 185 lbs

Keep in mind that this was achieved during the 6 months by an unsupervised novice that guesses as he goes. Who knows how much stronger one could get with a more experienced supervision, and following Starting Strength to a letter.

First time doing 275 pound dead lift, it felt great.
First time doing 275 pound dead lift, it felt great.

For a 170 pound male I was very weak when I started out. Less than my body weight lifts across all three main barbell exercises. How can someone who stays active and exercises pretty regularly be this weak? Well one reason is that I never got myself a personal trainer and guessed a lot. Its a foolish approach but I am just being honest. I made my own routines and tried to copy what I saw others do. Two years ago was the first time I realized that I must be doing something wrong. I was working the machines yet I wasn’t getting that much stronger. I stayed somewhat fit but yet my exercising habits fluctuated. Something had to change.

The first change I did was switch from machines to dumbbell exercises. I saw some advances in the overall fitness and body tone. But again it did not feel right. I wasn’t fully enjoying the exercises and I felt like I was stuck on the same weight levels for too long. Why wasn’t I getting any stronger? In general there could be several reasons why one does not get any stronger while exercising. Sleep and eating habits are two big factors. But if you are getting enough sleep and eating right, then that leaves the exercise routines and the approach as the culprits.

One day while browsing the net for advice I stumbled on this article and it changed everything. Every fad and misconception that the author mentions on his journey to mastering strength and fitness I felt like I had encountered. Reading the article was one of those clarity moments where you realize how little you know and how much you have to learn. Basically, just like the author, I associated the idea of spending a lot of time in a gym and doing “cool” exercises as a way for getting stronger. But it turns out that is just a bunch of BS. The simpler the better and instead of doing fancy stuff, go back to basics.

The article inspired me to drop what I was doing and change things up. After a bit of online research Starting Strength stood out with the number of people liking the program and recommending it to their peers. I got the book and settled on the three barbell exercises. It has been a blast since. The body feels great and I finally feel strong. The feeling of tearing 300 pounds off the ground multiple times is amazing. All of that achieved while exercising only 3 times per week and no longer than 40 minutes each time. Just incredible.

In the 6 months I have achieved more progress in my overall fitness level than I have during my whole exercising history prior to the change. The next steps from here are to continue with the barbell exercises but start adhering to Starting Strength programming more strictly. I didn’t do that from the beginning because I wanted to start and not delay taking action while trying to get it perfect. Also, not sure if I want increase the dead lifts anymore since I am quite happy with where I am now.

Big thanks to Daniel Duane for writing that article and especially Mark Rippetoe for sharing his knowledge with the rest of the world. Your work has helped many to experience the strength they thought they could never have. Keep on rocking!

Looking for perfection

Just ran across an article that had a golden quote in it and I had to share it:

Happiness does not come from a job. It comes from knowing what you truly value, and behaving in a way that’s consistent with those beliefs.

If you showed me this quote as recently as a year ago, it probably would not have meant much. It all changed after reading The Confidence Gap. One of the exercises in the book asks to define a list of values before focusing on any specific goals. The approach felt so strange to me. Values had always seemed so vague and abstract and, quite honestly, useless. Now I realize I used to think of values in vacuum. You need to combine values and goals. A value without action is just a dream. A goal without a value is a temporary relief, a distraction. You will achieve your goal and seek for conclusion but there really is no end. However if you live with in your value system, as long as you take actions that fit the system you will feel satisfied. For if you succeed, you did something that makes you happy, that is important to you. And if you fail, you still worked on something that was important to you. And since it is truly important to you, you will adjust and start again.

It is worth reading the whole article. It has some great advice. It basically boils down to taking a personal responsibility for things that you lack in your life. If your job sucks, it is not your job’s fault, it is actually your fault. Find a way to change what “sucks” about it or change the job altogether. We tend to dream and create “ideal” scenarios in our minds that don’t actually exist. Get real, get out there, and take action.

Couple minutes with Google App Engine

I am an avid reader and on average can go through 2-3 books per month. I created a simple site (source) which runs on Google’s App Engine to help keep track of the books being read. Long story short, one of its features stopped working recently and I kept on delaying investigating the cause until tonight.

What broke was a page which showed the latest books a user marks to be read, or starts / finishes reading. When a user selects a book to read, in addition of all the logic that runs for such request, a job is queued to add that book to the “reading” list. I knew right away that job handlers are running into some problems. I figured that it had been a long time since I checked the Google App Engine, that bug was a good excuse to check things out and see where GAE is these days.

I am so glad that I did. Debugging the issue was a breeze because of the logs that are available in the app engine’s administrator console. They really do a good job of making the information available to the developers. As I said, I suspected that job handlers are having issues and logs confirmed just that:


Too large? How can it be too large? I only store the latest 20 books for each “to read”, “reading”, and “finished” lists! Well, after looking at the code I realized that I had a bug there and no truncation was occurring once more than 20 books had been marked. So eventually that list got too big to be saved as a regular data store item.

Once the bug was fixed, the tasks continued to fail to run but this time with a different error:


Messages like these are extremely vague, but luckily the “str” gave me a clue that the issue might be an empty string I was returning in the task handler code. I implemented the queue functionality when it was still in the early days of GAE labs. Certain functions and behaviors have changed since and removing a return part solved the remaining issue. And voila, the summary page is back online:


It was great seeing the page and the variety of subjects that I get to read about. Some comedy, history, philosophy, self-development, and software – quite a nice mix!

I love evenings like these. A long neglected bug is fixed, couple things learned (e.g. I had no idea that GAE updated their docs with Jinja2 instead of Django, so off I went reading up about Jinja2), and a piece of nice functionality is back and available.

How I stuck to using a calendar, finally

Using a calendar can be really hard to get used to but is so rewarding when you do. I know it was very difficult for me at first. I would begin with a lot of enthusiasm, schedule every single detail, follow it religiously for about a week or so. Then once initial enthusiasm passed, I would schedule things less frequently, start ignoring reminders, and eventually abandon the calendar altogether.

Luckily after each failed attempt I would start again, but with something tweaked to account for the previous failures. I won’t bore you with all the changes but the key factors that made me stick to using a calendar were the following.

  1. Daily calendar review. This particular point I cannot stress enough. Find a good time early in the evening to review what the tomorrow will look like. This way when a calendar reminder pops up the next day, it will not be a surprise. Second, this will make you think about the upcoming task and give you time to prepare for it. After implementing the daily review check list I suddenly felt so much more prepared the next day and almost never skipped tasks.

  2. Weekly calendar review. Find time at the end of the week, preferably Sunday if you start your week on Mondays, where you review the week ahead. Glance through your appointments, meetings, and plans. Think what you will need to do, if anything, to prepare for the upcoming events.

  3. One place to see all the events. Use something that is always available to you and use one tool only. Any software / web solution is ideal but if it is a paper notebook, make sure you carry it around with you every where. I used to view personal and work tasks on separate calendars. The moment I unified them into one view (you can import a calendar with most software solutions) it became much easier to glance at my day and know what is ahead. Switching between tools, even though might not seem like a big deal at first, will eventually get inconvenient.

If you do not use a calendar for daily activities, I highly recommend it. Just make sure to start slow and simple and don’t over schedule things. I remember I used to schedule sleep and breakfast, don’t do that. Start out small and schedule appointments, working sessions, events you will attend, and then take it from there and see where it takes you.

Staying on track

I can’t pinpoint the exact moment when I started setting up a yearly plan for myself. It has been a while, at least since 2006. The system that I use has changed over the years with the latest iteration looking something like this:

  1. Identify the value areas that are important to me or need work (e.g. finances, family, career)
  2. A set of goals are then created that fit one or more of these value areas
  3. A goal is broken up into actionable and measurable tasks (not an easy thing to do at times)
  4. The tasks are then scheduled in a calendar, with various reminder points set along the way
  5. And then I do weekly and monthly check-ins to see where I stand in relation of achieving my goals. I try to answer questions such as what are my active tasks, what is working well, what have I failed at recently, what needs to be corrected, and what is next.

And off it goes. I try to knock the tasks out while expecting setbacks and failures along the way. Most important though is to continue to make progress, experiment, and have fun.

Let me give you an example. This is a story of how I used this system to sell a small piece of property that I had been procrastinating about selling. I had re-located to a different city but still owned a garage space in the previous residence. I was very unmotivated in renting it out and wanted to get the spot sold. I procrastinated about it for roughly 6 months, kept on paying monthly dues while the spot was empty and not used by any one. The sale seemed a big and complicated step, you could say I was afraid to take it.

One day I sat down to plan the goals for the upcoming year and committed to getting that property sold. I asked myself, what value did the goal of selling the parking garage will serve? Two values clearly stood out:

  • Financial well being – I would eliminate a monthly maintenance fee and grow my bank account by at least $20k once the sale completed
  • Clutter free lifestyle – it would be one less thing I owned and had to manage, one less thing to think about

It is important to make the goal fit the value system. Doing so gives you that additional motivation and clarity into why you are doing a task. It comes in handy when going gets tough, when life gets in a way and you start to feel like abandoning the task.

Anyway, depending on where you live and what property you own, selling it is easier said than done. To make it more manageable, I broke it down into more concrete steps. I asked myself, based on my past experience, what do I need to do to get this sold? I need to list the place somewhere where the buyers can see it. How does one do that? Do I know anyone who needs it? No, so the obvious choice is to contact the real estate agent I had worked with in the past. And here we have our first task: get in touch with the real estate agent to list the parking spot. Then I remembered that I will also need a real estate lawyer. Another task: get in touch with the lawyer I had worked with in the past. I sent out the emails to both people, both replied and the ball was rolling. Couple more tasks, exchanges, and events  followed. All in all it took 5+ months to sell, but it did sell. Goal accomplished!

There was a point in my life where a goal like that would set me spinning. After all, what do I know about selling things? I would over-think and would tell myself that I will sell this “next year”, or “soon”. Next year would come and I would follow the same approach: over-think the process, over-complicate it really, delay, and procrastinate. Now, when I decide to do something, I try to find the first small actionable step that I can do to get the ball rolling. Take that step, schedule the next step, take it, schedule the next and repeat until the goal is complete.

Depending on how ambitious I want to be, I like to take on 5-8 different goals for a year. Sometimes there are less goals but the goals themselves are larger. That’s arguably a better approach as with fever goals you will be more focused. I still like to have couple things going on at a time as inevitable the progress might stall and I have something else to fall back to. At the end, as long as you are challenging yourself and work on things that are important to you, you will lead a meaningful life and grow as a person.

Through all of this it is important to do a weekly / monthly check-in to evaluate how you are doing with your goals. It is a critical step to make sure you stay on track. During the check-in, I look at the calendar and the recent actions and ask myself:

  •  do the steps I am taking now align with the goals / values?
  • are the steps getting me closer to accomplishing the goal?

This makes sure that you are not just being busy but actually doing meaningful work that gets you somewhere, that moves you along. Don’t be surprised to see that the action you are taking does not get you any closer. Sometimes you should simply drop it and change up the strategy. If you notice that you are not doing anything, don’t scold yourself nor tell yourself that you “will get better soon” and “get this done”. Those words are empty. Instead try to find the reasons why you are not working on the task. A lot of times I find that the goal or task is still too broad or vague making it hard to start. So I break it down again into something smaller, even more actionable.

I hope this helps someone that is starting to live a life with the plan in mind. I know a process of self-evaluation, dreaming, challenging, and planning helps me lead a richer life, with ups and downs along the way that makes things interesting and at the end of the day very enjoyable.