Reading is Hard – Regaining Focus

January 22nd, 2013 § Comments Off on Reading is Hard – Regaining Focus § permalink

I thought I didn’t like reading, but I found I have a hard time focusing for long periods of time. Whenever I find myself sitting in one spot and truly focused on reading longer than thirty minutes, I impress myself. That doesn’t happen often.

Here are a few things that have significantly increased my ability to focus while reading. No drugs here – just devices, apps, and plugins. No techniques either – I’ve tried them all with little to no improvement. This is what works for me.

Kindle

The Amazon Kindle is great to keep me focused on just the page I’m supposed to be reading rather than peeking ahead to see how many pages are left in the chapter. Yes, I do this – doesn’t everyone? The built-in dictionary also helps me stay focused. I can’t count how many times I’ve got lost browsing the Internet for an hour in order to look up just one word.

Pocket

I used this when it was originally called ReadItLater. Pocket is a one stop shop for cleaning and saving an article to ReadItLater. The Chrome extension makes it even easier to just throw it in my list of things to read.

Evernote Clearly

Who knew Evernote made a tool to help me read? Clearly cleans up websites, big time. I’m not distracted by ads, other links and articles, comments, and other “squirrels” flooding the browser. Best of all, I can just save it and read it whenever I want later on, like when I’m on the subway. Again the Chrome extension here is freaking awesome.

MagicScroll

I found this on Hacker News a while ago. It’s a response to the way scrolling really sucks at displaying text. Just go read it. I’ve only recently used it for longer articles that I read directly on my computer, but it’s so hard to just read while on my computer. I have to move away from it and get my hands to a less Internet-connected device.

Audible

I need Audible to read me my bed time story before I go to bed, definitely not the built-in TTS from Kindle. For the first week, I’ve been able to listen to and following along one chapter of Game of Thrones before I find myself nodding off. I got through two last night since the action started picking up.

It’s a great pairing with the Kindle, but I can’t wait until they merge and map the reading location with what is being read to me, just like karaoke! Imagine reading on your own and whenever you need it to be read to you by Audible, just click play, or even just putting the text down completely. That’s the future and it should already be here.

As you’ve noticed, all these are ways to get away from my computer in order to read. Maybe it’s time to look into getting some Pomodoro thing that kills my Internet connection or throttles it during the productive time and back to normal during the break period.

Audit Manager 2010 Released!

September 12th, 2010 § 0 comments § permalink

Just over one year ago, we released Security Auditing SP2. In the last few months of 2009, we were bug fixing and preparing a new product line to present at Microsoft Management Summit 2010. We were at a turning point for development and had a new direction to introduce a structured and formalized processes to help ensure a solid product delivery.

After a series of releases with this structured and formalized process, I’ve learned a lot of things that were quite obvious many other software development shops – I’ve read about them on many blogs and at ALT.NET events. The hardest part about software development isn’t the coding or testing. It’s finding the right process that fits not just the development team, but the entire company as a whole. From Sales and Marketing to Customer Support and all the way up to reporting to the investors, there has to be a good team chemistry.

I’ll highlight a couple things I’ve learned and things that I’m hoping to change in order to make sure we can attain a better team chemistry in the upcoming months and hopefully start 2011.


The Right Communication

No communication is bad and when you’re working in silos it’s unbelievably horrible. Even worse is when everyone has their own “order of importance for communication.” Here is mine:

  1. Face to face
  2. Yelling across the hall
  3. Instant Message
  4. Phone call
  5. E-Mail
  6. Voice Message
  7. Snail Mail
  8. Telepathy

Oddly enough, this order also reflects my “response time”. The more crap you put between the communication, the longer you’d better expect to wait for a response from me. Telepathy is just something I’ve learned to ignore, hehe.

Lesson learned? The best communication is an open communication. Sharing what was agreed upon with other key players is the best way to ensure understanding and maintain accountability.

Lack-of and Over Documentation

When I first started at Secure Vantage, I knew nothing about the requirements for documentation. I just happily went along developing what was asked for me to create and relied on myself for unit testing. It was great since the person QA testing my products sat literally next to me and gave me feedback pretty much immediately. The problem with this is solely due to lack of accounting for my hours and time dedicated to the project. It can be seen as a good thing or bad thing. It was all based on trust, honesty, and openness.

In Q3 of 2009, some changes in staff and management moved in the direction of a less flexible and more structured development process. The first problem we ran into that completely overwhelmed the team was documentation – something we’re all unfamiliar with, but still expected to deliver.

  • Change Request Form
  • Requirements Intake Document
  • User Requirements
  • Product Definition Document
  • Data Analysis Document
  • Technical Analysis Document
  • High Level Solutions Document
  • Cost Estimate Worksheet
  • Risk Analysis Matrix
  • Quality Assurance Plan
  • System Infrastructure Requirements
  • Software Requirements Specifications
  • Interface Requirements Specification
  • Performance Requirements Specifications
  • Data Development Document
  • Software Development Plan
  • Marketing Communications Rollout Plan
  • Testing Plan Checklist
  • User Manuals
  • Project Assurance Signoff Letter
  • Change Log
  • Release Notes
  • Equipment Installation Plan
  • Deployment Rollout Plan
  • Support Plan

