1. You reaching for social media is not from ADHD but from habitually doing it. Sure your adhd might be why you’re prone to them but still a habit. You do it when you’re not mentally stimulated. I have deleted the Reddit app (well Apollo) from my phone a dozen times. I’ll go to open the app and it’s obviously not there. That’s the habit.
Do whatever you can to break this habit. For me, its deleting the app when I feel I’m spending too much time on it. Go a week or two without it and then I “reset” that habit and time I spend on it.
2. The second problem is not being able to focus on a book. Good luck. I read A LOT but mostly tech articles. I read 1-4 books a year typically poolside on vacation. The times I’m at home reading a book, I typically will read for 6 hours straight. I’ll chew through it in a day or two. Then I can’t read another book, no matter how hard I try, for months. Unfortunately for us, you just have to follow the dopamine.
First, congratulations on the new job! First programming job is exciting!
We have all been there before. Don’t sweat it too much but also don’t ignore it (you don’t seem like you are so that’s good).
Idk what you’ll be doing more of. Identify where you’ll do most of your work on focus on that. DO NOT try to learn everything at once. Maybe that means building a react app with no backend and using 3rd party services. Maybe it’s making a pure api backend and using paw/insomnia/postman to query it.
1. Go to seniors before you go to Jrs for advice. There’s a reason someone is labeled “senior”.
2. Read read and read. Go find a book on fastapi if it exists.
3. Document anything you find weird. Your coworkers will love you for it. Documenting is like teaching and you can’t do it without understanding that piece of code. Furthermore, when you make a PR with those new docs, your coworkers get a chance to say “hey you don’t fully understand this”.
4. What areas are you weak on in fundamental programming? I find most people that struggle with a framework really
lack understanding in the fundamentals. If you do not, go read a book.
- Do you actually know OOP?
- Can you articulate the difference between pass by value vs reference?
- Do you understand how the HTTP request cycle works? What about Tls, cors, http methods, etc?
- Synchronous vs asynchronous code?
- Scope & closures?
- The DOM?
- (This one bothers me now a days) Can you actually write vanilla js? Do you understand what react (or others) are doing under the hood?
None of these are attacks. Be honest with what you don’t know and go learn it!
5. Create a project with the exact technology. Deploy it to the same services. Yes deploying is Ops but understanding the lifecycle of your code is important. Yes you will rip your hair out deploying on aws instead of heroku. Yes it will suck. But yes, you will be a better programmer.
This is going to be the most important one:
6. Stop comparing yourself to others. Time of programming means nothing. Unless you both read the exact same books and did the exact same projects and solved the same leet code problems, you’re comparing apples to oranges. For all you know, they could have a mentor. Maybe you were reading the worst guides ever and they read the best. Pondering how this happened won’t do you any good. Just keep moving forward!
Programming is not a job you get to walk away from after your 8hrs. You can but others will leave you in the dust.
You can do this! Do your best not to stress the day to day. Focus on growth. I promise you, if you focus on learning, 90 days from now you’ll question why you were even stressed out. You just have to be honest about what you don’t know and learn it.
I think I have to disagree with this one. I agree programming is cyclical.
But I don’t think we will get rid of CDN’s. I don’t see js going anywhere and with that, I think package managers and bundlers are here with it. I can’t see people going back to vanilla js (even if someone made a more modern jquery alt).
Why do you think start ups would go back to writing their own deps if the ecosystem is mature and said dependency wasn’t part of the core business?
Yeah definitely an overstatement. I probably should spend some time thinking about other services and how they might be built? Could be a fun system design exercise.
Limitations could include: Caching queries, netlify doesn’t offer any kind of firewall like you can when using aws directly so you have to roll your own auth, vendor lock-in, datadog is the best option for log monitoring since it’s the only option both netlify and hasura dump too, hasuras monitoring service is only available on their cloud (not the oss version).
Don’t get me wrong, there are definitely limitations. And we haven’t even scaled to something like 100k+ users so I’m sure other limitations haven’t even shown themselves.
But I can’t even comment on that since I’ve never worked on something of that scale yet. I guess my question was more for MVP crud apps.
Just run some migrations, you have a full backend accessible via GraphQL. Add some event triggers and you can hit rest endpoints from changes in your db. Add some custom actions and your fe can hit your rest api for more complex tasks without leaving gql land.
It’s just less code to get things done. But that’s why I’m leaning into the expertise that can be found on HN! I would never claim my opinions are “right”
> you have a full backend accessible via GraphQL. Add some event triggers and you can hit rest endpoints from changes in your db. Add some custom actions and your fe can hit your rest api for more complex tasks without leaving gql land
a) You're assuming everyone agrees GraphQL is always the way to go, which is far from common wisdom. Why is superior - especially for MVPs?
b) You're assuming that create CRUD MVPS in something like Python/Ruby/Node is slower/more complicated than what you're describing here, which is also far from certain. If we're talking about Hackathon style level of code they are all perfectly capable in building CRUDs really quickly.
I'm not saying you're necessarily wrong, I just think you haven't thought hard enough about the tradeoffs.
I'm a newer dev so pardon my ignorance. Is webassembly the new, more open JVM? Feels like that write once, run everywhere but this time with any(most) mainstream language.
I certainly would not say ‘more open’. It is newer, but that's a mark against it, not for it.
It lacks most of java's ‘batteries’—there are projects like WASI that try to resolve this at a low level, but they miss the point somewhat. On the other hand, wasm is saddled with fewer assumptions about the type of code that will run on it. Wasm has generally poorer performance, which is mostly (though not entirely) an artifact of its design, and hence not easily rectifiable[0]. It's not clear to me the extent to which the jvm suffers similarly[1].
Socially, I think wasm is not as interesting as java. Write-once-run-anywhere was solved in practice not by java but by open source; by compatibility libraries like sdl; by standards, like posix and opengl; and by static linking. (Yes, it's not quite as convenient as just plopping in a jar, but it's close enough.)
I don't think we're ever going to see a desktop full of wasm apps. Despite stated goals, the point of wasm was always to be an evolution of the web as a platform for applets. The Birth and Death of Yavascript[2] has many insights thataways (even though it failed to predict wasm as such).
1. It's also difficult to directly compare the performance of the two systems in their current state. A number of proposals for both (gc for wasm, value types for java, simd for both) are yet pending and are likely to change the runtimes' respective performance profiles.
It seems like it's headed that way. At the moment, it's only really practical to generate WASM from compiled languages, or really small languages, like Lua. And your interfaces to the browser (and thus, the outside world) itself are pretty limited, so still lots of javascript involved.
I sometimes wonder what the world would be like if Lua had zero based indices and saw a bit broader adoption. It's such an easy language to embed/extends although QuickJS looks like it's going to give it a run for the money in the long term given the similar goals on ease of embedding.
I wonder if anyone has compiled QuickJS to WASM and run it in the browser.
Yes, but for interpreted language 'X', are the created artifacts of a practical size to send down the wire for an actual production site? The idea being that as WASM adds higher level primitives, that size gets smaller.
I'm also trying to build a mental model of what wasm is so someone correct me if I'm wrong.
As I understand, the JVM adds a thick layer of abstraction between incoming bytecode and output machine instructions. A wasm "runtime" OTOH adds a much thinner abstraction between incoming wasm and outputted machine code. It's a fairly 1:1 transformation.
However, I think you're correct in that, in order to serve as a host for GC'd and/or web-API-aware scripting languages (DOM, etc), a wasm runtime will need to become more JVM-like. How will wasm remain "web assembly" while doing that? No idea. This is where my mental model breaks down.
Not really, whilst bytecode would be slightly harder to verify than an AST a paranoid interpreter wasn't that hard to craft.
Iirc J2ME impls could be fairly secure (barring bugs since many were written in an age before security became a focus), and I think the spec even mandated pre-computed stack-frames (the expensive part of verification that is easy to post-validate for correctness).
Another part of J2ME was because like wasm/web, the runtime API was fairly small and all code could be contained within the sandbox with only API-extensions allowed to be native functions. (This restricted API and it's quite sad UI capabilities was probably part of why Apple ignored it entirely for iPhones)
What was much worse however was the mainline JVM and the Applets, Applets had from day 1 relied on all kinds of mainline JVM features and this featureset kept growing.
Features were encouraged to be written as much as possible in Java but many still had more or less large native parts. This is in addition to the core that allows for quite a bit of code loading,etc (that was allowed from applets).
All these features and loading that could allow for insecure behaviour was secured by a security policy system, sadly there was so many features that were exposed that used powerful dynamic features (the because they were whitelisted) allowed for untrusted code to behave or do stuff only trusted code should.
This is my take as well. Google will sooner run at a loss in certain countries if it means not giving other competitors so much as an inch. Ads are their kingdom. They will protect it at all costs, even if that is giving up some revenue.
What I am waiting to see next is, how will other countries/industries respond? Some countries may institute the same thing as Australia. Other industries may try to take a cut as well.
Isn't that why some coins are moving to proof of stake instead of proof of work? Solves the energy crisis. Idk if proof of stake prevents 51% attacks though.
Proof of stake does not offer any resistance to Cybil attack or (part time) collusion of stake holders.
In the case of such attacks the victims will find themselves in a situation that can be described as "shadow ban" - their transactions are not accepted or accepted too late, etc.
Proof of stake doesn't prevent 51% attacks. It eliminates the incentive. If an attacker controls 51% of coins, why would they attack the network? That would be attacking their own wealth.
Not if they can attack the network without anybody knowing. If an attacker secretly controls 51% of the coins (by, say, having three separate entities that each control 15-20%) and can manipulate the market in their favor by rejecting transactions that would hurt them, that's a big incentive.
Why is no metaprogramming a good thing? I'm mostly a web dev but I've played with crystal quite a bit. Crystal embraces macros & metaprogramming. Its almost a language within the language.
Furthermore, isn't go a statically compiled language? Why isn't go comparable to c + others?
As a ruby developer who went through a stage of being enamored with meta-programming, I'd argue that it's siren song: enticing, but dangerous and destructive. It's especially dangerous because it's fun to write -- it scratches the "I'm so clever" itch -- but is a disaster to read, and a disaster to maintain.
Aside from just wanting to be creative, the desire to do it usually indicates either a missing core language feature, or a programmer's missing knowledge of how to use core features effectively and idiomatically. Otherwise you'd use the simple core language feature (the one every developer is guaranteed to know how to use already) to achieve your goal.
The other reason it's sometimes used is prioritizing terseness over simplicity. That is, you introduce some meta-programming abstraction that saves you some LOC, but at the cost of abstraction overhead. Almost always, you're better off with the reverse priorities.
Because what zig does is much more intuitive: it has a comptime keyword that allows you to execute almost any function at compile time.
So you use the same language for programming and metaprogramming, there’s no weird second syntax to learn.
Even better, they also use that approach for generics, where types are just comptime parameters. Again, makes the syntax more consistent and requires less different ways of thinking.
I’d argue this is 2 problems.
1. You reaching for social media is not from ADHD but from habitually doing it. Sure your adhd might be why you’re prone to them but still a habit. You do it when you’re not mentally stimulated. I have deleted the Reddit app (well Apollo) from my phone a dozen times. I’ll go to open the app and it’s obviously not there. That’s the habit.
Do whatever you can to break this habit. For me, its deleting the app when I feel I’m spending too much time on it. Go a week or two without it and then I “reset” that habit and time I spend on it.
2. The second problem is not being able to focus on a book. Good luck. I read A LOT but mostly tech articles. I read 1-4 books a year typically poolside on vacation. The times I’m at home reading a book, I typically will read for 6 hours straight. I’ll chew through it in a day or two. Then I can’t read another book, no matter how hard I try, for months. Unfortunately for us, you just have to follow the dopamine.