Showing posts with label Personal. Show all posts
Showing posts with label Personal. Show all posts

Saturday, February 13, 2016

Review

Some good things, some not so good things about me:

Work

Based on feedback from managers and my interactions with colleagues, I think I have been doing good work. Taking a step back, I feel like I have been living scared. I haven't gone on any interviews since I got my job years ago. I should be more active, and less scared of rejection.

Health

I am very pleased with my daily kettlebell training. I feel more fit, but I'm not sure how much. I need to keep better track of what I am doing (ie. how many 1 arm swings/push ups/pull ups/ etc ... per day), so that I can know if I am making progress.

Mental Health

I have pretty much given up meditation. It's boring. I have substituted it with early morning stretching. I am considering waking up about 30 minutes earlier so that I am less rushed in the morning, which may give me more time to meditate.

My dog

I have been trying to find the optimal walking schedule for my dog so that she never has to go in the house. We have cut down her need to use the wee-wee pad from every day and every night to almost never using it at all.

Writing

I have been writing in my private daily journal consistently, but the quality of my writing still feels pretty poor. I'm not sure how I can improve or track my progress.

Learning

I have been keeping up with my coursera course. I am on track to finish the course. This'll be the first one I finished.

Family

Family life has been good. I think I have been better at listening to my wife. I have been communicating more with my brother. My mom is coming back with my brother soon.

Eating

I have some good and bad weeks with respect to cooking and eating. For 90% of my life, I haven't been much of a cook. Recently, I've started making chicken soup from scratch and kim chi jigae (the chicken soup for koreans). I'm eating more salads for lunch. So things are improving.

Korean

I have made little progress. I'm still pretty diligent in doing Anki flash cards. I add four new sentences per day. And, I have been watching a few Korean movies and shows on Netflix. I signed up for an iTalki account so that I can practice speaking. I think this would be the best way to improve, but I haven't committed to doing any sessions.

Other projects

I have pretty much stopped working on any other outside projects. I have used all of my time working on other things like coursera, journaling, etc ..., which I mentioned above.

Sunday, February 7, 2016

Daily Workouts

I can't remember exactly when, but a while ago, I started doing daily workouts at home. I started with the 7 minute workout and used this app to help me along. I loved the idea of getting in shape at home, for free, and (most importantly) quickly.

After a while, I wanted to increase the intensity, so I started following more intense body weight workouts from youtube. I used youtube videos for a while, but there were some things I didn't like about it. A lot of workouts had me jumping up and down, which I can't really do inside my apartment early each morning. I also wanted to increase the resistance of some movements. So I decided to buy a kettlebell.

After some research, I ordered a beautiful 35 pound kettlebell from Rogue Fitness. With it, I have been doing a daily workout that I have grown to love. Here's my daily workout:

  • 1 Turkish Get Up / side. I use this as my warm up.
  • 30 2 handed swings. I use this to get my heart rate up and to concentrate on getting perfect swinging form.
  • 10 1 handed swings / side. These are still pretty challenging for me, so I try to just do a small number to get my form right.
  • 6 clean + squat + press / side. This combines a bunch of the essential kettlebell movements into one.
  • 6 pull ups.
  • 20 push ups.
  • 15 V ups.
  • 5 single legged sqauts. I can't quite complete these yet without hitting the ground.

This workout gets my heart rate up without me having to jump around in my apartment, and I feel like I'm getting stronger. It takes me about 10 minutes to complete. It would take me longer to commute to any gym than it does for me to finish my entire workout. My wife runs alot, and that takes so much longer (although I do plan on running a bit more on weekends once the weather gets a bit nicer).

As I get used to this workout, I think it will be straightforward for me to make things harder. More reps, new moves, and eventually another (heavier) kettlebell are in my future. Hopefully, this is all working.

Tuesday, January 12, 2016

Bugs at Work Messing with My Head

I was debugging an issue yesterday, but I could not fix it.

From the start, I knew the problem failed in an API call written by some other team. I traced through the unfamiliar code stack and determined the problem was that I couldn't write to a given database. But the settings on the machine indicated otherwise. So, it took me all day, and I was still stuck.

Because I couldn't perform at work, I was in a bad mood.

Apologies to my wife. The bug screwed me up.

