From 69fc19cfccfe2b4d73e5e9de87d41196f705ac30 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Thu, 18 Jul 2019 10:47:45 -0300 Subject: [PATCH 1/6] New chapter: run things locally --- content/books/things-i-learnt/_index.md | 1 + .../things-i-learnt/config-file/index.md | 2 +- .../things-i-learnt/run-locally/index.md | 42 +++++++++++++++++++ content/books/things-i-learnt/units/index.md | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 content/books/things-i-learnt/run-locally/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index 2a62fa5..f62ea79 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -53,6 +53,7 @@ template = "section-contentless.html" * [Always Use UTF-8 For Your Strings](use-utf8) * [Optimization Is For Compilers](optimization) * [Units Makes Things Clear](units) + * [If It Doesn't Run On Your Computer, You Have A Problem](run-locally) * 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 f6884a8..5805823 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/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") }} diff --git a/content/books/things-i-learnt/run-locally/index.md b/content/books/things-i-learnt/run-locally/index.md new file mode 100644 index 0000000..9442b01 --- /dev/null +++ b/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. + + + +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") }} diff --git a/content/books/things-i-learnt/units/index.md b/content/books/things-i-learnt/units/index.md index 9537884..d3225c9 100644 --- a/content/books/things-i-learnt/units/index.md +++ b/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 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") }} From 3ec02384fe73ef546077f0d05be43f58c725e531 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Thu, 18 Jul 2019 10:57:50 -0300 Subject: [PATCH 2/6] New chapter: time to stop --- content/books/things-i-learnt/_index.md | 1 + .../things-i-learnt/stupid-bugs-list/index.md | 2 +- .../things-i-learnt/time-to-stop/index.md | 25 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 content/books/things-i-learnt/time-to-stop/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index f62ea79..1962006 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -73,3 +73,4 @@ template = "section-contentless.html" * Personal * [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) + * [When It's Time to Stop, It's Time To Stop](time-to-stop) diff --git a/content/books/things-i-learnt/stupid-bugs-list/index.md b/content/books/things-i-learnt/stupid-bugs-list/index.md index 754994f..c3f19ae 100644 --- a/content/books/things-i-learnt/stupid-bugs-list/index.md +++ b/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 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") }} diff --git a/content/books/things-i-learnt/time-to-stop/index.md b/content/books/things-i-learnt/time-to-stop/index.md new file mode 100644 index 0000000..dfdf3d3 --- /dev/null +++ b/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. + + + +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") }} From f38f355e7b5247acb5753029cf4cb6bb32be3f2a Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Thu, 18 Jul 2019 11:03:33 -0300 Subject: [PATCH 3/6] New chapter: CoC --- content/books/things-i-learnt/_index.md | 1 + content/books/things-i-learnt/coc/index.md | 27 +++++++++++++++++++ .../things-i-learnt/time-to-stop/index.md | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 content/books/things-i-learnt/coc/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index 1962006..d517ba2 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -74,3 +74,4 @@ template = "section-contentless.html" * [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) * [When It's Time to Stop, It's Time To Stop](time-to-stop) + * [Code of Conduct Protect YOU, Not THEM](coc) diff --git a/content/books/things-i-learnt/coc/index.md b/content/books/things-i-learnt/coc/index.md new file mode 100644 index 0000000..ae5c1d7 --- /dev/null +++ b/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. + + + +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") }} diff --git a/content/books/things-i-learnt/time-to-stop/index.md b/content/books/things-i-learnt/time-to-stop/index.md index dfdf3d3..32b46ec 100644 --- a/content/books/things-i-learnt/time-to-stop/index.md +++ b/content/books/things-i-learnt/time-to-stop/index.md @@ -22,4 +22,4 @@ 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") }} +{{ 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") }} From 231714befde8b3686626653551a653de30645179 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Thu, 18 Jul 2019 11:12:39 -0300 Subject: [PATCH 4/6] New chapter: say no --- content/books/things-i-learnt/_index.md | 1 + content/books/things-i-learnt/coc/index.md | 2 +- content/books/things-i-learnt/say-no/index.md | 27 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 content/books/things-i-learnt/say-no/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index d517ba2..31079ba 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -75,3 +75,4 @@ template = "section-contentless.html" * [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) diff --git a/content/books/things-i-learnt/coc/index.md b/content/books/things-i-learnt/coc/index.md index ae5c1d7..8701a4b 100644 --- a/content/books/things-i-learnt/coc/index.md +++ b/content/books/things-i-learnt/coc/index.md @@ -24,4 +24,4 @@ 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") }} +{{ 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") }} diff --git a/content/books/things-i-learnt/say-no/index.md b/content/books/things-i-learnt/say-no/index.md new file mode 100644 index 0000000..4640070 --- /dev/null +++ b/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. + + + +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") }} From d0ccd201e0a530608b4c147d92bbeecd8a9bb86d Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Thu, 18 Jul 2019 11:26:14 -0300 Subject: [PATCH 5/6] New chapter: responsible code --- content/books/things-i-learnt/_index.md | 1 + .../things-i-learnt/responsible-code/index.md | 48 +++++++++++++++++++ content/books/things-i-learnt/say-no/index.md | 2 +- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 content/books/things-i-learnt/responsible-code/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index 31079ba..faa1fe8 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -76,3 +76,4 @@ template = "section-contentless.html" * [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) diff --git a/content/books/things-i-learnt/responsible-code/index.md b/content/books/things-i-learnt/responsible-code/index.md new file mode 100644 index 0000000..d86b631 --- /dev/null +++ b/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". + + + +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") }} diff --git a/content/books/things-i-learnt/say-no/index.md b/content/books/things-i-learnt/say-no/index.md index 4640070..614c55b 100644 --- a/content/books/things-i-learnt/say-no/index.md +++ b/content/books/things-i-learnt/say-no/index.md @@ -24,4 +24,4 @@ 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") }} +{{ 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") }} From 9261ef6686cc2808a9556d9f50c0912bbcdb8f46 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Thu, 18 Jul 2019 12:17:49 -0300 Subject: [PATCH 6/6] New chapter: Dont say it is done --- content/books/things-i-learnt/_index.md | 1 + .../books/things-i-learnt/not-done/index.md | 33 +++++++++++++++++++ .../things-i-learnt/responsible-code/index.md | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 content/books/things-i-learnt/not-done/index.md diff --git a/content/books/things-i-learnt/_index.md b/content/books/things-i-learnt/_index.md index faa1fe8..dd43721 100644 --- a/content/books/things-i-learnt/_index.md +++ b/content/books/things-i-learnt/_index.md @@ -77,3 +77,4 @@ template = "section-contentless.html" * [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) diff --git a/content/books/things-i-learnt/not-done/index.md b/content/books/things-i-learnt/not-done/index.md new file mode 100644 index 0000000..d0c062d --- /dev/null +++ b/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. + + + +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") }} diff --git a/content/books/things-i-learnt/responsible-code/index.md b/content/books/things-i-learnt/responsible-code/index.md index d86b631..bbccbf9 100644 --- a/content/books/things-i-learnt/responsible-code/index.md +++ b/content/books/things-i-learnt/responsible-code/index.md @@ -45,4 +45,4 @@ 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") }} +{{ 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") }}