No, it's not about mine, although this blog has had its ups and down. What I want to talk about is the list of blogs I am following and how it (d)evolved.

When I was an enthusiastic beginner in software development I was hunting for interesting blogs that would give me valuable insights into the minds of good developers, the quirks of frameworks, the hidden tools and processes that would make my life better. I was adding blog after blog to my RSS list. Later on, I kind of stopped. I had things to do, work to be done and unfortunately went through some jobs that were not conducive to learning. Perhaps seeing myself as an expert also hindered enthusiasm in learning (note to self: don't do that!). The obsolescence of the tool I was using to read RSS with and the death of Google Reader also did not help. So recently I just went back to that list of blogs and started organizing it with a new tool. I use Feedly now, in case you were wondering.

Today I had an epiphany. I have over 150 blogs that I am "following", 100 of which are software related, yet only very few of them are actually spewing content anymore. In my three year hiatus from blog reading most of the technical blogs just ... stopped. Some of them just plain vanished, complete with content that I had linked to in my own articles. At that time I was considering blogs as permanent as you can get. I mean people just write stuff for the heck of it, so others can read and learn. There would be no reason for any of this to disappear - there are still pages from 1990 active on the Internet, for crying out loud! So what happened?

One theory is that blogs were created as representations of a person's evolution. For example you are a good WPF programmer and you create something like Dr. WPF's blog. When you stop doing WPF (because Microsoft dropped the ball with it!) you stop writing. Perhaps the author still blogs in other places, other blogs that are thematic, I don't know. Another theory is that people just blog at a certain stage in their life; it's like a quarter-life crisis. When they mature, people stop blogging (which says something...). Maybe the social media explosion pushed people away from personalized platforms and they do all their publishing on Twitter, Facebook, LinkedIn, Medium and so on. As the IT industry moves at an ever increasing pace, the blogs may turn into antiquated relics that are obsolete by the time several posts have been published.

I feel sad either way. When I started blogging, people would come to me for help. After all I started the site years before StackOverflow arrived on the scene. I would write about programming, books, anime, life, personal ideas, jokes, space, science, rants, whatever. It happened several times that I was looking for a solution to a problem and found myself explaining it in an older post. People still praise some posts because they refer technology that is maybe a decade old. Others for getting the full picture on how I got to the end result. So for all these vanishing blogs, I feel a sense of loss for all the knowledge that was lost, for all the voices that turned silent.

I know that as a blog dies ten others appear, but there is no sense of origin anymore, no chronological timeline of the evolution of the person writing. I can even go down the "they are not making them like they used to" road. For me a blog would have functioned as a sort of resumé of someones's work. If I liked an article, I would look at others, maybe subscribe. This way I would be connected not with a concept, but with a person: as they grew, I grew. And SEO be damned, I don't care people don't discover my blog anymore because Google can't make up its mind on what I am actually writing about. When people do come, they see me, not just disparate out of context solutions to their 5 minute problems.

So I wrote this article to express my sorrow. I guess that I miss my friends, even if they never knew me.

In September last year I was leaving my job and starting a sabbatical year, with many plans for what seemed then like a lot of time in which to do everything. I was severely underestimating my ability to waste time. Now the year is almost over and I need to start thinking about the technologies in my field of choice that I need to catch up with; and, boy, there is a lot of them! I leave the IT industry alone for one year and kaboom! it blows up like an angry volcano. To be honest, not all of these things that are new for me are just one year old, some I was just ignoring as I didn't need them for my various jobs. Learn from this, as especially in the software business it gets harder and harder to keep up to date and easier and easier to live in a bubble of your own or your employer's creation.

This post is about a list of programming topics that I would like to learn or at least learn to recognize. It's work in progress and probably I will update it for a time. While on my break I created a folder of software development stuff that I would "leave for later". As you can imagine, it got quite large. Today I am opening it for the first time. Be afraid. Be very afraid. I also have a lot of people, either friends or just casual blog or Twitter followings, that constantly let me know of what they are working on. As such, the list will not be very structured, but will be large. Let's begin.

A simple list would look like this. Let me set the list style to ordered list so you can count them:
  1. Typescript 2
  2. ReactJS
  3. JSX
  4. SignalR
  5. Javascript ES6
  6. Xamarin
  7. PhoneGap
  8. Ionic
  9. NodeJS
  10. .NET Core
  11. ASP.Net MVC
  12. R
  13. Python
  14. Unity
  15. Tensorflow
  16. DMTK/CNTK
  17. Visual Studio Code
  18. Jetbrains Project Rider
  19. npm
  20. Bower
  21. Docker
  22. Webpack
  23. Kubernetes
  24. Deep Learning
  25. Statistics
  26. Data mining
  27. Cloud computing
  28. LESS
  29. SASS
  30. CSSX
  31. Responsive design
  32. Multiplatform mobile apps
  33. Blockchains
  34. Parallel programming
  35. Entity Framework
  36. HTML5
  37. AngularJS 2
  38. Cryptography
  39. OpenCV
  40. ZeroNet
  41. Riffle
  42. Bots
  43. Slack
  44. OAuth
  45. OData
  46. DNS
  47. Bittorrent
  48. Roslyn
  49. Universal Windows Platform / Windows 10 development
  50. Katana
  51. Shadow DOM
  52. Serverless architecture
  53. D3 and D4 (d3-like in ReactJs)
  54. KnockoutJs
  55. Caliburn Micro
  56. Fluent Validation
  57. Electron

Yup, there are more than 50 general concepts, major frameworks, programming languages, tools and what not, some of them already researched but maybe not completely. That is not including various miscellaneous small frameworks, pieces of code, projects I want to study or things I want to do. I also need to prioritize them so that I can have at least the semblance of a study plan. Being July 21st, I have about one full month in which to cover the basic minimum. Clearly almost two subjects a day every day is too ambitious a task. Note to self: ignore that little shrieky voice in your head that says it's not!

Being a .NET developer by trade I imagine my next job will be in that area. Also, while I hate this state of affairs, notice there is nothing related to WPF up there. The blogs about the technology that I was reading a few years ago have all dried up, with many of those folks moving to the bloody web. So, I have to start with:

  1. ASP.Net MVC Core - the Model View Controller way of making .NET web applications, I've worked with it, but I am not an expert, as I need to become. Some quickly googled material:
  2. .NET Core - the new version of .NET, redesigned to be cross platform. There is no point of learning .NET Core as standalone: it will be used all over this plan
  3. Entity Framework Core - honestly, I've moved away from ORMs, but clearly Microsoft is moving full steam ahead on using EF everywhere, so I need to learn it well. As resources, everything written or recommended by Julie Lerman should be good, but a quick google later:
  4. OData - an OASIS standard that defines a set of best practices for building and consuming RESTful APIs. When Microsoft adopts an open standard, you pretty much know it will enter the common use vocabulary as a word used more often than "mother". Some resources:
  5. OAuth - An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. It is increasingly used as "the" authentication method, mostly because it allows for third party integration with Facebook, Twitter, Google and other online identity providers. Some resources:
  6. Typescript 2 - a strict superset of JavaScript from Microsoft, it adds optional static typing and class-based object-oriented programming to the language. Javascript is great, but you can use it in any way you want. There is no way to take advantage of so many cool features of modern IDEs like Visual Studio + ReSharper without some sort of structure. I hope Typescript provides that for me. Resources:
  7. NodeJS - just when I started liking Javascript as a programming language, here comes NodeJs and brings is everywhere! And that made me like it less. Does that make sense? Anyway, with Microsoft tools needing NodeJs for various reasons, I need to look into it. Resources:
  8. Javascript ES6 - the explosion of Javascript put a lot of pressure on the language itself. ECMAScript6 is the newest iteration, adding support for a lot of features that we take for granted in more advanced languages, like classes, block variable scope, lambdas, multiline literals, better regular expressions, modules, etc. I intend to rewrite my browser extension in ES6 Javascript for version 3, among other things. Here are some resources:
  9. npm - npm is a package installer for Javascript. Everybody likes to use it so much that I believe it will soon become an antipattern. Functions like extracting the left side of a string, for example, are considered "packages".
  10. Bower - Bower is a package manager for the web, an attempt to maintain control over a complex ecosystem of web frameworks and libraries and various assets.
  11. Docker - The world’s leading software containerization platform - I don't even know what that means right now - Docker is a tool that I hear more and more about. In August I will even attend an ASP.Net Core + Docker presentation by a Microsoft guy.
  12. Parallel programming - I have built programs that take advantage of parallel programming, but never in a systematic way. I usually write stuff as a single thread, switching to multithreaded work to solve particular problems or to optimize run time. I believe that I need to write everything with parallelism in mind, so I need to train myself in that regard.
  13. Universal Windows Platform - frankly, I don't even know what it means. I am guessing something that brings application development closer to the mobile device/store system, which so far I don't enjoy much, but hey, I need to find out at least what the hell this is all about. The purpose of this software platform is to help develop Metro-style apps that run on both Windows 10 and Windows 10 Mobile without the need to be re-written for each. Resources:
  14. HTML5 - HTML5 is more than a simple rebuttal of the XHTML concept and the adding of a few extra tags and attributes. It is a new way of looking at web pages. While I've used HTML5 features already, I feel like I need to understand the entire concept as a whole.
  15. Responsive design - the bane of my existence was web development. Now I have to do it so it works on any shape, size or DPI screen. It has gone beyond baneful; yet every recruiter seems to have learned the expression "responsive design" by heart and my answer to that needs to be more evolved than a simple "fuck you, too!"
  16. LESS and SASS - CSS is all nice and functional, but it, just like HTML and Javascript, lacks structure. I hope that these compilable-to-CSS frameworks will help me understand a complex stylesheet like I do a complex piece of code.
  17. AngularJS 2 - I hear that Angular 2 is confusing users of Angular 1! which is funny, because I used Angular just for a few weeks without caring too much about it. I've read a book, but I forgot everything about it. Probably it is for the best as I will be learning the framework starting directly with version 2.

So there you have it: less than 20 items, almost two days each. Still bloody tight, but I don't really need to explore things in depth, just to know what they are and how to use them. The in-depth learning needs to come after that, with weeks if not months dedicated to each.

What about the rest of 35 items? Well, the list is still important as a reference. I intend to go through each, however some of the concepts there are there just because I am interested in them, like DNS, Riffle, Bitcoin and Bittorrent, not because they would be useful at my job or even my current side projects. Data mining and artificial intelligence is a fucking tsunami, but I can't become an expert in something like this without first becoming a beginner, and that takes time - in which the bubble might burst, heh heh. Mobile devices are all nice and cool, but the current trend is for tablets to remain a whim, while people divide their experience between laptops and big screen smartphones. The web takes over everything and I dread that the future is less about native apps and more about web sites. What are native mobile apps for? Speed and access to stuff a browser doesn't usually have access to. Two years and a new API later and a web page does that better. APIs move faster nowadays and if they don't, there are browser extensions that can inject anything and work with a locally installed app that provides just the basic functionality.

What do you think of my list? What needs to be added? What needs to be removed? Often learning goes far smoother when you have partners. Anyone interested in going through some subjects and then discuss it over a laptop and a beer?

Wish me luck!

and has 0 comments
It became obvious to me that one of the most popular and common ways of "winning" consists in changing the definition of what that means. See capitalism for example, boasting that a group will benefit if each of its members attempts to improve their lives. The "winners" will pull everything up and will expand while the "losers" will just fade gently into the background. Allegedly, the greatest demonstration of this is the victory of capitalism over socialism and communism. But it's all a fallacy, as their reasoning can be translated as follows: "We measure success in capital, others don't. In the end, we have more capital, so we win". It's not who is better, but how you ultimately define "better". I find it disturbing that an economic model that attempts to optimize happiness has not emerged at any point in history.

This not only happens at a macro level between countries or economic systems, it happens between people as well. "Successful people" proudly announce their recipe for success to people who wouldn't really consider that a good thing. See people that cheat and corrupt and kill to "get ahead". One might covet their resources or power status, but how many of the "losers" would actually condone their behavior, take the same risks or appreciate the situation you get when employing such tactics? Same applies to heroes. We want to save the world, but we are more afraid of trying and failing. Heroes go past it, maybe not because of courage, but because that is their set goal.

Yet competition is the engine of evolution. Doesn't that prove competition is the solution? I say not. Look at the successful animals in nature: they are perfect for their niche. Crocodiles spend huge amounts of time motionless just beneath the surface of the water only to jump and snatch their prey when coming to the watering hole; cheetahs are faster than anything with legs, catching their prey in a matter of minutes; sharks roam the water, peerless in their domain. And yet all of these creatures are far from perfect. They age, they get sick, they don't build anything lasting more than their own lives, their only legacy are offspring just as flawed as them. And guess what? All of these creatures are getting less and less because of humans: weak, pathetic, inoffensive hairless monkeys who can achieve more than any others just by banding together and sharing their resources and their results. If competition would be the ultimate solution, then there will be a creature strong, tough, intelligent and immortal. Yet there isn't one.

I submit that competition is great only if two elements are fulfilled: a) you have the ability to evolve, to improve. b) there is someone better or at least equal to compete against. If b is not available, complacency will turn competitivity towards the weak. Instead of getting better, you will stop others getting to where you are. It's a simple application of available force. If point a is missing, you will be the one that a stronger competitor will stifle. And yet, what I am describing is not competition, but having a purpose. Behind the appearance of competition, when you try to catch up with someone better, you actually set a goal for yourself, one that is clearly defined. It is irrelevant if the target is a person or if they even consider themselves in competition with you. One might just as well choose an arbitrary goal and improve themselves by reaching it.