Realistically, all these mean nothing if they aren’t discussed and reviewed. It’s great to present this list as something to do, but it is completely pointless if no one takes leadership and ownership of this ginormous list. It’s even worse if the person responsible for them delegates them without reviewing them once they’re done. After the first couple documents I created, it seemed like what I delivered was useless. It was quite frustrating – no one likes making something no one uses.

Looking back, I probably could have stood up and took ownership of these documents, but instead I was tasked to take more of a development lead role and left the documentation responsibilities in the back burner until someone actually reviewed documents I created. Bad idea.

Lesson learned? If you see something wrong, don’t just push back and question it, change it. I failed to change something I saw was wrong despite how much I voiced my opinions.

Meetings Meetings Meetings

First of all, I hate meetings. It’s not the concept of a meeting that I hate, it’s how most people make them: “Weekly Monday Meetings”, “Weekly Status Report Meeting”. I don’t believe in creating a meeting based on a recurring time unless each and every meeting has a proper agenda. Whether it’s a checklist of tasks, a document, an agreement on a decision, or even just a meeting to make sure everyone reviews and agrees on a priority list of work items that will go into the next release, they all have a resulting deliverable.

Holding a productive meeting is hard when one of the ten topics goes on a tangent or when you waste 10 minutes waiting for everyone to join because they haven’t installed the GoToMeeting software on a new machine. Sometimes pushing off side topics for another discussion is necessary to ensure the current list of topics isn’t forgotten. It prevents the meeting from lasting, what feels like, FOREVER.

Here is my recent favorite article on meetings: How to Run a Meeting, by Rands in Repose.

Lesson learned? If there isn’t an agenda for a meeting that you’re required to attend, ask for one when it starts. It will help prevent it from getting sidetracked and in some cases you’ll find there isn’t one. If this is the case, you’ll be able to go back to getting shit done instead of just talking about it.


Things aren’t going quite as I wanted or expected, so you might ask me why am I still here? (A lot of my friends have.) It’s plain and simple – I’ve changed my mentality from, “follow the rules, hierarchy, and follow the more experienced” to “I don’t give a fuck, I’m going to do what I think is right unless you can prove me wrong.” Cocky huh? Yeah, I admit, it’s pretty ballsy and out of my character, but I can’t just sit around and watch it fall apart.

I wouldn’t say it’s a rebellious move, but instead a determination to help make the Development Team’s environment better and later down the road a better company as a whole. I’m hoping to not just learn from the experienced colleagues, but also teach them some new tricks.

It’s been a couple months now since I’ve had this mentality and I can confidently say that here at SVT, we’re getting much better – proper communication, just enough documentation, and productive meetings. It hasn’t just reflected in the Development Team alone, but with the Sales Team and Customer Support Team too. Everyone, including our CEO, has seen such a drastic and positive change, YAY!

We’re currently winding down our first really successful iteration and things are going really great! I’m finding myself looking forward to going to work again, excited to see what we can accomplish at each day’s end.

The one big thing for us to fix is the epic battle between creating new products and features versus maintaining our old ones with limited development resources. If it were my choice, I’d follow The Joel Test for being a successful software team: fix bugs first.

Pablo’s Fiesta Fue Muy Interesante

March 2nd, 2010 § 0 comments § permalink

I found out how close we really were from the IRS building that was hit by a plane. I was first surprised to find out that the hotel we stayed at was right across the street from it. The thing that surprised me most was the location of the event itself – just across the parking lot!

View From Echelon III The IRS Building Good Bye, Austin

Although my coworker and I left Saturday night to go back to Houston, the sessions I attended in Saturday were, as always, really interesting. I’m going to try and regurjitate what I have in my memory from the weekend. I’m going to review Sunday’s sessions to see what I missed.

Open Space Schedule

Overcoming resistance to Adoption of Agile methods
The more important problem here isn’t actually selling Agile methods, but instead how to sell it. There seems to be a huge language disconnect between software developers and their (non-technical) managers. Software-development-English is really different than business-English. One way to bridge this gap is to start learning about seeing things in another point of view. In my case, I need to learn about how to explain problems and solutions in such a way that it impacts revenue, profits, and basically the bottom line.

Books mentioned: Release It! | Ship It!

What does it mean to be a software architect in an iterative world
As some of you may know I’ve been promoted to Senior Software Architect. Honestly, I had no idea what an Architect is or does, so transitioning into this role was something I was determined to find out. People in the session collectively put it best:

