DEV Community

loading...
Mike Talbot profile picture

Mike Talbot

Serial CTO

Location Bristol, UK Joined Joined on  Personal website http://js-coroutines.com github website
Work

Chief Technology Officer at Alcumus

Last 250 comments

JSON web tokens are NOT meant for authenticating the same user repeatedly: Use session tokens instead

I just had an "Aha" moment. Thanks!

How to use ES6 import syntax in Node.js

Pretty sure you can import from files that end with an .mjs e...

My Coding Journey - Soldier Who Codes

Thanks for sharing your story, great to hear that you've star...

Why you should NOT use Material-UI

I had a similar problem with Box etc, mostly based on the fac...

Is JQuery still worth learning in 2021?

jQuery is a key part of writing tests in Cypress so I pretty ...

Applying To Facebook

Another great article. I think a lot of things like IIFEs, c...

Applying To Facebook

I'd love to hear how you are improving your reduce and map. ...

7 Months into 2020, what new skills have you learned?

I wrote a React Native project and a TypeScript demo. All ne...

60fps Javascript while you stringify, parse, process, compress and filter 100Mbs of data

I think you could probably just get away with the coroutine r...

60fps Javascript while you stringify, parse, process, compress and filter 100Mbs of data

Right well if you can encode it using a Uint8Array in the wor...

9 Steps to Get 100 Stars on GitHub

Hey Calvin thanks! So async functions just wait for each of ...

I fucking love coding

Yeah a great many years ago for me I also realized: creation ...

Number.range; Stage-1 proposal

I'd suggest the best way to do range today would be: co...

How to Make Visual Studio Code 150% Faster in Large Projects

So TypeScript features are being used for auto completion in ...

Assigning [ ] performs better than Array(n) - Reports attached.

Reversing the order of the tests reveals the opposite answer ...

Assigning [ ] performs better than Array(n) - Reports attached.

Well you are doing an array.join on 2000 elements in the 2nd ...

Lodash chaining alternative

I think the point of flow is that it defines a proper functio...

Assigning [ ] performs better than Array(n) - Reports attached.

Hey there's a problem with your jsperf code. The first examp...

Your Manager Can’t Code? They Shouldn’t Be Your Manager

I really think it depends on the organisation. A CTO that is...

1 year with React Hooks - Biggest lesson learned

Yeah using useEffect as a watch isn't really what it's for. ...

Creating advanced Minesweeper solver using logic programming

Just wanted to say I love this. I've not used LogicJS but tha...

16GB or 32GB RAM for Web Development?

32 for VMs on a Mac I think, at work, we have both 16 and 32G...

Unjam your server: NodeJS collaborative multitasking

Yeah it would be better to properly run Worker as simply, in ...

Glitch free 1,000,000 record data processing in TypeScript with js-coroutines

Yes, I was a game programmer for many years (and a very activ...

Glitch free 1,000,000 record data processing in TypeScript with js-coroutines

No, it was kinda inspired by what React are doing with Fiber ...

60fps Javascript while you stringify, parse, process, compress and filter 100Mbs of data

Unjam your server: Node...

Search as you type at 60fps with js-coroutines

Hey, totally use another thread when it makes sense. I do. ...

Glitch free 1,000,000 record data processing in TypeScript with js-coroutines

Try doing that offline :) Like I have to. Many applications ...

Redux vs Recoil: which should you use?

I've never really like Redux due to the whole centralised pri...

60fps Javascript while you stringify, parse, process, compress and filter 100Mbs of data

You know I think it actually would yes with a modified form t...

New Here!🙌

Nicely done, does highlight your content which is excellent.

Glitch free 1,000,000 record data processing in TypeScript with js-coroutines

Oh on the API - I used JSDoc and "docdash" for the formatting...

Spotify's Random FAIL

A brilliant write up and I totally get your frustration. Obs...

Show me your personal website/portfolio

Thanks :)

Glitch free 1,000,000 record data processing in TypeScript with js-coroutines

As it rolled through? Yes that would be possible, you'd just...