Update
I subsequently found out that the problem was a deprecated API that was no longer supported in my test environment. It was as if I was trying to figure out why a webpage was rendering poorly on Internet Explorer 6 on a Windows NT machine.

After I discovered this, it just didn't make any sense to try to fix this problem anymore. So, that put an end to my debugging. All in, about 7 hours wasted, but now I could at least move on.

Tuesday, January 5, 2016

End of 2015 review

The end of the year has come so now's a good time to reflect on the past year.

I've really embraced two new ideas/concepts/practices into my approach on life.

The first concept is that every day (whatever I am doing) I am contributing one programmer day's worth of work into my life's work. So whether I am highly productive in building something, or just relaxing with my wife and friends, it's all added to the big tin foil ball of my life. Will it amount to something great? profound? underwhelming? I am not sure. I can only hope and work for today's contribution to be something of significance.

Along with the idea of contributing to my life's work day-by-day, I have embraced a daily routine. It's a simple yet powerful thing. It's something that I critique, review and then follow to make my life better.

So, onto resolutions.

I started the year with one resolution, to finish everything that I start. It's hard to know if that's true, because I've surely finished some things (like my 2nd android app and some DIY home projects) but there's probably countless things that I've left undone. Since my resolution was to finish everything I start, and I'm not sure if I've actually succeeded in doing this resolution, I'll resolve to keep on trying to finish everything I start for 2016 as well. Sounds like I'm in a bit of an infinite loop, but oh well.
Update I just signed up for a coursera course and plan on signing up for another one right after. By the time they are over, half of the year will be gone. I've started and never finished a few of these online courses before, so I resolve to finish at least these two this year.

A second resolution that I'd like to make for myself is to improve my personality. As a science major/engineer/software developer I think I gave myself the excuse that I was good enough socially for an engineer. But as I reflect on the year, I think I've let myself go too much, and that I should work towards being better socially. Similar to physical and mental health, it's not a good idea to not care about my social health at all. I think it will take some effort and uncomfortable-ness, but I hope it will make me a more enjoyable person and help to ground me in stronger relationships as well.

I have a lot of other things that I'd like to improve on (foreign languages, health, computer science skills), but I've already been working on those, so I don't think a new resolution is necessary, but those are still under active development as well.

Tuesday, December 1, 2015

Schooled

Learning is a process for me.

When I initially hear of a new concept, my reaction could be any of the following: surprise, awe, doubt, indifference, etc ... Regardless of the initial response, I typically don't have a real firm grasp of the concept just yet (even if I think I do). If I try to use the concept, it would be mostly hand-wavy, simplistic or clumsy.

That's where most new concepts mostly end for me. I am vaguely familiar but I don't really have a good grasp of it.

But sometimes, the concept is prevalent and it comes back to me. So I read about it or hear about it again, either actively or passively. I start to see some interesting subtlelties that I didn't initally realize. I come to appreciate the concept more and more. Because I have a better idea about it, I become comfortable and use it regularly. And befoe I know it, I begin telling others why I think this concept is interesting and useful.

In the world of programming, there are lots of concepts. Some of them have taken me a long while to learn. Here are a couple examples of things that have taken me a while to learn: Object Oriented Programming, Agile developement, and Unit Testing. For each of these, I thought I understood the concept pretty early on. But as I look back, I can see that I had a lot to learn about each and that I've slowly become better at each of them.

For me, learning is a process. It requires listening and reading, doing and teaching. It needs repeated attempts spaced out over time. Oddly, it often requires me to do other things for a while, so that I can see the concept in different lights.

So, learning can take some time. Lucky for me, I like learning. It's one of the best things about being a programmer. I'm always being schooled.

Sunday, March 22, 2015

Stop Poking Me

I've been working on a home renovation project, which has been hard. It is tiring for a lot of reasons, most of which I won't go into. The one thing I'll mention is that I have to deal with a lot more email and texts throughout the day than I am used to. This communication is necessary, so I have no choice, but to deal with it.

As I deal with this new influx of communication, I realized I am getting a lot of other unsolicted email. This unsolicted email causes a lot of false alarms as I look for email that I actually care about.

So, over the weekend, I did some things to reduce the noise and save myself some time.

