Coding

Programming has been a hobby of mine since I was a child. I am entirely self-taught, and have managed to carve out a career in the field that spans over twenty years.

Initially, I worked with BASIC on the TI 99/4A, Atari 130XE, and the Commodore 64 and 128. This transitioned easily to Mac OS 7's QBasic. Then I learned Microsoft Visual Basic 4 through 6 and starting making small programs and games. My first two programming jobs involved me learning Microsoft Access, with all kinds of back-end VBScript.

In 1998, I got heavily interested in web technology, and took a dive into HTML and JavaScript. Soon, I'd pick up Visual Basic.NET, C#, and ASP.NET. I was then able to transition my HTML knowledge to the modern HTML5 browser. My JavaScript experience also readied me for learning Node.js. Along the way I've picked up a bunch of PHP and C/C++ as well somehow.

In many ways, I consider the core concept of coding to come quite naturally to me. You simply break a task down into smaller and smaller tasks. What really fascinates me about coding, however, is how you can put all these simple tasks together to do something phenomenal.

I am involved in many projects outside of my professional career that involve programming in some way. This page is dedicated to showcasing those projects.

Latest Releases

* Package updates.
* Package updates.
* Fix bug with HEAD request not working correctly when there is no HEAD method defined in the route class.
* Better fix for the HEAD request.
* Fixed bug with directory paths not working when missing the trailing slash.
* Initial version.
* Updated to use Azure Container Apps instead of Docker.
* The `autoCollectRequests` parameter was added to `setupApplicationInsights` and defaults to true now. If you do not want requests to be automatically collected, you must now explicitly pass in false.

Latest Commits