Why am I writing about this? For several reasons.
One is to simply make evident that if you envy someone for their success it is either because you can't get possibly there or because you won't - you have determined that to take that path would take away something that you value more. For example comfort. People envy the position of others less so, but they basically are not prepared to make the effort required to get there. Yet laziness doesn't disappear. Why? Because one reaches a goal after many attempts and failures, not in a straight line. Only once someone got there, it is much easier to follow their path sans the potholes, the setbacks and the mistakes.
Another is to show that the purpose defines the path, not the other way around. Setting a goal defines both success and failure and that is why many people with responsibility prefer to not set one. However, without the goal, people just stagnate, go around in circles. Look at space exploration: each successive US administration comes with another idea, abandoning what their predecessors did, going nowhere. When did they do anything that mattered? When they had a clear goal of doing better than the Russians. If someone were to go and colonize Titan and start living there, they wouldn't find it so expensive and pointless to go to the Moon, asteroids and Mars. Without someone to do that, though, they don't do anything.

Laziness is in our nature. Evolution is lazy. Competition is ultimately lazy. You can get comfortable in your lead, while occasionally shooting other racers in the foot when they get close enough. The opposite of laziness is not work, but direction. Once you set a goal, you know how far you go and how fast you get there. A group benefits more when all its members work towards a common goal. Funny enough, in such group scenarios competition between members is often cancerous. I find it also amusing that there is always someone better or at least equal to compete against: yourself.