Show me your personal website/portfolio

I made the js-coroutines site recently - to show off a librar...

Doing my bit to tackle imposter syndrome

Yeah to echo Cat's point, I think CEOs may well suffer from i...

Search as you type at 60fps with js-coroutines

Follow up article with more features and using TS: ...

Doing my bit to tackle imposter syndrome

I'd be happy to write something if it would help: been in the...

Simplify your Node code with Continuation Local Storage variables

Looks from the docs that you are still supposed to pass it on...

Simplify your Node code with Continuation Local Storage variables

You are right, it's pretty like response.locals in Express (a...

Can't take a single decision at all.

Would games programming be your thing? You can certainly try...

Workspace Wednesday: Show off your computer and desk setups!

Yep - the original plan was for screen 4 to be above my right...

Is JavaScript's .shift() Method a Performance Boost?

You're right, should have a , array at the end I guess or a s...

Workspace Wednesday: Show off your computer and desk setups!

It's the Mac's internal GFX for the first 3. The "most right...

TOP Motivation killers to avoid 💀

I get caught up on things and can't let go. It's frustrating...

Random Can "Break" Your App

I'm really looking forward to the next part now...

Search as you type at 60fps with js-coroutines

Yes for sure, I've added it to the demo. Basically you just ...

js-coroutines gives your code: data indexing and lookup functionality, in idle time

Agreed, parse is a lot faster than storage, but definitely ca...

Mutation is ok

There is certainly a lot more sugar in JavaScript these days,...

When to choose NoSQL over SQL?

Memcached protocol in MySQL makes a nice way of updating thin...

Mutation is ok

Nice syntax and a feeling of "doing the right thing" lead to ...

6️⃣ Six Reasons to Use Material-UI for React

The @material-ui/lab is also fantastic for getting early acce...

js-coroutines gives your code: data indexing and lookup functionality, in idle time

Yes, even though response.json() looks like it's async, it is...

js-coroutines gives your code: data indexing and lookup functionality, in idle time

2.3.63 - removed the debugger

js-coroutines gives your code: data indexing and lookup functionality, in idle time

Ouch lol. Ooops. Fixing that.

js-coroutines gives your code: data indexing and lookup functionality, in idle time

Right I added a breaking change a while ago, but it only affe...

js-coroutines gives your code: data indexing and lookup functionality, in idle time

Odd on the "out of the box" all my tests seem to be ok. You ...

js-coroutines gives your code: data indexing and lookup functionality, in idle time

That should certainly work! I'd just say inside this one func...

Practical Functional Programming in JavaScript - Side Effects and Purity

The primary function of yield in js-coroutines is to test the...

60fps with Functional Programming in idle time

Totally makes sense to me. Ok I'll sort it over the next few...

60fps with Functional Programming in idle time

Ok that keyBy might be an issue if the data is huge. You/I/we...

60fps with Functional Programming in idle time

Hey not used it, but looks useful :) Are you letting it parse...

React apps without installing anything

This is really cool I think. A great way to get going and a...

JavaScript: How to Remove Duplicate Values from Arrays

Yes, nice that good syntax has great performance haha! Not a...

JavaScript: How to Remove Duplicate Values from Arrays

Surely Set must be faster - the whole thing is an O(N) operat...

60fps with Functional Programming in idle time

I've never used RxJS, but I'm beginning to see some overlaps....

Build an amazing Job Search App using React

A huge effort went into that, for a new dev the step-by-step ...

Practical Functional Programming in JavaScript - Side Effects and Purity

Inspired by this article, I fiddled around to enable a basic ...

60fps with Functional Programming in idle time

Article on how js-coroutines works: ...

An angle on React state you haven't seen before...

I really didn't like React before "hooks", perhaps this techn...

Using Array.prototype.includes() vs Set.prototype.has() to filter arrays

Nicely done with the examples, also one of my pet peeves n^2 ...

Monthly reflection - June 2020

Now that is a pretty successful month!

Practical Functional Programming in JavaScript - Side Effects and Purity