Version 4.0.2.
Further improve reinstall script.
Package updates.
Further improve reinstall script.
Further improve reinstall script.
Version 2.0.1.
Improve reinstall script.
Merge pull request #567 from roncli/dependabot/npm_and_yarn/applicationinsights-3.12.0
Improve reinstall script.
Improve reinstall script.
Version 2.0.0 beta 6.
More robust HEAD support, calling the head method if it exists on the route, defaulting to GET if it doesn't exist, or 405ing if neither HEAD nor GET exist.
Correct location of changing method to upper case.
Version 2.0.0 Beta 5.
Fix issue with HEAD still crashing.
Merge pull request #622 from roncli/dependabot/npm_and_yarn/jest-30.2.0
Version 4.0.1.
Add run command.
Merge pull request #1495 from roncli/dependabot/npm_and_yarn/eslint-plugin-jsdoc-60.7.1
Update automerge to include all eslint libraries.
Fix bug with directories being treated as files.
Improve resource handling.
Version 0.1.0 of wpm-meter.
Version 4.0.0 with new Azure Container App architecture.
Version 2.0.0.
Update setupApplicationInsights to include autoCollectRequests parameter.
Merge pull request #563 from roncli:dependabot/npm_and_yarn/applicationinsights-3.11.0
Fix formatting of file size display in directory and search views.
Add instructions.
Require node 18.
Remove IP testing from unit tests.
Fix bug with headers already sent.
Merge pull request #514 from roncli/dependabot/npm_and_yarn/node-mocks-http-1.17.2
Merge pull request #597 from roncli/dependabot/npm_and_yarn/jest-30.1.3
Update unit tests for recent error message changes.
Correct order of data in error messages.
Fix a crash when the GET method gets called when HEAD is actually requested, and remove IP address from error messages.
Fix a crash when the GET method gets called when HEAD is actually requested.
Fix path traversal attempts crashing the site.
Version 1.1.1.
Minor improvements and optimizations.
Add scripts, update eslint.config.mjs.
Merge pull request #555 from roncli/dependabot/npm_and_yarn/applicationinsights-3.10.0
Merge pull request #1486 from roncli/dependabot/docker/logging/node-22.20.0-alpine
Merge pull request #1485 from roncli/dependabot/docker/node/node-22.20.0-alpine
Merge pull request #1421 from roncli/dependabot/docker/nginx/nginx-1.29.1-alpine
Merge pull request #1431 from roncli/dependabot/docker/node/node-22.19.0-alpine
Merge pull request #1432 from roncli/dependabot/docker/logging/node-22.19.0-alpine
Merge pull request #1439 from roncli/dependabot/docker/certbot/certbot/certbot-v5.0.0
Merge pull request #1470 from roncli/dependabot/npm_and_yarn/logging/applicationinsights-3.10.0
Merge pull request #1482 from roncli/dependabot/npm_and_yarn/node/eslint-plugin-jsdoc-60.3.0
Merge pull request #1483 from roncli/dependabot/npm_and_yarn/logging/eslint-plugin-jsdoc-60.3.0
Merge pull request #1733 from roncli/dependabot/npm_and_yarn/node-roncli-com/roncli/node-application-insights-logger-v1.1.0
Merge pull request #1735 from roncli/dependabot/npm_and_yarn/node-roncli-com/tumblr.js-5.0.1
Merge pull request #1734 from roncli/dependabot/npm_and_yarn/node-roncli-com/blizzard.js-4.6.0
Merge pull request #1728 from roncli/dependabot/npm_and_yarn/node-roncli-com/octokit/rest-22.0.0
Merge pull request #1726 from roncli/dependabot/npm_and_yarn/node-roncli-com/compression-1.8.1
Merge pull request #1724 from roncli/dependabot/npm_and_yarn/node-roncli-com/twurple/auth-7.4.0
Merge pull request #1723 from roncli/dependabot/npm_and_yarn/node-roncli-com/connect-redis-9.0.0
Merge pull request #1717 from roncli/dependabot/npm_and_yarn/node-roncli-com/editorjs/quote-2.7.6
Update ol CDN versions.
Merge pull request #1725 from roncli/dependabot/npm_and_yarn/node-roncli-com/ol-10.6.1
Merge pull request #1721 from roncli/dependabot/npm_and_yarn/node-roncli-com/twurple/api-7.4.0
Merge pull request #1720 from roncli/dependabot/npm_and_yarn/node-roncli-com/fontsource/archivo-narrow-5.2.8
Merge pull request #1719 from roncli/dependabot/npm_and_yarn/node-roncli-com/bootstrap-icons-1.13.1
Merge pull request #1715 from roncli/dependabot/npm_and_yarn/node-roncli-com/megalodon-10.1.3
Merge pull request #1714 from roncli/dependabot/npm_and_yarn/node-roncli-com/mongodb-6.20.0
Merge pull request #1708 from roncli/dependabot/docker/node-ronc-li/node-22.20.0-alpine
Merge pull request #1598 from roncli/dependabot/npm_and_yarn/node-roncli-com/sanitize-html-2.17.0
Merge pull request #1712 from roncli/dependabot/npm_and_yarn/node-roncli-com/discord.js-14.22.1
Merge pull request #1711 from roncli/dependabot/npm_and_yarn/node-roncli-com/monaco-editor-0.53.0
Merge pull request #1710 from roncli/dependabot/npm_and_yarn/node-roncli-com/googleapis/blogger-4.0.0
Merge pull request #1706 from roncli/dependabot/docker/logging/node-22.20.0-alpine
Merge pull request #1707 from roncli/dependabot/docker/node-roncli-com/node-22.20.0-alpine
Merge pull request #1676 from roncli/dependabot/docker/mariadb/mariadb-12.0.2
Merge pull request #1681 from roncli/dependabot/docker/redis/redis-8.2.1-alpine
Merge pull request #1689 from roncli/dependabot/docker/node-ronc-li/node-20.19.5-alpine
Merge pull request #1664 from roncli/dependabot/npm_and_yarn/node-roncli-com/multer-2.0.2
Merge pull request #1700 from roncli/dependabot/npm_and_yarn/node-roncli-com/googleapis/youtube-29.0.0
Update Node.js version ignore range in dependabot.yml.
Merge pull request #1685 from roncli/dependabot/docker/certbot/certbot/certbot-v5.0.0
Merge pull request #1677 from roncli/dependabot/docker/nginx/nginx-1.29.1-alpine
Merge pull request #1566 from roncli/dependabot/npm_and_yarn/node-ronc-li/roncli/node-application-insights-logger-v1.1.0
Merge pull request #1636 from roncli/dependabot/npm_and_yarn/node-roncli-com/steamapi-3.1.3
Merge pull request #1693 from roncli/dependabot/npm_and_yarn/node-roncli-com/editorjs/editorjs-2.31.0
Merge pull request #1701 from roncli/dependabot/npm_and_yarn/node-roncli-com/googleapis/calendar-12.0.0
Merge pull request #1702 from roncli/dependabot/npm_and_yarn/logging/applicationinsights-3.10.0
Merge pull request #1704 from roncli/dependabot/npm_and_yarn/node-ronc-li/mongodb-6.20.0
Share This Page
Social Media
Ronald M. Clifford
@roncli @mastodon.social

In California, truck license plates are 7 characters, all numbers except for one letter in either the second or the sixth position. Whenever that letter is an X, I get nerd snipped into treating it as a multiplication problem and solving it in my head.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Crap, we pulled an extra pack of gargoyles and wiped! Damn DPS.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Okay I've been warned to watch out for the lizard people... And the final boss is some horse named Blucifer...

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Just landed in Denver and I can't get it out of my mind that this was a FFXIV cutscene for

THE ILLUMINATI HEADQUARTERS
DENVER, COLORADO

Yikes. I hope the tank's good.

Reply Boost Favorite
brennen
@brennen @federation.p1k3.com