When I was young I occasionally wrote short stories that were moderately well received by my friends, but I have never attempted to do anything "real"; I would just get some weird idea in my head and it would materialize after an afternoon of furious writing. There was nothing to it in terms of technique or studying the classics or anything, just telling a story. In fact, trying to rewrite it afterwards would ruin it, betraying the underlying lack of craft. After a while, I just stopped, but I held tight to the belief that some day I might actually do this well, like write a novel. Not for money and fame, but because I would like to "be that guy".

Recently I have revisited that belief and decided to take it further: actually plan the novel, write it, see what I am truly capable of. So far, it has not been going well, but I've learned a lot. Hopefully I will retain the level of interest required to carry it through. However, in this post I want to explain some of the things that I have become to understand about writing stories and one in particular: the shortcuts.

Many a time the story needs to go somewhere, but in real life terms getting there would be boring or be prohibitive in terms of time. In that case a shortcut is taken, either by some gimmick, by montage or, as is more often the case, through camera work. How many times didn't you watch an actor looking intensely for a threat, their face or person taking over the whole screen, only to be caught off guard by someone or something that suddenly comes out from outside the camera angle? And if you think just a little bit about it, it would have been impossible to be blindsided by someone coming from there because, even if we don't see them, the person the camera is pointed at would! In a typically evolutionary way, someone tried it, it worked, it caught on and now finding it irritating is seen as nitpicking. "Well they needed to make it happen, it doesn't have to make sense".

That thing, right there, when common sense is sacrificed for expediency, is killing - a tiny bit - the story. And while it works on camera, it is much more complicated in writing, because what you don't realize while going through the motions of empathizing with a character and joining them in their adventure is that the writer needs to know and understand everything that happens, not only what is "in the scene". If the murderer suddenly appears next to the victim and kills her, the writer might decide to not explain how he got there, but they need to know! If not, the story gets hurt.

To build my experience, I've decided to practice on writing something that seemed easy at the time: a Star-Trek novel. I love Star Trek, I've watched almost everything there is, including fan made videos, and most of the time I've felt like I would have made the story a little better. In fact, I was acting like a tester, considering that every single error the developer makes is an affront to common sense and anyone would have done better. I've decided to put my writing where my mouth was, at least give all those screenwriters a chance to get vindicated (and, boy, did they!). My thinking was that Star Trek has a constraining mythos that would force me to use already existing concepts - thus restricting me from thinking of so many things that I would never start and also allowing me to not need to reinvent or explain them - as well as a positive vibe, that would force me from writing depressing "everybody dies" stories. Well, guess what, in my story almost everybody dies anyway; take that, Star Trek!

My point is that trying to write that way revealed the many flaws in the Star Trek storytelling. Every time there is a "problem" someone comes up with a device or algorithm or alien power - usually termed somewhat like "problem remover", that just takes the pesky technical aspects away from the narrative and helps the viewer focus on the important part: the characters and the plot. I mean, while people still debate the limitation of phase cannons - that at least attempt to appear grounded in science - no one says anything about stuff like "inertial dampeners" which pretty much means "that thing that removes that kink that no one actually knows how to get rid of". This is just the beginning. Let's stick with Star Trek Enterprise for now, the one that put Star Trek back on the map and had the most compelling characters and storylines. Think of your favorite characters there: Picard, Data, Worf, maybe Deanna Troi. How did they get there? What was their childhood like? What are they doing when they are not on duty? The show has tried to touch on that, but just with the "whatever is needed for the story" approach. A more direct and obvious way to demonstrate this: there are no toilets in Star Trek. No one needs one, either - have you seen how the brig looks?