That has to be the clearest description of tap() I've seen. T...

My open-source project hit 2k stars

It's just a brilliant thing.

Understanding Hoisting

It's a really nice article :)

Understanding Hoisting

This is indeed a very clear description - I would say though ...

Remove Duplicates In Array

It is working in this case, those objects are each unique. I...

Remove Duplicates In Array

That is significantly slower though, the Set uses an O(1) loo...

Open Source Sustainability

Very interesting, I just can't see me convincing my CFO to pa...

What is the decorator pattern? And how to implement it by JavaScript?

I like this! Looking at the code and not testing it - I'm won...

async/await: under the hood

Totally agree, the concurrency is only in the fact that there...

Welcome Thread - v80

Hi Melissa - just remember it's the ideas behind programming ...

What are some examples of "productive laziness"?

Well, I guess you should always write as little code as possi...

Workspace Wednesday: Show off your computer and desk setups!

Did I just suggest I have a "far-right debugger"??? - I want ...

JavaScript Security Pitfalls

I'm really looking forward to this series.

Train wagons 🚃.🚃.🚃

You can also write the second approach without promises (beca...

Workspace Wednesday: Show off your computer and desk setups!

Lol, no it's more that I can focus on two screens at a time! ...

Workspace Wednesday: Show off your computer and desk setups!

I finally got my 4th screen setup last week. Needed somethi...

Why I'm learning BSL. ✊

I needed to do this with my eldest daughter too (who is now 1...

What is the Game of Life?

I love Life as a principle. I made a rather crazy version fo...

Generators mon amour

Yep I love generators and use them a lot in js-coroutines but...

9 Steps to Get 100 Stars on GitHub

Done haha.

how not to use reduce

So in my first example of making an index, I used a map to cr...

how not to use reduce

Seems like deciding to be 20% to 70% slower for readability i...

how not to use reduce

Hmmm, I totally agree with the first few - but the last 3 you...

A JSDoc in TypeScript's Clothing

See in Webstorm/IntelliJ JSDoc is just autofolded away for me...

Most Esoteric Language You've Used

Woo Rockstar is hilariously cool. I think my weirdest assemb...

Agile and Scrum companies

I think you also need to consider that there is a movement go...

A JSDoc in TypeScript's Clothing

At the beginning TS was a way of being able to code with fanc...

A JSDoc in TypeScript's Clothing

When I first came to JS from C# I used (what is now) github.c...

Git Concepts I Wish I Knew Years Ago

Thanks for this, really useful, I've used git for years - but...

An angle on React state you haven't seen before...

Just to point out that this library does also expose the wild...

9 Steps to Get 100 Stars on GitHub

Thanks! :)

To The Young Female Software Engineer With Her First Job Offer

Just wanted to say how important I think it is that people sh...

How long does it typically take to be productive in a new job?

I completely agree - one of the reasons I've been writing art...

How YOU can learn enough RegEx in JavaScript to be dangerous

I know that pain (and I've bookmarked this article for the ne...

Bootstrap 5

Underlining my point above - when I mentioned this before Ben...

Bootstrap 5

Wikipedia has 10% of users on IE11 and I think that's probabl...

Bootstrap 5

Agreed, I won't be able to release any apps using it, given m...

I built an online code editor

That is very very cool :)

9 Steps to Get 100 Stars on GitHub

Great advice, I'm going to add a nice logo to js-coroutines a...

I built an online code editor

What a wonderful thing that is... Can see me getting my daugh...

A Look at Server Sent Events

WebSockets would have that problem (and probably more as my l...

A Look at Server Sent Events

It's probably worth me mentioning that there is a bit of an i...

Key Headaches in TypeScript

I think you put your finger on my problem here. I understand...

What harmful habits do developers pick up over time?

Becoming passive-aggressive on pull request reviews because i...

Key Headaches in TypeScript

As your journey continues, I'm beginning to wonder why again....

Implementing Conway’s game of life.

Ugh I really need to understand more functional programming! ...

License, what did I just do to my software?

That said, my head of legal had a bit of a wobble when I poin...

License, what did I just do to my software?

I believe pretty strongly in MIT licensing; I use libraries a...

javaScript – Replace all occurrences of a forward slash in a string

Nicely put :)

Sometimes JavaScript arrays don't compare

Well said! This is the danger in things that "appear" to work...

Implementing Conway’s game of life.

Nice article! Sadly John Conway passed away of Coronavirus e...

Website feedback

Looks really good to me, couple of comments: 1619 cover is ...

Daily Challenge #263 - Reverse Words

function reverseWords(str) { return str.replace(/[^\s]+/g...

Seven things to start saying RIGHT NOW to become a Tech Lead

I love it. I've immediately started event-mining my code bas...

What is the balance between learning and posting content?

For me giving back is very important. I use open-source libr...

Workspace Wednesday: Show off your computer and desk setups!

My screen addiction just keeps on growing. . Capacity for 1 ...

Why I love Javascript

That's true... I come from a C# background so TypeScript look...

The first UI Kit for Bootstrap 5! Using Material Design 2.0

Could you give me the highlight points about why Bootstrap 5 ...

Why I love Javascript

I understand typescript for big projects and wider teams to k...

IDEA Plugins for the Contemporary Ninja

Torchie Flow sounds very interesting....

The Unbearable Whiteness of Coding

I hear you, here's my additional clarification. I have women...

String.prototype.search(): a method I wish I knew about a long time ago

Symbol.search huh - I do like that syntax.

The Unbearable Whiteness of Coding

I just think we have to be careful about statistics. I hope ...

HowTo: Custom React localStorage Hook ⚓

Ah I was thinking of adding and event handler for window 'sto...

doYoda() => {...}

I am totally borrowing that haha

The Unbearable Whiteness of Coding

What worked for us in the UK (specifically South Wales, which...

React.js Dropin' Replacement?

Try this: preactjs.com/

HowTo: Custom React localStorage Hook ⚓

I would just say that your hook doesn't actually update when ...

How I chose a programming language and beat bad habits

Yeah absolutely, if I came across as questioning your motivat...

How I chose a programming language and beat bad habits

That is a very good point :)

Hello! Thanks for a crazy first month on DEV :)

Thanks :) It's odd to look back sometimes (anyway I kinda li...

How I chose a programming language and beat bad habits

A lot of other very useful comments already, so this may echo...

From idea to public in 3 hours

Yep, I need that! Great work and that's what you call an MVP!

The State Of Progressive Web Apps Adoption By Developers

I'm still banking on PWAs for a bunch of business to consumer...

Hello! Thanks for a crazy first month on DEV :)

