en
Feedback
Good dev knows

Good dev knows

Open in Telegram

Everything what the good dev shall know. Stories, hard skills, soft skills. Regularly. Instagram: https://www.instagram.com/gooddevknows/ Questions: @PavloPoliakov

Show more
The country is not specifiedThe category is not specified
2 698
Subscribers
No data24 hours
No data7 days
No data30 days

Data loading in progress...

Similar Channels
No data
Any problems? Please refresh the page or contact our support manager.
Tags Cloud
No data
Any problems? Please refresh the page or contact our support manager.
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
July '24
July '24
+4
in 0 channels
June '24
+9
in 0 channels
Get PRO
May '24
+11
in 0 channels
Get PRO
April '240
in 1 channels
Get PRO
March '24
+1
in 1 channels
Get PRO
February '24
+10
in 0 channels
Get PRO
January '240
in 0 channels
Get PRO
December '23
+22
in 0 channels
Get PRO
November '23
+34
in 0 channels
Get PRO
October '23
+31
in 0 channels
Get PRO
September '23
+35
in 0 channels
Get PRO
August '23
+95
in 0 channels
Get PRO
July '23
+52
in 0 channels
Get PRO
June '23
+32
in 0 channels
Get PRO
May '23
+30
in 0 channels
Get PRO
April '23
+33
in 0 channels
Get PRO
March '23
+32
in 0 channels
Get PRO
February '23
+51
in 0 channels
Get PRO
January '23
+48
in 0 channels
Get PRO
December '22
+26
in 0 channels
Get PRO
November '22
+28
in 0 channels
Get PRO
October '22
+36
in 0 channels
Get PRO
September '22
+36
in 0 channels
Get PRO
August '22
+43
in 0 channels
Get PRO
July '22
+37
in 0 channels
Get PRO
June '22
+21
in 0 channels
Get PRO
May '22
+47
in 0 channels
Get PRO
April '22
+36
in 0 channels
Get PRO
March '22
+57
in 0 channels
Get PRO
February '22
+1 187
in 0 channels
Get PRO
January '22
+1 370
in 0 channels
Get PRO
December '21
+374
in 0 channels
Get PRO
November '21
+814
in 0 channels
Get PRO
October '21
+897
in 0 channels
Get PRO
September '21
+439
in 0 channels
Date
Subscriber Growth
Mentions
Channels
24 July0
23 July0
22 July0
21 July0
20 July+2
19 July0
18 July0
17 July0
16 July+1
15 July0
14 July0
13 July0
12 July0
11 July+1
10 July0
09 July0
08 July0
07 July0
06 July0
05 July0
04 July0
03 July0
02 July0
01 July0
Channel Posts