As characters go, everybody on that ship comes from the Starfleet Academy, but what do they learn there? What are the paths that they need to take in order to graduate? How do they reconcile vast differences in culture, language and learning speed for all the races in the Federation? I mean, they are all human with some stuff on their face and some extra makeup, but the background story, as something different from merely what you "see", needs all that information. The Star Trek universe survives in these loose network of stuff that taken separately and given some deeper context might make sense, but taken together they just contradict each other. And again comes the nitpicker label to stop you from ruining the experience for everybody else.

This brings me to the shortcut side effects. As a reader and especially as a viewer, you enjoy them because it takes you faster through the story. They remove what is not relevant to you. Well, emotionally relevant, but that's another can of worms altogether. As a writer, though, as a storyteller, these things are slow acting poison. After decades of watching Hollywood films, trying to write something feels like stepping barefooted on glass shards. You feel dumb, not only because it is impossible to write what characters do without a deeper understanding of who they are, not because you realize that even the smallest attempt at writing results in way to many questions to answer on paper - although you need to know the answers, but also because you start seeing how shallow was your interest in all those characters you actually loved watching on the screen. It's like that moment when you realize your lover has a secret life and it hurts because you know it's you who didn't notice or take interest in it, it's all you.

That's not bad. It makes it obvious that you casually ignore some layers of reality. It can lead to getting to appreciate them in the future. The difficulty I feel comes from not ever having trained for it. In fact, I have been taught to avoid it, by passively watching just the surface of everything, never attempting to infer what the depths hide. And when I try, at my age, to change the way I see the world, my way of ... being me, it's fucking difficult. Even simple stuff like mentally trying to describe a place or a person when you first see them, in terms of senses and emotions and comparisons with common concepts and - hardest of all - putting it in actual words... all of this is hard! It feels like an operating theater in which I perform while others watch me and judge. I feel anger and frustration because it conflicts with the original story, where I was good at writing.

There was a very stupid movie where Kate Beckinsale would be Adam Sandler's girlfriend (I mean, impossible to suspend disbelief, right?) and he would be annoyed with all the touchy-feely aspects of their relationship and instead use this "problem remover" remote that would fast forward past it. And then he comes to regret going through important bits of his life like a senseless robot and what it does to him. The movie might have been bad, but the underlying idea becomes very real when you attempt to write stories. Your characters are your lovers, your children, your spawn. Ignoring them is a crime to the story.

Think of the classical iceberg metaphor: just the tip is visible. It also applies to stories. The writer needs to have all that cool stuff hidden under the surface of the book, just in order to show to the reader the content. Characters need backstories that you will only hint at, but that you must know. Stuff that is excruciatingly boring to discuss in real life, like what the light in a room makes you think of - if you take the time to do it, which is never, you must put on paper because you know how it feels, but how do you translate that to another person, with another mind, culture, references, upbringing?

There is no real end to this post, I could write a lot on the subject - I am writing about how hard writing is, I know: ironic - but I will be stopping here. Probably readers have done that a while back, anyway. To the obstinate who got to this part, I salute you. Who knows, perhaps not taking the short path while reading this post has somehow enriched your story. I am not a writer, these insights have come to me just from attempting to do it. Perhaps that is the best reason to try new things, because besides feeling like a complete moron, you gain new valuable insight every time you do.

To be frank, I never intended this to last too much. I have been (and proudly, like a true hipster) avoiding creating a Facebook account and the Twitter one I only opened because I wanted to explore it as a machine to machine messaging system and never looked back after that idea bombed. So this year I went on Facebook and reactivated my interest in Twitter, now with a more social focus. The reason doesn't really matter, but I'll share it anyway: I had an asshole colleague that refused to talk to me on anything else other than Facebook Messenger. Now we barely talk to each other, anyway. So, what have I learned from this experience? Before I answer that question, I want to tell you about how I thought it would go when I went in.

What I thought going in


I have been keeping this blog since 2007, carefully sharing whatever I thought important, especially since I am a very forgetful person and I needed a place to store valuable tidbits of information. So when Facebook blew up I merely scoffed. Have other people use some sort of weird platform to share what they think; let them post cat videos and share whenever they go to the toilet: I am above this. I carefully study and solve the problem, read the book, research new stuff, link to everything in the information that I think relevant. I have my own template, I control the code on my blog, people can chat with me and others directly, comment on whatever I have done. I can also edit a post and update it with changes that I either learn as I evolve. My posts have permanent links that look like their title, suckers! I really don't need Facebook at all.

And Twitter. Phaw! 140 characters? What is this, SMSes online? If you really have something to say, say it in bulk. It's a completely useless platform. I might take a second look at it and use it as a chat system for the blog, at most (I actually did that for a while, a long time ago). I am not social, I am antisocial, suckers! I really don't need Twitter at all.

There you go. Superior as fuck, I entered the social media having a lot of smug preconceptions that I feel ashamed for. I apologize.

Facebook


So what did I learn from months on Facebook? Nothing. Hah! To be honest, I didn't disrespect Facebook that much to begin with. I had high hopes that once I connect with all my friends I would share of their interesting experiences and projects, we would communicate and collaborate better, we would organize more parties or gettogethers, meet up more frequently if we are in the same area. Be interesting, passionate; you know... social. Instead I got cute animal videos, big pointless images with texts plastered all over them - like this would give more gravitas to bland clichés, pictures of people on vacation or at parties - as if I care about their mugs more than the location, political opinion bile, sexist jokes, driving videos, random philosophical musings, and so on and so on. Oh, I learned a lot from Facebook, most of it being how many stupid and pointless things people do. Hell, I am probably friends with people I don't really know for a good reason, not just because I am an asshole who only thinks about himself!

Not everything is bad, clearly. The messenger is the only widespread method of online communication outside email. I know when people's birthdays are (and what day it is currently). People sometimes post their achievements, link to their blog posts, share some interesting information that they either stumbled upon on the Internet (most of the time) or thought about or did themselves, there are events that I learn about from other people going there, like concerts and software meetings and so on. Oh, and the Unfollow button is a gem, however cowardly it is! However, I am no longer "reading my Facebook", I am scrolling at warp speed. I've developed internal filters for spammy bullshit and most of the time, after going through three days worth of stuff, I have only five or six links that I opened for later, one of them being probably a music video on YouTube. It still takes a huge amount of time sifting through all the shit.

Twitter


