Browse Source

Merge branch 'release/20190718'

master 20190718
Julio Biason 5 years ago
parent
commit
a0d3724592
  1. 6
      content/books/things-i-learnt/_index.md
  2. 27
      content/books/things-i-learnt/coc/index.md
  3. 2
      content/books/things-i-learnt/config-file/index.md
  4. 33
      content/books/things-i-learnt/not-done/index.md
  5. 48
      content/books/things-i-learnt/responsible-code/index.md
  6. 42
      content/books/things-i-learnt/run-locally/index.md
  7. 27
      content/books/things-i-learnt/say-no/index.md
  8. 2
      content/books/things-i-learnt/stupid-bugs-list/index.md
  9. 25
      content/books/things-i-learnt/time-to-stop/index.md
  10. 2
      content/books/things-i-learnt/units/index.md

6
content/books/things-i-learnt/_index.md

@ -53,6 +53,7 @@ template = "section-contentless.html"
* [Always Use UTF-8 For Your Strings](use-utf8) * [Always Use UTF-8 For Your Strings](use-utf8)
* [Optimization Is For Compilers](optimization) * [Optimization Is For Compilers](optimization)
* [Units Makes Things Clear](units) * [Units Makes Things Clear](units)
* [If It Doesn't Run On Your Computer, You Have A Problem](run-locally)
* Making Things Go * Making Things Go
* [The Config File Is Friend](config-file) * [The Config File Is Friend](config-file)
* [Command Line Options Are Weird, But Helpful](command-line-options) * [Command Line Options Are Weird, But Helpful](command-line-options)
@ -72,3 +73,8 @@ template = "section-contentless.html"
* Personal * Personal
* [Companies Look For Specialists But Keep Generalists Longer](specialists) * [Companies Look For Specialists But Keep Generalists Longer](specialists)
* [Keep A List of Stupid Bugs That Took More Than 1 Hour To Solve](stupid-bugs-list) * [Keep A List of Stupid Bugs That Took More Than 1 Hour To Solve](stupid-bugs-list)
* [When It's Time to Stop, It's Time To Stop](time-to-stop)
* [Code of Conduct Protect YOU, Not THEM](coc)
* [Learn To Say No](say-no)
* [Take Responsibility For The Use Of Your Code](responsible-code)
* [Don't Tell It's Done When It's Not](not-done)

27
content/books/things-i-learnt/coc/index.md

@ -0,0 +1,27 @@
+++
title = "Things I Learnt The Hard Way - Code of Conduct Protect YOU, Not THEM"
date = 2019-07-18
[taxonomies]
tags = ["en-au", "books", "things i learnt", "personal", "coc"]
+++
When you're beginning with any language/library/framework, check their CoC;
they will protect _you_ from being harassed for not immediately getting what
is going on instead of blocking you from telling them what you think.
<!-- more -->
I'm mentioning this 'cause a lot of people complain about CoC, but they
forget that they allow them to join in any project without being called
"freaking noob" or "just go read the docs before annoying us".
And don't be afraid to ask moderators if someone that seems be in the
community for longer than you isn't break the CoC. Just because you just got
into the community, it doesn't mean you can't be part of it or that someone
can abuse their position of "veteran" to not respect you.
Also, remember that most people that are against CoCs are the ones that want
to be able to call names on everyone.
{{ chapters(prev_chapter_link="/books/things-i-learnt/time-to-stop", prev_chapter_title="When It's Time to Stop, It's Time To Stop", next_chapter_link="/books/things-i-learnt/say-no", next_chapter_title="Learn To Say No") }}

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 [^1]: In other words, they have a [time to
live](https://en.wikipedia.org/wiki/Time_to_live). live](https://en.wikipedia.org/wiki/Time_to_live).
{{ chapters(prev_chapter_link="/books/things-i-learnt/units", prev_chapter_title="Units Makes Things Clear", 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/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") }}

33
content/books/things-i-learnt/not-done/index.md

@ -0,0 +1,33 @@
+++
title = "Things I Learnt The Hard Way - Don't Tell It's Done When It's Not"
date = 2019-07-18
[taxonomies]
tags = ["en-au", "books", "things i learnt", "personal", "responsibility"]
+++
You are tired of running the same thing over and over again. You kinda
remember that something weird may happen, but because you're tired, you tell
everyone that "It's finished". Don't.
<!-- more -->
I must admit that I've done this. Yes, there is that corner case that I didn't
test. Yes, there is that piece of code that, although it works, it's weird.
Yes, I left a technical debt behind. But we get tired of looking at the same
thing over and over. And we get pushed by higher ups to deliver stuff. And
that's when we say "It's done", when it's not.
Although we just dodged one, we end up leaving our colleagues -- people that
really depend on our work -- down. They expect to connect to whatever we are
doing to keep going. The expect to see the results of their work crystallized
by ours. And they can't. 'Cause we said "It's done" when it wasn't.
And you can be sure, as soon as that happens, they will be the first to point,
in minutes, that it is not done.
On the other hand, if you say "Almost, but there is this thing that bothers me
and I think it may give us a headache in the future", they will understand. So
be clear and transparent about your work.
{{ chapters(prev_chapter_link="/books/things-i-learnt/responsible-code", prev_chapter_title="Take Responsibility For The Use Of Your Code") }}

48
content/books/things-i-learnt/responsible-code/index.md

@ -0,0 +1,48 @@
+++
title = "Things I Learnt The Hard Way - Take Responsibility For The Use Of Your Code"
date = 2019-07-18
[taxonomies]
tags = ["en-au", "books", "things i learnt", "personal", "responsibility"]
+++
This is hard. Very very hard. It's the difference between "freedom" and
"responsibility".
<!-- more -->
There is nothing wrong in writing, for example, a software to capture people's
faces and detect their ethnicity, but you have to think about what that will
be used on.
Even on an open source project, you can take responsibility without blocking
people. You can make your project harder for people trying to abuse to use it,
to the point they will have to take control of their own fork.
One example is a small application called [Tusky](https://tusky.app/), which
is "An Android client for the microblogging server Mastodon", completely open
source. Mastodon is a network of microblogging servers with connect to each
other, kinda like Twitter, but you can pick a different server that is not
twitter.com and still get updates from that server. One of the servers that
appeared in the server list is an alt-right server which, as most alt-right
forums, promote a lot of hate. What Tusky did? When you try to add an account
on that server, instead of adding the account, [they play a video of Never
Gonna Give You Up](https://github.com/tuskyapp/Tusky/pull/1303), basically
[rickrolling](https://en.wikipedia.org/wiki/Rickrolling) anyone who, well, is
an alt-righter.
Tusky broke the open source license? No, the code is still available. Anyone
wanting to use the server can pick the code, fork it, remove the rickroll and
release their own version of the application. But Tusky developers took an
instead of saying "We'll not take part in promoting hate speech" and one can't
deny that they did.
It is a bit hard to do so on the company code -- you would get some reprimands
if you try to shame or block one of the company clients from using the company
application -- but you [can say no](/books/things-i-learnt/say-no) and,
depending on how offensive you think the use the code is, you can even start
looking for a new place to work. People on larger and "cooler" companies, like
Google, left their jobs because they didn't agree with what the company was
doing, and so can you.
{{ chapters(prev_chapter_link="/books/things-i-learnt/say-no", prev_chapter_title="Learn To Say No", next_chapter_link="/books/things-i-learnt/not-done", next_chapter_title="Don't Tell It's Done When It's Not") }}

42
content/books/things-i-learnt/run-locally/index.md

@ -0,0 +1,42 @@
+++
title = "Things I Learnt The Hard Way - If It Doesn't Run On Your Computer, You Have A Problem"
date = 2019-07-18
[taxonomies]
tags = ["en-au", "books", "things i learnt", "local run", "cloud"]
+++
I've seen a lot of systems that would never run on a isolated computer, like
the developer tool, 'cause the system requires running on a specialized
environment. Those things are wrong.
<!-- more -->
Requiring a specialized environment absolutely kills productivity.
If your system will run on a specialized environment -- and I'm including "the
cloud" here -- look for something that can abstract whatever you're using. For
example, if you're using AWS SQS, which is a queue, look for a library that
can abstract the way a queue works so you can also run with RabbitMQ, which
can be easily run on your own computer.
If you're using a very specialized thing, you may have to write the
abstraction yourself, isolating it from the main system, so you can develop
the main product in peace.
One of the most productivity killer environment I worked require running the
project on a customized Apache installation, running the client specialized
framework. The whole problem is that the client refused to allow us to not use
it or install on our local machines (mostly 'cause the install of said
framework was really complex). In other for us to work and see things working,
we had to use a VPN to the client computers, develop things there and manually
forcing things to reload. No only we had absolutely nothing to do when the VPN
was down ('cause it require out company infrastructure working hand-in-hand
with the client infrastructure and the internet provider infrastructure, which
is absolutely impossible), the flow was really cumbersome.
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") }}

27
content/books/things-i-learnt/say-no/index.md

@ -0,0 +1,27 @@
+++
title = "Things I Learnt The Hard Way - Learn To Say No"
date = 2019-07-18
[taxonomies]
tags = ["en-au", "books", "things i learnt", "personal", "say no"]
+++
Sometimes, you'll have to say no: No, I can't do it; no, it can't be made in
this time; no, I don't feel capable of doing this; no, I don't feel
comfortable writing this.
<!-- more -->
Saying no doesn't mean you won't do it. Once I had to say to our CTO: "Ok,
I'll do it, but I want to note that I don't agree with what we are doing." In
the end, the app was barred exactly because the thing we were doing.
Being explicit about what you don't feel is a good point may not be what some
higher ups are expecting. The fact that you don't approve but will do it
anyway may be something that can either show that your not simply a drone or,
unfortunately, label you as a "troublemaker". Honestly, if you feel it threw
you in the former, you should start looking for a new place to work. If you
said you won't be comfortable and still _did the work_, and they had to label
you something, then this place doesn't respect you as a person.
{{ chapters(prev_chapter_link="/books/things-i-learnt/coc", prev_chapter_title="Code of Conduct Protect YOU, Not THEM", next_chapter_link="/books/things-i-learnt/responsible-code", next_chapter_title="Take Responsibility For The Use Of Your Code") }}

2
content/books/things-i-learnt/stupid-bugs-list/index.md

@ -21,4 +21,4 @@ what went wrong.
If I just had a list of stupid bugs that took me about 1 hour or more to If I just had a list of stupid bugs that took me about 1 hour or more to
solve, I wouldn't be stuck for another hour figuring out what went wrong. solve, I wouldn't be stuck for another hour figuring out what went wrong.
{{ chapters(prev_chapter_link="/books/things-i-learnt/specialists", prev_chapter_title="Companies Look For Specialists But Keep Generalists Longer") }} {{ chapters(prev_chapter_link="/books/things-i-learnt/specialists", prev_chapter_title="Companies Look For Specialists But Keep Generalists Longer", next_chapter_link="/books/things-i-learnt/time-to-stop", next_chapter_title="When It's Time to Stop, It's Time To Stop") }}

25
content/books/things-i-learnt/time-to-stop/index.md

@ -0,0 +1,25 @@
+++
title = "Things I Learnt The Hard Way - When It's Time to Stop, It's Time To Stop"
date = 2019-07-18
[taxonomies]
tags = ["en-au", "books", "things i learnt", "personal", "stop", "personal time"]
+++
Learn when you can't code anymore.
<!-- more -->
Learn when you can't process things anymore.
Don't push beyond that, it will just make things worse in the future.
I tried to keep coding once when I had a migraine (not strong, but not mild).
Next day, when I was better, I had to rewrite most of the stuff I did, 'cause
it was all shit.
Also, when you're not feeling fine, you won't be able to concentrate and your
productivity will plunge. It's a lot better to be a burden to society at your
own place than a burden to society at work.
{{ chapters(prev_chapter_link="/books/things-i-learnt/stupid-bugs-list", prev_chapter_title="Keep A List of Stupid Bugs That Took More Than 1 Hour To Solve", next_chapter_link="/books/things-i-learnt/coc", next_chapter_title="Code of Conduct Protect YOU, Not THEM") }}

2
content/books/things-i-learnt/units/index.md

@ -26,4 +26,4 @@ That's why adding units to the function or parameters make sense. It removes
the ambiguity of what it means and doesn't rely on some specialized IDE/Editor the ambiguity of what it means and doesn't rely on some specialized IDE/Editor
that display the parameter names. that display the parameter names.
{{ chapters(prev_chapter_link="/books/things-i-learnt/optimization", prev_chapter_title="Optimization Is For Compilers", 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/optimization", prev_chapter_title="Optimization Is For Compilers", next_chapter_link="/books/things-i-learnt/run-locally", next_chapter_title="If It Doesn't Run On Your Computer, You Have A Problem") }}

Loading…
Cancel
Save