Unsubscribe from as many emails as possible

I went through my email trash, and found as many auto-emailers that I could find. For each, I unsubscribed. It usually required just a click or two for each auto-emailer: not too bad.

Turn Facebook notifications off

I turned off all notifications from Facebook. I tried to just reduce it last week, but I was still getting 'pokes' and other completely irrelevant notifications. So I turned it all off. I don't want to be a complete insensitive recluse, so I replaced it with a new IFTTT rule that sends me an email once a week saying "Check your facebook". I figure checking facebook at most once a week will be more than enough.

Changed to firefox

Finally, I've noticed that the Chrome browser on my Android phone and my mac computer has been very slow. I haven't measure it, so this is completely subjective and ancedotal. Over the last weekend, I have been using Firefox on all of my devices, and it definitely 'feels' faster. I'm switching for now, and hoping that it continues to work better.

Sunday, March 15, 2015

Your Life's Work

Everyday you are working on your life's work.

And your life's work doth not wait. Whether you are aware of it or not, you are contributing to your life's work now. It's a sobering truth.

Whether you are building something new, learning about functional programming or browsing social media, it is all part of your life's work.

The trick is, some things seem to accumulate whereas others just evaporate.

As programmers (and humans in general) we have a chance to build things of substance. I hope my life's work amounts to something of great substance.

Saturday, January 3, 2015

Resolution For 2015 ProgrammerDays

For the first team meeting of the new year, our manager laid out a high level overview of what he thinks we'll accomplish this upcoming year. The summary included some things that I was happy we'd work on, but it also omiited a few projects that I liked. This meant that some of the projects that I have been working on were going to end up in the vast graveyard of half completed computer programming applications.

I'm all for killing programs and applications that no longer provide value to our clients. Such projects become all bugs and no features. The thing that irks me is when things go unfinished. Due to shifting priorities, poor planning or something in between, some projects get started, but never make it to a completed state. That bugs me.

While I am somewhat subject to the whims of management at work (and must leave some projects unfished), at home, I have no such constraint. So, my new year's resolution is to finish everything that I start.

For example, this blog post is about to be completed, now.

Monday, September 1, 2014

State of affairs - consequences of being overworked

For the last few weeks, I have been overworked.

Our team was given a deadline to build and release a product. But there was too much to do in the given timespan. It led to longer hours, less testing, more technical debt and created at least one burnt out programmer.

Of course, this affected my life outside of work. I didn't have the time, energy or motivation to work on any side projects. Instead, I spent my time mindlessly watching television or fiddling with my fantasy football team.

I hope to find a better balance as we start up the next set of work items, which will most likely include fixing bugs with the product we just rushed to complete.

Wednesday, December 11, 2013

Hardware is hard

The wife and I started working on a robot.  We are trying to follow the tutorial at Let's make Robots.  I have found that working with hardware is hard.

As with many things, the hardest part is that I don't have the basic skills or knowledge.  For example, soldering looks like the basic building block of putting electronic components together.  For a regular software developer, it is akin to editing text.  If you can't solder, then you can't build any electronics, and I didn't know how to solder.  When you don't know what to do, how to do it, or why it should be done, making progress is hard.

In the hardware world, everything costs something.  In the software world, once you have a computer and an internet connection, there are tons of free languages and tools to build real world applications.  If you have been building robots for a while, you may have a collection of unused supplies.  But for me, a beginner, I had to buy a lot of stuff, from wires to soldering tips and of course batteries.

It is not easy to undo a change.  If you break something, you might need to buy a new one.  This makes tinkering a little bit scary.  For now, I don't have a good means of debugging a problem or testing a change.  It will take a combination of increased knowledge and maybe some new tools (like a volt or current meter) to really be able to debug problems.

This experience reminds me of being a physics student.  In class, we solved problems and the math worked out perfectly.  Then, we tried to measure things in lab, and all the answers were just a bit off.  The hardware world is much less forgiving, but I hope that going through the trouble of working with hardware will have some benefits.  I hope to have a greater appreciation for all hardware, and I hope it helps me be a better software developer.

Wednesday, December 4, 2013

Motivation