What about Twitter? Huge fucking surprise there! Forced to distill the information they share, people on Twitter either share links to relevant content or small bits of their actual thoughts, real time, while they are thinking them. There is not a comfortable mechanism for long conversations, group conferences or complicated Like-like mechanism. You do have a button to like or retweet something, but it's more of a nod towards the author that what they shared is good, not some cog in an algorithm to tell someone what YOU need. More work stuff is being shared, books that have been read and enjoyed, real time reactions to TV or cinema shows, bits of relevant code, all kind of stuff. In fact, very few people that spam Facebook are even active on Twitter. Twitter is less about a person than about the moment; it's more Zen if you want to go that way. You are not friends with folks, you just appreciate what they share. It's less personal, yet more revealing, a side effect that I had not expected. And when you reply to a tweet, you are aware of how public it is and how disassociated from the post you reply to it is. There is no ego trip on posting the most sarcastic comment like on Facebook.

Not everything is rosy there, either. They have a similar Facebooky thing that shows the title and the image/video of a shared link so you can open them directly there. So if I want to emulate the same type of behaviour on Twitter, you can by endlessly posting links to stupid stuff and follow other people who do that. You can Follow whoever you want and that means that if you are exaggerating, you end up with a deluge of posts that you have no chance of getting out of. I still haven't gotten used to the hashtag thingie. I only follow people and I only use the default Twitter website, so I am not an "advanced user", but I can tell you that after three days worth of Twitter posts that I have missed, I open around 50 links that I intend to follow up on.

So?


Some of the mental filters developed apply to both situations. The same funny ha-ha video that spams the Facebook site can be ignored just as well on the Twitter page as well. Big font misspelled or untranslatable text smacked on top of a meaningless picture is ignored by tradition, since it looks like a big ad I already have a trained eye for from years of browsing the web before ad blockers were invented.

Some of the opinion pieces are really good and I wouldn't have had the opportunity to read them if all I was looking for was news sites and some RSS feed, yet because of the time it takes to find them, I get less time in which I can pay attention to them. I catch myself feeling annoyed with the length of a text or skipping paragraphs, even when I know that those paragraphs are well researched pieces of gold. I feel like I still need to train myself to focus on what is relevant, yet I am so fucking unwilling to let go of the things that are not.

With tweaking, both platforms may become useful. For example one can unfollow all his friends on Facebook, leaving only the messaging and the occasional event and birthday notification to go through. It's a bit radical, but you can do it. I haven't played with the "Hide post (show fewer posts like this)" functionality, it could be pretty cool if it works. Twitter doesn't have a good default filtering system, though, even if I get more useful information from it. That doesn't mean that specialized Twitter clients don't have all kinds of features I have not tried. There is also the software guy way: developing your own software to sift through the stuff. One idea I had, for example, was something that uses OCR to restore images and videos to text.

Bottom line: Facebook, in its raw form, it's almost useless to me. I remember some guy making fun of it and he was so right: "Facebook is not cool. Parents are on it!". You ask someone to connect with you, which is a two directional connection, even if they couldn't care less about you, then you need to make an effort to remove the stuff they just vomit online. The graphical features of the site make it susceptible to graphical spam - everything big and flashy and lacking substance. Twitter is less so and I have been surprised to see how much actual usable information is shared there. The unidirectional following system also leads to more complex data flow and structure, not just big blobs of similar people sharing base stuff that appeals to all.

But hey! "What about you, Siderite? What are you posting on Facebook and Twitter?" You'll just have to become friends and follow me to see, right? Nah, just kidding. My main content creation platform is still Blogger and I am using this system called If This Then That to share any new post on both social networks. Sometimes I read some news or I watch some video and I use the Facebook sharing buttons to express my appreciation for the content without actually writing anything about it and occasionally I retweet something that I find really spectacular on Twitter. Because of my feelings towards the two systems, even if I find an interesting link on Tweeter, I just like it then share it on Facebook if I don't feel it's really something. So, yeah, I am also spamming more on Facebook than on Twitter.

What else?


I haven't touched Google+, which I feel is a failed social platform and only collects various YouTube comments without accurately conveying my interests. I also haven't spoken about LinkedIn, which I think is a great networking platform, but I use it - as I believe it should be - exclusively for promoting my work and finding employment. I've used some strong language above, not because I am passionate about the subject but because I am not. I find it's appropriate though and won't apologize for it. I couldn't care less if people go or don't go on social networks and surely I am not an trendsetter so that Zuckerberg would worry. I only shared my own experience.

For the future I will probably continue to use both systems unless I finally implement one of the good ideas that would allow me to focus more on what matters, thus renouncing parts of my unhealthy habits. I am curious on how this will evolve in the near future and after I leave my current hiatus and go look for employment or start my own business.

Almost a month ago I got started being active on StackOverflow, a web site dedicated to answering computer related questions. It quickly got addictive, but the things that I found out there are many and subtle and I am happy with the experience.

The first thing you learn when you get into it is that you need to be fast. And I mean fast! Not your average typing-and-reading-and-going-back-to-fix-typos speed, but full on radioactive zombie attack typing. And without typos! If you don't, by the time you post your contribution the question would have been answered already. And that, in itself, is not bad, but when you have worked for minutes trying to get code working, looking good, being properly commented, taking care of all test cases, being effective, being efficient and you go there and you find someone else did the same thing, you feel cheated. And I know that my work is valid, too, and maybe even better than the answers already provided (otherwise I feel dumb), but to post it means I just reiterate what has been said before. In the spirit of good sportsmanship, I can only upvote the answer I feel is the best and eventually comment on what I think is missing. Now I realize that whenever I do post the answer first there are a lot of people feeling the same way I just described. Sorry about that, guys and gals!

The second thing you learn immediately after is that you need to not make mistakes. If you do, there will be people pointing them out to you immediately, and you get to fix them, which is not bad in itself, however, when you write something carelessly and you get told off or, worse, downvoted, you feel stupid. I am not the smartest guy in the world, but feeling stupid I don't like. True, sometimes I kind of cheat and post the answer as fast as possible and I edit it in the time I know the question poster will come check it out but before poor schmucks like me wanted to give their own answers. Hey, those are the rules! I feel bad about it, but what can you do?

Sometimes you see things that are not quite right. While you were busy explaining to the guy what he was doing wrong, somebody comes and posts the solution in code and gets the points for the good answer. Technically, he answered the question; educationally, not so much. And there are lot of people out there that ask the most silly of questions and only want quick cut-and-pastable answers. I pity them, but it's their job, somewhere in a remote software development sweat shop where they don't really want to work, but where the money is in their country. Luckily, for each question there are enough answers to get one thinking in the right direction, if that is what they meant to do.

