# intternet.dev > A coding blog with articles and snippets about web development, programming, and developer tools. Each post is available as plain Markdown by appending .md to its page URL. Code examples are preserved; interactive examples are linked to their original pages. ## Posts - [100% height sidebars without images, unsemantic HTML elements, or flexbox](https://intternet.dev/100-height-sidebars-without-images-or-unsemantic-elements.md) - [100% height columns & fixed width sidebar: pure CSS solutions to common fluid layout problems](https://intternet.dev/100-percent-height-columns-fixed-width-sidebar-pure-css-solutions-to-commons-fluid-layout-problems.md) - [Accessible and modern React icon component](https://intternet.dev/accessible-and-modern-react-icon-component.md) - [Alacritty, the nihilist terminal setup](https://intternet.dev/alacritty.md) - [A small Markdown syntax guide](https://intternet.dev/all-you-need-to-know-about-markdown.md) - [Append and prepend elements with pure JavaScript](https://intternet.dev/append-and-prepend-elements-with-pure-javascript.md) - [Associative arrays in Bash](https://intternet.dev/associative-arrays-in-bash.md) - [Base64 encoded 1px gifs, black, gray and transparent](https://intternet.dev/base64-encoded-1px-gifs-black-gray-and-transparent.md) - [A beginner-friendly introduction to Bash scripting](https://intternet.dev/basics-of-bash-programming-aka-shell-scripting.md) - [Better stat command in OS X](https://intternet.dev/better-stat-command-in-os-x.md) - [Block bots with robots.txt, and know its limits](https://intternet.dev/block-bad-bots-with-robots-txt.md) - [Bower and Grunt: match made in heaven](https://intternet.dev/bower-and-grunt-match-made-in-heaven.md) - [Bower and Gulp: match made in heaven (also)](https://intternet.dev/bower-and-gulp-match-made-in-heaven-also.md) - [Browser statistics](https://intternet.dev/browser-statistics.md) - [Run an npm binary with Bun instead of Node](https://intternet.dev/bun-running-npm-bins.md) - [Remove a button’s default styles and make it look like text](https://intternet.dev/button-reset.md) - [Change the form field placeholder text color](https://intternet.dev/change-the-form-field-placeholder-text-color.md) - [Check if element exists in jQuery](https://intternet.dev/check-if-element-exists-in-jquery.md) - [Check if string starts with, or ends with another string, using JavaScript](https://intternet.dev/check-if-string-starts-with-or-ends-with-a-given-string-with-javascript.md) - [Understanding React children](https://intternet.dev/children.md) - [Chrome DevTools can connect to your local workspace automatically](https://intternet.dev/chrome-devtools-workspaces.md) - [Speed up page rendering by setting content-visibility to auto](https://intternet.dev/content-visibility-auto.md) - [Convert GIFs to lighter videos with FFmpeg or HandBrake](https://intternet.dev/convert-gifs-to-videos-and-videos-to-gifs-with-ffmpeg-or-handbrake.md) - [How to use secure copy to copy files from local machine to a remote, and tab complete the remote server directories](https://intternet.dev/copy-files-from-local-to-remote-and-tab-complete-in-the-remote-server.md) - [Copying text into the system’s clipboard with JavaScript](https://intternet.dev/copying-text-with-javascript.md) - [Count packages installed in a pnpm or aube workspace](https://intternet.dev/count-installed-packages.md) - [How to clone Raspberry PI operating system](https://intternet.dev/create-a-image-of-raspberry-pis-sh-card.md) - [CSS beveled corners](https://intternet.dev/css-beveled-corners.md) - [CSS beveled corners, take 2: a Sass Mixin](https://intternet.dev/css-beveled-corners-take-2-a-sass-mixin.md) - [It’s 2026, are we still doing CSS resets?](https://intternet.dev/css-reset.md) - [Currying in JavaScript](https://intternet.dev/currying.md) - [Detect click with pure JavaScript](https://intternet.dev/detect-click-with-pure-javascript.md) - [Different methods to make DOM elements in jQuery](https://intternet.dev/different-methods-to-make-dom-elements-in-jquery.md) - [CSS trapezoid shapes drawn in pure CSS (and triangles)](https://intternet.dev/different-trapezoid-shapes-with-css.md) - [How to disable Gatsby telemetry](https://intternet.dev/disable-gatsby-telemetry.md) - [Display any file in a browser as plain text](https://intternet.dev/display-any-file-in-a-browser-as-plain-text.md) - [Easier GitHub interactions with Hub](https://intternet.dev/easier-github-interactions-with-hub.md) - [A beginner-friendly guide to regex in JavaScript](https://intternet.dev/easily-digestible-introduction-to-regex-in-javascript.md) - [The unexpected mutability when editing nested arrays](https://intternet.dev/editing-nested-arrays.md) - [Example .gitignore file for a JavaScript project](https://intternet.dev/example-gitignore-file.md) - [Filterable list with React](https://intternet.dev/filterable-list.md) - [Find out what takes space on the hard drive, in a Linux/Unix machine](https://intternet.dev/find-out-what-takes-space-on-drive.md) - [Firefox won't take percentage padding on form elements](https://intternet.dev/firefox-wont-take-percentage-padding-on-form-elements.md) - [Fluid multi column layout where sidebar and margins stays fixed width, without JavaScript](https://intternet.dev/fluid-multi-column-layout-where-sidebar-and-margins-stays-fixed-width-without-javascript.md) - [Fluid multi column layout revisited](https://intternet.dev/fluid-multicolumn-layout-revisited.md) - [For, while, and each loops in Sass](https://intternet.dev/for-while-and-each-loops-in-sass.md) - [Access random element in an array, in a short and concise manner](https://intternet.dev/get-random-value-from-array.md) - [Getting DOM elements with JavaScript](https://intternet.dev/getting-dom-elements-with-javascript.md) - [Doing more complex conditional logic, getting more than two different values](https://intternet.dev/getting-values-in-javascript.md) - [Git: all about adding files to the staging area](https://intternet.dev/git-all-about-adding-files-to-the-staging-area.md) - [Git: amending commits](https://intternet.dev/git-ammending-commits.md) - [Git: beginners guide](https://intternet.dev/git-beginners-guide.md) - [Git: restore files or folders from another branch](https://intternet.dev/git-checkout-file-or-directories-from-another-branch.md) - [Git: dealing with branches, merging and rebasing](https://intternet.dev/git-dealing-with-branches-merging-and-rebasing.md) - [Git: deleted a bunch of files accidentally, how to get them back?](https://intternet.dev/git-deleted-a-bunch-of-files-accidentally-from-a-repository-how-to-get-them-back.md) - [Git: handy branching commands](https://intternet.dev/git-handy-branching-commands.md) - [Git: move commits between branches with cherry-pick](https://intternet.dev/git-move-commit-between-branches.md) - [Git: rebasing workflow and resolving merge conflicts](https://intternet.dev/git-rebasing-workflow-and-resolving-merge-conflicts.md) - [Git: removing files from the staging area and the tree](https://intternet.dev/git-removing-files-from-the-staging-area-and-the-tree.md) - [Git: stashing](https://intternet.dev/git-stashing.md) - [Git: submodules](https://intternet.dev/git-submodules.md) - [Find GitHub issues you commented on](https://intternet.dev/github-issue-search.md) - [Build-time globals in Vite without the baggage](https://intternet.dev/globals.md) - [How to easily keep a JavaScript project’s packages up to date](https://intternet.dev/how-to-automate-node-projects-packages-updates.md) - [How to build a custom lightweight jQuery](https://intternet.dev/how-to-build-a-custom-lightweight-jquery.md) - [How to build a custom zepto](https://intternet.dev/how-to-build-a-custom-zepto.md) - [How to configure SublimeLinter](https://intternet.dev/how-to-configure-sublimelinter.md) - [How to handle icons React: as components](https://intternet.dev/how-to-do-icons-in-react.md) - [How to enable sourcemaps in Sass and Compass](https://intternet.dev/how-to-enable-sourcemaps-in-sass-and-compass.md) - [A practical Fish shell guide](https://intternet.dev/how-to-install-and-use-fish-shell.md) - [How to install the latest version of Git on an Ubuntu box](https://intternet.dev/how-to-install-or-update-git-on-ubuntu-box.md) - [How to install Sass and Compass pre releases on an RVM](https://intternet.dev/how-to-install-sass-and-compass-pre-releases-on-an-rvm.md) - [How to make form element label clickable](https://intternet.dev/how-to-make-form-element-label-clickable.md) - [How to open a popup window with jquery](https://intternet.dev/how-to-open-a-popup-window-with-jquery.md) - [How to remotely reboot or shutdown your linux server from the command prompt](https://intternet.dev/how-to-remotely-reboot-your-linux-server-from-the-command-prompt.md) - [How to create SSH keys and manage multiple keys](https://intternet.dev/how-to-setup-and-manage-multiple-ssh-keys.md) - [How to use Compass plugins with CodeKit](https://intternet.dev/how-to-use-compass-plugins-with-codekit.md) - [How to use Compass color helper functions](https://intternet.dev/how-to-use-the-compass-helper-functions.md) - [How to write a good RFC](https://intternet.dev/how-to-write-a-good-rfc.md) - [How to zip and unzip files and folders on your remote server](https://intternet.dev/how-to-zip-and-unzip-files-and-folders-on-your-remote-server.md) - [Hyphenating with CSS](https://intternet.dev/hyphens.md) - [If not IE, conditional HTML comment](https://intternet.dev/if-is-not-ie-conditional-command.md) - [Perfect iframe React component](https://intternet.dev/iframe-react-component.md) - [@import and globbing in Sass](https://intternet.dev/import-and-globbing-in-sass.md) - [Import text files as strings in JavaScript](https://intternet.dev/import-javascript-as-a-string.md) - [Inspirational talks about web and web development](https://intternet.dev/inspirational-talks-about-web-and-web-development.md) - [Install and run Vagrant](https://intternet.dev/install-and-run-vagrant.md) - [Install Node and npm to an Ubuntu box](https://intternet.dev/install-node-and-npm-to-a-ubuntu-box.md) - [JavaScript iterators tutorial with examples | introduction to the iterable object](https://intternet.dev/iterators.md) - [Optional parameter handling in JavaScript functions](https://intternet.dev/javascirpt-functions-optional-parameters-default-values.md) - [Add, remove, and toggle CSS classes with JavaScript](https://intternet.dev/javascript-adding-and-removing-class-names-from-elements.md) - [JavaScript: check if function parameter is a string or an object](https://intternet.dev/javascript-check-if-function-parameter-is-a-string-or-an-object.md) - [Common JavaScript array methods and Object.keys()](https://intternet.dev/javascript-manipulating-objects-with-object-keys.md) - [jQuery's .closest() function, and pure JavaScript alternatives](https://intternet.dev/jquerys-closest-function-and-pure-javascript-alternatives.md) - [Listen key combinations with JavaScripts](https://intternet.dev/listening-key-combos-with-javascript.md) - [Simplest way to style list bullets with Unicode characters](https://intternet.dev/lists.md) - [Lists in Sass: syntax and use cases with examples](https://intternet.dev/lists-in-sass-syntax-and-use-cases-with-examples.md) - [JavaScript logical operators and the new nullish coalescing operator](https://intternet.dev/logical-operators.md) - [Low-tech icon setup in react](https://intternet.dev/lowteck-icons.md) - [Make alphabetising CSS properties in Sublime Text easy with CSScomb](https://intternet.dev/make-alphabetising-css-properties-in-sublime-text-easy-with-csscomb.md) - [Make an HTML element editable with the contenteditable attribute](https://intternet.dev/make-any-html-element-editable.md) - [JavaScript: make arrays of size | how to create filler arrays of varying length](https://intternet.dev/make-arrays-of-size.md) - [Making trippy shapes with CSS border and animating them to give you epilepsy](https://intternet.dev/making-weird-shapes-and-animating-the-css-border-radius.md) - [Mastering text selection with keyboard in VSCode, Atom, or Sublime Text](https://intternet.dev/mastering-text-selection-with-keyboard-in-sublime-text.md) - [Match text between two markers with regex](https://intternet.dev/match-in-between.md) - [How to MDX with Gatsby](https://intternet.dev/mdx-in-gatsby.md) - [MySQL command cheat sheet](https://intternet.dev/mysql-command-cheat-sheet.md) - [Obey the natural flow of a website](https://intternet.dev/obey-the-the-natural-flow-of-a-website.md) - [OOCSS, ACSS, BEM, SMACSS: what are they? What should I use?](https://intternet.dev/oocss-acss-bem-smacss-what-are-they-what-should-i-use.md) - [Opening the matryoshka: pointless package management hell](https://intternet.dev/opening-the-matryoshka-pointless-package-management-hell.md) - [Optional chaining operator in JavaScript](https://intternet.dev/optional-chaining.md) - [A beginner's guide to the Unix-style command line](https://intternet.dev/os-x-and-ubuntu-command-prompt-demystified.md) - [CSS overscroll-behavior and swipe gestures on macOS](https://intternet.dev/overscroll-behavior.md) - [Ping your sitemaps to Google and Bing to inform search engines about new content](https://intternet.dev/ping-your-sitemaps.md) - [Position sticky in CSS, with examples](https://intternet.dev/position-sticky-in-css.md) - [Print Bash command output to a file](https://intternet.dev/print-file-names-into-a-text-file-with-bash.md) - [Protect a directory or a domain with a password on NGINX server](https://intternet.dev/protect-a-directory-or-a-domain-with-a-password-on-nginx-server.md) - [Force re-render function React component (or class component)](https://intternet.dev/react-force-rerender.md) - [Render a nested list with a recursive React component](https://intternet.dev/recursive-react-components.md) - [Different ways to redirect a URL](https://intternet.dev/redirect-your-whole-site-using-htaccess-or-meta-redirect.md) - [Reduce: the multitool of JavaScript array manipulation](https://intternet.dev/reduce.md) - [Remove a class name from multiple elements with pure JavaScript](https://intternet.dev/remove-a-class-name-from-multiple-elements-with-pure-javascript.md) - [Render draft posts locally in Gatsby](https://intternet.dev/render-draft-posts-locally.md) - [Replace a transitive package with another package using pnpm](https://intternet.dev/replace-a-transitive-package-with-pnpm.md) - [Replace strings in files with bash string manipulation and sed](https://intternet.dev/replace-strings-in-files-with-the-sed-bash-command.md) - [RequireJS part 2: optimizing scripts with r.js](https://intternet.dev/requirejs-part-2-optimizing-scripts-with-r-js.md) - [How to resize HTML elements: with few lines of CSS, using a React hook, or with pure JavaScript](https://intternet.dev/resize-any-element.md) - [How to use maps in Sass, syntax, examples, and other good things](https://intternet.dev/sass-maps-syntax-examples-and-good-things.md) - [Sass mixin to make a button element look like a normal link](https://intternet.dev/sass-mixin-to-make-a-button-element-look-like-a-normal-link.md) - [SCSS @font-face mixin](https://intternet.dev/scss-font-face-mixin.md) - [Self referencing object literal in JavaScript](https://intternet.dev/self-referencing-object-literal-in-javascript.md) - [Set multiple React refs in one variable](https://intternet.dev/set-multiple-refs.md) - [Setting and reading cookies with JavaScript](https://intternet.dev/setting-and-reading-cookies-with-javascript.md) - [Shell script to create MySQL database and user](https://intternet.dev/shell-script-to-create-mysql-database.md) - [Build a simple, isolated demo component with Gatsby](https://intternet.dev/simple-demo.md) - [Super simple static site deployment bash script, that keeps Git in sync](https://intternet.dev/simple-static-site-deploy-script-built-with-bash.md) - [Sizing type on the web](https://intternet.dev/sizing-type-on-the-web-in-2013.md) - [Designing problems and solving problems](https://intternet.dev/solving-and-creating-problems-with-design.md) - [Sort an array with another array](https://intternet.dev/sort-array-with-array.md) - [How to make a sortable data table using React](https://intternet.dev/sortable-table.md) - [Spin down idle disks on a Raspberry Pi](https://intternet.dev/spin-down-idle-disks.md) - [Sticky footer done with simple CSS](https://intternet.dev/sticky-footer-with-pure-css.md) - [Symbolic links and hard links: creating, updating, deleting](https://intternet.dev/symbolic-links-and-hard-links-creating-updating-deleting-and-all-that.md) - [Sync large quantities of files or directories between local machine and server with rsync](https://intternet.dev/sync-large-quatities-of-files-or-directories-between-local-machine-and-server-with-rsync.md) - [Tab complete Git commands and branches](https://intternet.dev/tab-complete-git-commands-and-branches.md) - [Accessible tabbed navigation with React](https://intternet.dev/tabs.md) - [Some text shadow effects](https://intternet.dev/text-shadow.md) - [The good kind of specificity in CSS](https://intternet.dev/the-good-kind-of-specificity-in-css.md) - [JavaScrip forEach loop](https://intternet.dev/the-intuitive-and-powerful-foreach-loop-in-javascript.md) - [Writing media queries with Sass](https://intternet.dev/the-modern-way-of-writing-media-queries-with-the-help-of-sass.md) - [The new ES6 for...of loop](https://intternet.dev/the-new-es6-for-of-loop-with-javascript.md) - [Master tmux in just... like 20 minutes or so](https://intternet.dev/tmux.md) - [Tmux cheat sheet](https://intternet.dev/tmux-cheat-sheet.md) - [Transparency checkerboard with CSS gradients](https://intternet.dev/transparent-png-effect.md) - [Unboxing the new GitHub Atom editor](https://intternet.dev/unboxing-the-new-github-atom-editor.md) - [Understanding the Nginx location directive and redirects](https://intternet.dev/understunding-ngix-location-directive-and-redirects.md) - [Few JavaScript loops you probably hadn’t thought of](https://intternet.dev/unusual-javascript-loops.md) - [Update rsync on OSX with Homebrew](https://intternet.dev/update-rsync-on-osx-with-homebrew.md) - [Upgrade Bash on macOS from 3.2 or 4 to 5.3](https://intternet.dev/upgrade-to-bash-4-in-mac-os-x.md) - [Upload a file to FTP server and copy the link to clipboard with Mac Automator](https://intternet.dev/upload-a-file-to-ftp-server-and-copy-the-link-to-clipboard-with-automator.md) - [Dealing with URL parameters in JavaScript/TypeScript](https://intternet.dev/url-parameters.md) - [Using pseudographics in blog posts: drawing ASCII diagrams and boxes](https://intternet.dev/using-pseudographics-in-blogposts-drawing-ascii-diagrams-and-boxes.md) - [Vim commands](https://intternet.dev/vim-commands.md) - [React data visualizations | No dependencies, just some CSS](https://intternet.dev/visualize-data-with-css.md) - [Visually hidden text, only visible to screen readers](https://intternet.dev/visually-hidden.md) - [What does the preload attribute actually do in the HTML video element?](https://intternet.dev/what-does-the-preload-attribute-in-the-video-element-do.md) - [Working with JavaScript arrays](https://intternet.dev/working-with-javascript-arrays.md)