Last year’s goals, this year’s goals

Died a quiet, dignified death. I didn’t write all the posts I wanted to write – not even half. I did polish my skills on many areas, but I didn’t really lean into pursuing my other goals. Can’t even remember them.

This year, I’ll try something different.

I will take (or have taken) about a pic a week – so far, so good. Still need to recoup pictures taken for me by others, so I can put them together. I want to have at least 40 pictures by the end of the year.

I will learn 12 songs on bass. I have yet to start the lessons. I hope I can manage, as I already almost-play the guitar and will be tutored. By the end of February I will have started the lessons.

I will fix or improve two things at home per month.

I will build a new house for my dogs. This time, I’ll take care to document the process properly and write a blog post, which I didn’t do last year.

I will start working out. I expect to have at least 6 months of working out during the year.

I will write at least once a month in this blog. Oh, look at the time. So far, so good… :^)

I will look back on this around November or December, see if anything is salvageable and what needs to be discarded.

The lives we project

When using any form of communication we choose what to highlight or not about ourselves.

Social media is heavily skewed towards people having lives full of peaks, be it really good (mostly) or really bad times that can be empathized with.

This is not new – this also happens whenever there’s any kind of meeting happening aftera long time without seeing certain groups of people… be it people you studied with, or distant relatives.

Unlike before, we’re positively bombarded with that kind of phenomena now – the price we pay for being ever more connected, ever better able to communicate with little regard for space and time, and with very little cost. This is a superstimulus.

This is likely to have amplified emotional impacts – if you’re happy with yourself, you’re bound to be happy for other’s successes. If you’re insecure, then not only will you have to see that one person whose life you thought was certainly not going to be more amazing than yours at that rare meeting… you’re going to be hit time and again with that kind of slap, and it’s not hard to see how we’d be left reeling.

Often the young can be most insecure, but also, at this point, the young are heavy users of social media… and while projecting better or more interesting lifes than they have (by choosing to highlight the good times), they can trigger an attempt to compensate from other people, creating a vicious cycle.

Perhaps turning off our social feeds and focusing on chats would be better? Or parhaps we should narrow down our social circles. In any case, a good way to break this is to stop skewing the way you present your life – in which case stopping to do it may be the least painful way to do it. Or trying to feel better about ourselves would make it more joyous to see someone else be absolutely killing it out there.

In any case, thinking about this and taking a grip on the situation may help you feel better and have improve your days, raising your quality of life.

Schedule

I usually hate schedules. I like to do things at the moments I feel like doing them.

This results in not being prompt – which often ends with things being forgotten, creating the need to write down and check lists of things to do, which is not a happy overhead. Some times, this results in things not getting done in the optimal timeframe.

Because I need to get some things done – specially my latest goal of bringing little joys to lots of people – I will now adopt a schedule.

I announced on Facebook some weeks ago I’ll be live coding a twitter bot in python. That’s going to be Wednesdays at 20:00 UTC-4. The rest of the schedule is not publicly available – or of public relevance, for that matter. So I’ll keep it to myself.

I’ll talk about the effects it actually has – but I predict I’ll be able to get side projects done at better than present rate.

Avoiding Arguments

Sometimes arguments are not crucial to your ends.

As a means to get people to understand you, correct your ideas, help you shape the lens through which you see the world, arguments are amazing. But sometimes you just need to get something done.

Sometimes, you’re committed to a particular opinion, and are certain enough of your correction that you don’t want to waste time arguing.

I put a high price on certainty – the more certain you are, the more you should be willing to bet, be it in money, comfort or the possibility of winding working twice as much if you’re wrong. If you’re really certain, sometimes you just have to put your money where your mouth is, and commit. Offer to carry the burden.

“I’ll have our back if something goes wrong”

“I’ll be responsible for this, if we make it this way”

“If we go through this path, it will be so much easier, I’m willing to take a bigger chunk of work”

At other times, this won’t work – mostly because someone else is equally invested in a way to do things which is incompatible with yours. Offer the other person the chance to take responsibility; put them on the spot. If they don’t step up – well, I sure hope you’re right, because things are most likely going down your way.

Retrospective: Clean Code – Boy Scouts, Writers, and Mythical Creatures

Yesterday I gave a talk on Clean Code, based in content by Uncle Bob and Geoffrey Gerriets.

I had some technical issues – so I had no access to my presenter notes, damping my performance somewhat… and after I’d taken such pains to learn from Geoffrey’s talk at PyCaribbean on Code Review, Revision and Technical Debt.

The subtitle for my talk was: “Clean Code, Boy Scouts, Writers, and Mythical Creatures”.

It starts out by talking about the features of clean code, as described by Uncle Bob and his interviewed few in his book Clean Code – and comparing each group of aspects to physical things we can look up to, like a Tesla Model X, a pleasant beach, or a bike… all of which share traits desirable in our code.

Then going on to the maxim of “leaving the campground better than we found it”, with a nice example of some code taken from the IOCCC and how much more legible it became merely by reindenting it,  putting in relief the long term impact of little incremental changes.

