DEV Community

loading...
Shalvah profile picture

Shalvah

Builder, explorer, writer. APIs, dev tools, automation. Advocate of simple design.

Location Lagos, Nigeria Joined Joined on  Personal website http://shalvah.me github website twitter website
Work

Software Engineer

All 122 comments

Exposing sequential IDs is bad! Here is how to avoid it.

I think a hashid might be a better idea for that second use c...

Goodbye Offline Page

Had this issue too.

When Alternatives are Unhelpful: A Ruby Case Study

Yes! inject vs reduce caught me out too. The first time I saw...

How I write web apps in 2021 ?

Didn't plan on reading this because I don't do frontend, but ...

Errors Are Not Exceptions

Another thing is: I feel like we may be co-opting language te...

Errors Are Not Exceptions

What problem I see in returning errors is that there can be ...

Errors Are Not Exceptions

Still reading the article, but this kept bugging me, so I had...

Quiz: is this a programming language?

Wow, you guys have argued quite a bitπŸ˜…. Some interesting poin...

Quiz: is this a programming language?

I don't really care for the "PL or not" debates, but an inter...

Comparing function handles across languages

Function pointers? Interesting. But why? Seems like it's for ...

Comparing function handles across languages

lambdas == procs Thank you. Just looked it up and noticed ...

PowerShell Tutorial (Especially for People Who Hate PowerShell)

So, two and a half years later, I finally finished this artic...

Advent of Code 2020 Solution Megathread - Day 19: Monster Messages

My Ruby solution. For the first part, my approach was to gen...

Advent of Code 2020 Solution Megathread - Day 17: Conway Cubes

Ruby solution. It's an eternity of eachs (Ruby's for loop), b...

Advent of Code 2020 Solution Megathread - Day 15: Rambunctious Recitation

