The art of learning

In my review this week I read that Old Geek post, which has a lot of comments under its feet. This is quite interesting. But I feel there is a confusion here.

From my experience, age is often related to stagnation. The more you accumulate, the heavier you are. It’s heart-breaking to abandon years of investment in one type of knowledge. Therefore, generally speaking, older people are less flexible and less likely to surf on the waves of the new technologies.

But I can tell you as a fact that this is just a natural human law, that, like many others, can be bended. Bended by discipline, the same way we overcome our animal instincts. There are many old practitioners of our skill that became master in the art of change. The sacred art of eternal learning. The wisdom of daily questioning of previously acquired knowledge.

Obsolescence is not a question of age, but just a question of personality, environment and priorities. I know a handful of such oldgeeks that didn’t yet reach their 30’s. And personally (in my 49), I won’t stop surfing any time soon. hahaha.


Get out

If you only ever have lived in only one country, you really should consider fixing it. Going live in another country for some years or more is just such a way towards a richer life. It’s usually easy to recognize people that are multi-rooted, as they often have an increased depth in their personal philosophy.

We are lucky, in our craft, to have various opportunities to travel and work remotely, or for foreign companies. Many of you are already aware of those benefits. But to the others I can just say this: use this opportunity! Get out!


To be remote or not to be remote

Earlier this week I read an article on linkedin, deliberately anti-remote, and a bit later on another one very pro-remote on freecodecamp. I’m tempted to think one is the response to the other. But maybe not.

The fact is that switching to a remote organization is a tricky move. It feels like the move from monolith to micro-services, honestly. People that make decisions about it rarely envision the extent of the change. And those change look similar in nature. Team architecture and software design are not that foreign. More autonomy for services or people, self-contained activity, requirement for clear communication channels and protocols, extensive architecture for monitoring, reporting or just plain visibility, more debugging tools and processes, and much more.

The same way one will have to think about all those when switching to microservices, the one that thinks about making his team remote will also have to consider the exact same parameters. But that is all on the principles. About the implementation, remote teams really need a strong chat culture, an easy and transparent logging policy for all communication channels, various tooling similar to chatops tools for assisting communication activity. Remote organization also need to have all their processes online, and not need much (if at all) any synchronous meetings.

From my perspective there are various very beneficial side-effects to make a team remote. There is more traceability as everything is online and not in corridors anymore. In some cases that I experienced, it also leads to a less arbitrary perception on team members, because they can be judged more on results (if you have measure tools prepared accordingly) than on attitude and mouth-skills (did you noticed that irl meetings are sometimes just a mouth-o-cracy?). But it’s accurate to say that on a short term, it is more time consuming. The real benefit rises on the long run.

What I didn’t find in any articles on the matter, is the life-cycle dimension. A software project has a life expectancy, from a business point of view. It’s the same game as with the technical debt. It is acceptable business-wise to live at credit for a time, until a certain milestone. A lot of projects are just extended MVPs intended to convince big money that they could deserve some attention. For such project, you want very fast paced environment. It’s easier to coerce your slaves employees to go above and beyond the expectations, when in a physical environment. This is a disposable context, and you can skip team debt as much as technical debt. And you really need physicality for that purpose.

So, I would say, if a company is not making the move towards remote organization, maybe there are very good reasons for that. But I will be very cautious to understand what are the real reasons. They may stink. And if they are remote, but they just came to it recently, I would be careful about the tooling they prepared for it.


Working out

During the past year I have been doing some working out. No no there is no fitbit involved. Are you crazy? My physical activity includes a strict refusal of pointless efforts. I deliberately choose to use the bike rather than the bus, it has the purpose of transportation,. But just getting sweaty for the sake of it, well, that’s not my thing. I’m talking about a git-commit working out. I decided to have one commit a day on github (minimum) and instead of the fitbit or whatever phone app, I used the github timeline as a monitor.