Thanks! I think being an employer and a member of the team a...

Hello! Thanks for a crazy first month on DEV :)

Yeah, that one was a disaster. Short timescale, no source ma...

Hello! Thanks for a crazy first month on DEV :)

I'm glad to hear that! I'm always keen to not reinvent thing...

Hello! Thanks for a crazy first month on DEV :)

Thank you!

Hello! Thanks for a crazy first month on DEV :)

Ben, firstly thanks for saying that, really appreciated. You...

Hello! Thanks for a crazy first month on DEV :)

Thanks John, you have been hugely supportive and I've also le...

The Aviator🎮  -  Test your coding and logic skills with a web game

Another brilliant piece of work Paolo.

Fired for Agility

Oh I feel your pain. I've hired teams that want to spend hou...

How to be productive as a programmer with ADHD

Just installed Self Control - to keep me off DEV for a while!...

How I went from a Retail Assistant at 17 to Landing a Developer Role at 19

Great story and excellent storytelling. Keep telling yoursel...

Default Props in React/TypeScript

I did make it to the end, but think I'd missed that you were ...

Default Props in React/TypeScript

Just for reference, I'm hoping you find a way around this, or...

Unconditional Challenge: FizzBuzz without `if`

Slightly shorter without bothering to call out for variable p...

Unconditional Challenge: FizzBuzz without `if`

