Clear search
Remote Jobs 2 Nomad Insurance Chat Meetups Visas & Residency New Climate Finder Forum FAQ Dating New Members Hire Remotely Open menu
๐ŸŒ Join Nomad List๐Ÿ‘‹  Log in
General
Nomad List  Frontpage๐ŸŒ—  Dark mode โค๏ธ  Your favorites๐Ÿš‘  Nomad insurance๐Ÿฅ  About
Community
โค๏ธ Dating app๐Ÿค  Friend finder๐Ÿ’ฌ  Discord chat
new
๐Ÿ’ฌ  Slack chat๐Ÿ’ˆ  Host meetup
new
๐Ÿน  Attend meetup๐ŸŒŽ  Members map
Tools
๐Ÿœ  Explore๐Ÿ“ธ  Vote on photos๐Ÿ’ธ  FIRE calculator๐ŸŒค  Climate finder๐Ÿ’ฅ  Fastest growing๐Ÿ“Š  Nomad stats
new
๐Ÿ“œ  History of nomads
new
๐Ÿงช  Network graph
new
๐Ÿ”Œ  Fastest internet๐Ÿ†  Best place now๐Ÿ”ฎ  Random place๐Ÿ”ฎ  Random good place
Misc
๐Ÿคฒ  Open Startup ($77k/mo)๐ŸŸข  Uptime (96.1%)๐Ÿ“ˆ  Pageviews (882K/mo)๐Ÿ›ฐ  Remote jobsโœˆ๏ธ  Best airlines๐Ÿ—บ  Neighborhoods๐Ÿ  Coworkations๐Ÿ‡ต๐Ÿ‡น  Get Portuguese residency๐Ÿ†˜  Support
Coders Chat

All Channels
# israel8d# cuba10d# kazakhstan21d# __jobs23d# qatar28d# lithuania28d# belgium1mo# _taxes-intl1mo# cape-verde1mo# slovenia2mo# laos2mo# _food2mo# mauritius2mo# _outdoors2mo# puerto-rico2mo# saudi-arabia2mo# new-zealand2mo# china2mo# hong-kong2mo# malaysia2mo# jamaica2mo# nepal2mo# dominican-republic2mo# philippines2mo# _overland-travel2mo# _insurance2mo# _pets3mo# ireland3mo# sri-lanka3mo# cambodia3mo# panama3mo# north-macedonia3mo# egypt3mo# chile3mo# bolivia3mo# space3mo# finland3mo# bulgaria3mo# denmark3mo# peru3mo# _marketing3mo# paraguay3mo# _show-and-tell3mo# _freelance3mo# india3mo# poland3mo# australia3mo# austria3mo# middle-east3mo# south-africa3mo# nicaragua3mo# south-korea3mo# _productivity3mo# france3mo# _lgbtq3mo# _flying3mo# indonesia3mo# uruguay3mo# albania3mo# cyprus3mo# switzerland3mo# morocco3mo# germany3mo# netherlands3mo# europe3mo# ecuador3mo# miami3mo# costa-rica3mo# japan3mo# _photography3mo# taiwan3mo# _stonks3mo# _music3mo# asia3mo# romania3mo# norway3mo# montenegro3mo# croatia3mo# _books3mo# malta3mo# ukraine3mo# serbia3mo# united-kingdom3mo# canary-islands3mo# argentina3mo# _design3mo# _legal3mo# latin-america3mo# _parents3mo# canada3mo# __announcements3mo# _relationships3mo# _bargain-travel3mo# guatemala3mo# colombia3mo# estonia3mo# _money3mo# czechia3mo# dubai3mo# hungary3mo# sweden3mo# africa3mo# georgia3mo# italy3mo# _bug-reports3mo# vietnam3mo# _fitness3mo# greece3mo# _startups3mo# bali3mo# ___introductions3mo# spain3mo# russia3mo# _housing3mo# mexico3mo# _taxes-us3mo# _jobs-talk3mo# _gear3mo# thailand3mo# _coders3mo# _crypto3mo# singapore3mo# turkey3mo# brazil3mo# united-states3mo# portugal3mo
Postgres is better than SQlite in just about any respect, except for portability (at which it is still decent)
indiehackers is not anymore invite-only it seems:

x-post from #_jobs-talkbr />
For the first time Iโ€™ve been asked to do a take home coding assignment. The things theyโ€™re asking for cannot take just the time allotted.

Is this common? How should I approach it? I have no idea how to write code that looks effortless.
yes, sometimes the challenge is way longer than the time you are given to solve it. I guess they just want to make sure you have enough problems to solve.

Check best practices of clean code, and ask for feedback once they review your code
Given these types, which of the two versions below looks better to you?