So that’s one year now and I got my github timeline all green. In itself it doesn’t achieve anything except for myself. I mean, it’s quite easy to fill up a timeline with fake entries. But by getting this challenge of one commit a day, it led to some valuable outcomes. I got some more work projects validated to be published as open source. Whenever I was not feeling inspired for code commit, I was chasing typoes in my Readme’s, or dependencies upgrades in my gems.

Overall, it had quite a good impact on my coding publication, on the updating of my blog (well, that blpg mostly gather the rants I do here), and various other small details. Well, I’m not a very famous open source coder, just an average joe. But a persistent one. It’s very easy to just upload shit on github and forget about it. Having this regular commitment made me come back on some old things, keep them current somehow.

Getting some routine in place that includes open source activity has various benefits, even when you don’t have an audience. You should try it.


The reign of the virtual

Yesterday morning, the hunt for Pokemons opened here in Taiwan. I have been watching the crazy adoption of this new trend in the past few weeks. And knowing the asian culture, I suspect Japan and Taiwan are going to make the craziness in the rest of the world just like mild interest.

There are few occasions to notice a huge shift in civilization as clearly as this one. For sure we have noticed that our fellow human neighbors spend more and more time the nose on their mobile devices. But this pokemon enthusiasm bring it to a whole new level. It proves the virtual now begins to overrule the real in term of social conventions. Well, not for everybody, not everywhere, but in a proportion that is relevant enough to be noticeable.

The real world always have been ruling the social activities. Laws and conventions were deciding who is in and who is out, what to do and how to do it right. This is going to change. My main concern is that the future of the social activity is in the hands of private companies. Those companies, legitimately driven by profit, consider the user as a resource, that requires gathering and retention strategies. Like herds. The whole privacy fight is not going to stand too long as cattle (oops I meant user) data is the 21st century gold, and economy (and crazy need for constant growth) depends on it.

And I’m not really happy from this deduction. We are getting captured with advanced weapons generated by behavioral economics and other clever social sciences. They are manipulation tools. Just tools. Sure you can do good with them, but such powerful tools of mass manipulation are not going to stay neutral in the hands of those who want to squeeze our essence (feels like a matrix metaphor, yeah I’m aware of it).

Our mobile devices become interfaces now. Direct access to our behaviors. They already have been great tracking and data collection devices for years. Now they begin to be manipulative with much more effectiveness. Sure, the pokemon hunting doesn’t seem to harm much, but I see it as only a beginning, a trigger. It just makes sense. Everybody can see the success it has. Certainly there are already hundreds of projects that are seeing the light right now at this instant just under the visibility of that opportunity. And many of those will be clever, engaging, and impacting on the real world, by the way of mobile devices, the reverse-remote-control for getting a grip on every human being.

Because I’m an old guy, I’m of course very worried about this future. I have memories of a past where it was so much different. But the young generations, seeing this as the norm, will just fall for it, without question. Don’t get me wrong, I love good tools that can make our lives easier. But they are tools. The intent of their usage matters. Augmented reality just seems to be going to be used with very nefarious intents.

hrum. Well yeah, this is a rant, that’s nothing more. Not an essay, not a study. Just my guts getting spread over the table. Take it easy :)


Innovation and Consensus

Last week I got to check out 2 javascript frontend frameworks, Choo (the cute framwework) and Cycle.js (the streams power). It feels that nowadays React is eating the frontend world, but there is actually a lot of non-marginal alternatives. It made me think that there is something tricky with the process of innovation. It is born from disagreement. It feeds with discontent.

Those frameworks are born from the refusal to consider React as a consensus, hence it generates an alternative path, exploring different paradigms. In my opinion, and from an global point of view, it’s a sign of vivacity of an ecosystem. Diversity of species guarantees a larger span of choice for the natural selection and a faster evolution.