function map(compare, say, next = v => v) { return fun...

This is my first project! Please give feedback

Hey that's nice! As Vincent mentioned the only thing I'd also...

what do you think about Antd design ?

No experience of Antd, but I use (and love) Material UI.

When Is It Time To Kill Your Pet Project?

It's a shame when you've invested a lot of time into somethin...

How to prove you are a programmer in one sentence?

I thunk therefore I am.

Real world Javascript map/reduce, solving the Poker Hand problem

As mentioned in my comment above, the initial challenge had n...

Is reduce() bad?

Just to say in the example you give, this would be faster tha...

7 Useful Javascript Tips

Nice - I learned one there. I've mostly used |0 to floor num...

Inversion Of Control: Pt 0 - Introduction

That's great, I will be sure to be referring to SOLID given t...

What are the big differences between working for a "tech company" and being a dev for a "non-tech company"

I've been a founder of technology startups pretty much my ent...

How software can be racist (and what you can do to stop it)

To make a point of discussion: are you hiring a diverse team ...

A peculiar argument regarding accessibility

This is a very interesting subject and a very valuable perspe...

Daily Challenge #259 - Duplicate Encoder

Not that slow :) Better than anything that searched/scanned o...

Visual Studio Code : Fix Goto Definition

Nice, that was annoying me haha!

On Coding, Ego and Attention

No but I will :)

Remove A Specific Element From An Array In Javascript

I'd just point out that if you were trying to remove elements...

Real world Javascript map/reduce, solving the Poker Hand problem

The original challenge specified no low straights from the Ac...

What's your most embarrassing coding story?

As long as you can do zero downtime I agree! That's often th...

Real world Javascript map/reduce, solving the Poker Hand problem

Thanks! Yeah that's fair on the ternary. I'll adjust it.

Why to not support Internet Explorer

My point is that lots of things, like LinkedIn, totally suppo...

Daily Challenge #258 - Ranking Poker Hands

Real world Javascript m...

What was the first programming language you learned?

ZX81 Basic then Z80 assembly language for me. C then C++ a li...

Daily Challenge #258 - Ranking Poker Hands

function PokerHand(hand) { this.hand = hand } PokerHand....

What's your most embarrassing coding story?

Well yeah, ummm, I was updating the thing that stopped notifi...

What's your most embarrassing coding story?

So probably for me the time I tried an update at 4am, got the...

Why to not support Internet Explorer

Ummm. Your screen shot has IE on it...

Why to not support Internet Explorer

Yeah I mean what developer goes anywhere on IE lol. I'd neve...

On Coding, Ego and Attention

What an excellent article, thanks for that. I completely agr...

Why to not support Internet Explorer

Totally with you on that. If you can control the start of th...

Why to not support Internet Explorer

Simple answer for me is: users. 20%+ of my users. Still 10%...

Do you have a university degree?

I don't have a degree. It can make it harder to get employed...

JavaScript Concurrency: Avoiding the Sequential Trap

I'd just like to add that I recently launched js-coroutines w...

33 Most popular JS repositories on GitHub in May 2020

A shameless self promotion, but js-coroutines hit jsdotgit tr...

Not an "Easy" Algorithm: Rotating an Array, Three Ways

Yeah immer.js allows you to mutate arrays and then it works o...

Not an "Easy" Algorithm: Rotating an Array, Three Ways

Glad you like it :) Honestly only do that when it matters tho...

Not an "Easy" Algorithm: Rotating an Array, Three Ways

It's probably the game programmer in me coming out. Don't al...

Not an "Easy" Algorithm: Rotating an Array, Three Ways

I guess my point was that the array is a specific data struct...

Is JavaScript's .shift() Method a Performance Boost?

Yeah we can do it without spread - but now it looks nicer in ...

What sourcery is this?

This is a reminder for me that I really do need to understand...

Is JavaScript's .shift() Method a Performance Boost?

Hey just to point out that shift itself is a bit of a pain do...

Not an "Easy" Algorithm: Rotating an Array, Three Ways

