oselhn
oselhn on Hacker News
Exactly. Also I am pretty sure that every few months will someone find more appropriate symbol for each tag.
It is not only about the adds. Even if you pay, they will still spy on you and sell/use this data to show you adds somewhere else on the internet. I will start paying only if they treat me as customer and not as product.
I prefer to fix bugs before they hit production. It is almost impossible to do that without tests. Also testable code is usually much more readable than untestable god objects, tightly coupled modules and spagetti code.
No, first question I would have: Why are you talking so much about your education?
It feels like profile from a guy who just finished school. I do not thing that education is that important in startups or business generally.
Did the same thing on work email and found only messages from gitlab. But only 10% of those messages were marked as spam the others were in inbox so I did not notice. This convinced me not to trust gmail antispam.
But that is just one one electron app. Imagine that every desktop app you use is written in electron. I am pretty sure that even 32GB workstation would be stretched to the limits.
Because it is not used by runtime. Mypy is just linter which adds additional restrictions on code which are not enforced by interpreter. You can have false positives so correct python code must be fixed to pass linter checks. In my opinion if you need static type checks you should use statically typed language and not hurt your coding speed by such partial solution. Also majority of python libraries do not use type annotations so you are limited to your code.
I do not understand what people like about vscode. If I ignore insane resource consumption this is at most average IDE (the only real benefit over sublime "text editor" is integrated debugger). This is most preferred editor at work so I am forced to work with it and there are some of the most serious issues I have:
1. Only one side panel, so I can't see outline, test results and project files at the same time as I am used to see on widescreen monitors in other IDEs.
2. Language servers are still not comparable to solutions offered by java IDEs and in case of C++ they are worse than anything else I used.
3. Python extension constantly forgets and founds unit test. There is little support for unit test in other languages.
4. Official C++ extension despite being completely useless consumes several gigabytes of space for "indexed" files (I wonder if it is so bad to not hurt sales of Visual Studio). I also tried to use clangd which is better but there is still a lot of work to be done before it is useful.
I like sublime rust support for really small projects and eclipse support for larger projects (which is not ideal) but I have not coded anything serious in rust yet, so I do not know if there is some good IDE.
I tried to use type hints but I do not see enough value in them to justify making code more complex. It looks to me that they are similar to hungarian notation as they make refactoring harder but they are not reliable and does provide little value in checking program correctness. They are just documentation embedded into variable declaration used only for linting so I tend to not trust them.
Recently started working on Typescript project and it looks to me like java with really poor tooling, C++ like compilation times and huge mess in libraries (i.e. how to determine which version of @types package I need). I think that Typescript is really step back from java.
If you do that you will probably hurt your productivity. There still will possible errors made by using 3rd party code.
In my opinion optional type checking is not comparable to statically typed language guaranties. So if I do not need types I would use python. If I need/want type specification I would use statically typed language.
Only if they are correct. I am pretty sure that in old code base it will not be correct unless automatically checked before commit.
That's not true. From my experience unit tests are great for agile. It will allow you to create "trusted" modules which you can move around and rework much easier (you can also treat your tests as executable documentation). Without tests you can't safely do any change to existing code especially if you are changing code written by someone else. You have to risk it and than spent considerable time in debugger if it breaks something unrelated to your feature.
It was the same for me. I was scared that I would be dependent on drugs for the rest of my life. So I avoided doctor and cured myself with some kind of "psychoterapy" and change of lifestyle. When I felt really down I smoked marijuana a little but not more than once a week for the same reason.
Actually I really do not like VSC resource consumption and performance. It feels more like eclipse than text editor but it does not offer as many features. If I want something fast and lightweight I reach for vim or sublime. But I do not care about start time as I leave all those program open all the time.
I worked on real program developed this way. It was Android/iOS tablet application with large part done in C++. C++ part was somehow generated from Java prototype and development was than outsourced to India. Those guys probably never seen C++ before, so they assumed program is correct and they used same style to extend the application. US managers were just filling reports with green/yellow/red markers preparing for release and having no clue about real state of the app. I worked for another contractor which was also working on this project (there were about 50 people working on small tablet app). I tried to fix those issues but it was really too much work and some guys just continued to broke the program as they really believed they are doing good job. So I decided to find another job and never work for huge US corporation again.
The same trick was used to convinced Putin to go for olympic games in Sochi. Except they used ad in radio programme [1].
[1] All the Kremlin's Men by Mikhail Zygar
I am C++ programmer so maybe it is different but from my experience projects with only integration tests are nightmare.
1. Integration tests let you know that something is wrong but they are mostly useless for locating bug in larger code base. They do not help you much when you write code.
2. Unit tests force you to think about code structure. Code not covered by unit tests is usually much worse in terms of readability and maintainability. (It is hard to write unit tests for huge functions or for spaghetti code but integration tests are not affected by this.)
I agree. But I reacted on comments disqusing if this algorithm is capable of doing more than targeting ads to make them cost effective.
I had one incident which convinced me that their algorithm is easily fooled even by single misclick.
I hate ads propagating alcohol so I always report them to FB. Once I misclicked and instead of reporting it I opened linked article. Based on that click FB added alcohol to my interests. It did not matter that I reported all other similar adds before and also after that.
Comparing it to similar native app like pidgin it is still about 10 times more.
You can successfully use this approach only if you do not have external dependencies. If you use some library you have basically the same problem as multirepos. I worked in companies with monorepo and it work really well. Except all external dependencies were copied into monorepo, outdated and with unpatched security problems because no one ever updated them unless there was some functionality missing. Also there were some internal libraries for logging etc. which were worse than publicly available alternatives but it was easier to maintain them then use something standard.
I agree that C++ is bad but I actually find C much worse for projects bigger than a few thousands of lines. Reasons for this:
* lack of namespaces - all names with long prefix look the same to me
* just text based macros
* no generics
* error handling usually based on int constants and output function parameters - in big projects is hard to use them consistently without any type checking
* no polymorphism
* ton of undefined behavior (almost the same as C++)
I feel that problem is educational system. At least in my country it is optimized for grading what children know but it fails badly to teach or motivate them. So children are forced to learn it by themselves or find someone to help and it is enough to learn for exams. This is not fun. They are just learning things they do not understand and they don't know how to use it for anything else than exam. All attempts to improve it usually start by redesigning exams which couldn't help but it is the easiest approach with fast results.
I worked on huge old codebase. Mostly int return values were used as error indicator. But there were at least 3 non-compatible error enums (OK/ERR, PROCESSED/UNKNOWN/ERR, 1/0). Those enums partially used the same int values so you had to make sure to not mix them up (as you pointed documentation was frequently incorrect). Usually it took me several hours to check that error handling in some function is consistent or determine which of those enums is used. You can make huge mess with explicit error handling too.
I do not think that someone wants to use C++11/14 to make app prototype. There are a lot more languages now which in my opinion are better suited to prototyping than languages mentioned in article. Most of people will use Python, JS or some other scripting language.
What is even worse that those guys are not able to use C++ properly. They created function with more than 1000 lines with so many branches! It will be almost impossible to write test which tries all code paths. I do not think that changing language would help in this case with such programmers.
The bug happened in "inlined constructor" so they should check all uses of this class/struct to check if it is not copied to other places (and probably all other structs/classes).
When I read those posts I am really happy not to live in US. I am struggling to work even 40 hours week since my junior days (my typical week would be 35 - 37h). When I feel drained I just go home and don't sit in the office doing nothing. I am not doing less work or lower quality work than others (even if I compare myself to US team members). I also have some time to study new stuff at work so this is not problem with short hours too. I probably earn less money but I would not have time to spent US salary anyway with such working hours.