But consensus and normative approaches have so many virtues. Damn, this is tricky. Well, here is the catch. Unicity in the software ecosystem creates stability, which in turn creates comfort for the actors involved in the industry. Habits get stronger, mobility is easier, interoperability leads to bigger systems with long life-cycles. This is good.

On another hand diversity creates instability, challenges the developers and makes it harder to find common grounds. It favors exploration and smaller systems with shorter life-cycles. In a diverse ecosystem, paradigms and new ideas are born and die quickly. And I think it’s a much more rich ecosystem.

For some reason this duality reminds me of the cathedral and the bazaar. It’s totally unrelated, actually, but maybe there is some kind of interesting parallel in this metaphor collision. But beyond that, there is a real antagonism for developers, and an opposing interest between the development workforce and the software as a living species.

And I have the feeling that on the long run, diversity and innovation win. So you better get used to the discomfort it brings. Train yourself to jump from one framework to another. Don’t let yourself getting lazy by going to the comfortable consensus systematically. This ability to cope with change is your best hope for staying current. Because the change if the way of the evolution.


Open code, a chance for improvement

Since I’m writing code I try to publish as much as I can as open source components. But I had occasion to work in situations where it was not possible. And I noticed some serious differences in the result.

When you publish some code on, say, Github, you can just throw it as is and be done with it. Then you merely use github as a repository provider and don’t care much about anything else. But when you begin to spend some time doing it, you notice that external contributor can bring great fixes, help detect bugs, and generally speaking make your code more valuable in itself.

But this is a two-ways road. To invite people to collaborate you need to address a certain amount of little details. Writing a decently clear README is a demonstration of politeness for any passing guest. It’s just more inviting. Making sure you have a complete enough test suite guarantees you can be sure external contributions won’t mess up existing code (if writing tests in itself was not motivating enough). Refactoring your code by following codeclimate advises will break huge methods in small pieces, making things easier to be improved. Enforcing some kind of style guide will avoid people to get confused by a non-standard code-art. (that person could be you in one year).

All those aspects, when you work at a company as the only coder on one piece of code, you don’t have that much incentive to enforce them. And I know about it because I have seen a huge lot of legacy code that was written that way. With lame tests that only purpose was to enforce code coverage without really testing much, weird code style, epic methods, no instructions. If it’s just you and a couple of friends that you see every day, it’s fine, you can deal with it. For a time.

The fact is that exposing your code brings an incentive to work on the (apparently) non-essential aspects of your code. But those aspects really bring a huge improvement on the long term. Which leads me to consider that opening source code is a way that can lead to make it better.

An usually, I noticed that the bosses don’t care if it’s open or not, as far as there is no trade secrets revealed. But well we write so much code that if business-neutral for many things. At the end of the day, it’s only the matter of asking the boss if you can free this or that code, and then it’s on its way. Even more if the code is published under an organization on github, there is even more incentive to make it clean, and it will also help possible candidates to understand what kind of stack you are dealing with, and what kind of principle you try to enforce. Even if it’s actually only enforced in your open source code and the hidden code is messy. Haha.

So, I ask you now, what in your current codebase could you extract as an open source gem? or node package?


Scarcity and abundance

As you may remember, this newsletter is using the generous free plan from Mailchimp. But it has limits. Only 2000 emails ca subscribe to that newsletter. It’s already a great gift, and I’m pretty sure it’s a good business calculation for them. Now GreenRuby reaches 1915 subscriptions. Which means we need to address that so pervasive concept of scarcity.

I can remember when it shifted. With the first web pages in 96. When tables were introduced in HTML, then it became less obvious how to recreate something you saw, and having the possibility to browse the source of a page gives you the exact recipe on how it’s made. So you can copy from it. I think open source would not have had such a large adoption if there was not that idea with the HTML, that you need to have access to the source to learn, reproduce and improve.

Also, it made even more obvious one of the key aspects of the internet age: by dematerializing market goods (ie. with introduction of softwares), they became reproducible at a cost that is marginal enough to be forgotten (yeah, bandwidth and storage are not free, for sure). When you give it to someone, you still have it. Not like that glass of beer. It placed us in an awkward paradigm, the world of abundance.