A good point, one of those if you knew the actual problem you...

What's your ideal job / who is your ideal employer?

Yes for me, the mission is important. Not the linting standa...

Interview Qs Decoded - # 2

Ah well I'd have made that mistake as well then :) Fair enoug...

Not an "Easy" Algorithm: Rotating an Array, Three Ways

I would have though the shortest version of (1) would be: ...

What's your ideal job / who is your ideal employer?

Yeah I'm fascinated to get all the opinions. Thanks for writ...

What's your ideal job / who is your ideal employer?

I do hate the entire principle of "I'm your boss so I know be...

What's your ideal job / who is your ideal employer?

Couldn't agree more. Although not having seen my team in mon...

To WASM or not to WASM?

That is very interesting. To undertake the re-write project,...

What's your ideal job / who is your ideal employer?

John, wow thanks for such a detailed response! I may add mor...

What's your ideal job / who is your ideal employer?

That's always been one of my key drivers. If we stand still,...

What's your ideal job / who is your ideal employer?

Agreed, rapport is vital - yep and trust in that pay packet!

Feeling a little discouraged

It's a very worrying time. I can imagine that "what-ifs" are...

Interview Qs Decoded - # 2

It's an interesting problem because it drives for a more opti...

Daily Challenge #257 - Halving Sum

const half = n => n > 0 ? n + half(n>>1) : n

TabNine - Put your coding speed to the next level

Well it's active in my Markdown - offering suggestions, which...

TabNine - Put your coding speed to the next level

Yeah I'm not sure why it's autocorrecting Markdown - on Webst...

TabNine - Put your coding speed to the next level

Well after your article I decided to try it out. Won't be fr...

What languages and tools do you use that spark joy?

If it's a tool: for me it is probably Wallaby.js - realtime a...

Daily Challenge #256 - How Many Are Smaller Than I?

const smaller = arr => arr.reduce((c,a,i)=>{ for(le...

Rethinking responsive Webdesign

Ok sure, when I get a moment I'll go rework me recently writt...

Rethinking responsive Webdesign

Count me in, anything I can do to help let me know.

Rethinking responsive Webdesign

Yeah I was looking at the polyfill for custom elements - not ...

Rethinking responsive Webdesign

Really interesting work!

Rethinking responsive Webdesign

Will that work with a resize observer polyfill? I'm using th...

Vanilla JavaScript Check if Date is in the Past

Just a point - your routine has a side effect of actually mod...

React Project Structure Best Practices for Scalable Application

Yeah just for reference: webpack et al statically analyse the...

js-coroutines passes 100 GitHub stars, gets own website, API docs, typings + more examples

That's great! Very happy to have people just use the princip...

How much coffee do you drink?

Since we went into lockdown and I finally had to invest in a ...

The Beginning of the End ? Deno vs Node.Js

Well I'm not a freelancer and I spend a great deal of time on...

Daily Challenge #254 - The Vowel Code

Very nice

The Beginning of the End ? Deno vs Node.Js

The decision not to support npm and the existing huge collect...

Name a Non-Programming 📖 Book that will Make you a Better 👨‍💻👩‍💻 Programmer

Blink by Malcolm Gladwell - because we need to know when to t...

Server Sent Events are still not production ready after a decade. A lesson for me, a warning for you!

It's a very good point. We serve HTTP/2 (via AWS Cloud Front...

Copying objects in JavaScript

The great thing about rfdc is that it super quickly clones re...

Server Sent Events are still not production ready after a decade. A lesson for me, a warning for you!

Yes we see that all the time too on passwords. That and the ...

Server Sent Events are still not production ready after a decade. A lesson for me, a warning for you!

Hmmm. Well they wouldn't work well for notifications in your...

Server Sent Events are still not production ready after a decade. A lesson for me, a warning for you!

So it basically means testing a "landing server" with an incr...

How to process heavy workloads AND animate at 60fps in Vanilla JS, any Framework or React Native:

So the animations use requestAnimationFrame - the key thing b...

loading...