The things you get afterwards become more and more subtle, yet more powerful as well. For example it is short term rewarding to give the answer to the question well and fast and first and to get the points for being best. But then you think it over and you realize that a silly question like that has probably been posted before. And I get best answer, get my five minutes of feeling smart for giving someone the code to add two values together, then the question gets marked as a duplicate. I learned that it is more satisfying and helpful to look first for the question before providing an answer. And not only it is the right thing to do, but then I get out of my head and see how other people solved the problem and I learn things. All the time.

The overall software development learning is also small, but steady. Soon enough you get to remember similar questions and just quickly google and mark new ones as duplicates. You don't get points for that, and I think that is a problem with StackOverflow: they should encourage this behavior more. Yet my point was that remembering similar questions makes you an expert on that field, however simple and narrow. If you go to work and you see the same problem there, the answer just comes off naturally, enforced by the confidence it is not only a good answer, but the answer voted best and improved upon by an army of passionate people.

Sometimes you work a lot to solve a complex problem, one that has been marked with a bounty and would give you in one shot maybe 30 times more points than getting best answer on a regular question. The situation is also more demanding, you have to not only do the work, but research novel ways of doing it, see how others have done it, explaining why you do things all the way. And yet, you don't get the bounty. Either it was not the best answer, or the poster doesn't even bother to assign the bounty to someone - asshole move, BTW, or maybe it is not yet a complete answer or even the poster snubs you for giving the answer to his question, but not what he was actually looking for. This is where you get your adrenaline pumping, but also the biggest reward. And I am not talking points here anymore. You actually work because you chose to, in the direction that you chose, with no restrictions on method of research or implementation and, at the end, you get to show off your work in an arena of your true peers that not only fight you, but also help you, improve on your results, point out inconsistencies or mistakes. So you don't get the points. Who cares? Doing great work is working great for me!

There is more. You can actually contribute not by answering questions, but by reviewing other people's questions, answers, comments, editing their content (then getting that edit approved by other reviewers) and so on. The quality of my understanding increases not only technically, but I also learn to communicate better. I learn to say things in a more concise way, so that people understand it quicker and better. I edit the words of people with less understanding of English and not only improve my own skills there, but help them avoid getting labelled "people in a remote software development sweat shop" just because their spelling is awful and their name sounds like John Jack or some other made up name that tries to hide their true origins. Yes, there is a lot of racism to go around and you learn to detect it, too.

I've found some interesting things while doing reviews, mostly that when I can't give the best edit, I usually prefer to leave the content as is, then before I know the content is subpar I can't really say it's OK or not OK, so I skip a lot of things. I just hope that people more courageous than me are not messing things up more than I would have. I understood how important it is for many people to do incremental improvements on something in order for it to better reach a larger audience, how important is that biases of language, race, sex, education, religion or psychology be eroded to nothing in order for a question to get the deserved answer.

What else? You realize that being "top 0.58% this week" or "top 0.0008% of all time" doesn't mean a lot when most of the people on StackOverflow are questioners only, but you feel a little better. Funny thing, I've never asked a question there yet. Does it mean that I never did anything cutting edge or that given the choice between asking and working on it myself I always chose the latter?

Most importantly, I think, I've learned a few things about myself. I know myself pretty well (I mean, I've lived with the guy for 39 years!) but sometimes I need to find out how I react in certain situations. For example I am pretty sure that given the text of a question with a large bounty, I gave the most efficient, most to the point, most usable answer. I didn't get the points, instead they went to a guy that gave a one liner answer that only worked in a subset of the context of the original question, which happened to be the one the poster was looking for. I fumed, I roared, I raged against the dying of the light, but in the end I held on to the joy of having found the answer, the pleasure of learning a new way of solving the same situation and the rightness of working for a few hours in the company of like-minded people on an interesting and challenging question. I've learned that I hate when people downvote me with no explanation even more than downvoting me with a good reason, that even if I am not always paying attention to detail, I do care a lot when people point out I missed something. And I also learned that given the choice between working on writing a book and doing what I already do best, I prefer doing the comfortable thing. Yeah, I suck!

It all started with a Tweet that claimed the best method of learning anything is to help people on StackOverflow who ask questions in the field. So far I've stayed in my comfort zone: C#, ASP.NET, WPF, Javascript, some CSS, but maybe later on I will get into some stuff that I've always planned on trying or even go all in. Why learn something when you can learn everything?!

Coma is my favorite Romanian bands and I've known them almost since they were formed. They have been singing for 16 years now and it was nice to see the concert room filled with people of all ages, including a 16 year old boy who had his birthday on the same day. For me this concert was a double whammy, as the lead singer of one of the opening bands is a former colleague of mine. Yeah, small world.

The opening bands where Till Lungs Collapse and Pinholes. TLC were nice, with my boy Pava almost collapsing his lungs. Pinholes were a bit strange: from five people on the stage, only the drummer didn't sport a guitar. Their writing process must be weird. Then Coma came on stage, at about 0:00 and played for an hour an a half. They were great! I've been to many of their concerts and this is one of the best yet. The band's "curse" struck again, on Dan Costea's acoustic guitar, but they were able to continue without it with no problems. They sang all time favorites, some newer songs, they also did Morphine, which is one of my personal favorite songs of theirs. I wish they would have managed to squeeze Daddy in there, or at least 3 Minute.

