Python Range Function In Javascript


While working on the Matching Quiz, I realized Javascript is missing one of my favorite Python functions: Range. For those who don't use Python, Range allows you to generate a list of numbers. It doesn't sound useful on the surface, but trust me it is. Note I will be using the term list and array interchangeably throughout this article. I'm lazy like that. In Python, range is often used to generate enumeration for loops. In my case I needed to generate a list of numbers in random order. This controls the sorting for the Matching Quiz. Now Python's Range function doesn't do randomization by default, it's something extra I added for my use case. So how do you use Range? It's simple, let's walk through the parameters.


The start parameter is the lowest number in your generated set of numbers. For example if you're wanting a list of numbers from 1 to 10, you would specify 1 for the start parameter. Next is the stop parameter. This tells the script to stop generating numbers, however it is not included in the list of numbers. For example if you wanted a list of numbers from 1 - 10, you would have to specify 11 for the stop parameter. This behavior may seem odd at first, but this is how Python implements the function. Next is the step parameter. This parameter is optional. But this allows you to control how many steps between each number in the list. For example, say you want only odd numbers from 1 - 10 in your list. You would start with 1, stop with 11 and step with 2 (range(1, 11, 2)). The end result would be [1, 3, 5, 7, 9]. Pretty neat huh? Ok Matt, what's the random parameter? "randomize_order" is an optional bonus parameter I added for my use case. I needed the numbers to be returned in a random order. It defaults to false, so if you don't pass it. You'll end up with a standard list of numbers.

Usage Example

range(1, 11) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(1, 11, 2) //[1, 3, 5, 7, 9]


        function range(start, stop, step = 1, randomize_order = false) {
            let arr = [];
            for(let i = start; i < stop; i += step) {
            if(randomize_order) arr = arr.sort(() => Math.random() - 0.5);
            return arr;


Feel free to grab and use the code as you like. As always it's not our responsibility for damages (if they happen). Yotta yotta. But this is a great away to have the best of both worlds when switching back and forth between Python and Javascript.

Badges courtesy of &


Categories: Programming

Tags: javascript, python

Paneler Script


Every now and then, you find yourself doing a repetitive task. After about the third or four time, you're like "I can automate this." I find myself doing this all the time. Sometimes I can find ways to automate, sometimes I'm just out of luck. But this time I was able to. So I thought I would share this script I wrote and have found useful. Let me try to explain what it does.

The Problem

I write another blog about tv and movie cars. Every so often, I do post about upcoming streaming offerings of movies and tv shows that feature cars. I like to feature the posters of the movies in the post as a panel. Or at least that's the only terminology I can think of to describe it. You can see an example of this above. If you can think of a better name or know the proper name. Let me know! For years, I would throw the posters into MS-Paint. I would find the smallest poster by height and then add them all manually. For a three or four poster panel this would take me a few minutes. I finally said, enough is enough. Let's automate this. But how?

The Solution

For the last year or so, I have been studying Python. Just so happen to stumble across a Python library called Pillow. This library is just for working with images. It can do all kinds of stuff! So after thinking through the steps I would have done in MS-Paint, I was able to recreate that process in a Python script. Feel free to checkout the result below and copy or use it for your own use. As always, no warranties and we assume no reasonability for damages.

# Name: paneler
# Description: Merges all of the images in the 'files' directory into a single inline panel image.

import os
from PIL import Image

dir = "files"

files = os.listdir(dir)

smallestHeight = None

# load images into an list
images = []

for idx, file in enumerate(files):

    # track the smallest height
    if smallestHeight == None or images[idx].height < smallestHeight:
        smallestHeight = images[idx].height

newWidth = 0
newHeight = smallestHeight

# resize all other images to match smallest height
for idx, image in enumerate(images):
    if image.width != smallestHeight:
        image.thumbnail(size=(images[idx].width, smallestHeight), resample=Image.Resampling.LANCZOS)
        newWidth += images[idx].width

# build a new image
newImage ="RGB", size=(newWidth, newHeight), color=(0,0,255))

left = 0

# add images to new image, increase left by current width
for idx, image in enumerate(images):
    newImage.paste(image, (left, 0))
    left += image.width"{dir}/newimage.jpg")

Categories: Development, Programming, Tools

Tags: python

RegBox - Regular Expression Find & Replace Tool


I've been using regular expression a lot lately. I like to use it to generate code. I generally use Notepad++ for this operation. However I've found situations where I repeat the same set of operations. I constantly have to re-enter or dropdown to the previous expression. Often forgetting which order the operations need to be ran in. I figured there has to be a better way. So I wrote a quick web app to help with this. I present to you RegBox. A simple tool for chaining regex find and replace operations. Not only will it chain these operations, but it will allow you to export and import operation chains. This app supports JavaScript regular expression flavor.

How To Use It

Cut and paste the text you want to perform regular expression find and replace on in the "Input/Output" box.
Enter the "Match" and "Replace" criteria.
Set which options you may need (gim - g for global, i for case insensitive, m for multiline by default).
Click "Run" to execute and text will change.

Additional Notes

You can add additional operations by clicking the "Add" button. If you need to disable an operation uncheck the checkbox at the end of the operation line. If multiple operations exist the script will run each operation based on the results of the previous operation (chaining). If you wish to run these operations again in the future, you can export a configuration file containing your operation configuration. Just use the "Export Config" button. You can reimport them later. Need the results of your scripts in a file? Just use the "Export Results" button to save to a text file.

Final Thoughts

This tool is provided as is. No warranty. Use at your own risk. I just built this to solve a problem I have. This may not work for you. But I'm happy to share it with you.


Categories: Development, Programming, Tools

Tags: development, javascript, regular-expression

PHP MySQLDump Browser

PHP MySQLDump Browser allows users/system admins to browse through MySQL Database Backups (Dump Files). Users can view and extract individual table structures and or data from MySQL database dumps. Use this script to avoid restoring entire backups to recover individual tables. Database dumps complied by mysqldump and phpMyAdmin are compatible with this tool. Note: This is an unoffical tool released under the GNU General Public License. PHP MySQLDump Browser creators have no affiliation with Sun Microsystems.

  1. Place the script on your webserver or webhost in the same directory as your MySQL backup dumps.
  2. Run the script.
  3. Choose which backup file you want to search. The script will search through the
  4. dump file for table structures and data. Depending on the size of the dump, this may take some time.
  5. Once the script has finished indexing the dump file, you may choose which table you wish to extract or view. By default the results of your query will display in the iframe at the bottom of the page. However you may download the results to file by clicking the download link above the iframe.

IMPORTANT: Remove PHP MySQLDump Browser as soon as you are finished.

COPYRIGHT AND DISCLAIMER: THIS SCRIPT IS PROVIDED AS IS, WITHOUT ANY WARRANTY OR GUARANTEE OF ANY KIND This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. If you change this script or add any features please tell me.


Categories: Development, Programming, Tools

Tags: development, php, programming

Problems & Solutions In The Life Of A Programmer

A great talk from Brad Traversy. Brad is the owner of Traversy Media. He is a great coder, mentor and teacher. I highly recommend subscribing to his channel on Youtube for more great videos and tutorials. Brad does a great job of presenting material in a fun and educational way. He speaks from heart and knowledge.

Categories: Programming

Tags: youtube, programming