```// types.ts
export enum ERateLimitIntervalType {
SECOND = 'SECOND',
MINUTE = 'MINUTE',
DAY = 'DAY',
}

export interface IRateLimitRule {
rateLimitType 'REQUEST_WEIGHT' | 'RAW_REQUESTS,
interval ERateLimitIntervalType,
intervalNum number,
limit number
}```
Variant 1

```// types.ts
export enum ERateLimitIntervalTypeLetter {
SECOND = 's',
MINUTE = 'm',
DAY = 'd',
}

export enum ERateLimitIntervalTypeSeconds {
SECOND = 1,
MINUTE = 60,
DAY = 86400,
}```
```//utils.ts
rateLimitRuleAsSeconds(rule IRateLimitRule) number {
return ERateLimitIntervalTypeSeconds[rule.interval] rule.intervalNum;
}


rateLimitRuleAsString(rule IRateLimitRule) number {
return `${rule.intervalNum}${ERateLimitIntervalTypeLetter[rule.interval]}`
}```

Variant 2
```//utils.ts
export const rateLimitLetters Record<ERateLimitIntervalTypeLetter, string> = {
[ERateLimitIntervalTypeLetter.SECOND] = 's',
[ERateLimitIntervalTypeLetter.MINUTE] = 'm',
[ERateLimitIntervalTypeLetter.DAY] = 'd',
}

export const rateLimitSeconds Record<ERateLimitIntervalTypeSeconds, number> {
[ERateLimitIntervalTypeLetter.SECOND] = 1,
[ERateLimitIntervalTypeLetter.MINUTE] = 60,
[ERateLimitIntervalTypeLetter.DAY] = 86400,
}

rateLimitRuleAsSeconds(rule IRateLimitRule) number {
return rateLimitSeconds[rule.interval] rule.intervalNum;
}


rateLimitRuleAsString(rule IRateLimitRule) number {
return `${rule.intervalNum}${rateLimitLetters[rule.interval]}`
}```
Hey all, I've been learning coding off and on for quite some time now and decided to get more serious about it. I currently work doing Hyland OnBase development for about 8 years now. I do some C#, html, css and JavaScript but that's only about 20% of the time. I decided to take the step and do a full stack javascript bootcamp which I just completed from Team Treehouse. I'm thinking about switching over to something where I can do more programming and I'm just looking for some advice to get started! If anyone has any thoughts or ideas that would be great! Thanks!
I donโ€™t think either would compile as is, but if I got the main ideas correctlyโ€ฆ

1) second option would be more resilient to enum value changes
2) it would generate a tiny bit less JS code (transpiled enums are more wordy than plain objects)
3) i also think
```export enum ERateLimitIntervalTypeSeconds {
SECOND = 1,
MINUTE = 60,
DAY = 86400,
}```
is not really a โ€œtypeโ€ since it stores data; so it has no business being in โ€œtypes.tsโ€ :smile:

all in all I vote for the number 2.

also Iโ€™d say that both `utils.ts` and `types.ts` files get bloated really quickly, so it might make sense to use files with more specific names for these functions (unless itโ€™s already the case and you just simplified filenames for the snippets here :sweat_smile:)
pov from the other side creating great assignments is quite difficult and depending on company size itโ€™s easier to outsource that and just use a platform that does a good job of handling the assignments. usually they already come with a set of problems to pick from. so chances are the people hiring donโ€™t even know how long it takes. but Iโ€™ve also been told that the estimates were off quite a bit
I was totally fine with someone submitting a partial solution. most interesting part for me is the architecture anyways, not the actual code (as long as there is enough code that I can judge the implementation part as well)
that way you can drop rateLimit Letters and to get the seconds you can just do RateLimitSeconds[RateLimit.MINUTE]
Thought it's generally not recommend to do this, so I guess to avoid confusion, so in that case I would probably add a hash or if/case statement to the rateLimitRuleAsSeconds function, and avoid all the interface stuff together which just makes everything overly complicated.
it's common... what I usually do is to do what I can + write as comments how I would have continued
nvgrnwgy youโ€™re right; it wonโ€™t compile, as it is. The
> is not really a โ€œtypeโ€
was actually what lead me to raise this question. Will probably go with second version.

And yes obviously i split things in more files when needed.
jqrcavxdrsabrowmm the first type `SECOND = 'SECOND'` is needed as i query the rate limit config from a 3rd party and i will receive:

```[
...
{
"rateLimitType" "REQUEST_WEIGHT",
"interval" "MINUTE",
"intervalNum" 5,
"limit" 1000,
},
...
]```
Then for every subsequent request i do, i recieve a `x-mbx-used-weight-5m` (`MINUTE => m`) with the current usage, and whenever i see i hit a limit i will have to backoff for n seconds `MINUTE => 60`