I experienced a few things yesterday and they all led me to the same thought.  I'll note them here, and you can try to guess what feeling I had after each one.
  1. I played in a basketball game where my team was completely annihilated.  It was like the NBA vs the pee wee league.  We were totally outclassed.
  2. I was looking over some old code that fumbled through a few actions: unzip files, delete a subset of them, re-zip remaining files and then move them to another directory.
    After some thought, and reading through 'man zip' and 'man find', I replaced garbled nested code with a few clean unix one-liners.    
  3. I found out that an old buddy of mine had started his own company in a field that he has loved since we were kids.  
If it wasn't apparent to you, I'll tell you now. The feeling I had after each of these events was motivation (or maybe ambition).

After losing my basketball game, I felt that I had to get back into shape and practicing regularly.  After finding out a cool solution to a coding problem, I had a revitalized feeling to continue studying and reading to uncover cool solutions.  Finally, after hearing about my friend, along with being very happy for him, I also felt motivated to do more with my life.  

Yesterday, no matter what happened, I felt motivated.  It is similar to that old Tootsie roll commercial, "Whatever it is I think I see, becomes a Tootsie Roll to me".  I was drawing motivational fuel from whatever I was seeing or experiencing.  Let's hope I can keep putting it into action. 

Sunday, June 9, 2013

NYC culture

When the weather is nice, my wife, dog and I will go to Central Park at least once a week.  Over the last few weeks, there were a few events that affected our visits.