The latter half of the talk was derived from lessons learned at Geoffrey’s talk: the process of a professional writer, compared to the process of a professional coder, and how they’re alike; the lessons form the writers’ day to day can be applied to our coding: design, write, revise, rewrite, proofread; some attention was given to the way that reviews may be given. The mythical creatures section –  which represent the different stages at which a developer may find himself – are an aid to this latter part of the talk by pointing out patterns of behavior that identify what may be important or not for a certain developer at a certain point in their growth. The advice to treat things that may be beneath a developer’s level as trivia and/or minutiae, as well as the advice on focusing and choosing improvements to point out instead of “trouble” may be the best of this part of the talk.

After realizing I’d burnt through the presentation and posing some questions to the audience, we discussed some interesting points:

  • How can code comments make code cleaner or dirtier?
  • How can rewrites alter our coding behavior?
  • How can we find time to have a re-writing flow if the management doesn’t know any better?

The mileage may vary, of course, so several people pitched in and we didn’t draw any firm conclusions, only presented ideas to try, which was interesting.

In the end, we came out with some good ideas on how to keep code from stagnating… hopefully our future selves will have ever fewer messes to deal with :^)

Retrospective: Reasons why you should love emacs

Last Saturday I was at Dominican College O&M’s campus at La Romana, as one of the speakers for the “OpenSaturday” series of events.

This was a complete success: full-room, engaged audience, excellent speakers.

I had the opportunity to give my first talk on emacs.

It was delivered using org-tree-slide-mode for one part — which was really cool for the audience and for me, too.

On the second half of the presentation, I used org-mode and demonstrated custom “ToDo” states and timestamps, org-mode html export (C-c C-e h H), syntax highlighting, Immediate mode, and Emmet mode. Of course, I demonstrated having multiple buffers open in several windows at the same time.

It was all in a hurry, because it was a 10-minute talk; I couldn’t demonstrate the keyboard macros – which would’ve been nice, as I was going to demonstrate an extraction of html form item names and the generation of php code to get it from the $_REQUEST superglobal; this makes use of emac’s ability to use search and all functions as part of the macro, which I know for a fact several editors can’t do.

The show-stealer was Emmet mode – I actually thought people would’ve been more surprised at noticing that the presentation was within emacs, but they weren’t. As many are CS students who are learning HTML, seeing html>(head>title)+body>div#content>ul>li*5 grow into the corresponding tree blew them away.

I’m planning to enhance that presentation to fill a 45-minute slot featuring keyboard macros, elisp functions + keybindings, and select parts of my .emacs file. Perhaps the presentation will be accompanied by a “Reasons to love Vi” by one of my colleagues, which would be sweet.

In any case, a great Saturday – hopefully things will keep on being fun.

Notifications

I usually don’t have internet on my phone unless I’m home.

I started playing a recent freemium game aiming to be an e-sport.

The game has offline notifications.

This decimated my capacity to properly concentrate, little by little. I can now appreciate the reason many decry this as the era of distraction, of people looking down at their phones all the time. Not to misrepresent my stance: I’d noticed people walking around carelessly, too concentrated on their phones; it’d not really worried me, as once upon a time I did that, only carrying books around instead of a phone.

What I hadn’t noticed is the barrage of notifications, at seeming random times; the concatenation of stimuli in near-random intervals that create a tick-like habit of constantly checking the phone, fomenting a mental nag.

Any kind of worthwhile work – which is any work not to be automated just yet – takes time and focus; it probably needs introspection and analysis. Otherwise, it should be automated as much as possible until we find the need to analyze and meditate anew.

In any case, I’ve since uninstalled the application, which had no option to deactivate the offline notifications. I’ve also uninstalled a few other applications, which I liked to use from comfortable places at my home. And I took some days to cleanse.

Now that I’m not twitchy with check-my-phone-itis, I feel a lot better, and will keep posting – because now I can think through stuff, and remember better.

In case there’s any doubt, I’m saying that constant nagging severely impaired my focus, productivity and overall quality of life. You may be affected, too. Run an experiment on living without constant notifications running you, and see what happens. As for me… well, it seems not to be my style at all.

On Time Preference

Time preference is a concept used to describe how much or little is a person willing to postpone a gratifying outcome in exchange for an improved outcome.

If the time preference is “high”, it means a person is willing to trade more future benefit in exchange for immediate results. A common example is: “would you rather have 10 dollars now or 100 in a year?” People with a high enough time will have choose the smaller amount of money now, while people with a low enough time preference will choose the higher amount of money later.

In other words, a higher time preference means a lower capacity for delayed gratification. The amount and variety of situations where having a low enough time preference leads to improved results is overwhelming; from optimized spending of money to optimized allocation of time for diverse tasks, including following through with plans which require a lot of time working before the reward arrives.

Knowing about this – being able to name this phenomenon and think about it, allows us to identify it and plan for it. If you lead a team where some members have higher time preference, you may want to look at a way to introduce intermittent rewards which are not too far away from each other. This is, I believe, what “gamification” is all about.