Currently i have a switch in my methods, but was thinking to keep those mappings in one place. What if the 3rd party decides to add a new Rate Limit that is tracked by the hour?
Just figured out the second version will throw an error, when the `ERateLimitIntervalType` is extended by eg `HOUR = 'HOUR'` without extending the mapping as well. First version wonโ€™t.
I probably agree with this, I wouldn't move off postgres in the first place. Good point
You should not modify an enumerator so that it works with a third party service and your service, that is bonkers.
You always want to keep third party services as far away as possible, or have a proxy in the center.
Think about it, if you have to modify the query to the third party service that would mean you would have to update an enumerator that will have side effects on your code.
You pass the enumerator to a function that does a transform to generate the query parameters. Don't try to make super complicated code just so you can use an enumerator with a third party service.
I read it again and they said that they literally don't expect anyone to complete it. I ended up hitting a reasonable amount of features and spent a little extra time documenting things
As an interviewer, I look for the candidates ability to identify most critical requirements, and build them in a particular order with best practices
The correct avatar loads eventually for me. Happens frequently when on slow internet. It's just a pretty crazy bug.
..... !isNaN("") === true. Ok guys, I am done, i can't do this anymore.
Wtf is that ๐Ÿ˜‚
It's evil javascript
But why would you ever need to write that ๐Ÿ˜‚
are you suggesting isNaN("") should be true?
no I didn't write that, it's what happens when you pass an empty string to IsNaN
var test = "";
console.log(!isNaN(test)); //returns true;
Empty strings are converted to 0 thatโ€™s why
phn13d
well, that if you pass a string to a function that expects a number, magic can happen ๐Ÿ˜…
isNaN("") returns false, just like anything except NaN or undefined
or any other string besides a blank string. isNaN("test") returns true.
It's my own fault, I am half way through converting stuff and I was lazy and didn't want to convert this one script because I was just doing something quick.
depends on what you want to check:
โ€ข if you want to know if itโ€™s save to use a variable in an algebraic calculation without that calculation returning `NaN` use `isNaN`
โ€ข if you want to know if a variable is `NaN` and only `NaN` use `Number.isNaN`

in other words `isNaN(x) === Number.isNaN(Number(x))`
Obligatory youtube video related to this ๐Ÿ˜‚ www.youtube.com/watch?v=et8xNAc2ic8
I still canโ€™t post links :sob:
but take a look to โ€œdestroyallsoftware wat talkโ€ in google, it is worth to watch I promise ๐Ÿ˜‚
Hey all, I've posted a mid level frontend dev job in #_jobs-talk. Might be relevant to someone in here!
Hey all, how do you store things like countries, nationalities, languages database in backend side? where do you fetch them? or you just use 3rd party API in frontend?
small lists I'd usually just hardcode as arrays in code, otherwise if it'll grow over time a database is a good place for it
You can fetch from an API, just make sure you pay attention to your caching strategy so that it's not a huge network request all the time
I'd be more inclined to import what I need from the API than integrate with them, as long as my data requirements are reasonable. When you integrate, their downtime becomes your downtime
phn12d
countries, languages and nationalities look all pretty static to me - Maybe assemble the lists and maintain them in your own code / db?
Usually for countries and languages you are probably going to have them in some kind of selector, so usually they get hardcoded, doing an extra fetch for that seems excessive. If I was really trying to keep sizes down, I wouldn't use a DB, that would be kind of overkill, I would just use a static .json file.

However, if you are store info on users, you will probably have to store all that info and in that case you will probably want to have a connected table.
phn12d
I just meant to use a db, if you want to be able to edit the countries without doing a reployment - otherwise, yeh static ๐Ÿ˜„
Ya, not sure how often you would need to do that, lol.
Static json file just to keep JS size down, if you are really a stickler, but even a full list of countries is going to be tiny after compression.
I agree with U02TZE8LS1W. Some take-home projects are not set to be โ€œcompletedโ€ but they want to understand how you prioritize work when you have deadlines and 20 moving pieces. Will you go for the easy wins? Will you spend way-too-much time on something that wasnโ€™t really necessary? Will you identify and work through the core issues? etc, โ€ฆ
Your interviewer will generally ask you about these decisions once youโ€™ve submitted the project. Why did you do X or Y? Why did you choose A or B?
anyone tried remix?
phn7d
On my list ๐Ÿ˜…
phn7d
just read the remix vs next blog ๐Ÿ˜…
anyone had this issue on android where the notification icon shows white? doesn't show your icon?
yes, I'm glad I was an early supporter
I believe it will become something big in the JavaScript ecosystem but it's not yet comparable to Laravel or Ruby on Rails feature-wise imo
their latest blog post comparing remix to nextjs is super insightful on what kind of tradeoffs you will be dealing with if you end up using it
I've doubled down on Remix by rewriting a webapp from Blitz to Remix and even extracted the SaaS-y part of the codebase into a boilerplate to go straight to the interesting part of building a product!
read this post earlier today, looks pretty awesome :slightly_smiling_face:

I wonder if this edge-servers approach can result in significantly higher costs compared to just caching static files on CDNs though? would welcome any info on that ๐Ÿ™
been using fly.io|fly.io recently it's pretty affordable
Yup, their pricing is clear and they also have a generous free tier
I pay around $9 per month for 5 medium-sized apps, 1 redis instance and 2 highly available postgres instances. They're all in one region though but the point is it's relatively affordable
I'm a big fan, I've been using it for a few months now
I got Remix running on cloudflare pages with prisma, which was not nearly as easy at it sounds

so are pages server side rendered on cloudflare U01CCV6SPS6?
also how did you manage to take a picture on your laptop of you holding your laptop on your head? ๐Ÿ™ƒ
thats some magic_wand
> so are pages server side rendered on cloudflare
Yes everything, it's super smooth
yeah ok thats pretty awesome i'll take a look at it
Fly can still give apps a boost for uncacheable URLs, since tls termination happens local to the visitor.
Got to love PHP
What do you mean, that's a feature :troll:. If you really cared you would have used `===`. With that being said I'm pretty sure both of those would be false in PHP 8.0.
yeah i've been finding fly.io|fly.io to be pretty amazing so far
Caveat, I work at Fly.io|Fly.io so take my comments as you will ๐Ÿ˜›
nice ๐Ÿ‘Œ keep up the great work
Always interested to hear what people are doing with it
PHP best practices Use something else.
well, you can write beautiful readable code in any language, even in PHP ๐Ÿ™‚ I guess the problem is not the language but coding conventions, tests, discipline etc
although I won't argue with some languages it's harder to enforce than the others, especially dynamically typed languages ... it just requires more discipline
It depends on your requirements. PHP works very differently to node.js, Java or Go regarding the execution model. Very common things like connection pools are not achievable with PHP, also you always need some additional technology like nginx or apache, which translates this strange fpm/cgi interface to something less strange ๐Ÿ˜„
Don't get me started on Node.js ๐Ÿ˜‚
My personal favorite
Awesome! thank you so much
I would not blame node for floating point arithmetic ๐Ÿ˜ฌ
writes bad code

hey everyone look how bad this code is
The irony is that the second example is complaining about floating point arithmetic, something outside the control of JavaScript and behaves the same in many other languages, but includes === and makes no mention of how absurd the history that led to that over == was. ๐Ÿ˜…
dvyrmc I think if you spend some time to understand the fundamentals of coding language and why these things you showed happened, these โ€œjokesโ€ wouldn't be that funny anymore.
Well if you are going to fault JS, it that it only supports floats.
I'm just noticing some these "weird" behaviours and find them kinda amusing because they seem counterintuitive, that's all. I do understand the reasons why, it's justโ€ฆ Counterintuitive. Especially in `0.1 + 0.2 === 0.3 // false` for someone like me new to the language. Sorry for triggering some of you, that was not the point.
Time to go to coldfusion.
You don't understand floating points, I am going to ride this wave of rage for weeks. /s
How about BigInt since ES2020? ๐Ÿ™‚
from the docs:

```parseInt(string)
parseInt(string, radix)```
> `string`
> The value to parse. If this argument is not a string, then it is converted to one using theย `ToString`ย abstract operation.
`"(1/1999999).toString() === "5.00000250000125e-7"` and `parseInt("5.00000250000125e-7") === 5`

Perfectly doing what the documentation tells you it should do.
Just found this Adblock / uBlock Origin filter list that blocks and removes StackOverflow or GitHub clone results from DuckDuckGo and Google. github.com/quenhus/uBlock-Origin-dev-filter
This is great! I was looking for something like this, thanks for sharing ๐Ÿ™Œ
Yes, I regularly need to use numbers greater than Number.MAX_VALUE
In fact I wager the amount of times I need to do that is 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 1
In all seriousness, would love to know someone who actually would use BigInt, I am guessing something scientific.
I was more referring to it being real integers ๐Ÿ˜…
thats not so much javascript as it is a limitation of floating point representation
โ€นโ€บ
×
USD โ”€ $
ยฐC
Nomad
โœจ To see all results
Join Nomad List
85ms
Messages
Open IM list
Send