From 9c6cc43b03c87ae6ee118e913a969286b2351e5d Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Mon, 29 Jul 2019 12:33:59 -0300 Subject: [PATCH 1/3] New chapter: Gerrit --- content/books/things-i-learnt/_index.md | 1 + content/books/things-i-learnt/gerrit/index.md | 36 +++++++++++++++++++ .../one-change-commit/index.md | 2 +- .../project-organization/index.md | 2 +- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 content/books/things-i-learnt/gerrit/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index 4e83efc..6d0e876 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -34,6 +34,7 @@ template = "section-contentless.html" * Source Control * [Always Use A Version Control System](always-vcs) * [One Commit Per Change](one-change-commit) + * [Gerrit Is A Mistake](gerrit) * Project Organization * [Organize Your Code by Data/Type, Not Functionality](project-organization) * [Create Libraries](libraries) diff --git a/content/books/things-i-learnt/gerrit/index.md b/content/books/things-i-learnt/gerrit/index.md new file mode 100644 index 0000000..eb48979 --- /dev/null +++ b/content/books/things-i-learnt/gerrit/index.md @@ -0,0 +1,36 @@ ++++ +title = "Things I Learnt The Hard Way - Gerrit Is A Mistake" +date = 2019-07-29 + +[taxonomies] +tags = ["en-au", "books", "things i learnt", "git", "gerrit"] ++++ + +I hate calling software "a mistake", but I can't find any other way to +describe Gerrit. You may see people using Gerrit 'cause Google uses it. The +thing is: Google misunderstood what Git actually is. + + + +When Linus Torvalds came with Git, he was trying to mimic another system, +BitKeeper. Along with some improvements over CVS and SubVersion, Git made +really easy to create and merge branches, something that was either +almost-not-supported or slow-as-heck, depending on which tool you look at. + +You need to take this into consideration: Git made branches easy. + +Then someone came with the idea of Gerrit: Instead of managing branches, it +actually manages _commits_. Instead of having a branch for each feature, you +should have _one single commit_ as feature. You can have branches on your +machine, but the server only deal with commits. + +So Gerrit took Git, a tool that improved the way we deal with branches, and +removed branches. This is akin to taking a text editor and taking away the +ability to _edit text_. Does that sound right to you? + +In my personal opinion, what they did was to take git apart and put an err in +the middle: gERRit. + +When I see someone using Gerrit, I know something is wrong there. + +{{ chapters(prev_chapter_link="/books/things-i-learnt/one-change-commit", prev_chapter_title="One Commit Per Change", next_chapter_link="/books/things-i-learnt/project-organization", next_chapter_title="Organize Your Code by Data/Type, Not Functionality") }} diff --git a/content/books/things-i-learnt/one-change-commit/index.md b/content/books/things-i-learnt/one-change-commit/index.md index 9dc5129..41f6fdb 100644 --- a/content/books/things-i-learnt/one-change-commit/index.md +++ b/content/books/things-i-learnt/one-change-commit/index.md @@ -36,4 +36,4 @@ the changes in the file before committing. [^1]: Ok, it _may_ have some issues if the field can't be null, but you get what I meant, right? -{{ chapters(prev_chapter_link="/books/things-i-learnt/always-vcs", prev_chapter_title="Always Use A Version Control System", next_chapter_link="/books/things-i-learnt/project-organization", next_chapter_title="Organize Your Code by Data/Type, Not Functionality") }} +{{ chapters(prev_chapter_link="/books/things-i-learnt/always-vcs", prev_chapter_title="Always Use A Version Control System", next_chapter_link="/books/things-i-learnr/gerrit", next_chapter_title="Gerrit Is A Mistake") }} diff --git a/content/books/things-i-learnt/project-organization/index.md b/content/books/things-i-learnt/project-organization/index.md index f587680..bda33aa 100644 --- a/content/books/things-i-learnt/project-organization/index.md +++ b/content/books/things-i-learnt/project-organization/index.md @@ -81,4 +81,4 @@ transformations and such, but without the Data3 part). By breaking by their types, I managed to create small modules for each one and the new project would simply reference Data1 and Data2, but not Data3. -{{ chapters(prev_chapter_link="/books/things-i-learnt/one-change-commit", prev_chapter_title="One Commit Per Change", next_chapter_link="/books/things-i-learnt/libraries", next_chapter_title="Create Libraries") }} +{{ chapters(prev_chapter_link="/books/things-i-learnt/gerrit", prev_chapter_title="Gerrit Is A Mistake", next_chapter_link="/books/things-i-learnt/libraries", next_chapter_title="Create Libraries") }} From 1a4da54f43450752bba67a862159abcefeb51d1b Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Mon, 29 Jul 2019 12:48:06 -0300 Subject: [PATCH 2/3] New chapter: Temporary/Permanent Solution --- content/books/things-i-learnt/_index.md | 1 + .../things-i-learnt/config-file/index.md | 2 +- .../permanent-solution/index.md | 41 +++++++++++++++++++ .../things-i-learnt/run-locally/index.md | 2 +- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 content/books/things-i-learnt/permanent-solution/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index 6d0e876..d633f1b 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -56,6 +56,7 @@ template = "section-contentless.html" * [Optimization Is For Compilers](optimization) * [Units Makes Things Clear](units) * [If It Doesn't Run On Your Computer, You Have A Problem](run-locally) + * [Nothing More Permanent Than A Temporary Solution](permanent-solution) * Making Things Go * [The Config File Is Friend](config-file) * [Command Line Options Are Weird, But Helpful](command-line-options) diff --git a/content/books/things-i-learnt/config-file/index.md b/content/books/things-i-learnt/config-file/index.md index 5805823..4d51e11 100644 --- a/content/books/things-i-learnt/config-file/index.md +++ b/content/books/things-i-learnt/config-file/index.md @@ -52,4 +52,4 @@ you'll find that you're half-way through it. [^1]: In other words, they have a [time to live](https://en.wikipedia.org/wiki/Time_to_live). -{{ chapters(prev_chapter_link="/books/things-i-learnt/run-locally", prev_chapter_title="If It Doesn't Run On Your Computer, You Have A Problem", next_chapter_link="/books/things-i-learnt/command-line-options", next_chapter_title="Command Line Options Are Weird, But Helpful") }} +{{ chapters(prev_chapter_link="/books/things-i-learnt/permanent-solution", prev_chapter_title="Nothing More Permanent Than A Temporary Solution", next_chapter_link="/books/things-i-learnt/command-line-options", next_chapter_title="Command Line Options Are Weird, But Helpful") }} diff --git a/content/books/things-i-learnt/permanent-solution/index.md b/content/books/things-i-learnt/permanent-solution/index.md new file mode 100644 index 0000000..2df46c8 --- /dev/null +++ b/content/books/things-i-learnt/permanent-solution/index.md @@ -0,0 +1,41 @@ ++++ +title = "Things I Learnt The Hard Way - Nothing More Permanent Than A Temporary Solution" +date = 2019-07-29 + +[taxonomies] +tags = ["en-au", "books", "things i learnt", "code", "writing code", "temporary solutions"] ++++ + +Depending on where you look, "Nothing more permanent than a temporary +solution" is either an old Russian proverb or a quote by Milton Friedman. +Thing is, temporary solutions, unless you think about the future to fix them, +will become permanent. + + + +A temporary solution may appear either as a proof-of-concept or due some +restrained deadline. You may create perfect [system +specs](/books/things-i-learnt/spec-first), you may have a perfect +understanding of the whole [in your Gherkin +files](/books/things-i-learnt/gherkin) but, at some point, you'll put some +small script to fix a minor problem, or do a "not so good" solution to a point +due to deadlines. + +This happens and unless you take steps to get rid of those, you'll end up with +a bunch of spaghetti code pretty fast. And that will snowball to a point that +you won't be able to manage the project. + +Once a scrum master suggested that we came with an idea to our product manager +to do something akin to "Every three sprints, we'll focus on product value; +the fourth one is ours to fix the things that are annoying us". I don't think +we ever talking to the product manager about this, but we managed to open +issues on our ticket system about the small warts we left behind, specially +due deadlines. So there we had, a specially crafted bug type for "technical +debt" which we never actually took the time to fix. + +Unless you have a pretty good safety net to fix those, they will life forever. +And it may be a better option to tell "we can't deliver in time" than adding +(yet another) temporary solution, as hard as it is to convince the higher ups +that you can't deliver the product with a temporary solution. + +{{ chapters(prev_chapter_link="/books/things-i-learnt/run-locally", prev_chapter_title="If It Doesn't Run On Your Computer, You Have A Problem", next_chapter_link="/books/things-i-learnt/config-file", next_chapter_title="The Config File Is Friend") }} diff --git a/content/books/things-i-learnt/run-locally/index.md b/content/books/things-i-learnt/run-locally/index.md index 9442b01..b073d15 100644 --- a/content/books/things-i-learnt/run-locally/index.md +++ b/content/books/things-i-learnt/run-locally/index.md @@ -39,4 +39,4 @@ If we had the chance to not use it and run all the development and tests on our own computers, I have the feeling we could deliver the product 2-3 months earlier. -{{ chapters(prev_chapter_link="/books/things-i-learnt/units", prev_chapter_title="Units Makes Things Clear", next_chapter_link="/books/things-i-learnt/config-file", next_chapter_title="The Config File Is Friend") }} +{{ chapters(prev_chapter_link="/books/things-i-learnt/units", prev_chapter_title="Units Makes Things Clear", next_chapter_link="/books/things-i-learnt/permanent-solution", next_chapter_title="Nothing More Permanent Than A Temporary Solution") }} From 0cf9ad4e42b1eb4cdae4902a54d4a4acb661aff2 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Mon, 29 Jul 2019 13:01:22 -0300 Subject: [PATCH 3/3] New chapter: You have time --- content/books/things-i-learnt/_index.md | 1 + .../things-i-dont-know/index.md | 2 +- content/books/things-i-learnt/time/index.md | 37 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 content/books/things-i-learnt/time/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index d633f1b..db8ff7b 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -94,3 +94,4 @@ template = "section-contentless.html" * [Blogging About Your Stupid Solution Is Still Better Than Being Quiet](blogging) * [Don't Hide Your Stupid Solution](post-solution) * [Keep A List of Things I Don't Know](things-i-dont-know) + * [You Always Have The Time](time) diff --git a/content/books/things-i-learnt/things-i-dont-know/index.md b/content/books/things-i-learnt/things-i-dont-know/index.md index b0c6efa..3dcb994 100644 --- a/content/books/things-i-learnt/things-i-dont-know/index.md +++ b/content/books/things-i-learnt/things-i-dont-know/index.md @@ -19,4 +19,4 @@ When I start my research, I keep some notes together, although [not on paper](/books/things-i-learnt/paper-notes), so I can use as reference in the future. -{{ chapters(prev_chapter_link="/books/things-i-learnt/post-solution", prev_chapter_title="Don't Hide Your Stupid Solution") }} +{{ chapters(prev_chapter_link="/books/things-i-learnt/post-solution", prev_chapter_title="Don't Hide Your Stupid Solution", next_chapter_link="/books/things-i-learnt/time", "next_chapter_title="You Always Have The Time") }} diff --git a/content/books/things-i-learnt/time/index.md b/content/books/things-i-learnt/time/index.md new file mode 100644 index 0000000..1eb6d23 --- /dev/null +++ b/content/books/things-i-learnt/time/index.md @@ -0,0 +1,37 @@ ++++ +title = "Things I Learnt The Hard Way - You Always Have The Time" +date = 2019-07-29 + +[taxonomies] +tags = ["en-au", "books", "things i learnt", "personal", "time"] ++++ + +You may think "Alright, I have a list of things I don't know, but I have no +time to learn those things!" You do have time. + + + +Most of this blog/book was written during my lunch breaks; I can have my lunch +in 30 minutes, and then I still have 20-30 minutes free for myself. In those +lunch breaks, I wrote a very stupid application in Rust to download some stuff +I wanted. + +I don't fall asleep straight away, it still takes me about 30 minutes to +actually feel sleepy. That's when I pick my tablet and read a book, which most +of the time is technical book, about some technology I'm interested in. + +Even if when I get home I don't feel like sitting in front of a computer to +code/write something, I always have the time to slowly progress. + +And that's how I always have the time. + +Sure, I could take those 30 minutes after lunch just to play games. I could +put myself to sleep watching Netflix. But, then again, I'd never wrote this +bunch of words, would never have an automated downloader and would not learn +about new stuff that people are talking about. + +Maybe people think "If I don't finish, it's over". Your life doesn't end in +one day. You still have tomorrow to keep going -- _to keep going_, not to +start. + +{{ chapters(prev_chapter_link="/books/things-i-learnt/things-i-dont-know", prev_chapter_title="Keep A List of Things I Don't Know") }}