Puerto Rican Day Parade
This ran along 5th Avenue.  When there were breaks in the parade, pedestrians were able to cross the avenue to enter or exit the park.  We were able to enter at 72nd street without much delay.  However, when we entered the park, we found that the walkways were very congested and the normal access areas (lawns, the mall, sheep's meadow) were all blocked off.  I'm not sure if there was another access point, but a police officer told us that there was no access to our normal walking and relaxing areas, so we just left the park.  I'm not sure if restriction of park areas was related to the parade, but it ruined our visit nonetheless.

Conclusion: Unless you want to see the Puerto Rican Day parade, avoid 5th avenue, the east side and central park on this day.

Israel Day
Similar to the Puerto Rican Day Parade, there was a parade that ran along fifth avenue.  We crossed and entered the park without much delay on 72nd street.  Most of the park functioned just like any other day, except that an area near the Mall (just above the fountain) was closed off.  The only people who seemed to be allowed in were those who participated in the parade.  We didn't really ask how we might gain access, so we just walked around the restricted areas.  On this day, there were also protestors.  Because of the restricted areas with selective access, the protestors, Israel's history with terrorism, and the recent Boston marathon bombings, I couldn't help but feel a bit of tension in the park.

Conclusion: Similar to the Puerto Rican Day parade, avoid this parade and its activities unless you are sure you will participate and be allowed in to all of the restricted areas.

Japan Day
Unlike the parades, no roadways are blocked off for this event.  Instead, you will find Japanese volunteers scattered around the park advising visitors on where the events are.  Near the volleyball courts and the Mall, there is a large number of stands where the Japan day events are being held.  I think there was an origami stand and another place where you can try on kimonos.  You will also find lots of free Japanese food and drinks.  Also, there is a stage where you will see Japanese performers.

Conclusion:  Although it is crowded, this is the best of the events.  You might learn something, nothing is blocked off, and there will be lots of free stuff.

Wednesday, June 5, 2013

Jury duty notes

The day before jury duty.
Tomorrow I have jury duty, and I am looking forward to it.

Last time I served, I made it as far as walking into a court room.  I never had to answer any questions from the judge or a lawyer.  So basically, I just sat around, read and waited.  Needless to say, I loved it.  It was like retirement.

This time, I plan to take a book, a computer, a tablet and my phone.  This should give me enough things to read as I wait around.

Day 1 of jury duty.
I arrived a bit before 9 am.  I went through security, got to the floor I have been assigned to, and waited until the doors were opened.

When we were allowed in, we found a seat, watched a video, filled out some forms and waited again.  At first, I was a bit disappointed that I didn't get a seat near a power outlet.  But I soon found a computer room where I could sit and plug in.  I would think that a spot at one of the desks would be in higher demand, but there were a few remaining spots.

Around 10:15 am, we were told that a judge wanted to see everyone at 2 pm in another building.  So we were free until then.  If we were told this the day before, I would have gone to work for half a day.

After lunch, I bought soup dumplings and ate in the park, I went to the other jury waiting room and waited.  Around 2:30 pm, we were all called to the court, where the judge told us that this trial could last over a month.  The judge asked for volunteers who could serve.  A few people volunteered, but the judge was looking for more.  She then asked a few people why they couldn't serve and she said some were ok and some were bad excuses.  After a few rounds, I eventually volunteered.

I definitely did not want to spend weeks coming to this court house.  I did not want the projects I was working on at work.  There was no good reason for me to excuse myself, but there were a lot of reasons for me to serve. Every citizen should be ready to serve their city/country if called upon.  I also thought to myself, if I postpone now, there is no guarantee that I will have more time in the future or get a shorter case later on.  My desire to not procrastinate and my civic duty led me to volunteer for a trial I had no desire to participate in.

After about 60 volunteers arose, the remaining jurors were sent out of the courtroom.  The judge made some remarks, and then names were called out and chosen to sit in the jury box or in a specific seat in the audience.  My name was not called out.  Each of the jurors who had their name called out answered a list of questions like, "where did they live", "what do they do", "do they know any policeman", etc ... After this line of questioning, all jurors were told to go home and report back to the court room the next day at 9:45 am.

Day 2 of jury duty.
I went to the court house and waited for the judge to call in all of the jurors.  This time, the lawyers did most of the talking and each set asked a bunch of questions.  Some were directed to the whole set of jurors, like "Does anyone have any issue with saying someone is not guilty if there isn't sufficient evidence" and some were asked direct questions like "Mr X, will you be able to judge impartially the merits of the case based only on the evidence presented in the court room?"

After a few hours, all jurors were sent out of the courtroom.  After about half an hour, the jurors who had their names called earlier (30 or so of them), were called back into the courtroom.  After a few minutes, several of them walked out.  Then, for all of the rest of us, we were told to go back to the jury waiting room -- we weren't going to sit on this trial.

Back in the jury waiting room, we were told to return in an hour, after lunch.  After lunch (this time I ate Mapo Tofu in the park) we waited for a bit and were then eventually released with papers saying that we served for two days.

Is circumstantial evidence enough?
One line of questioning by the defense to the prospective jurors made me think that I might not be able to serve.  The defense said that the evidence in this case was all circumstantial.  He asked if we could render a verdict using just circumstantial evidence.  The example he gave goes as follows:

If you pick up your mail (in your apartment building) today, and then return tomorrow and find mail there again, then it is reasonable to conclude that the mailman visited your apartment building. 

After a moment of thought, I thought of three ways mail could be in your mailbox without the mailman visiting.
  1. When I picked up the mail, I left a letter behind.
  2. A neighbor incorrectly got a letter addressed to me.  The neighbor put the letter into my mailbox or asked the doorman to put it into my mailbox.  
  3. The doorman had only sorted some of the mail when I picked up the mail, and he finished putting the mail into the boxes after I made my first pick up. 
If asked, I don't think I could convict someone of a crime if all evidence was circumstantial.  Maybe it was a bad example, or I was thinking about it incorrectly.

Conclusions
My jury experience was a little bit better than the previous time.  With a power outlet, wifi, computer and a phone, I can always find something to read or play around with.  In the future, I hope the jury duty experience improves even more such that we don't have to physically go to the court house unless we are actually needed.

Sunday, June 2, 2013

The Office Ends

For as far back as I can remember, there has always been a television show that has been targeted to my age group.

Over the years, I remember watching Full HouseSaved by the BellBeverly Hills 90210, and Friends.  Each of these shows seemed to be made for me.  Most recently, The Office coincided with me getting my first real office job.  A few weeks ago, the series finale aired, which I watched today.

Here are some notes on how I felt watching the show
  • I felt a strong sense of sad nostalgia.  Unlike school, where there is a new beginning after graduation, the end of office life seems depressing.  Most of my youth was spent studying for a career, and when that career is over, I don't know what I will do or how I will feel.  
  • I wonder what show will capture the mood of my next stages in life.  Maybe (if I have kids) it will be Modern Family.  I wonder if shows will continue to target my age group anymore.  For example, MTV seems to target the teen audience.  
  • I always thought Michael was the star of the show, and then maybe Jim or Dwight.  But now I think it was Pam.  She had the most to learn, the most to overcome and the greatest lessons to impart.

Friday, March 29, 2013

Still on the search for my next computer

Like most programmers, once I get stuck on a problem, I can't stop thinking about it until I find a solution.  These days I have been shopping for a new computer.

My current computer, a HP DV2000 laptop, circa 2006, works OK.  Over the years, I have only made two upgrades: I doubled my RAM from one to two GB and I have switched my primary operating system to Linux Ubuntu over Windows XP.  For reference, my wife and I actually have the same exact computer, except that she didn't make any upgrades.  Amazingly, both computers have been working fine for all of these years.  (The only real deterioration is that neither of our batteries hold much of a charge, which could be fixed for 20 dollars).

So, even though my current laptop functions just fine, in the last couple of months, I thought it was about time that I (and my wife) upgrade our machines.  I'm not exactly sure why.  Maybe it's well placed advertisements, maybe it's my wife's subtle coaxing, or maybe it's the stark difference between my dual display powerhouse work setup versus my aging home laptop - but I think it's about time for an upgrade.

My wife says that I am not a good shopper, and she is right.  I know that I only have a finite amount of energy per day, and finding deals is something that I just do not want to spend any attention on.  If I'm shopping for a pair of jeans, I'll walk into the Gap and buy the first pair that sort of fit me OK.  In contrast, my wife will start browsing online for Jeans, eventually go to the Gap, take a hard look at every pair they have, go home, look for deals online, order three different pairs of jeans, try each pair on a few times, return two of them, and  voila, she has a pair of jeans.  In the end, it's clear that she looks better than I do.

But for a new computer, I have taken on her exhaustive approach and I have been scouring the world wide web for my and my wife's next laptop.  For my own reference, here are the upgrades from my current laptop that I am hoping to get for both my wife and I. 
  • 2GB to 8 GB of RAM. 
  • 80 GB hard drive to at least a 128 GB solid state drive.   
  • 5.5 Lbs to less than 4lbs total weight.
  • S-video or VGA output to HDMI output.
The one place we diverge is in the operating system.  My wife is looking for a Windows machine, but I'd like to use OS X or Ubuntu.

In the end, I decided to give the 13.3-Inch Apple MacBook Air a try.  I just put in an order for a refurbished model for  $999 ($1087 with tax).  It only has 4 GB of RAM, which I couldn't upgrade, because it is refurbished.  This will be a learning experience for me, because I have never owned a Mac before.

For my wife, we decided to get the 15" Samsung Series 9 a try. It has 8 GB of RAM, runs Windows 7, and is 3.6 lbs.

It's been a quick 7 years since our last laptop purchase, and I hope these new machines could serve us for a long time as well.  If they last us through 2020, that would be pretty remarkable.

I started this post saying that once I get a problem in my head, I can't stop thinking about it until I reach some conclusion.  After several days of shopping, reading reviews, and evaluating my needs, I couldn't take shopping anymore.  So, the only resolution was to make a decision and commit to one choice. I'm glad I made a choice so that I can go back to building apps, learning about coding and programming and doing anything else besides shopping.

Monday, February 25, 2013

On my own

I have been working for a fairly large software company for the last 3 years.  During these years, I have been paid fairly well, learned a lot about software development, and have worked on a few interesting projects.  The experience has been good and I expect it to continue to be good.

Despite a positive work experience at my present company, I still day-dream about working on my own.  I would have my own home office.  I'd build software.  I'd make money.  In my day-dreams at least, it is so appealing.

Working for the 'man' is basically a fair deal.  They pay me fairly well, and they also handle all of the marketing, selling, lawyer-ing and whatever else is involved in running a company.  I know that my code is worth more in their hands than mine.  Without their infrastructure, my code would be close to worthless.  

Yet, the biggest issue I have with working for a company is that all of the software that I produce is owned by someone else.  If I quit my job or get fired tomorrow, my company can continue to use the code I wrote to make money.  It would be nice to actually 'own' or benefit from the code that I wrote as long as it is being used, even if I left the company.  

I don't know if this desire to be own my own will ever manifest into any kind of action, but the thought has been bouncing around in my head for so long, I couldn't help but web-log it.

Monday, February 18, 2013

This Developer's Life

I have been on the search for a podcast about programming / coding, and I have just started listening to This Developer's Life.  It is a podcast, modeled after the This American Life podcast.  Similar to This American Life, this developer's life is of super high audio and content quality.

I have listened to the first 7 episodes, and I have enjoyed them all.  The focus of the podcast isn't on the code or the developed software; rather, it centers on the developer.  This podcast will give you insight into the psyche of a software developer.

For one, what makes a developer tick?  Is it a need to build things or fix bugs?  Do developers want to be famous?  Or, maybe they just want to understand everything (from semiconductors to mobile apps).  It's probably a mix of all things, at least it is for me.

The other big aspect of  this developer's life, both in the podcast and in my life, is the developer community.  There has been discussion on how we treat other developers.

This podcast began in 2010 and there has been about about 1 episode per month, so there is a lot of content for me to catch up on.  At this point, I am a big fan.

Sunday, February 10, 2013

Finding the pain

As of today, I have two things in my personal portfolio.  
The motivation for building each of these applications was to learn: to learn about mobile development in the first case and about building Google App Engine web applications in the second case.  Secondary reasons for building each of these apps is that I thought some people will find them amusing/useful and that no-preexisting app provided the same functionality.  

As I come closer to finishing up my doodlesforum project, I heard about Jeff Atwood's newest project, Discourse.  Discourse is software that will help discussions on the internet, aka forum software.  I don't know how popular this software will become, but I am pretty impressed that he chose to tackle this question.  

I think choosing the right software project to work on next is difficult.  I don't know if I'll ever work on a project that has such simple yet profound goals such as:
  • Let's build a good internet search engine (Google) 
  • Let's build a good Q&A site (Stack overflow)
  • ...
  • Let's build good forum software (Discourse?)
I think a good way to choose projects is to find the pain, and then build something that solves that pain.  I'm not sure what pain I'll look to solve for my next project, but it's something I'll keep in mind.

Monday, February 4, 2013

How does a brogrammer become a programmer

A brogrammer is a type of programmer known for his sexist comments, macho brashness and frat-boy attitude.  A brogrammer is sort of the opposite of a nerd, in a bad way.

I am part-brogrammer 
While some would say that brogrammers aren't real, I see a little bit of brogrammer in me.  While I don't normally drink booze while I code nor do I make many sexist coments (as far as I know), I am guilty of suffering from one part of the brogrammer stereotype.  And worse yet, I think I picked up one of the worst brogrammer characteristics.  My attitude towards writing code is way too macho.  I think this is one of the worst brogrammer traits, because it will eventually make your final product worse.

Macho brogramming leads to bad software
So why is macho programming bad?   It leads to an over-estimation in a coder's ability.  I often promise to deliver something, and find myself short on time.  In order to finish on time, I'll have to work late and/or push out rushed code, which leads to buggy code.

Beyond the code you actually write, macho brogrammers like myself spend way too little time not writing code.  I have come to realize that good software developers spend a lot of time reading, asking questions and planning.  Writing code should come at the end of a lot of thought.  If you begin writing too early, chances are you haven't found the ideal design and you will either have to re-write code or live with poor design choices.

Putting the Pro back into Programmer
I think the way to stop being a macho brogrammer is pretty simple.  Here's what I came up with.
  1. Think first. Code later.
  2. Ask lots of questions.  

Thursday, December 6, 2012

Algorithms

I have been a professional software developer for a few years now, but I haven't had any formal training on the subject of algorithms.  So, I think it's about time for me to do some hard technical reading on the subject.

To that end, I am currently reading Introduction to Algorithms to learn about algorithms.  So far, I think the book is well written and pretty easy to read.  However, I think I will need to do some pen on paper or coding work to internalize the material and ensure that I get some long term value out of it.

I thought it would be pretty cool to write the code for various sorting algorithms, and then demo it in an Android app.  That must be a decent idea, as someone has already built an app that demonstrates sorting algorithms very nicely.

Please leave a comment if you'd like me to see some posts on algorithms or if you know of any other great resources to learn from.