If lower time preference teammates are present, make sure they understand the big picture, the end result of work. As this is usually easier to do than gamifying processes, lower time preference team members can be easier to work with. Unless, for some unfathomable reason, you can’t share the end goal. Then do gamify, because for all that people can delay gratification, if there’s no light at the end of the tunnel, having some small gratifying moments mixed into daily work can work as a motivator.

I have found that my time preference is too high for my taste, and that this is one of the reasons I have felt the need to build upon my discipline. In hindsight, I may have been able to notice this sooner if I’d had the right information – the signs were everywhere – which is why I’m writing on the topic out here.

I’ll try to set up some experiments, with two goals:

  • To deal with my too-high time preference (gamifying stuff, most likely)
  • To lower my time preference

I’ve not seen any papers on these kinds of experiments, but I sorely need to do this, so I’ll look it up. I specially don’t have a clue on what to do to lower my time preference, so I’ll need to think about the what and the why, to try and get a clue about the how. Any ideas, don’t hesitate to hit me up.

Thoughts About History

History is a subject that usually leaves me dissatisfied. It may be that I have the wrong approach in the way I think about it, but it has consistently left me feeling uncertain over the years.

We learn history from many sources; oral stories told by our family, which usually cover anecdotes and interesting tidbits; written texts by historians out there; the news of the day and from other times; from textbooks.

Now, oral stories are notoriously unreliable. I know, because I’ve seen the deformation of anecdotes firsthand during my lifetime – which is still on the short end of the scale. Stories about grandparents and further back in time… I can only expect they retain no more than a passing resemblance to what was going on.

The books by historians are in some ways similar to the news: they go through a publisher’s hands, they are subject to all kinds of pressures and interests. The winners write history.

Textbooks, at least in my country, are increasingly regulated. In public education they are literally handpicked. This kind of history has the strongest, most viable path to being censored/edited by an interested party, because there’s a single bottleneck in an office in a government building.

How can we ever be certain of what happened? All the time I’m uncovering facts that contradict my earlier knowledge in ways so blatant that it allows me to see that it’s not a model I’ve built: it’s a model I’ve been handed, and has been socially validated, and may or may not have anything to do with reality or what someone wants me to think about myself and my environment.

Many aspects of history are subtly manipulated in ways I’ve learned to identify over time, and which make me react intensely.

Attributing intent to people is one of those; defending actions in hindsight is another. It makes me want to see proof – that a certain intent was there, that a certain datum was there, that people demonstrated thinking with a certain pattern or using certain tools. But when I think about what kind of proof that would require, it is then that I feel helpless. See, because of my (hopefully healthy) dose of skepticism, I understand that I shouldn’t treat much of history as more than fables and fiction.

On the other hand, the effects of history are real. The effects of perceived history are just as real, although maybe not as intense. I think, then, that there is use for understanding what the world thinks of its own history, because that allows us to have a working model, a framework from which to work and communicate.

But we should be careful of the way we extrapolate, the way we apply the model to our current situations. Historic data we use as input for the way we think must be tested and considered “possibly wrong”, and the truthfulness we assign to it part of the model we’re working with.

So, I’m skeptic and mighty and have an unbreakable vow not to trust history? Not quite. I’m gullible with historical information – we all are, as humans are attuned to stories in their patterns of thinking and remembering. But I do take care when I have the opportunity to make a decision based on the past. Even for events in which I’ve been involved I try to get other versions, other sides to the story, to have better probability of understanding what truly was going on. On more than one occasion I’ve been surprised.

I acknowledge that this position is not very elegant; it imposes a huge burden upon the people looking back and looking forward, trying to make good choices. It seems questions the validity of basically everything we think we know about the past, although it actually only questions the accuracy of most of what we assume we know from the data we see… yes, not much better.

Nonetheless, I’d like to be proven wrong time and again. The way that’d work is by having a decision being taken on account of a model based in the understanding of what happened a some time ago, the further ago the better because accuracy dies over time. And have the decision work for reasons consistent with the model. I’ve seen this on many decisions taken from personal experience in management, software development, teaching, which tells me that many people really understand what they’re about in their daily work. It may be hard to set up a large scale experiment, but in the absence of data to validate our beliefs, we should acknowledge that lack instead of just defaulting to the most comfortable side

Low Energy

Perhaps like Bilbo missing his hat – not for the last time – I wonder now whether it was a good idea to commit to a full year of daily writing.

Although most of the content comes from personal experience, meaning I mostly consult sources to double check as opposed to for original research, it’s a heavy drain on the time and energy I have available.

This poses a serious threat to my desire of sustained output (in writing) and increased output (in code), and I need to deal with it.

Playing around with my sleep schedule may help, as could also playing around with my eating habits. The former is a bit hard to achieve due to a fixed daily work schedule and traffic.

In any case, I will run some experiments – I’ll try having a bigger breakfast, for instance, and see how it goes.

Today’s text was supposed to deal with Java enums, but my energy was too low to do it. I increased my at-home work-to-leisure ratio, which accounts for this drastic drop, although I’ve been tolerating a mild beating in the last few days. Tomorrow will be a new day, I suppose, and I hope to cover the intended topic.

Thanks for reading.