Ruby solution. Same thing for Part 1 and 2. input = [1,17,...

Advent of Code 2020 Solution Megathread - Day 15: Rambunctious Recitation

You can use a map to store the numbers you've seen. Map looku...

Advent of Code 2020 Solution Megathread - Day 13: Shuttle Search

Thanks for this. I was really stuck on this; came on here and...

Advent of code: 2020 Day 01

Nice! Some extra optimisations: Don't read the whole file a...

Building a personal but multi-tenant web page screenshotting service with Puppeteer and Vercel

Nice work! Planning on making something similar. And thanks f...

Any reason for not using loading="lazy" attribute?

I don't know how Medium's lazy load is implemented, but I hat...

What API documentation generator/tool do you use?

If you're still looking, how about Scribe (I'm the maintainer...

Git 2.28 brings default branch option

Don't worry, your choice of branch name doesn't make you raci...

Do not just use color to convey information

Such a good post! Thank you for including detailed positive a...

On costs and contexts

That's a good point.

I was bored, so I made my website into a Node package. Here's how.

NPM package - github.com/shalvah/shalvah Website - github.com...

Preventing a Windows PC from adjusting the screen's brightness automatically

This is interesting. My PCs have never done any automatic bri...

Helpful Node.js testing utilities

Nicee.

3 Amazing ways to generate random numbers without Math.random()

Great article! I love how you explained the algorithms simp...

What's the big deal about immutability?

Hehe. I'm aware that immutability helps with thread-safety....

What's the big deal about immutability?

Hopefully I will. πŸ˜„

What's the big deal about immutability?

Nice. I respect functional programming principlesβ€”but from ...

What's the big deal about immutability?

Glad you found it helpful.πŸ˜„

Setting up Windows for web development

Next, search for Powershell in the start menu. Run it as a...

gRPC Guide

Goddamn, this is the best resource on gRPC I've ever seen! ...

Probably the hottest code refactoring you ever saw πŸ”₯

Thought this was clickbait at first, but this was a genuine...

Deploy a Censorship Resistant Website for FREE πŸ”“πŸŒŽ

Cool. Would be nice if you had explained how IPFS ensures c...

Every website deserves a service worker

You're totally right. But kudos to the author for explainin...

Management GUI for Elasticsearch

Thanks for this! Found it helpful today.

Terrible interview question: Swap variables without a temporary

Your first paragraph should be framed and hung somewhere! πŸ‘Œ

API Design: In The Wild

I love analyzing APIs, so I really love your series! Good w...

Add an Emoji Favicon to your site!

Just coming here to say I found this helpful. Thanks! You c...

The IDE - The beginner's trap !

I don't agree. I learnt programming with an IDE (Visual Stu...

The new MacBook Pros are overpriced

All MacBooks are overpriced. πŸ™‚

The Definitive Guide To Protecting Your Eyes For DevelopersπŸ‘€

Android (8, I think) now has it too. Otherwise you can use ...

How to Securely Store a Password in Java

Yes, most of us agree that dynamically typed languages are ea...

Node.js vs PHP

Small correction: After that, you just need to install ht...

Show off your stickers!

Not a sticker person, but this is cool.

On GUI-shaming and a mountain of hot takes

all git gui implementations are inherently opinionated. ...

On GUI-shaming and a mountain of hot takes

Haha. I'm glad I switched to dark themes before I got expos...

On GUI-shaming and a mountain of hot takes

Thank you very much for this, Ben. In my early years as a d...

Who's looking for open source contributors? (October 15th edition)

you can't see your followers or the number of followers yo...

Todo-MVP: Or 'Why You Shouldn't Use A Web Framework' - The Revenge

Let's just say "all the supporting code and how they're tie...

Todo-MVP: Or 'Why You Shouldn't Use A Web Framework' - The Revenge

You always use a framework when coding. The difference is whe...

Thank You for Making the DEV Community Magical

Thank you for building this.❀️

Top 5 DEV Comments from the Past Week

Really? First time? πŸ˜† And same here! 😁😁

What's software development like as a non-native English speaker?

Wow. Thanks for sharing. It's so enlightening hearing about...

What's software development like as a non-native English speaker?

Hehe. I guess the idea of "magic" words is really useful. K...

What's software development like as a non-native English speaker?

🀣🀣

What's software development like as a non-native English speaker?

Wow, that's interesting.

What's software development like as a non-native English speaker?

Wow. Thanks for sharing. Glad you were able to push on. Ye...

What's software development like as a non-native English speaker?

That's true. English is the lingua Franca of computer scien...

What's software development like as a non-native English speaker?

That's cool (and a bit sadπŸ˜₯). Glad it worked out well.

What's software development like as a non-native English speaker?

Damn. I only scratched the surface. Seems like we might nee...

What's software development like as a non-native English speaker?

Haha. That link you shared. Tbh, I don't think I would use ...

It's good to identify what you don't need to bother learning

FOMO is the enemy of focus.😞

Avoid Using Trivializing Words

I learnt this a while back. Not just in speech. Technical d...

When signing up or logging into an app, do you prefer OAuth (authentication w/social media account) or email sign up/sign in?

I prefer OAuth generally. Why? There've been too many data ...

Please stop using Ruby

Just here to say that I love your "digital carpenter" phrase!...

We don't need a ternary operator

I like the ternary. Like @fnh pointed out, it's the only w...

Start menu search on Windows 10 with Google!

Oh, I will! I suggest you add a GIF of the project in actio...

Start menu search on Windows 10 with Google!

Was just discussing the improved Start Menu search with a c...

Which browsers should I try to support when creating a portfolio?

This is me!

Which would you prefer and why?

*because you do not reassign the reference. You can trans...

Pragmatic types: dynamically-, statically-, gradually-, weakly-, strongly- and un-typed languages

Hehe, it's okay.

Pragmatic types: is JavaScript an untyped language?

Yeah, I think one of the greatest errors in the language's ...

Suggestions for using `...arguments` while working with functions in javascript.

Combining Meghan's two earlier responses, a better way woul...

Pragmatic types: dynamically-, statically-, gradually-, weakly-, strongly- and un-typed languages

Would you say Bash is an untyped language?

I was bored, so I made my website into a Node package. Here's how.

Lool. I knew someone would try that.😁

The use cases and benefits of a RDBMS

This sql script will enforce that, when you want to insert...

I was bored, so I made my website into a Node package. Here's how.

Thanks!

How do you handle days where you just aren't motivated?

A similar thing here. Recently discovered my concentration ...

How do you name your devices?

I thought I was all alone in this, but then I found you! πŸ˜ͺπŸ˜ͺ

What are the great function/method/etc. names in popular libs/languages?

confess πŸ˜‚πŸ˜‚

Why I hate Infinite Scrolling

I am sure you have seen old Pre-Material Design YouTube ho...

Pro tip: using Promise.then for function composition

I'm curious as to why you think it's better to "map once". ...

Pro tip: using Promise.then for function composition

I'm not sure I understand you. Could you give an example of...

Pro tip: using Promise.then for function composition

Testing: I don't think this is particularly a problem. Yo...

Pro tip: using Promise.then for function composition

Right. I recall seeing that in a book on FP. Limiting the n...

Why you shouldn't reassign values in JavaScript

Good article @zellwk . Another useful habit to cultivate is...

Why you shouldn't reassign values in JavaScript

They're not really "constants" in a strict sense because, e...

Why we need to use HTTP/2

Nice explanation. So... How do we get on to HTTP/2?

What is a website that you visit regularly despite its technical quality and user experience?

Yay! Another Simpsons fan!!

Meet Burns: cleaner application events for Node.js

Thanks. Interesting suggestion. No plans yet, but I'll cert...

PowerShell Tutorial (Especially for People Who Hate PowerShell)

Lol. Bad News: I skipped to the end. Good News: so I could fi...

PowerShell Tutorial (Especially for People Who Hate PowerShell)

Or, you might simply stop telling people how much you hate P...

New Gmail Is Pretty Dope! #DevThoughts

Inbox has had Keep and Calendar integrations for longπŸ™‚πŸ™‚

How to "grep" in PowerShell

Great article! I suggest you mention that cat in PowerShell...

I’m Ben and I am a Rails developer

Haha

I’m Ben and I am a Rails developer

Replace "Rails" in this post with "Laravel", and everything s...

Don't ALWAYS quick-return from functions

Yes. But I should point out that your final code snippet an...

Don't ALWAYS quick-return from functions

Your final code snippet seems to be missing some braces

Advanced devs and beginner devs can co-exist harmoniously. It's not rocket science.

I agree with you. It's really sad to see people accuse Jeff...

Advanced devs and beginner devs can co-exist harmoniously. It's not rocket science.

Lol @ the title. Reminds me of the day someone asked a ques...

Can you use Serverless Everywhere? Any Drawbacks?

Thanks for this analysis!

How I developed a captcha cracker for my University's website

Brilliant!

Sarcastic web services and websites that actually exist πŸ˜‚

There's also: bettermotherfuckingwebsite.com bestmotherfu...

What was the worst bug you've ever written?

You crashed a site from your desk. Badass! πŸ™ŒπŸ™ŒπŸ˜‚πŸ˜‚

What was the worst bug you've ever written?

Yasss! I did this too. πŸ˜‚πŸ˜‚

What was the worst bug you've ever written?

Your program had access to their raw passwords?

What was the worst bug you've ever written?

Wait...cron jobs have unit tests?

Data constraints: database layer or app logic?

Thanks for sharing, Dian. Regarding point 1, I would absolu...

Your thoughts on Creating a New User

How I handle that next url: in the auth middleware, if the ...

Practicing YAGNI

Word. :clapping:

Write clean code and avoid the distractions of emerging technology

Can I like this post twice? This is exactly the principle ...

Welcome Thread - v1

Hi, everyone! Glad to be here. Awesome to see such a thriv...

loading...