My super duper awesome programming blog is now live at https://learnbyexample.github.io/
I'm addicted to reading fantasy/sci-fi books, so I have a blog for that as well.
- 100 Page Python Intro book announcement
- Festive offers for books on Python, Linux, Regular Expressions, Vim and more!
- Interactive Python Exercises and Quiz
- Vim Reference Guide book announcement
- Linux Command Line Computing book announcement
- Interactive GNU awk tutorial
- CLI computation with GNU datamash
- CLI text processing with GNU Coreutils book announcement
- Ruby One-Liners Guide book announcement
- Understanding Ruby Regexp book announcement
- 2023: year in perspective
- Festive offers for books on Python, Linux, Regular Expressions and more
- Understanding JavaScript RegExp book announcement
- Perl One-Liners Guide book announcement
- CLI text processing with GNU awk book announcement
- Interactive exercises for GNU grep, sed and awk (TUI apps)
- CLI text processing with GNU sed book announcement
- CLI text processing with GNU grep and ripgrep book announcement
- 100+ Interactive Python Regex Exercises
- Python Regular Expressions Playground
- Understanding Python re(gex)? book announcement
- Python Regex Surprises
- 2022: year in perspective
- Interactive Linux CLI Text Processing Exercises
- Festive deals for books on Python, Linux, JavaScript, Regular Expressions and more
- Building TUIs with textual: first impressions
- Python 3.11: possessive quantifiers added to re module
- Removing duplicates irrespective of field order
- Automating Excel with Python - book review
- 2021 was a wild ride
- Counting nested braces
- Improve your Python regex skills with 75 interactive exercises
- Programming deals
- Numeric Palindrome
- Announcing learnbyexample weekly newsletter
- The Indie Python Extravaganza
- Practice Python Projects book announcement
- Escaping madness to get literal field separators in awk
- GNU BRE/ERE cheatsheet and differences between grep, sed and awk
- Paying my bills with 'free' ebooks
- Multiline fixed string search and replace with CLI tools
- Emulating regexp lookarounds in GNU sed
- Search and replace tricks with ripgrep
- I know Python basics, what next?
- Customizing pandoc to generate beautiful pdf and epub from markdown
- JavaScript regular expressions cheatsheet and examples
- Python regular expression cheatsheet and examples
- Example driven book on Python regular expressions
- GNU GREP and RIPGREP
- Creating GUI Applications with wxPython - book review
- Python for maths
- A short and satisfying bug hunt
- Basic examples for the Linux date command
- CLI text editing with ed
- Computing from the Command Line: sales report
- Bash compound commands and redirection
- Debug woes 3: matching uppercase alphabets
- Vim Reference Guide: two week sales report
- PyDev of the Week
- Brag post: Hacker News Front Page entries
- Regexp gotcha 1: grouping common portions
- Vim prank: alias vim='vim -y'
- Debug woes 2: unexpected array in replacement string
- Dreaming solutions
- Debug woes 1: multiple substitutions on the same line
- Perl one-liner articles
- Vim tip 33: editing with text objects
- Vim tip 32: text and indent settings
- CLI tip 33: manipulating string case with GNU sed
- Python tip 33: sorting iterables based on multiple conditions
- Vim tip 31: mark frequently used locations
- CLI tip 32: text processing between two files with GNU awk
- Python tip 32: positive lookarounds
- Vim tip 30: some general Vim settings
- CLI tip 31: concatenate files column wise
- Python tip 31: next() function
- Vim tip 29: greedy quantifiers
- CLI tip 30: extract only the matching portions
- Python tip 30: zip() function
- Vim tip 28: miscellaneous motion and reposition commands
- CLI tip 29: define fields using FPAT in GNU awk
- Python tip 29: negative lookarounds
- Vim tip 27: regexp anchors
- CLI tip 28: substitute specific occurrence with GNU sed
- Python tip 28: string concatenation and repetition
- Vim tip 26: executing shell commands
- CLI tip 27: reverse text line wise with tac
- Python tip 27: enumerate() function
- Vim tip 25: substitute flags
- CLI tip 26: removing duplicate lines with GNU awk
- Python tip 26: atomic grouping
- Vim tip 24: movement commands within the current file
- CLI tip 25: get file properties using the stat command
- Python tip 25: split and partition string methods
- Vim tip 23: editing lines filtered by a pattern
- CLI tip 24: inserting file contents one line at a time
- Python tip 24: modifying list using insert and slice
- Vim tip 22: word and WORD motions
- CLI tip 23: recursive filename matching with globstar
- Python tip 23: map, filter and reduce
- Vim tip 21: working with tabs
- CLI tip 22: grep options to suppress stdout and stderr
- Python tip 22: possessive quantifiers
- Vim tip 20: character based motions within the current line
- CLI tip 21: inplace file editing with GNU awk
- Python tip 21: sorting iterables based on a key
- Vim tip 19: working with buffers
- CLI tip 20: expand and unexpand
- Python tip 20: saving and loading json
- Vim tip 18: moving within long lines
- CLI tip 19: extended globs
- Python tip 19: manipulating string case
- Vim tip 17: setting options
- CLI tip 18: inserting file contents using GNU sed
- Python tip 18: arbitrary number of arguments
- Vim tip 16: terminal mode
- CLI tip 17: common and unique lines
- Python tip 17: counting frequency of items
- Vim tip 15: moving within current line
- CLI tip 16: transpose tables
- Python tip 16: delete list elements using index or slice
- Vim tip 14: horizontal and vertical splits
- CLI tip 15: text generation with printf and brace expansion
- Python tip 15: string transliteration
- Vim tip 13: repeat last change
- CLI tip 14: specify permissions during directory creation
- Python tip 14: sequence unpacking
- Vim tip 12: save and restore sessions
- CLI tip 13: join lines of two files based on the first field
- Python tip 13: formatting numbers with underscore separation
- Vim tip 11: replace characters in Normal mode
- CLI tip 12: squeeze empty lines
- Python tip 12: negate a regex grouping
- Vim tip 10: Undo and Redo
- CLI tip 11: longest line length
- Python tip 11: capture external command output
- Vim tip 9: named registers
- CLI tip 10: version sort
- Python tip 10: removeprefix and removesuffix string methods
- Vim tip 8: join lines
- CLI tip 9: awk paragraph mode
- Python tip 9: applying set-like operations for dictionaries
- Vim tip 7: changing case in Normal mode
- CLI tip 8: extract from start of file until matching line
- Python tip 8: dict.fromkeys() method
- Vim tip 6: search word nearest to the cursor
- CLI tip 7: limiting number of filtered lines
- Python tip 7: creating a deepcopy of collections
- Vim tip 5: jumping back and forth in Normal mode
- CLI tip 6: filtering lines based on multiple conditions
- Python tip 6: inplace file editing
- Vim tip 4: reposition current line in Normal mode
- CLI tip 5: aligning columns
- Python tip 5: random choice and sample
- Vim tip 3: autocomplete words and lines in Insert mode
- CLI tip 4: serialize file contents to a single line
- Python tip 4: comparison chaining
- Vim tip 2: indent/unindent lines
- CLI tip 3: place backups in another directory with GNU sed
- Python tip 3: expression and result with f-string
- Vim tip 1: increment/decrement numbers
- CLI tip 2: counting number of matches
- Python tip 2: membership operator
- CLI tip 1: remove metadata from images
- Python tip 1: tuple argument for startswith/endswith methods
- This blog has been generated using zola and uses even theme (with some changes like link color, header links, etc).
- Warning and Info icons by Amada44 under public domain
- Inkscape for favicon
- pngquant and svgcleaner for optimizing images
- See v1.0 tag for the older version of the blog, which was based on So Simple Jekyll Theme