Browse Source

Merge branch 'release/20190729'

master 20190729
Julio Biason 5 years ago
parent
commit
a97528c80c
  1. 3
      content/books/things-i-learnt/_index.md
  2. 2
      content/books/things-i-learnt/config-file/index.md
  3. 36
      content/books/things-i-learnt/gerrit/index.md
  4. 2
      content/books/things-i-learnt/one-change-commit/index.md
  5. 41
      content/books/things-i-learnt/permanent-solution/index.md
  6. 2
      content/books/things-i-learnt/project-organization/index.md
  7. 2
      content/books/things-i-learnt/run-locally/index.md
  8. 2
      content/books/things-i-learnt/things-i-dont-know/index.md
  9. 37
      content/books/things-i-learnt/time/index.md

3
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)
@ -55,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)
@ -92,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)

2
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") }}

36
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.
<!-- more -->
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") }}

2
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") }}

41
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.
<!-- more -->
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") }}

2
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") }}

2
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") }}

2
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") }}

37
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.
<!-- more -->
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") }}
Loading…
Cancel
Save