Claudio is a Principal Consultant at Improving Houston. He has been developing software for 25+ years. When not building software, consulting with clients, doing presentations, delivering training, or hanging out with his family, he can probably be found working on his music.
Posted in lifestyle on December 16, 2020
Quite often, we give up on writing a blog post, an article, a new talk, because we think “it’s already been done, why should I bother?”. For example, we might have finally grasped one of the SOLID principles. Hooray! Success. We have to tell others of our epiphany. But then, why not tell others to simply go listen to uncle Bob?
I believe that, like most people, you follow some sort of news…
- How do you decide what type of news to follow (technology, politics, entertainment, sports…)? I’d guess you pick the ones you’re particularly interested in, as it applies to your life, your work, your current situation…
- How do you decide which news channel to follow? I’d guess you choose those better aligned with your own views. Maybe you look for those with your favorite sense of humor, or thoughtfulness, or… there’s a reason (or many) why you choose one news channels over another
Every day, the same news are delivered through several channels and types of media. But why? Couldn’t there be just one?
Different people will find different information through different paths. I find information I’m looking for or authors through my research on software development, on music, or motorcycle riding, on productivity, on lifestyle.
There are news sources I’ll never consume at a given moment in my life because of a number of reasons:
- maybe I can’t relate to the way they deliver their message
- maybe I don’t agree with them in that moment (opinions can always change)
- maybe I’m not educated to the level the news are being delivered…
I don’t mind sharing things I have just learned, regardless of how basic it might be. If I don’t share it, there’s always a chance some people would have never known about it. I can’t count how many times I’ve shared something and heard “oh, I didn’t know that”, even though it was something taken from granted by many.
An example that always come to mind for me takes us back to the first paragraph in this post: SOLID principles. After a couple of years of having heard of the Liskov Substitution Principle (LSP), I’ve run into a situation where it finally made sense to me, and I felt like I could articulate that as an example to explain it to others. I sat down, wrote about my experience, took some screenshots showing the code, published the post, and moved on.
Ten years later, that post is my top most-viewed one (31k versus 8k of the post in 2nd place), and it’s been the most viewed every month. I keep getting visits to that post coming from sources I can’t even read the language, which makes me believe those people learned the topic through my words, through my voice. Maybe they’ve all heard of LSP through Uncle Bob, but couldn’t quite grasp it (which was my case). Maybe after reading my post, they went back to Uncle Bob’s writings and were able to understand it better from the newly-gained perspective.
Use your voice. Get your word out. There is always someone listening.
It may be the tone of your voice, you’re accent, your background, your style, your mannerisms, the things that either frustrate or motivate you… those are all things that can possibly draw people to you.
Just a couple of weeks ago, I’ve blogged about The Importance of Technical Communities (the ideas really apply to any community in general, much like what I do with my motorcycle track riding community). In this post, I’ll focus on the networking side of getting involved with communities.
Every week, I share things on the Virtual Brown Bag; I may share an article or book I’ve read, a challenge I’m facing at work, a successful way I’ve found to implement something. Whatever the case might be, once I’ve shared it with the community, I’ve planted a seed in their minds: should they either run into the same challenges or solutions to it, they’ll think of me. They’ll know who to either ask questions or offer help to, or make connections (“Hey, Claudio, last week you mentioned you were having issues with Cypress. I mentioned it to a co-worker and he has the solution. He’ll be reaching out to you!”).
I’ve talked about similar things when I shared my thoughts on “fake until you make/become it”. We don’t need to figure it all out by ourselves. We don’t need to fake it. Others will help, but we need to either ask for their help or let them know that they could possibly help us.
Every month, I update my “Now page”; that’s an easy way for people to know what I’m up to. A few months ago, I mentioned I was starting to work with Angular. Less than half an hour after I’ve posted it, an old co-worker who I hadn’t talked to for a few years reached out to say he’s done a lot of work with Angular and I should keep him in mind if I had any questions. We also took the chance to catch up with life in general.
Last week, I’ve read Derek Sivers’ writing on how you can take a situation that may not be ideal and flip it in your favor. He touches on “it’s all who you know”, and got me thinking about how my professional career started; I walked to my whiteboard and sketched out my career map up to today, calling out every single person somehow responsible to pivotal moments. How did I meet them? How have they helped? Have I been keeping in touch with them? Have I expressed my gratitude to them?
A good book I’ve read on the subjet of networking is The Power of Who.
Our communities and networks can (and should) be connected. People in my technical communities are aware of my involvement with motorcycle track riders; those riders are aware of my involvement with software development. They are all aware of my activities as a musician. These are all opportunities to connect with people, expand my network, offer help, get help, improve, grow.
Posted in Uncategorized on December 14, 2020
I love analogies; but only when I can relate to them. It’s not just a matter of whether or not I know them, but rather if I can relate to them on a deeper level.
Analogies can be detrimental. I’m not a fan of American Football. I’ve tried watching the Super Bowl three times, two of them with someone explaining to me what was going on. It has put me to sleep every single time (sorry, folks). When I read a book or watch a video where people heavily draw comparisons to that sport, talking as if everybody can relate 100% to what they’re saying, as if everybody cared, I get very frustratred and usually give up on the content.
I love analogies that allow me to lean on my pre-existent knowledge to learn something new. If I need to learn two new things at the same time (whatever the topic at hand is, plus the analogy being used), I lose interest and move on.
A lot of computer people immediately assume other computer people’s level of nerdiness is high, so they draw comparison to nerdy things. Those usually don’t work for me, either.
For example, the first couple of times I’ve heard software developers say “we’ll practice TDD using the Game of Life as an example”, I thought they meant the Game of Life board game. After listening to the conversation and realizing that my understanding of the Game of Life didn’t align with what they were describing, I did some research and found out they were referring to Conway’s Game of Life, which I had never heard of before. Yup, I guess I’m not the typical computer nerd. 🙂
So, beware analogies.
I used to spend a lot of time playing video games as a kid. Loved my Atari 2600!! Shortly after I started working full-time at age 14, I bought my first computer. After spending what I thought to be too much time playing Wolfenstein 3D and Doom on my computer, I decided I should never have games installed on my computers. And that’s how it has been ever since: I do not play computer games.
Shortly after getting my first iPhone (v2), I ended up getting some games on it. I’ve played the heck out of Angry Birds! At one point, I noticed I was spending too much time playing Doodle Jump. Yeah, this game…
The game has a stats feature. When I saw the total time I had spent on that game, I was not happy. I don’t remember what the number was, but it added up to a few days.
I couldn’t believe I had spent that much of my life on such a thing. I thought about many other activities I could have done in that amount of time and realized I’d be much happier if had spent such time in those activities instead (working on my music, sharpening skills I use to make a living, reading great books…).
So I decided to never have games on my phone again. And it has been like that since 2010.
When I first moved to the US in 2002, my first guilty pleasure was a 1st generation X-Box (videogame consoles are ridiculously expensive in Brazil!). I used to play on it for several hours some weekends. I’ve had the X-Box 360 and currently have the X-Box One X. So, how do I handle it these days?
For the last year or so, I’ve been tracking my time spent on certain activities using the ATracker app on my phone. The activities I track may vary, based on what I’m trying to improve in my life:
- If I feel like I’m spending too much time on a given type of activity, I track it;
- If I feel like I’m not spending enough time on a given activity, I track it;
- In a given month, I may want to make sure I spend more time working on my music;
- On another, I may want to spend more time catching up with friends.
I use time tracking as a tool to keep myself accountable.
Since March, I’ve been track the time I spent reading books vs the time I spend on the video game. When I pull up the app, I want to see no more than 20% of my tracked time going into video games over the last 30-day period. Playing games is fun, but I also get a lot of fun out of reading, and can get even better things out of it.
As I pulled up my phone right now to check the time tracker, I see 76% reading and 24% gaming, which tells me I need to focus on getting more reading done over the next couple days, before I think of video games.
When I do play video game, I deliberately set how long I’ll play (usually 30 minutes, sometimes 1 or 2 hours), and I have the ATracker timer in a visible spot at all times.
Posted in lifestyle on December 10, 2020
One of my goals for this year was to improve my Spanish. One of the milestones was to give my first talk in Spanish. It happened yesterday.
“Big deal, you are from Brazil, you speak Spanish!”. Not really. “But it’s very similar, isn’t it?”. Sometimes. “It should make it easier for you to learn Spanish, right?”. Well, I can now officially say it: No, it doesn’t. Quite the opposite.
But let me reminisce about things…
After I got involved with technical communities and gave my first talk in Portuguese, people said they enjoyed it, that they were entertained and learned things. So I kept giving talks. When I moved the US, one of my goals was to continue giving talks, so I had to work hard on my English.
I gave my first technical talk in English to a few of co-workers back in 2003, and specifically asked them to write down any tips they could give me in regards to my English. I know I have a video of that somewhere. At the time I’d get every one of my talks on video so I could later watch and look for areas of improvement. I’m always interested in the nuances of the languages: the subtle pronunciation of certain letters and how it varies when words are strung together, the choice of words based on context and message we want to get across, etc.
The talk I gave in Spanish yesterday is a relatively new one. I’ve only given it once, earlier this year. I was thinking in English during its creation, since the main target would be English-speaking attendees. In the past, I have taken a talk created in English and then delivered it in Portuguese, and I remember getting stuck at times, even though Portuguese is my primary language. I was sure I’d get stuck in Spanish today. And I felt I did.
My attendees today were my very kind Spanish-speaking co-workers, who signed up to my talk and gave me feedback at the end.
Spanish and Portuguese do have words that sound similar. Some of the grammar is also similar. But not all of it. And that’s where things break down. Sometimes, I used the correct Spanish words in a sentence, but the structure of the sentence was wrong: unintentionally, I used the Portuguese struture, which then produced improper Spanish. Sometimes, I said words that sounded half-Spanish and half-Portuguese, because they’re very similar, but yet, spelled and pronounced differently.
My co-workes assured me my talk went fine and the mistakes didn’t seem to cause them to misunderstand what I was saying. That is great and it encourages me to keep pushing it and offer talks for more Spanish-speaking venues.
I’ve always been very hard on myself in regards to languages and I will work hard on the feedback I’ve received, as it gives me very specific points I can focus on.
To finish this post, I’d like to call back to my Know, Say, Do post: just knowing Spanish isn’t enough, just saying a few words here and there isn’t enough… I had to do it, and giving a talk is a way I knew for sure would raise my stakes and give me something to aim at.
Note: I started my talk yesterday showing my acoustic guitar and saying “if my Spanish doesn’t work, I’ll just pick up the guitar and start playing something”. 🙂
Posted in Productivity on December 9, 2020
The other day I’ve mentioned I do some speed reading when reading autobiographies. I actually also do it when reading other things. Here’s what I currently know and do about speed reading.
Back in 2000 or 2001, a co-worker was taking a very expensive speed reading course. He kindly offered to pass his learnings on to those of us who were interested. We only had a couple of lessons, but it was enough for me to immediately harvest the benefits.
Speed vs Comprehension
In the first lesson, he gave us the test to find out our current reading speed (words per minute, or WPM) and the level of comprehension. At the time I was reading like we are taught at school: one word at a time (often one syllable at a time). I can’t remember what my WPM was, but I remember my comprehension was at around 70% or so. There are such tests online you can find to see where you are with that at the moment.
He gave us some excercises to practice for a week. The exercise was a page containing 3 or 4 columns of words. We’ve cut a piece of paper so its length would be enough to cover the page top to bottom, and its width would be enough to cover an entire column of words. We’ve cut a rectangular gap on the paper so that we could see one word, and only one word, when laying it down on the page.
Seeing words, instead of reading them
The exercise was to pass that piece of pager on the page, top to bottom, one column at a time, left to right, at a speed where we could see each word going by, but not read it. If we passed too fast, we’d only see a blur of words; if we passed too slow, we’d end up reading the words. The idea is to only see the word, without reading it in our mind.
The following week, we did the test again. I don’t remember my specific numbers, but I know that I read the text much faster, and my comprehension went up to 85% or so. That blew me away. Since I was forcing myself not to silently read the words (saying them in my mind), I thought there was no way I’d be able to answer any question about the text I had just read. Seeing my comprehension going up was enough for me to pursue speed reading a little more.
One of the following exercises was to read text on a page using my index finger going left to right line by line (which was something I remember my school teachers specifically telling us not to do. They were wrong). That’s how I still read it today when I’m going fast. It helps me focus on moving my reading forward, instead of constantly going back to re-read words or sentences I’ve just gone through.
Sing one thing, Read another, at the same time
Another exercise was to listen to a song and sing it out loud as I read something. That one was awesome! Saying the words in our minds as we’re read them slows us down a lot. The brain doesn’t need us to read the words back to us. Once we see words, the brain processes them immediately. If we’re driving on the road and know that we have to take the exit to Such and Such City, we do not need to read every word on every road sign along the way; as soon as we see Such and Such City on a sign, the brain tells us “dude, that’s your exit”.
So, back to reading something while singing. The point of the exercise is: if we are singing lyrics out loud, it’s very unlinkely we will be able to say in our minds words we are reading on text that is not the lyrics we’re singing. So we can only see the words. Give that a try! Pick a song you know the lyrics by heart, let it play, sing a long, while reading a page of a book, a blog post, or anything like that. When the song is done, write own what you remember from the text you’ve read. You don’t have to write down word by word; just write down in your own words what you remember. Then go back to the text and see how much of it you got right.
I do NOT speed read everything. I control my pace based on what I want to get out of the text I’m reading. For example, if I’m trying to just quickly learn about a new technology, I’ll most likely read through the book really fast, focusing on the title of each chapter, words that are in bold or highlighted some how, bulleted lists, etc. As I mentioned about reading biographies, I speed read through sections I’m not deeply interested in, and slow down on sessions that grab my interest. When reading fiction, I really slow it down, so I can appreciate more the author’s craft with words, character development, etc.
Slow or fast, go read something else now!!
Posted in Software Development on December 8, 2020
Front-End development technologies come and go. In my experience, they have been the single most volatile part of software. Their lifespan seems to be very short (5-10 years).
Why are they so volatile?
- Probably because the devices the users interact with evolve far faster than what they don’t interact with (back-end, databases and such);
- Users now expect more. Back in the day, users would happily use whatever software they had to automate their work. That has changed over the years as most people have their own personal computers and devices, which they use for way more things than just “boring accounting and payroll systems”. Also, since the first iPhone came out, users have learned to expect software to be more intuitive. And now “there’s an app for everything”, and for each app, there are likely multiple options to choose from.
Since the late ’90s, I’ve worked on a huge number of software “rewrites”. Most of them were really painful and time-consuming. Why so?
- Developers put way too much code on the front-end;
- In most “rewrites”, people simply want to replace the old with the new, making the new one look and behave like the old one, but on a different platform
Every time a new front-end toy comes out, I’m mostly interested in seeing how developers are writing code in it. More often than not, I see the same pattern over and over: a TON of code put right there in the front-end. Knowing that these frameworks and libraries aren’t like to last more than 5-10 years (by last I mean to be continuous developed), I know that a rewrite for such software means, well, rewriting all of that code!!
For the most part, the front-end part of software should simply allow the user to ask questions to the system and see responses. That’s it. Present the users with what they need to formulate questions, and then show them the answers in the best way possible (which could mean, fast, or illustrated with charts, or whatever it takes to give users the insight they need in that moment of time). In certain scenarios, it may be crytical to have most of the processing happening on the front-end, but those are the exception, not the rule.
Don’t get me wrong: I used to jump at every new shiny toy, too. There was a time when Microsoft put out a new toy called LightSwitch. That was probably the first time I looked at a new toy and thought “hmm, I don’t think that thing will last long”.
I didn’t quite recall when it went away, but found out on a quick search that its lifecycle started on Oct 30, 2011, and it’s mainstream support ended on Jan 1, 2017. The official death announcement states that “the landscape has changed significantly from the time when we first thought about LightSwitch”.
Such a shame. I had worked so hard on adding LightSwitch to my resume. I had even documented my proficiency with it on this short 45-second video!
Posted in lifestyle on December 7, 2020
Prior to March of 2020, I had not read many autobiographies. The ones I’ve read, or rather heard as e-books, were usually those of some of my favorite musicians, such as Dave Mustaine or Ozzy Osbourne, as a way to hear some stories about the context around the creation of some of my favorite albums by them.
I had some other autobiographies on my “books to read” list, but they kept sitting low in priority.
Then, I’ve listened to some content by Tony Robbins where he recommends reading autobiographies. His main point now seems obvious, but I hadn’t taken it into consideration before: autobiographies are books where people share their experiences of a lifetime.
The toughest and hardest lessons learned are likely to be there. The biggests achievements, and maybe even more important, the biggest failures. What were the things the person tried before becoming successful, and why didn’t they work? So much too learn by investing a small number of hours into it.
For the last 9 months, reading autobiographies have been my bedtime habit every single day, and I’ll keep it going.
There are sections of the book that I speed-read, and there are sections where I slow down, to fully absorb the words.
I like autobiographies because they are are, well, written by the people themselves, as opposed to biographies. So we get the person’s reasoning, the person’s memories (or how they remember it). In the case of Richard Branson’s, some of the content comes straight from his journals, which is great, because it’s not how he remembers it decades after the fact, but how he wrote it down immediately after it happened.
How do I decide what autobiographies to read? It varies. For example, back in 2015, I’ve listened to this Tim Ferriss’ interview with Arnold Schwarzenegger, and learned many things about Arnold that I didn’t know before (such as the fact that he became a millionaire before his acting career took off). I wrote down a note that I should read his autobiography at some point, which I finally did a couple of months ago.
In the case of Richard Branson, I had heard and read many times about the number of companies he was involved with, his journaling habit, etc.
In the case of Bruce Dickinson’s, besides being the singer of one of my all-time favorite bands (Iron Maiden), he’s also known for his entrepreneurial spirit (aviation, writing, radio and TV…), as well as beating a throat cancer (he’s a singer!!)
When I read an autobiography, I take note of people that the person refers to as inspiration on their life; if those people have autobiographies (or biographies), I add it to my list (Nelson Mandela is one that keeps coming up).
A few months ago, I took the Read to Lead challenge, and got some more ideas of books I should consider.
Of the four autobiographies I’ve read this year, the two I’ve enjoyed a lot are Arnold’s and Richard’s. I’m considering writing up separate blog posts to talk about why I’ve enjoyed those so much.
Posted in Software Development on December 4, 2020
Technical Communities may be the single most important factor I’ve had (and continue to have) in building my professional career. Yes, that’s how important I believe they are.
I first got involved with communities back in the late ’90s. I got a job where I got to work with FoxPro, which I knew nothing about other than that it looked similar to what I knew at the time: Clipper and dBase. That was also around the time the internet was becoming a thing in Brazil in the days of dial-up connections.
In order to get up and running on the required tech stack, I found online forums in Portuguese.
There were many resources in English for FoxPro, but not a lot in Portuguese. I knew some English at the time. Many Brazilian developers didn’t. So here’s what I did: I’d see people’s questions in the online forums, look up the answers in English on the web, and reply to the posts in Portuguese. Why did I get from doing that?
- I learned a lot of FoxPro in a short period of time
- I learned a lot of English
- I helped other fellow developers
A member of the community invited me for lunch one day and gave me a couple of FoxPro books. I asked the reason for the gift, and he said: “If I help 100 people, maybe one of them will give me a hand in a moment when I could really use some help”. I have taken that lesson to heart and applied it to my life deliberately ever since.
Because I was answering so many questions, people thought I was an expert.
When a new version of FoxPro was about to come out, members of the community reached out to the Microsoft office in Sao Paulo to ask if there was going to be an official launch event. The MS manager said they could do that, but there were no MS employees in Brazil who were well-versed in FoxPro. The community member said, “well, problem solved: I know a guy”. Next thing I know, I’m presenting two full-day, soldout launch events. Attendance included people flying from other states (if you don’t know how big Brazil is, please pick up a map…)!
So that’s how I broke into technical public speaking. Next, I got into writing articles, creating a magazine, organizing conferences in a few different States, organizing study groups, creating training videos…
So much came out of the common need to learn a new tech stack, followed by the simple action of helping others along the way, with however little I knew of anything.
The fact that I’ve been living in the US since 2002 is directly related to this involvement with technical communities.
See why I have a cute fox as part of my office decor? Never forget where you come from!
Also, when some youngsters make smartass comments about the mention of FoxPro on my business card, I may just say: “sit down, kid, let me tell you a story…” 😉
Posted in Uncategorized on December 3, 2020
I’m slowly building my book library. I enjoy books in all shapes and forms: paperback, e-book, audiobook, animated book summary, etc. My library reflects that.
Most of my technical books are e-books. I usually get their PDF version and put it in a “Books” notebook in Evernote; its search feature goes into those PDF files to find what I’m looking for. Quick access when I need that information.
My fiction books are either paperpack or e-book (usually in Kindle format).
The non-fiction, non-technical books are well spread out in different formats.
I’ve been reading more and more of my e-books on Kindle (on my iPad), using its features to highlight and comment; I often review my notes and highlights.
I’m getting more and more paperback books. Sometimes, I end up getting them after either listening to the audiobook or reading the e-book versions.
I have books in my library that I’ve purchased over a decade ago and haven’t read yet. I also have been acquiring more books that I don’t know when I’ll read them, but I do want to have them readily available. I don’t ever want to be in a situation where I tell myself “oh, gee, I really want to read something, but I have nothing to read”. Seriously, dude? Just go to your library and pick something up!
When I get book recommendations from friends or from reading other books, I look them up on Amazon and add them to my “books wishlist”, and I add a note to remind me where the recommendation came from.
To keep track of my backlog, books I want to read soon, books I’m currently reading, and books I’ve read, I still use the same process I’ve described in 2016.