- 419
- 505 328
HAMY LABS
United States
เข้าร่วมเมื่อ 20 ต.ค. 2019
Technomancer building Simple Scalable Systems.
-HAMY.OUT
Want to sponsor this channel? Options: hamy.xyz/labs/sponsors
-HAMY.OUT
Want to sponsor this channel? Options: hamy.xyz/labs/sponsors
How to sign up for YouTube Premium with a Google Workspace Account
In this video we explore how to sign up for YT Premium using your Google Workspace account.
Original blog post with all links: hamy.xyz/blog/2025-01_google-workspace-youtube
Chapters
01:05 - The Problem with TH-cam Premium and Google Workspace
02:10 - How to Sign up for TH-cam Premium with a Google Workspace Account
Links:
- 3 things I don't like about my Lenovo P1 Gen 7 - th-cam.com/video/zLS_Nw9rYDs/w-d-xo.html&ab_channel=HAMYLABS
- How I use the Lenovo ThinkVision M14 as a Portable Vertical Monitor to Code while Traveling - th-cam.com/video/bV-rqf8m9mE/w-d-xo.html&ab_channel=HAMYLABS
- How I plan my day as a Senior Software Engineer - Get the most important thing done every single day - th-cam.com/video/Gwt1IpxfILc/w-d-xo.html&ab_channel=HAMYLABS
About me: I'm Hamilton - a Technomancer. I build Simple Scalable Systems to make the world 1% better.
Connect with me:
- Website: hamy.xyz
- Twitter: @SIRHAMY - SIRHAMY
# Support
If you liked this and would like to see more, consider becoming a supporter: hamy.xyz/labs/haminions
Supporters get:
* Full source code access from courses / tutorials
* Exclusive discounts on products / courses
Plus you help me to keep experimenting / sharing!
For Sponsorship info: hamy.xyz/labs/sponsors
Original blog post with all links: hamy.xyz/blog/2025-01_google-workspace-youtube
Chapters
01:05 - The Problem with TH-cam Premium and Google Workspace
02:10 - How to Sign up for TH-cam Premium with a Google Workspace Account
Links:
- 3 things I don't like about my Lenovo P1 Gen 7 - th-cam.com/video/zLS_Nw9rYDs/w-d-xo.html&ab_channel=HAMYLABS
- How I use the Lenovo ThinkVision M14 as a Portable Vertical Monitor to Code while Traveling - th-cam.com/video/bV-rqf8m9mE/w-d-xo.html&ab_channel=HAMYLABS
- How I plan my day as a Senior Software Engineer - Get the most important thing done every single day - th-cam.com/video/Gwt1IpxfILc/w-d-xo.html&ab_channel=HAMYLABS
About me: I'm Hamilton - a Technomancer. I build Simple Scalable Systems to make the world 1% better.
Connect with me:
- Website: hamy.xyz
- Twitter: @SIRHAMY - SIRHAMY
# Support
If you liked this and would like to see more, consider becoming a supporter: hamy.xyz/labs/haminions
Supporters get:
* Full source code access from courses / tutorials
* Exclusive discounts on products / courses
Plus you help me to keep experimenting / sharing!
For Sponsorship info: hamy.xyz/labs/sponsors
มุมมอง: 39
วีดีโอ
Why I'm Shutting Down 1000 Checkboxes
มุมมอง 1704 ชั่วโมงที่ผ่านมา
In this video we talk about why I'm shutting down 1000 checkboxes and the future of internet checkboxes. Original blog post with all links: hamy.xyz/blog/2025-01_why-im-shutting-down-1000-checkboxes CTA: One Million Checkboxes - onemillioncheckboxes.xyz/ Links: - One Million Checkboxes - Globally Synced Data with HTMX - th-cam.com/video/PhO0s8qNGSI/w-d-xo.html&ab_channel=HAMYLABS - The State of...
How to find a fulfilling career - no matter what you're into
มุมมอง 2089 ชั่วโมงที่ผ่านมา
In this video we talk about some strategies for finding a fulfilling career based on your own interests. Original blog post with all links: hamy.xyz/blog/2025-01_how-to-find-a-fulfilling-career Chapters 01:10 - What should you work on in your life? 03:30 - How can you figure out your calling? 06:30 - Does your calling need to be your job? 10:40 - How to find a fulfilling job Links: - HAMY LABS ...
How to Fix Lenovo P1 Gen 7 Screen Flickering
มุมมอง 25114 ชั่วโมงที่ผ่านมา
In this video we'll discussion solutions to fix the Lenovo P1 Gen 7's screen flickering issue. Original blog post with all links: hamy.xyz/blog/2025-01_fix-lenovo-p1-gen-7-flickering Chapters 01:10 - Lenovo P1 Gen 7's Screen Flickering Issue 02:15 - How to fix screen flickering Links: - 3 things I don't like about my Lenovo P1 Gen 7 - th-cam.com/video/zLS_Nw9rYDs/w-d-xo.html&ab_channel=HAMYLABS...
My 2025 Programming Language Tier List
มุมมอง 1.2K16 ชั่วโมงที่ผ่านมา
In this video we discuss my programming language tier list going into 2025. Original blog post with all links and images: hamy.xyz/labs/2025-01_programming-language-tier-list Chapters 00:30 - 2025 Programming Language Tier List 03:35 - S Tier 04:25 - A: F# 07:15 - A: TypeScript 10:40 - B: JavaScript 12:40 - B: Python 17:00 - B: C# 21:00 - C: Golang 23:50 - D: Hacklang Links: - A Brief Compariso...
How I added an AlpineJS click counter to my HTMX-powered website
มุมมอง 19121 ชั่วโมงที่ผ่านมา
In this video we talk through building a client-side click counter using AlpineJS and how I integrated it with my HTMX-powered website. Original blog post with all links and code: hamy.xyz/labs/2024-12_alpine-js-click-counter CTA: One Million Checkboxes - onemillioncheckboxes.xyz/ Chapters 00:00 - NAME Links: - One Million Checkboxes - Globally Synced Data with HTMX - th-cam.com/video/PhO0s8qNG...
What we learned running F# in production for 5 years
มุมมอง 99214 วันที่ผ่านมา
In this video we explore lessons this developer learned from building and running a SaaS with F# over the past 5 years. Original blog post with all links: hamy.xyz/labs/2024-12_5-years-fsharp-in-production CTA: You can find Ian's original post here: ijrussell.github.io/posts/five-years-in/ Chapters 00:35 - Project Summary 01:40 - What's good about F#? 05:30 - What's bad about F#? 08:55 - Would ...
HAMY LABS - 2024 Review
มุมมอง 10014 วันที่ผ่านมา
In this video we do a year in review of HAMY LABS from Builds to Shares to Business. Original blog post with all links and images: hamy.xyz/labs/2024-12_hamy-labs-2024-review Chapters 00:50 - Shares 01:20 - HAMY LABS TH-cam 05:35 - HAMY GAMES 08:00 - HAMY LABS Blog 13:05 - HAMINIONS Membership 14:15 - HAMY LABS POD 17:50 - HAMY LABS Socials 20:40 - The HAMNIVERSE Newsletter 21:05 - Builds 24:40...
How I Created a Bot for this F# Incremental Clicker Game using JavaScript
มุมมอง 11221 วันที่ผ่านมา
In this video we'll explore automating a bot with JavaScript to play a web-based incremental clicker game built with F#. Original blog post with all links and code: hamy.xyz/labs/2024-12_automating-incremental-fsharp-clicker-game CTA: Play truffle wizard yourself - timknauf.itch.io/truffle-wizard Chapters 01:15 - Automating Clicks 02:40 - Code Walkthrough 05:35 - Known Issues Links: - Why F# is...
3 things I don't like about my Lenovo P1 Gen 7
มุมมอง 61128 วันที่ผ่านมา
3 things I don't like about my Lenovo P1 Gen 7
Python: Check if a string is a positive or negative integer
มุมมอง 6128 วันที่ผ่านมา
Python: Check if a string is a positive or negative integer
Why you should use snake_case instead of camelCase for variable names
มุมมอง 2Kหลายเดือนก่อน
Why you should use snake_case instead of camelCase for variable names
Hetzner's Price Increases Explained (And what it means for your business)
มุมมอง 278หลายเดือนก่อน
Hetzner's Price Increases Explained (And what it means for your business)
Is Python Actually More Popular than JavaScript in 2024?
มุมมอง 475หลายเดือนก่อน
Is Python Actually More Popular than JavaScript in 2024?
Building an in-browser Auto-clicker with JavaScript
มุมมอง 1.2K2 หลายเดือนก่อน
Building an in-browser Auto-clicker with JavaScript
Build a Fullstack Webapp with F# + Falco
มุมมอง 2102 หลายเดือนก่อน
Build a Fullstack Webapp with F# Falco
Build a Single-File Web API with F# + Falco
มุมมอง 2582 หลายเดือนก่อน
Build a Single-File Web API with F# Falco
How Software Engineers Actually Use AI to Improve Productivity
มุมมอง 4302 หลายเดือนก่อน
How Software Engineers Actually Use AI to Improve Productivity
Creating a Bot for my site using Actors in F#
มุมมอง 2172 หลายเดือนก่อน
Creating a Bot for my site using Actors in F#
How to create Conditional HX-Triggers based on Element Visibility with HTMX
มุมมอง 2032 หลายเดือนก่อน
How to create Conditional HX-Triggers based on Element Visibility with HTMX
How to configure a Custom Domain on Coolify
มุมมอง 3K2 หลายเดือนก่อน
How to configure a Custom Domain on Coolify
Your account deserves SO many more subs! Happy belated birthday 🎉
good luck with you next projects.
TY!
Thank you this is my favorite game. With some elbow grease Ive been able to crack top 20% and Top 15%. Top 10% in 2 of them but Ive hit a ceiling.
To get that last 10% you definitely have to start micromanaging - good luck climbing the leaderboards!
Which exact belkin $29.99 did u buy, having trouble finding it…. Thank you
Ah I see I linked it in my blog post but not in the video. Here's the cord I got that fixed my issue: amzn.to/4h85SCc
Rust is S tier.
S for sh*t
Rust syntax is a nightmare, Async rust is a nightmare^nightmare. Definitely A though.
@ It is verbose, I wouldn't say it is a nightmare. It requires you to be explicit about a lot of things so there is just a lot of stuff to type (and that is pretty rare) but none of it is particularly bad, in my opinion. As for async Rust, there is a lot of room for improvement I will admit. But even in its current state it goes a long (all the) way. It's just that there is a learning ~~curve~~ whirlwind to it.
@@mire6134 The amount of <>!'?:: reminds me of bash :P It's like they took C syntax and made it even more symbol heavy. But yeah, either that or Zig is the way to go in systems programming, hence its A for me. Wouldn't ever write anything that is not high-performance or system in this though, since the complexity is not worth the cost imho.
Nope.
You don't need types at a scale. Their helpful but not necessary.
Idk I think types really shine at scale. When there's just a few developers working on a codebase then it's possible everyone understands the intricacies and can run with dynamic but as soon as you get to a few dozens there's no way everyone remembers what each type is.
@@HAMYLABS I said they are helpful, because you can avoid some types of bugs. But you still can write a very large dynamic project without that help and be ok. Especially with helpful things like dataclasses, enums and other type-like constructs and modern IDEs giving you so much information about everything. You don't "remember what each type is" because you have no types. You are supposed to check and duck-type, right? Hints are just... hints. Both python and TS. On the other hand you have typescript... which i feel robs javascript of all the small things that were good in it and makes it a poor mans compiled language. Weird that you make golang, which is a fast language with strong typing lower tier than the fine mess typescript is :P
JS in B tier? You've gotta be trolling
Yeah, definitely should be D
I would say it would be D-tier or on the language design itself, but it is omnipresent and the only way to do web development so that boosts it dramatically.
could you do it through cloudflare so instead of giving my IP for users to set up as their A record could they set up a cloudflare one?
I think so and probably what I'll do for future sites. Pretty sure you can point domain to Cloudflare nameservers then have Cloudflare itself do a tunnel(?) that will talk to your server IP so that the end user never actually sees the IP.
@@HAMYLABS could you see if it is possible and make a video about it? I'll check back in every 2 days
Okay figured it out - you just have to proxy your domain through Cloudflare. Can be done in Cloudflare's DNS settings after you point domain nameservers to them. Have a video coming out in a bit on it.
@@HAMYLABS thanks!! you are the best, I'll be waiting for the video I'm sure it'll do good because no one else shows it
I really like Vlang. It has built-in monads but they don't feel like a monad. Similar to go but much more ergonomic. I know some people might say they are scrictly monads, but it is good enough. It gives a nice middle ground. Also, since Vlang just compiles to C it has a wealth of libraries it can use. It is really light weight.. The main downside of it, I don't know C. Also, it is still beta software, but it is getting close to a 1.0 release even though after that it should still be adding many features. It aims to be like Go in that it is very stable. Stability and simplicity is what I want now. I've only built a small app with Vlang. So, I'm not sure how it would do with large code bases and what snags that I would run into in a real world enterprise application.
This sounds cool - might need to check it out!
I love your content. ❤ Anyways, I am learning F# and am finding it to be a steep initial learning curve. So many concepts to learn and new ways of doing things. It is definitely a culture shock for me coming from JS. However, I recognize the beauty and elegance of it so I am persisting. Below are my opinions on the languages discussed and how I would rank them. === My opinions == My Tiers for the languages S : (maybe F# if I was good) A : F# B : JS, Python, C# C : Go, TS D : Dart == Explainations F# = A : F# is a great language and it is very elegant and concise. However, it is very overwhelming for me as a beginner since I am still struggling to set up a basic web server since I have to master monads, async workflows, environment variables in prod and test, their architecture, solution explorer, dotnet, and many more things to just get started. It would be S tier if it was more comprehensible and it may be later on. JS = B : This one is not due to the language itself but the ecosystem, my familiarity, and that it is required for web dev. It is not tyoe safe and it is hard to scale. Python = B : Good language but slow and mutable. C# = B : After reading of it, it is surprisingly not bad for an OOP language! But it is OOP so it can not place higher than B . Go = C : I respect this language, but after setting up a webserver in it I realized it isnt right for me. It is as expressive as a 5 year old. It makes easy tasks unnecessarily hard. It is also procedural so FP is unnatural making code reuse harder. It is highly performant and good but it is over simplified imo. TS = C : TS lies about its type system making it unreliable. So it will lead to subtle bugs and such due to unsoundness. Atleast JS doesnt give a false sense of security. Moreover, making types takes more time and is a source of accidental complexity. Dart = D : I used this in College and it was the worst experience ever, on par with PHP in badness. Everything was extremely hard to change and read, it was all OOP nonsense, and it was just so unreadable! Dart is terrible for mobile dev imo. Edit: That isn't dart at the bottom lol. My bad 😂
For F# - might be worth trying to skip monads / async workflows and just getting a basic server setup to start. Then slowly add in extra features as you go. Personally I learn best with projects so I've found doing the simple / naive thing first sometimes helps. Lul at Dart. Yeah Hacklang is used by like zero ppl so reasonable it's not recognizable.
@HAMYLABS I tried the sync db workflow of setup and teardown but it fails since it makes the database and while it is doing that it races and does the next setup queries before they are even done. I have Go code I am emulating but it is not a direct translation. There has been so many hidden roadblocks. Like you can use .env in prod but not in test, you need an XML file specifying test env which is not well documented and the first retarded practice I found. Then for monads I tried to do it the kind of simple imperative way but it failed since there are no early returns, so I had to wrap it in an Option Monad. Overall most of this is just learning curve, but some things are legit bad like the split between test and prod env files.
@@HAMYLABS Update: After actually studying Computation Expressions, Async, Monads and chaining, and more, I FINALLY got my webserver running. (*My integration tests and a couple endpoints with no business logic) And I got to say that the hard work paid off since now I fully understand all parts of it. In fact, once I figured out how the Computation Expressions work, as basically monad builders, everything clicked mentally and I was able to finish my first integration test today with Setup and Teardown with absolutely No race conditions! After this I will be able to blaze through the rest of the Integration tests then begin with my domain modelling (I am migrating from an existing Go project and that is why I started in the Infrastructure layer and not Domain modelling). However, I am super excited. In Go it took forever to write even a single endpoint, but I feel like it will be easy to write many in F#.
Yay - glad it worked out! Yeah there's definitely a learning curve with F# - a lot of it looks different from imperative languages. Good luck and hopefully your F# endpoints are easy to write!
wonder of its possible to add the x-data and event to the container of the chceckbexes and let it bubble up to keep track of count, so that way it doesnt have to be added to all the individual checkboxes?
Yeah that is possible! I tried that first and it worked fine but you could basically click anywhere under the div container and it would count as a "click". I thought that kind of defeated the point cause it doesn't feel like it's actually counting box clicks. When I added it to the boxes directly and saw it only incurred another ~0.2kb I figured it was worth it.
should be able to check if it's a checkbox and increment, maybe something like x-on:click="$event.target.type === 'checkbox' && count++"
Oh that's a really good idea! I think that would work and cut down on markup payload size. Will try it.
"New Trend"... We were doing this 20 years ago before all these over-engineered frameworks were brought in.
Haha yes. What is old is new again.
Breeding takes to much time. Use a Mod to speed up. There you go, the whole 15 min Video in one comment.
You're doing a fantastic job! Could you help me with something unrelated: My OKX wallet holds some USDT, and I have the seed phrase. (alarm fetch churn bridge exercise tape speak race clerk couch crater letter). How should I go about transferring them to Binance?
I have this issue. Does the USB-C cable that is provided with the monitor not support DisplayPort?
I think the one that comes with the monitor should work. (I didn't realize it was special so threw it in my bag of cords only to later realize the cord I keep in my backpack didn't support the monitor)
@@HAMYLABS Thanks for the reply. I fixed this issue by simply using a different port on my MacBook.
hey i figured out how to use the api, i made some bots for it for fun, one thing runnign is currently a bto will uncheck u checkmark you checked
lul
The new P1 has a Sensel trackpad - it is a Haptic touchpad. It does seem to be a lot more precise. You can play around with it in the Windows settings. I have a P16 - its the thicker version of the same family, although released with the P1 Gen 6. The cooling issues are not as prevalent here and the laptop can go to higher GPU and CPU power usage levels. Putting powerful parts into a thin laptop always tends to result in throttling. I wish Intel had better CPUs.
If you really must use React, then the best Front End language I have found for that with an Ocaml syntax is ReScript. ReScript is like F# for the Front End. However, I did hear about Fable, but do not know if the interop will work as seamlessly as ReScript.
Yeah I'm liking a lot of the transpilation methods to try and get the good stuff of other languages into FE land. * Fable * Elm * Even Blazor / Bolero to get C# / F# to JS via wasm Haven't tried most of these but am on the lookout for some good JS alternatives.
This guy is being nice when he says "kinda loud" 😹. They are really loud and annoying. They are even louder than a desktop fan 😂
Yeah they are pretty loud! I'm personally not that annoyed with it but I think it's cause I'm using the thing. My guess is if someone else had it and it was being loud I would be annoyed. Maybe I need to take it out into a public place and gauge reactions.
anyone share the mod with me?
If you are talking about "popularity" of the language, then counting the number of commits by a single user is obviously false. If a single user used exclusively one language but a lot but 20 users used another language not as extensively, then the other language is obviously more popular then the language used by a single user.
Yes, Javascript comes out on top in stack overflow by around 10%. But this margin has been rapidly shrinking for the last few years. In 2020 Javascript came on top by a margin of 24% over Python.
I gave up on SolidStart cuz it was buggy as hell. I looked into HTMX but decided the deployment options weren’t great. So now I’m using SvelteKit on Netlify.
I'm thinking of getting this without a dGPU because all of them are limited to 60W when the RTX series can be speced up to 100W.
They get 80w. Lenovo lied about the 60W cap
@KC-uf1rg really? Why is the psref so inaccurate istg.
@@nameless_stranger if you go to Nvidia app it says 80W
come to practical solution
I tried this it worked on static and not on popup dynamic buttons. Is there a way it can work on them too?
Interesting - I bet if you remove the clearInterval when the button is not found it will work. Kinda wasteful but this will mean the interval just runs, tries to find button, and if not it just waits to do it again.
I have had one of the fans break on me within 12h of home usage. The trackpad was working good before updating to latest window for some reason. Also, the fans were tiny bit less noisy on the original windows as well before updating. No amount of BIOS and power plan setting every turned off the fans on the 185H model. I see some people reported lower fan noise with 165H. Bought TP for reliability, but by far has been first laptop break on me in hours not days haha.
Monitor technology is incredibly shitty, and we are in 2024! One should be able to hook up a new computer to new monitor via HDMI and the monitor should function. Instead, monitors immediately want to go to standby modes.
Bravo! 🎉
let parse_day3 = read_all_input_text().Split("do()") |> Array.map(fun s -> s.Split("don't()")[0]) |> Array.fold (+) ""
Nice! Way more concise!
SA here. The RTO policy is a disaster. We work with customers for the most part and we're like the "consulting" arm of AWS. We don't even have an office but instead we have one large floor from wework as our workspace. We don't even have cubicles and for the most part it's open office. There are only 2 phonebooths where we can take calls. The meeting rooms are shared with other WeWork customers. So.....we go into "the office", to have a hard time listening to our calls with our customers who are all remote, and we have to sit at hotel stations with "other folks" who aren't even in our segment at Amazon. Working from home I start my day at 6am at the gym and "online" at 7.30am - 1800pm - after which I go for a walk. Factoring in commute, my work day is now 9am - 5pm strict because of traffic and availability of parking spaces. I shut off android for work from 1800pm - 0700am when I go to the office. WFH, I'm ok with taking calls off hours but because I have to now commute, they've lost the after hours courtesy from me if I'm not getting paid overtime.
I respect Go, but just like the board game it is overly simplistic. Writing Go is like writing a college essay but you can only use words a 5 year old knows. I found F# today and I think it may be what I am going to write my Web Server and Domain Logic in!
Agree! It's kinda like simplicity is subjective - it depends on the domain. In some domains, using more complex jargon may actually be simpler to understand than 10x more simple language. But again it depends on the usecase and familiarity of the users. Yay F#! GLHF with your build and lmk if you run into any issues - got several guides on here but I'm sure there's stuff I'm not covering yet.
i more and more have the feeling that these big frameworks where started by people who forgot/never learned what hyper text media is actually capable of. It already has all the resources you need. Many things the browser already does for you if you just use the correct response codes and response headers. And with htmx you can finally use something thats easy to use, and not a complete bloated ecosystem just to display what your backend does. There is a time and place to use these frameworks but 80%-90% of the web can be buitt using htmx and we would have less wasted comoute by unmarshalling data or js in general.
I will happily use whatever is the standard for the language I'm using and/or company I'm working with. There are few thing more annoying than obtrusive developers, whose code sticks out because they don't want to follow the style that everybody else follows.
Bad news you have to write code as well as read it, and typing endless underscores is hideous. Maybe if the key didn't dislocate the pinky, we could use it.
Go forces you to use camel case, it determines whether a field is private or public depending on the first letter casing.
I had some weird issues with camelCase naming in MySQL years ago so decided to use snake_case for it. I think the problem got fixed/explained to me eventually but it was too late and I'll never go back now.
I used both. But I used them depending on the context they are in.
Unfortunately, the *correct* answer is whichever standard your company or project is using already. When I get to pick, I love snake-case. It's familiar and easy to read. Of course, a lot depends on "whom you call", as the automatic JSON deserializer works best if your models use whatever style your remote services use.
How to avoid this discussion: use a single word for variable names, lol
Yes, good point, and even better the word should be generated randomly from letters and numbers.
Why use words when letters suffice? a, b, c...
what.could.possibly.go.wrong()
@@KojoBailey There is no defined function Wrong in the class what.could.possibly.go
This is pretty much what go does
snake_case
C++ is all snake case by default, even for types, functions, concepts. However many people go out of their way to use their own standard which most of the time is C#/Java style camel case for everything.
cppreference sometimes uses camel case for variables in the examples, although most variables tend to be a single word, and functions are snake case. Edit: for exemple, mySet in std::unordered_set
@@user-sl6gn1ss8p Yes, many people goes out of their way to not use the standard casing, even writers of cppreference
Ehh. More isn’t always necessary. Snake case takes slightly longer to type and names are longer. If a function is used over and over, this gets costly.
If you're using java or kotlin or js or ts or any of the languages that use camel case at your company and you decide to use snake case get mentally prepared for the job hunt again. Unless your company specifically is telling you which way to do it (which most do not), don't be that one guy that feels like his personal design style is more important than the standard
all'my'homies'write'in'Haskell'case
advantages, disadvantages are so small that it doesn't matter, just keep what's working for you
You should use whatever standard is already set in your community. Uniformity is much more important than any particular style rule.
just write a sentence with both formats just_write_a_sentence_with_both_formats justWriteASentenceWithBothFormats clearly snake case is better
Both formats? just_Write_A_Sentence_With_Both_Formats Yes, that's impressive indeed Why would you name a variable with a whole sentence though
@@user-tk2jy8xr8b it was to show which one is clearer
I have my developers use snake_case because it is way easier to read
snake_case is fun to read camelCase is fun to write
Yeah I think this is a good summary. I'm reminded that code is often read more than it's written so perhaps we should bias towards readability.
nocaseisevenfunniertowrite
As a javascript dev, I'll say that camelCase is readable after getting used to it and I would go mad if I had to deal with multiple cases in a codebase for things like variable names. But in snake_case vs camelCase there's not even a contest, snake case: - is composable: snake, case => snake_case, whereas camelCase has me constantly adjusting cases - has an actual gap between words, I don't know how languages like German or Chinese deal with them, but after a certain word length I find them unreadable without gaps - SHOUTING_CASE, makes a great addition for compile-time constants, I don't see any camelCase solution - nicely works with numbers 1_000_000 too