Catalin Chelemen was on fire, Dan was doing his usual PR thing and he was great as well and it seemed like they all had a good chemistry with the new guitar player, Matei Tibacu. Well, new for me. Unfortunately the sound in Fabrica was pretty bad. While inside you could kind of focus on the right notes, especially if you knew what the songs were supposed to play like, if you try to gauge the quality of the concert from the videos that are online now, you want to mute it almost instantly. People were respectful enough not to smoke during the concert (I can't wait for the smoking ban to come in effect!), but my clothes still smelled of tobacco when I got home, from people smoking in the next room.

As far as I know you can hear them next at the Electric Castle Festival, July 14-17, with so many other great bands. I am tempted to go there, but I am not one for festivals. Great job, Coma, and good luck!

Click here to see some nice photos from the concert.

and has 0 comments
If there is anything that I am forced to say about Adrian Despot, the frontman of Vita de Vie, is that he is a true artist. The concert tonight was spot on, even if I am not a fan of the band. The guest bands were pretty good, too, but I have to admit that for most of them I was waiting for them to stop playing so I can listen to the great playlist from DJ Hefe. The audience was really mixed, ranging from little kids to old people. It felt great to see all these people singing along and reliving some of the greatest hits of the band.

I started watching the concert online. It was kind of extreme to go there at 16:00 and stay until 23:00, especially since I was worried about the food/drink/toilet situation and there was an afterparty as well. I have to say that all my worries were for naught. Really decent access to the food and drink stands and there was no queue at the toilets outside. Of course, the drinks and food were shitty and overpriced, but that was to be expected. It also was a really wonderful thing to stand in the middle of a crowd of people and not feel like I was smoking a cigar. The law against smoking in public places has finally reached Romania so it felt really wonderful.

By the time we got to the concert hall - umm, heated tent, but it was better than it sounds - the last band before Vita de Vie was playing, the rather good Relative, from Cluj. Energetic, professional, kind of bad public speakers, but they have time to improve. They were pretty emotional about their first venue in Bucharest and performing before so many people, so they were sweet. Then the main show started, with light shows, projections and a volume that felt like twice as loud as the bands before. My ears are still ringing.

Unfortunately something happened that ruined my evening, so I went home after the concert, rather than go to the after-party at Fabrica. I wish I was in the mood for that, but well, shit happens. So yeah, the show was great, the music pretty good - although I felt like the band would have done a better job with another lead singer :) The point is that Vita de Vie, like any other band - let's be honest, is a project. Individual people don't count unless they push the project further, make it better somehow. Adi Despot made that obvious when he called the previous members of the band to play some songs, as well as some collaborators in sideprojects started by current members of the band. Like him or not, he did bring showmanship to the project and he deserves to be the frontman.

Bottom line, I was impressed by the way the concert was organized (I am used to those really bad things where people just stand brushing against each other, suffocating in smoky improperly ventilated places, trying their best not to slip into the beer and piss left by people who couldn't get fast enough to the few malfunctioning toilets provided). I was also impressed with the guest bands, doing a really professional job, even if they have a lot to learn still.

You might be interested in the Facebook link of the event.

On the 9th of February I basically held the same talk I did at Impact Hub, only I did better, and this time presented to the ADCES group. Unbeknownst to me, my colleague there Andrei Rînea also held a similar presentation with the same organization, more than two years ago, and it is quite difficult to assume that I was not inspired by it when one notices how similar they really were :) Anyway, that means there is no way people can say they didn't get it, now! Here is his blog entry about that presentation: Bing it on, Reactive Extensions! – story, code and slides

The code, as well as a RevealJS slideshow that I didn't use the first time, can be found at Github. I also added a Javascript implementation of the same concept, using a Wikipedia service instead - since DictService doesn't support JSON.

Today I was the third presenter in the ReactiveX in Action event, held at Impact Hub, Bucharest. The presentation did not go as well as planned, but was relatively OK. I have to say that probably, after a while, giving talks to so many people turns from terrifying to exciting and then to addictive. Also, you really learn things better when you are preparing to teach them later, rather than just perusing them.

I will be holding the exact same presentation, hopefully with a better performance, on the 9th of February, at ADCES.

For those interested in what I did, it was a code only demo of a dictionary lookup WPF application written in .NET C#. In the ideal code that you can download from Github, there are three projects that do the exact same thing:
  1. The first project is a "classic" program that follows the requirements.
  2. The second is a Reactive Extensions implementation.
  3. The third is a Reactive Extensions implementation written in the MVVM style.

The application has a text field and a listbox. When changing the text of the field, a web service is called to return a list of all words starting with the typed text and list them in the listbox, on the UI thread. It has to catch exceptions, throttle the input, so that you can write a text and only access the web service when you stop typing, implement a timeout if the call takes too long, make sure that no two subsequent calls are being made with the same text argument, retry three times the network call if it fails for any of the uncaught exceptions. There is a "debug" listbox as well as a button that should also result in a web service query.

Unfortunately, the code that you are downloading is the final version, not the simple one that I am writing live during the presentation. In effect, that means you don't understand the massive size reduction and simplification of the code, because of all the extra debugging code. Join me at the ADCES presentation (and together we can rule the galaxy) for the full demo.

Also, I intend to add something to the demo if I have the time and that is unit testing, showing the power of the scheduler paradigm in Reactive Extensions. Wish me luck!

Long story short: I thought FOSDEM 2016 was terribly non-technical.

The entire conference took place at the ULB Solbosch Campus in Brussels, Belgium, which is composed of several buildings in which many rooms are being used for presentations. That meant that not only you had to plan the speeches that you wanted to attend to, but also consider the time it took to move from one building to another (in the cold and rain). Add to this the fact that the space was still insufficient for most talks, and if you didn't get there before the talk started, it wasn't uncommon to find the room full and be turned down at the door for security reasons (meaning fire hazards and the likes, not stupid terrorism). I thought the mobile app FOSDEM Companion was very helpful in keeping track of what is what and where and when.

The talks themselves, though, were mostly 20-25 minutes long. While some reached to 45 minutes, most of them were short presentations of one product or another. Someone would speak in front of a Powerpoint (or some alternative) slide and the most common template was: "I am X I work at Y and we are doing product Z. Here is a history of the product, here is what it can do for you and you can find more at these links." They were open source and free, alright, but other than that it felt like it was a marketing conference, not a technical one. I have seen only one presentation that included actual code.

This doesn't mean I didn't enjoy myself. I've met old friends and some of the presentations were really interesting. I was particularly impressed by something called Ring, which is a completely peer to peer and securely encrypted communication system. Basically it allows you to find people, talk to them (via text, sound, video), while having no central server. It was something that I was looking for and that uses DHT as a discovery mechanism.

So my conclusion is that if you are not there for a specific project or topic, so that you end up finding the people that are interested in the same thing and network with them, FOSDEM is pretty superficial. The talks were recorded and the videos will slowly appear on the FOSDEM video archive site, so actually going there just to see the presentations alone might not be necessary. Being from a slightly different technical domain, I wasn't interested in socialization, and I think that was my biggest mistake.

The people there looked interesting. A friend of mine summarized it well: "one of the few places where there is a queue at the men's bathrooms and not at the women's". There were of course plenty of facially haired, pony-tailed, black leather wearing, Linux laptop carrying hackers running around, but most of the people there didn't look that young or that "hacky". In fact, I think the age average was probably around 40.