Architects are responsible for putting that dot on the horizon and guiding/zig-zagging the current software project(s) there like a sailboat.

So the goal is to iteratively make changes of the zig-zagging to make sure we don’t stray too far from that dot on the horizon since that is also a moving target.

Books mentioned: The 5th Discipline and Fieldbook | Enterprise Architecture as a Corporate Strategy

Open the Kimono
Although I’m not a web developer, I went to see what Jimmy Bogard had to show off. He’s a really sharp guy and definitely has some things to show from his project.

Branch/Release per feature
Basically, branch per feature is something that Martin Fowler is against since it allows for the merge points to become difficult and painful the longer the points are from each other. Despite this problem, the argument for this is that it allows for half-completed features to be excluded from the release of fully-completed features. Martin Fowler definitely has a valid point, but by making features small and iterations short, managing the merge points will definitely be less painful.

F#
Discriminated Unions explained with poker. I’m going to start a Project Euler repository with F# solutions, but we’ll see how far I really get.

Books Mentioned: Real-World Functional Programming with examples in F# and C# | F# Wikibooks

Ruby Update Part 1.

February 15th, 2009 § 1 comment § permalink

I’m walking myself through the Ruby Course, by Brian Schroder, and using SciTE as my temporary IDE. Here are a few things that made me scratch me head.

Single and double quotation marks matter a lot:

puts #{multi_foo(2)} #outputs just text
puts #{multi_foo(2)} #outputs results of function ‘multi_foo(2)’

Stacks and queues can be implemented two ways to get the same behavior, but the container (array) is way different.

Stack as I know it:

stack = Array.new()
stack.push(‘a1’)
stack.push(‘a2’)
stack.push(‘a3’)
puts stack.pop until stack.empty?
Queue as I know it:

queue = Array.new()
queue.push(‘q1’)
queue.push(‘q2’)
queue.push(‘q3’)
puts queue.shift until queue.empty?
No-no stack:

stack = Array.new()
stack.unshift(‘s1’)
stack.unshift(‘s2’)
stack.unshift(‘s3’)
puts stack.shift until stack.empty?
No-no queue:

queue = Array.new()
queue.unshift(‘q1’)
queue.unshift(‘q2’)
queue.unshift(‘q3’)
puts queue.pop until queue.empty?

I also came across some funky data type, the DEQUE/DEQUEUE” – a double-ended queue. I’m not sure how to use this in real life, can anyone give me a good example? I’m still trying to get me head wrapped around this data structure…

Deque 1:

deque = Array.new()
deque.unshift(‘unshift1’)
deque.unshift(‘unshift2’)
deque.unshift(‘unshift3’)
deque.push(‘push1’)
deque.push(‘push2’)
deque.push(‘push3’)
puts deque.shift until deque.empty?
Deque 2:

deque = Array.new()
deque.unshift(‘unshift1’)
deque.unshift(‘unshift2’)
deque.unshift(‘unshift3’)
deque.push(‘push1’)
deque.push(‘push2’)
deque.push(‘push3’)
puts deque.pop until deque.empty?

Right now, I’m trying to get a good understanding of the hashes, iterators and blocks. It’s not new to me, but the syntax hurts. After a few exercises, hopefully I’ll get it.

Oh yeah, and Happy Valentine’s Day.

Learning Again.

February 6th, 2009 § 0 comments § permalink

Do you ever find yourself learning only what you need to learn for work?

About a week ago, I found myself at the point where I’m not learning anything new. Don’t get me wrong though: I’m not tired of my job whatsoever. I just want to learn something outside C# and Object Oriented programming like Ruby, Functional Programming, or even learn to play some musical instrument.

Since I’m kind of ADD at times, I need to isolate some time for myself to focus on what I want to learn. So, I’m going to have myself Musical Mondays (piano? guitar hero? haha) and Technical Tuesdays (Ruby).

I spent about an hour to crack open some stuff on Ruby. I tried a few IDEs (RubyMine, Aptana, and directly online), but I wanted to get away from that so I’m using the “fxri” after installing the one-click-installer. I read up on the differences since I come from a C# background. I’ve already completed the quickstart, yay me!

My brother is back in town this weekend, so he should let me use his keyboard for the musical side of me. He never really uses it, so I might will borrow it from him, set it up in my room. My first task is to learn how to read notes and how they’re mapped to the keys. Maybe I’ll be able to identify this “middle-C” everyone talks about by the end of the first lesson. Or maybe I’ll crank up Guitar Hero what-ever-version-we-have on the PS2.

Where Am I?

You are currently browsing entries tagged with learning at thomas nguyen.

    • Family old friends new friends an amazing staff and professionalhellip
    • A photo on Flickr