On the other hand I sometimes wonder why Calculus is made a big deal out of. It was probably the easiest among all the parts of maths. You just have to imagine an small unit and how to extrapolate for integration and imagine how to break it down to small parts for differentiation. When I originally learnt Calculus in high school it was couple of days of learning the concepts and the a week of deriving everything from that and move on!
Thanks for sharing this insight. Is this a issue with just the web server.
If I have a standalone task, which tires to use 128 cores and manages parallel tasks using goroutines communicating via channels - will I be able to successfully leverage 128 cores.
If your tasks are large enough to dominate, then the non-scalability of the goroutine scheduler and the network stack won’t be an issue. For example, if your task is compressing some huge hunk of a video and it takes a second to do it, then it will scale fine. Then again, you can get this scalability from anything, including `xargs`.
With such drastic diet - gastric system goes for a toss. You don't want to wait that long between pooping. One option is to try buffered vitamin c. It was definitely give you a poop whenever you want without side effect and dependency.
I agree with this. Most people need just 2 years during grade 11 and 12. Starting earlier might give minor edge at best but more damage to other aspects of personality and growth!
In IIT, in under 1000 rank, most people who spent more than 2 years were people who were intelligent but didn't take preparation seriously during their grade 11-12 but put in effort after that.
I also know people who were extremely intelligent who could crack under 100 if they gave the exam in grade 8. But they were outliers.
Haha I know somebody who cracked JEE at the age of 14. I met him and found out that he was homeschooled with zero social skills. Warms my heart to know that he is doing well in life.
I always wonder about kids who skip too many grades or who get college degree at 12. Even if they are intellectually there, socially life would be a nightmare. Imagine being a 12 year old which 17 year old peers. I can't imagine the emotional trauma!
I didn't do any IIT coaching and was able to prepare for IIT only for one year in my grade 11. After that I got some major health issue and was harassed by armed bullies in my school, so couldn't study at all in Grade 12. This made me miss Top 200 rank.
But this ended up being a blessing in disguise, because I couldn't get Computer Science at IIT. I have been passionate about computers since I was 8 years old. If I had studied Computer Science as a part of the course curriculum, I might have ended up hating it.
Instead I pursued Computer Science on mine own, based on my interest. I have loved it every single day!
I look forward to my work, versus most of my friends who feel trapped in their jobs!
>Imagine being a 12 year old which 17 year old peers. I can't imagine the emotional trauma!
In my experience, these kids are homeschooled so at least they get sheltered from bullying at school. Of course they also get "sheltered" from any opportunity to learn how to navigate social situations. And when the get into real life, it is into an academic environment that at least somewhat supports such eccentrics.
To a smaller extent, I think almost everyone makes sacrifices in their social life and hobbies during that time period for a boost in career. For pretty much my entire first year, I had a single point agenda in life: get laid!
>If I had studied Computer Science as a part of the course curriculum, I might have ended up hating it.
You can pursue Computer Science on your own even while being enrolled in CS program and just use the curriculum as sort of a sanity check that you're making enough progress. That's pretty much what I did.
There were many questions asking about recent experience with MongoDB. I have some recent experience so wanted to share with everyone.
My background:
2007-2010: Used MySQL to run a social network for 50M+ users. Would send 2B messages on peak days. All powered by Mysql.
2015-2020: Used Mongo to power a top 5k site. Zero downtime and dataloss in 5 years. Used Postgres for internal non user facing database
So I have familiarity with all of these databases at a decent scale. I am going to list pros and cons of each and why I would use. Again a tool is a tool. Just because I love a wrench, doesn't mean that I am going to use it instead of a hammer when I need to put some nails.
MongoDB:
They have come a long way since I started using them in 2012. If your use case is CRUD, you would be fine. There is still a lot of marketing fluff about sharding, multi document transactions etc which might not be fully reliable. I stay away from those things. But if you just use CRUD and you data can fit in a single db you are going to be fine at decent scale.
Following are some reasons I prefer Mongodb. It's possible that Postgres/MySQL has some of them even though I couldn't find them:
1. I don't like to manage schema migrations. During development you constantly add columns and it's a pain to make sure that this column is added to the sql databases on development, testing, staging, prod etc. With mongo, you just add a column and you are done.
2. No downtime on migrations: You can change you server type or mongo version with zero downtime. Did that since 6 years. Couldn't figure out how to do that with postgres (even with Aurora).
3. If you data structure fits document and subdocument schema, mongo is really easy to use. I tried jsonb with postgres and didn't find it as easy to use at mongo. If you data fits this paradigm, you can essentially get atomicity for multiple updates because they are all in a single document.
4. The admin interface of MongoDB Atlas is really development friendly. You can easily add read only replicas. You can easily add replicas in different regions. I shudder at the thought of managing Postgres myself and even Amazon Aurora is not as easy to admin as Atlas.
At this point I would consider Postgres only in the following case:
If my data structure is like a non-tree graph. In that case I would expect to do multiple complex join and expect transaction consistency between tables.
If I am building a financial product which directly handles money or money instruments (bank, stock trading) I would definitely not use mongo for that.
> With mongo, you just add a column and you are done.
No, usually you are not done. Your data doesn't have the column. So either you write your code in a way that it can handle the column being optional or you write code to read each document and add the column manually.
I've started out with mongodb on Fit Analytics originally, until we noticed at some point that our data was an inconsistent mess and we'd implement constraints in our back-end code to make sure the data is consistent. Eventually it became just easier to have an SQL database taking care of all those constraints, and we luckily migrated away.
Thanks for raising this good point. I didn't get a chance to elaborate on this in my original post because it was getting too long and it was end of a long day.
The cost of adding a column is zero, in terms of schema migration. So that helps with developer velocity. We used an ORM (mongoose), so that we can have added constraints including default values. But Mongo did help us avoid the friction of adding columns.
We also used mongoose, which is awesome. In retrospect, I actually wish we had kept mongodb as a read-only database and used postgres as the source of truth. Our data was mostly read-only, with some rather complex relations behind the scenes.
Because you didn't put strict validation before data entered Mongo and I guess you didn't use a typed lang which makes such a validation like a no-brainer and quite natural.
SQL gives you type checking for free, Mongo does not. However, if you have a typed lang and have a proper validation in place you just have to define those at one place and not in the database and in your app (DRY).
This thread is like a piñata that gets pulled out every 6 months or so take a wack at MongoDB and talk about how everyone should just use PostgreSQL for every database problem no matter whether it's relational or not.
No-one cares about whether MongoDB is useful or not.
If you're using replica set, as you should for anything other than development (and even in development, sometimes you need a replica set for some features), you just sequentially upgrade each one. It goes down, clients figure out the new topology and continue working.
I'm also running on MongoDB, top 6k site and while I wouldn't say there weren't any issues, uptime is wonderful, I sleep well, and have zero problems with modeling the domain as a document collections instead of relational. Can easily imagine that it would not be great fit for many other use cases. Not using Atlas as GP, so it's more work, but I'm trying to be scrappy.
> If I am building a financial product which directly handles money or money instruments (bank, stock trading) I would definitely not use mongo for that.
My friend used to work for citi bank, his team managed high value transactions (in billions). I was _stunned_ to hear that they were storing all their data in MongoDB.
I am not sure what is the exact use case. They could be using it for a non-critical data warehouse which could easily be recreated.
If you can deterministically determine your use case and are confident that mongo will fit it - it might be a good idea.
My concern which mongo is that is if you push the feature set, it will start falling apart at the seams.
Even though Postgres/MySql have some issues which can reduce the velocity of your team, if you absolutely want to be sure about data integrity and want full flexibility of evolving use case, they might serve better than mongo.
> I am not sure what is the exact use case. They could be using it for a non-critical data warehouse which could easily be recreated.
They decided to port the existing project to .NET and used MongoDB (just because the .NET team thought it's cool) to store _all the data_, I'm pretty sure of it. My friend was not part of the .NET team.
> During development you constantly add columns and it's a pain to make sure that this column is added to the sql databases on development, testing, staging, prod etc. With mongo, you just add a column and you are done.
I meant mongo support for sharing might be marketing fluff. As in they promise it works but it might be unreliable.
I have come to trust Mongo with CRUD on a document. Rest of the features might not work as well. Looks at the recent Jespen test for mongo ( https://jepsen.io/analyses/mongodb-4.2.6 )
Only reason I haven't moved to Firefox on my Mac is that I can't reassign keyboard shortcut for tab change (without using any external software).
Firefox default is Cmd-Shift-[], which gives me pain in left hand if I use it too much. So I have used OS keyboard to reassign the tab change to Cmd-[]. Most apps seem to respect it, but Firefox doesn't.
One problem with this is that it’s a combination keystroke involving two special keys and tab. That is bad for your fingers especially if it something like tab switch that you use a lot.
With Cmd-[] you just use total two keys which are easy with two hands.
I agree it's very annoying you can't change keyboard shortcuts in Firefox.
If you use the Mac trackpad, use BetterTouchTool to assign a gesture (I use tiptap left and tiptap right) to the switch tabs left and switch tabs right keyboard shortcuts. You can assign them per-app so it can send a different combo for Firefox than anything else.
I grew up in India and loved driving stick shift. Once I moved to US, I transitioned to Automatic.
Biggest reason I miss Stick shift is that, it just felt that I had a stronger connection with the car and the acceleration was more predictable. With automatic you might not be in the right gear and the car might upshift too soon or too late.
A potential side effect of the stronger connection is that more involvement leads to more spirited driving and potentially traffic tickets.
Then I got a Tesla. Beauty of Tesla is that it has just has one gear, so you are always in the right gear. So this avoids the biggest issue with Automatic. OTOH, because I am not manually changing gear, this avoids the spirited driving issue. It is now an appliance and just works.