That's about it for my FOSDEM report. If you need any more information, leave me a comment and I will fill any holes in the description.

Update:
The talks that I went to and I liked were these:

On the 3rd and 9th of February I will be presenting a demo of Reactive Extension in action on a Windows Presentation Foundation app that I am going to be building as I speak, first without and then with Rx. The presentation should be about 30-45 minutes, in Romanian, but I am sure we can accommodate foreign speakers by doing it in English if you request it. These events are all free, but you must register in order to know how many people to prepare for. Here are the Meetup links:
ReactiveX in Action, Wednesday, February 3 2016, 19:00, Impact Hub, Strada Halelor 5, Bucharest
MsSql / Reactive Extensions, Tuesday, February 9 2016, 19:00, Electronic Arts - Afi Park 2, Bulevardul General Vasile Milea 4F, București 061344
See you there!

So I've finally created a Facebook account. Yes, it won. I also accessed the Twitter one I created a few good years before and never used. These new social accounts will probably be used to publish what I post here, but anyway, I've updated the blog layout with my Facebook and Twitter accounts (see the icons top right).

and has 0 comments
We are three in the room, all dressed casually, but I know them for what they are: angels. And they are here to kill me. I fire bullet after bullet, but they hit in weird places in the room, as if I am not even aiming straight. I spit at the first one, defiance my only weapon. The spit ball goes sideways, at a 60 degree angle from my target. Illusion! I aim the gun 60 degrees in the other direction and fire three bullets. The angel falls down.

My gun is pulled from my hand by invisible forces and the second assassin is upon me. He tries to kill me, but he can't. I've taken precautions. Pig meat during this holy day makes me unclean and angels can only kill pure creatures. The angel snarls "You thought pork would save you?" A ball of pure light grows from his open right hand. Unfortunately for me, angels can also purify one by touch alone. I am powerless in his hands. I know I am going to die. As the energy touches my temple I feel the excruciatingly painful ecstasy of purification. In that fraction of a blink of an eye, I feel I can be anybody, do anything. I choose to have telekinesis and get my gun back. I shoot the angel full of holes.

"Who the hell are you?", the dying angel murmurs. "I am Jesus of Nazareth", I reply. He scoffs "That place doesn't even exist!". "Not yet", I grin as he breathes his last.

Sarmale is a dish that is traditionally eaten around Christmas in Romania, although you can make them all year round and some Romanians do. This type of food probably has Turkish origins, since the word "sarmak" means "roll" in Turkish and "leh" is a common Turkish pluralization. Not that I know Turkish, but part of Romania was conquered by them, so some things remain. Sarmale is one of the good ones, but it is a time consuming dish to prepare so I never cooked it myself. That's what parents are for, right? However, recently when I was abroad, I found myself wanting to cook some for my foreign friends. Unfortunately I couldn't do it then, but the idea to cook some tasty sarmale remained.

Today me and the wife set off to do just that. She knows how to make them, unfortunately. That means that my giddiness was uncalled for, since I expected numerous improvements on the recipe, but instead I was coerced to follow "the law". Even worst, due to differences in taste and digestive systems as well as a lack of some more exotic ingredients, the recipe we agreed on is some of the simplest possible. No onion, no garlic, no paprika, no parsley in the mix, nor bacon or tomato sauce - only outside. However, I am sure that even so they will be extremely tasty and the simplicity of this recipe means even people that don't know how sarmale should taste like can do them at home and then experiment with their national ingredients.

Without further ado:

  1. mix pork and veal chopped meat with some rice and pepper (and optionally thyme)
  2. wrap mixture in pickled cabbage leaves to get the sarma rolls
  3. put rolls in a large pot in the following fashion
    • first a layer of simple chopped pickled cabbage
    • a layer of sarmale, put one next to the other, but with some small space left, since they will grow
    • put a layer of chopped pickled cabbage and some bacon and a bit of smoked meat (like ribs), more thyme, maybe a little hot paprika
    • repeat the previous two steps until the pot is full
  4. add water to fill the space
  5. place in oven at 150C (300F) and cook for at least three hours


The time consuming part if the making of the rolls, which not only requires manual labor for each roll, but also needs good cabbage leaves, cut in the correct way. Plus the long cooking time. In Romania we eat them with polenta, sometimes with cream or yogurt, while biting from raw chilly peppers. Some prefer them hot, some like them cold. I especially like the cold ones, because you can just pick them up and eat them.

Now, the dish called sarma is done differently in each country. If you google "sarma" you get recipes from the former Yugoslavia (see this, as an example), but if you google "sarmale" you get the Romanian ones (Here is a decent one). The types of leaves used, the mixture, the cooking style may very drastically. I, for one, want bacon,onion and garlic in the dish. I would also add some tomato sauce and hot paprika in the mix on principle. I wanted to experiment with different types of meat, coriander, cumin, Indian spices and so on. There are also different types of leaves, but I would say that the pickling of the cabbage is one of the main reasons why the sarmale are so good. Perhaps other types of leaves could also be pickled, but that means I either have to do it myself or use the standard ones that you can find already pickled at the market. Perhaps one of the things that makes my mouth water the most is to add some mutton sausage mix in the meat, moving more towards the Arabic style of meat dishes, or just add sheep fat over the sarmale when they are cooking.

But why stop there? If you look at the various recipes, some of them start off by frying the garlic, onion and rice. Some of them add egg to hold the mixture, or celery, or parsley or other things. I know vegetarian people that don't put meat in the mix, or people like my wife who don't want fried onion in their food. There are fish cabbage rolls, there are chicken ones, some people use fine cut potato with or instead the rice. The leaves are usually either grape leaves or cabbage, although some don't use pickled leaves and any large leaf can be used (or even small ones if you are a clock maker with OCD). One example that I've heard about and doesn't appear in the Wikipedia article is using linden leaves. And the leaf type really really affects the taste. The grape leaf sarmale are eaten with yogurt, for example, while the cabbage one rarely so, but are eaten with hot paprika or chilly peppers. In other words, one can create any type of roll using any type of leaf with any type of content, as long as it absorbs the water and fat that carry the taste of the leaf and the other ingredients.

So, do you feel a little inspired by this or not? It is one of the most common Romanian slow cooking dishes and a delight to eat.