2
⚑️ Channel needs your energy Telegram just dropped stories for channel functionality. It is not enabled by default, subscribers of the channel need to boost the channel to enable stories posting. For our channel we need just 12 boosts. And another interesting piece of statistics β€” we have 346 premium members here, already. Btw, being in Germany, I can not buy premium neither can I be gifted one. But there is a positive side as well β€” no Telegram ads. Each time I live Germany they start to appear. 🚒Let's boost and see what happens. For example, I would have shown you a giant ship a day before yesterday if I had that option. https://t.me/gooddevknows?boost
1 455
3
⚑️ Channel needs your energy Telegram just dropped stories for channel functionality. It is not enabled by default, subscribers of the channel need to boost the channel to enable stories posting. For our channel we need just 12 boosts. And another interesting piece of statistics β€” we have 346 premium members here, already. Btw, being in Germany, I can not buy premium neither can I be gifted one. But there is a positive side as well β€” no Telegram ads. Each time I live Germany they start to appear. 🚒Let's boost and see what happens. For example, I would have shown you a giant ship a day before yesterday if I had that option.
1
4
πŸ§ͺ ChatGTP hallucinations Today I got tricked by ChatGTP. I asked it to help me write a custom AWS policy, and it quite confidently told me that I shall use {"s3:RequestTag/validationProvider": "TEST"} and everything will be great. So I did it this way, AWS accepted my code, but nothing was great, and the thing I wanted to work β€” did not. After some time of googling and checking the AWS IAM UI I found out that there is no RequestTag for S3, but there is RequestObjectTag. I made that change, and it started to work as I wanted it to πŸš€ Still, I can say ChatGPT saved me some time, but we shall not forget that we cannot trust it blindly. Honestly speaking, it wasn't a complete hallucination because there is such a thing as RequestTag at AWS; it just has a different context, not the S3 one. Happy ChatGTP to everyone!
1 084
5
❄️ Unique ids We need ids to store the records and later refer to them. Numeric ids are good, but usually you do not want to expose them to the end customer because they can be enumerated. There are alternatives. Let's explore them. * uuid. This is a standard, right? It's a default that everyone uses to generate a unique id. You can use this id and assume that no other machine or person in this universe will generate the same one. Example: 858e93a4-ff8d-11ed-be56-0242ac120002. * nanoid. Small js (and not only) library, which generates short ids. Short ids and a small size are the benefits of this library over the "default" uuid/v4 that it generates shorter (you can even choose the length) ids and the size of the library is smaller. Example: zWSK7f4at3iI7TdMP-mYz. * ulid. This one was new for me. It generates unique ids that are sortable in time. So when you have two of them, you can learn which was generated earlier. Basically, the timestamp is encoded there. Example: 01H1RF7HDAH1MY7E05S6MFC8QS. ⬛️ Do you know any other interesting approaches? Please, share.
999
6
πŸ‘‹ Good day, Just published a long read called "How to be a great feature lead", where I summed up my experience of being such for many many times. There is no clear definition in the community what does it mean to be a "feature lead", but we all do that at some point. Being a feature lead is a safe stepping stone in your career development path, but not only, you will play such role almost on any grade. This is why it's important to know how to play it right β€” making it beneficial both for you and the business. This article, unlike many other ones, tells you about the role from the "soft skills" perspective. They are not related to the project or to the technology which you are using, these skills and attitude will help you throughout your whole tech life. The article is really long, but it's another benefit β€” it covers the process end-to-end. After you read it, you will be able to use these tools right away, no matter where are you now from the feature lead process perspective. Hope to get your feedback either here or on Medium. This article is also available on dev.to.
1 036
7
πŸ“š Modern Software Engineering I promised to deliver you an exclusive content in March and here you are. Review of the book "
πŸ“š Modern Software Engineering I promised to deliver you an exclusive content in March and here you are. Review of the book "Modern Software Engineering" β€” everything what you need to know to develop confidently. I decided to publish a video instead of the live session, so more people can watch it with their own pace. Please, share what do you think of it in the comments.
1 129
8
Good day, everyone, Thanks for the active participation in the fundraising. Your donations mean a lot to me πŸ€— But not only to me, we are doing the right thing. Here I report about the results: PayPal: 876.15€, 19 people n26: 50€, 1 person Mono: 3210 UAH, 9 people + 200€ from me Money were already transferred to the destination organisation. Have a good day β˜€οΈ
961
9
No text...
1 458
10
Good day, Here are the first stats about the fundraising. Together we've collected. 632.16€ and 1860β‚΄ + 200€ from me. Average donation in EUR is 50€. Biggest donation in UAH is 1000β‚΄. Not bad, but we can do even better. Every cent counts, please, spam me with microdonations. Let's talk a little about the cards themselves. On average, the whole process of the vehicle delivery to Ukraine costs 6000$. These costs include car purchase, fuel, export declarations, train tickets for the people who drive the cars, etc. As you see, what we have is already around 1/5 of the car. But we can do more. Please, continue your donations 🀝. Here are the requisites: IBAN: DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX PayPal: https://www.paypal.com/paypalme/PavloPoliakov or me@pavelpolyakov.com Mono: https://send.monobank.ua/jar/63kXNYa6Nv Below I will attach a video report for the last year, where you can see all variety of cars, which were delivered. That's really impressive. Thank you and Glory to Ukraine! πŸ’™πŸ’›
1 209
11
πŸ‘‹, honorable people, At the end of this week, on the 5th of March, I have a birthday πŸŽ‚ This year I want to get the best present everβ€” the one that brings πŸ‡ΊπŸ‡¦ victory closer. But that's not it, I have something to give away as well. First things first. My close friend Yulia and her team are running a project that delivers cars to the UAF and not only. They are in "business" since 2014 and have direct contacts with people in the field, ones who actually protects our freedom. They have already delivered 350+ cars, and you have already helped them as well. Right now, they have a list of requests for more than 50 cars. I want us to help them as much as we can, so I will gather donations for them until the 5th of March and then transfer everything to Yulia. Every penny helps us to stop this war and prosper. I hope I convinced you to donate, so here are the requisites. Donate, and read what I offer in return. Here are the requisites: IBAN: DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX PayPal: https://www.paypal.com/paypalme/PavloPoliakov or me@pavelpolyakov.com Mono: https://send.monobank.ua/jar/63kXNYa6Nv In return, I promise to organize a stream and present you with my learnings from the book Modern Software Engineering. In just like 30 minutes, you will learn universal rules, which will help your software prosper. How cool is that? As a sneak peak, just have a look at one of the slides that I have prepared 🐘. I bet you don't question why I'm a Principal SE right now. Let's make this fundraiser big. I pledge 200€ and will report on our progress here. Thank you and Glory to Ukraine! πŸ’™πŸ’›
1 154
12
🀝 Helping the team to agree We often discuss something with the team. It can be a discussion about the technology, trying to align on how to fix an issue, a process adjustment, or even an open one. One where it seems that nobody knows what is being discussed and how shall it be ended. I bet you often observed something like this and thought "I wish I can stop it and we can move on". Good news: you can. Let's see how. Often, when such discussions are taking place, this happens because the scope of the initial topic grows and nobody has noticed this. For example, you tried to figure out if you could shift "Stand up" from 09:30 to 10:00, and in five minutes you realise, that the team discusses if you need to have a retrospective this week. Be the one who notices it πŸ‘€. Noticing is the key. As soon as you notice that the scope got bigger, quickly reflect on what is being discussed right now and split it into the different topics. For example: 1. Can we shift a stand up? 2. Which Agile rituals shall we practice? 3. Do we need a retrospective this week? Interrupt your group and share your observation, that you are now trying to solve three topics instead of one. Suggest to align on answering the first one and taking another action on the others (for example, schedule a separate meeting). VoilΓ , you got your answer, and your group is grounded. ⬛️ By dividing the uncontrolled discussion flow into the different questions, we help a group to agree. Because it's much easier to agree on a simple topic, than to agree on something as a whole.
1 206
13
πŸ›  Text manipulation tools How often during your day-to-day work do you work not with the programming language, but with plain text? I do it quite often. There are some tools that help me. 1️⃣ delim.co This is my favorite. Imagine you have a list of 1000 uuids and you need to query your PostgreSQL database about them. What would you do? With the help of delim.co you can convert your list from: f50e781f-233d-461e-948b-db7fae9147f6 ba86bc1b-1b17-4915-bcfa-890be8cb2f40 bf6885cc-76f6-4f68-8ab0-7956b4ec1d34 to 'f50e781f-233d-461e-948b-db7fae9147f6', 'ba86bc1b-1b17-4915-bcfa-890be8cb2f40', 'bf6885cc-76f6-4f68-8ab0-7956b4ec1d34', it helps me a lot! And that tool can do even more. 2️⃣ atob and btoa Another use case. You need to look up your database password from the kubernetes secret. Oh, crap, it's base64 there. Let's google base64 decode. NO! Wrong answer ❌. We can use JavaScript functions atob and btoa and do not post our secrets online. Just open the web console and run: atob("WW91IGFyZSBhd2Vzb21lIQ==") (yes, you are) ⬛️ Which text manipulation tools do you use? Please, share, I'm curious.
939
14
βš™οΈ Test Driven Development Test Driven Development, or TDD. Have you heard of it? Yes, I believe so.Do you practice it? No, I believe. I don't either. Usually I write tests AFTER the code itself. Today I want to talk about the specific angle of TDD β€” using TDD to architect your code. TDD concept is simple: 1. You write your test BEFORE you write any code 2. Then you run the test β€” it shall fail πŸ›‘ 3. Now you write your code/feature 4. You did it write, run your test again β€” it passes βœ… 5. Optimise your code I continue (and finishing!) to read the "Modern Software Engineering" book, and the author has uncovered another perspective of TDD to me. The purpose of this concept lies not in the assumption, that this way you are sure that your code is tested. Even bigger advantage hides, that if you do your development this way β€” you force yourself to write the code which is testable. And if you write code that is testable, there is a high chance, that it will be easy to maintain and extend this code. Why? Because if your code is testable, it's highly likely that you use inversion of control, loose coupling, modularity and other traits which we like to see in the good code. Profit. ⬛️ I remember once I've rediscovered UML and thought that it's great, you do not need to code to design applications. You can just draw diagrams and, this way, run thought experiments for all the ideas in my head. Now it may be even different β€” do not write an app, write tests and design your app this way. I'm going to try it out soon.
973
15
πŸ€– Proxies that help Sometimes during the development process we have to work with other applications. And, from first sight, these applications are a black box. We do not know what they do. How do they interact with the world? There are tools to help. 1️⃣ mitmproxy Once, when I was working on integrating the WebView into the iOS app, I needed to see if the WebView called a specific url. Since everything was happening on the phone, it was not trivial. Luckily, I remembered that I'd heard about mitmproxy (MITM is man in the middle). mitmproxy is a proxy that you can insert between the thing that makes the request and the thing that it calls. So in my case, I ran it on my local machine, configured my iPhone to use the internet through this proxy and then I was able to see all the requests that my iPhone made to the external resources. This way I tracked, that my WebView calls what I want it to call βœ…. It's also very handy for reverse engineering. Just install it, run any app, and see which requests it makes. You can explore the API or even find a vulnerability. 2️⃣ proxyman Another tool, which I discovered only recently, is proxyman. This is a Mac app with a very nice UX, that shows you which calls are done by the software on your machine. ⬛️ Proxies may allow us to observe what does the software do without intruding it. What are your use cases?
902
16
Does your CI pushes into the project's repository? (any project where you contribute)
1 238
17
πŸ€– How much do you trust your robots? Recently, I had to contribute to the project, namely a node module, that belongs to the other team. I did what I wanted, asked my peer to review, and then he merged. I asked, "Can you, please, release it? Or how shall I do this?". His answer was, "You don't need to, it will be released automatically". The gist is, that their project setup is done in a way, that each merge to the main trunk (main branch in their case) might be released through the CI step. Ok, this is not new. Everyone releases using CI. But in their case, they use the semantic release tool. This tool analyses commits, understands which release is it going to be (major, minor, patch), updates the CHANGELOG.md based on the commit messages and then does two things β€” releases the module and pushes back changes to the repository. I need to say that I liked what I saw. Before this point, I was rejecting the idea that CI has the right to write into my repositories. Now I might change my mind. Yes, CI can break your repo or git history, but so can I or my colleagues. But if CI does release, this may remove another portion of the cognitive load from the developer and also force the team to write clear commit messages in the unified format. ⬛️ Perhaps it's time to let CI write into your projects. Let's run the questionary, maybe most of you are already doing that.
1 175
18
🌟 Phase II I continue to watch The Dropout and got another post inspiration idea from there. So Theranos needs to launch a project in September, but their product is far from being ready. What do they do? Elisabeth decides to start the project, do blood analysis using the Simens device, and call it Phase I. Which assumes that the product of Theranos will still be eventually built, but it will be the Phase II. Phase II is a magical place, which we also often use in software development. You work on the feature or a project and by doing that, you and your team often see areas for improvement. You can add more automation, make a better UX, prepare your project for scaling, etc. All these ideas are good, but this impacts our scope. The scope gets bigger, and that delays the project's launch. Good dev knows, that it's more important to launch the project and start measuring whether our idea was right or not, than delay the product launch in favor of perfectionism. Phase II trick allows you to deliver faster. If your team has ideas that are good, but you think that current scope will already help customer or business, suggest them to put these ideas to the epic called "Phase II". This decreases the cognitive load and keeps everyone happy. ⬛️ Our job is to deliver, not "work". There are always more ideas, than resources which our team has. Postpone non critical stuff for later. Later, you will have time to reevaluate these ideas, and, what is also important, you will have more information, that allows you to assess their impact better.
1 066
19
✍️ Writing skills Writing skills are one of the most underestimated skills for a software developer. We are often comfortable thinking that we are paid for the software we produce, but this is not the right answer. We are paid for the problems that we solve. And with good writing skills it's easier to solve issues. I remember once I wrote to my manager a mail, where I asked their approval for the conference visit. What did they answer? Well, they've approved it, but they started their answer with some advice. "Pavel, executive managers have not that much time, so when you want something from them β€” use the pyramid principle. Start from the solution which you suggest and then explain why exactly you think this is what shall be done". Well, this was not the best form of communication, but the advice was good, so I started to use it. When we write the text, we first need to answer the question, "What is the purpose of this message β€” what do I want to achieve?". Then formulate your text or message in such a way, that for the person who reads it, it's easier to do what you want them to do β€” always try to remove the cognitive load. ⬛️ There are many tricks we can use when we communicate via text. Texts are a great form of communication.
1 483
20
πŸŽ₯ The Dropout This week I started to watch a TV series "The Dropout". The one which tells us the story of Elizabeth Holmes and her company Theranos. So far I like it. What did I know about Theranos before watching this series? 1. They wanted to do a rich health analysis at home using just one drop of the patient's blood. 2. They WANTED, but they never figured out how to do that. So they cheated to get more investments. In the 2nd episode it was shown HOW they've cheated. The creators of the series have shown the code on the screen. Let's examine it. pinMode(PIR_PIN, INPUT); Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // if ((result=perform_analysis()) == NULL) { // raise_eception("ERROR"); // return; // } result = load_result("c:\\assays\\20061110T091805.dat"); sleep(67); Serial.println(""); Serial.println("Connected"); lastMovment = millis(); lastTransmission = millis(); } void loop() { bool movementDetected = digitalRead(PIR_PIN); bool okToSend = last != movementDetected; last = movementDetected; if (movementDetected) { lastMovement = millis() Serial.println("Movement detected"); So what the code does? They've just commented out any actual calculations and returned a result from the file. That's a high level overview. 🐞 BUT 1. The file extension is .dbk and it seems it's a Sony Ericsson Mobile Phone Backup File 2. The editor β€” VEX. The only thing I found is Vex (A Visual Editor for XML) 3. The code itself. Serial.begin and Serial.println tell us that this is an Arduino code. 4. raise_eception("ERROR") has a typo 5. They load a file using the Windows path Now let's speculate on their engineering culture β€” I bet they were bad with DORA metrics. ⬛️ Have you watched it?
924