There have been so many efforts to artificially bend the internet to a world of scarcity again. See, without scarcity, there is no economy as we know it. There is another kind of economy, though, but the big guys that lead the old one are not ready to let it go. For the old economy to work, things have to be scarce. Otherwise there is no competition to obtain commodities, no motivation to work like crazy to push forward the progress of production. In abundance economy, also known as gift economy, people get less likely to be controlled and they don’t want to work hard, they want pleasure and satisfaction.

Honestly, I see the efforts made to control a resource that is naturally abundant, by using the tools of law, copyright laws, patents, and all that kind. I can’t help thinking about the abundance of material goods. Technological progress, after war, promised some kind of abundant society. Work would be automated so we would have less and less to work and just enjoy the benefit of the global growth of humanity in taming the material world. Well, we are far from it, and I’m instinctively convinced that it’s by design. And it makes me sad. People still need jobs, society won’t provide for them. There is nothing like common goods in that humanity. And now human compete with machine for jobs, whereas they should have been allies. Sad, really.

But this led me quite far away from my initial topic: we got limited seats for this newsletter, so we’ll do it 2 ways. First, I will send a mail to all people that never click on any links, ask them if they want to stay there. Then after a time I will unsubscribe the ones that stay silent and inactive. That could skim some 300 people maybe. At the rate it goes, that can buy us some 6 months, at the current rate of newcomers each week.

Then, the subscription will be closed, unless I setup another publication system, self-hosted. We don’t really need a fully-blown solution like mailchimp to be totally honest. They do bit efforts to have mail servers that are compliant with various anti-spam techniques, and this is a great thing. But I bet I should be able to match it on a self-hosted server that would cost me less than $10 a month. It would have no limit, at least. Maybe at that time I will open some kind of donation program. Actually I already pay for the hosting but I use my servers for other usages so it’s only a small fraction. And honestly I could even host GreenRuby web pages on github pages for free. But I would not have access to the logs for analytics and would need to setup some piwik because I can’t cope with the idea of using GA. Or, I just don’t care about traffic metrics. That’s tempting. But I got lost in my train of thoughts here.

Bottom line is: we won’t get trapped by scarcity. Muahahaha. But feel free to send me feedbacks on this topic if you have any thoughts.


Aprils lame fools

I think there is nothing I hate more than pranks. It’s just another way to bully someone else. Even innocent pranks are having victims. Single out the one that fall for it to make laugh the ones that don’t. Well, I may very well be a boring fellow. Or it’s just that, working so much with information management, any perversion of it seems off.

And then on april fools day, so much goes wrong. The net becomes unreliable. So lame. But I’m not sure if it’s the reason there are not that many news articles this week.


kik the fuss

There have been some noise last week about npm, coming from that article. It merely revealed that various open source organization are privately held by some individuals and they can either be pressured or take weird decisions. Honestly I consider this incident anecdotal. It’s not the first time such thing happens. One guy just happened to be very vocal and pissed off about it.

And it carried various threads of discussion on Twitter and elsewhere, in a huge controversy. There were many points raised. NPM has thousands and thousands of packages, and many of them are just a few lines of utility library, so it was a good occasion for some to point out that you should reduce your number of dependencies. Others pointed out that namespacing could help prevent such situation, like it’s done in docker or in go (having username/somelib instead of somelib) following the github convention.

All in all, it appears that open source is gaining its traction from being free of any legal duty. Or at least there is no formal contracting, no by-laws, on committees or advisors. People do how they feel in the limits of some very simple basic licensing rules. Some organization provide a more structured legal asset but they usually are on the side and purposed for channeling money management, not necessarily patents and intellectual property.

My opinion is that this kind of friction between businesses and open source is going to happen more and more. But I wonder how it’s going to turn out.