we should have paid more attention to the cats who, for decades, put their bodies on the line to walk on keyboards and sit on laptops and prevent us from programming

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

The Eagles took it to the limit WAY more than one more time.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

It's my swan song!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Is that... T-Pain?

Take a good hard look at the mother fucking float.

Reply Boost Favorite
CatSalad🐈🥗 (D.Burch) :blobcatrainbow:
@catsalad @infosec.exchange

Did you know that Pavlov's hair was famously soft and silky?
It's because he conditioned it. :ablobcatlurk:

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

"People suck. Don't be people." -roncli, 2019. 🙃

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

And when the groundhog saw its shadow, the people declared:

"FOUR MORE YEARS OF STRESS EATING!"

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I told you, son!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Boss: "We need to come up with a number of hours it will take to do this super big project."

Me: "Do you want that number written out, or can I use exponential form?"

🙃

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I guess you CAN'T do it with True Value. cnn.com/2024/10/14/business/tr

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Former 2 time world champion DogPlayingTetris becomes the first player to ever rollover the level counter in NES Tetris, performing what's known in the community as "Rebirth". Final score: 29,486,164, 4216 lines, level 347 (256 + 91)... all huge world records.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Back row... Mother with screaming infant, 300 lb linebacker, and me. Or what's left of me.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I'd also love a 6 hour layover overnight instead of taking the red eye I was going to take and be 7 hours later getting into Cleveland than I wanted, why do you ask?

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Why yes, I'd love to leave at 4:40 to get to the airport at 6:20 for an 8:20 flight that got delayed to 9:05 which is too late for my connection so now I'm on a 10:20 flight instead. Why do you ask?

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Twitch getting SOMETHING right for once...

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

You may just be a po'boy, but I love you. ♥️

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I've never had as much fun on comms for a Tetris match as I did tonight with NinjaOfNinjas for the silver bracket semis and finals. What a show!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Logan Paul didn't qual for silver unfortunately. 🙃

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I'm not done! I'll be casting the later rounds of the silver bracket today at 6:30 PM Pacific at twitch.tv/classictetris3. Cya there!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I'll be live casting qualifiers today for CTWC at twitch.tv/classictetris2 at 1 PM Pacific and twitch.tv/classictetris3 at 3:30 PM Pacific. This year's CTWC is the craziest yet so don't miss it!

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Public restrooms are funny.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

The golden state, more like the blackened state. 🔥

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Just a note to everyone out there who still believes 2020 hasn't ended that today is Unquinquaginember 21st, 2020.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Burritos can be used for bribing if necessary. 🌯 :)

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

@shanselman Who at Microsoft do I have to bribe to fix ADO so that those of us on dark mode who copy/paste text from one task to another can do so without our friends on light mode seeing dark text on a dark background?

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I updated the blog post with a statement from Revival. While I'm not particularly happy with Revival's decision, I understand their motives. It's just a shame that it was someone from Interplay that had to go and do this. "By games for gamers" my ass.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Damn, got another Tetris world record! This time in the arcade variant developed by Atari. 6,008,005 points, 5,386 lines, round 363. Be warned, it's nearly FIVE HOURS. twitch.tv/videos/2131759212

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I certainly didn't have "Overload but with web3 features" on my 2024 bingo card. WTF did Revival Productions just do?

roncli.com/blogger/39495275106

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

@solitha New rule: cat tax. For every pun you post or repost, you're now required to pay the tax of posting one cute cat video.

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Today was a special day. I scored 1,016,221 points in classic NES Tetris, the first time I broke the 999,999 maxout barrier.

With that maxout, I became the oldest person to get their first ever maxout at 46 years 319 days.

After I scored that, I learned that today would have been 7-time Tetris world champion Jonas Neubauer's 43rd birthday.

I am FILLED with incredible emotion tonight.

clips.twitch.tv/AverageImporta

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

"I'm Sorry, What?!" The biggest bailout in the history of Descent II! youtube.com/watch?v=GLlTk7wa59A

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

“BART anime merch" are three words that I would not have expected to go together, but here we are. railgoods.com/bart/anime/

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

Does anyone else sing the chorus to "Cherish" by Kool & The Gang to themselves whenever they play or watch streams of Balatro? Or is that just me?

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

I'm fact that's what Lingo needs: a "phone" block. The clue is an incorrect autocorrected form of the answer. 🙃

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

It's like my phone knows I've been playing Lingo. I typed in "exited" and my phone was all:

⬜️ EXCITED ------
▪️
▪️

Reply Boost Favorite
Ronald M. Clifford
@roncli @mastodon.social

@arborelia Bag-les.

Reply Boost Favorite
Join roncli on Discord!
Join the roncli Gaming Discord server for discussion about gaming, development, and more!
roncli.com Media Player