Recently I automated starting new posts with a python script. Today I want to work on the next part that is editing those posts quickly. Automating my Post Starter Check out this post about setting up my posts with python š Enter Bash For the process of editing a post I just need to open the file in vim quickly. I dont need much in the way of parsing and setting up the frontmatter. I think this is a simple job for a bash script and fzf. change to the root of my blog fuzzy find the post open it with vim change back to the directory I was in bash function For this I am going to go with a bash function. This is partly due to being able to track where I was and get back. Also the line with nvim will run fzf everytime you source your file which is not what we want. Lets setup the boilerplate. Its going to create a function called ep, track our current directory, create a sub function. Then call that function and cd back to where we were no matter if fails or succeeds. boilerplate Creating Rā¦
Gitui is a terminal-based git user interface (TUI) that will change the way that you work with git.
Gitui is a terminal-based git user interface (TUI) that will change the way that you work with git. I have been a long-time user of the git cli, and itās been hard to beat, mostly because there is nothing that keeps my fingers on the keyboard quite like it, except which comes with some great ways to very quickly walk through a git project. installation Go to their [releases]https://github.com/extrawurst/gitui/releases) page, download the latest build, and pop it on your PATH. I have the following stuffed away in some install scripts to get the latest version. install latest release run It opens blazing fast. Quick Commits Sometimes I edit a number of files and want to commit them one at a time, this is painful in the git cli and my main use case for. shows unstaged changes at the top, staged changes on the bottom, and a diff on the right. Navigate with hjkl By default, uses arrow keys, but simply copying vim_style_key_config.ron to your config directory will get you vim-like keybindingā¦
In python data science/engineering most of our data is in the form of some sort of table, typically a DataFrame from a library like pandas, spark, or dask. DataFrames are the heart of most pipelines These containers for data contain many convenient methods to manipulate table like data structures. Sometimes we leverage other data types, namely vanilla types like lists and dicts, or even numpy data types. What is Kedro unfamiliar with kedro, check out this post Sometimes datasets are not tables There are times when our data doesnāt fit nicely into a DataFrame. Lucky for us Kedro has pickle support out of the box. Pickle is a way to store any python object to disk. Beware that pickle files coming from an unknown source can run malicous code and are considered unsafe. For the most part though when you read and write your own pickle files they are a good tool to consider. See more about pickle from python.org. Cataloging Pickle I may have a dictionary that describes some cars. In the catalā¦
Changing conda environments is a bit verbose, I use a function with fzf that both lists environments and selects the one I want in one go. Conda I have used conda as a virtual environment tool for years now. I started using conda for its simplicity to install packages on windows, but now that has gotten so much better and itās been years since I have run a command. Iām sure that I could use a different environment manager, but it works for me and makes sense. What environment manager do you use for python? Conda environments are stored in a central location such as and not with the project. They contain both the python interpreter and packages for that env. Conda create Conda environments are created with the command. At this point, you will need to name your env and select the python version. After running this command you will have a directory with a base python install. It will not be active yet. List environments Before activating an environment I often want to list the environmentā¦
Replacing text based on whats in the current search register is a quite handy tool that I use often. I believe I picked this tip up from Nick Janetakis, check out his YouTube channel for some amazing vim tips. https://www.youtube.com/watch?v=fP_ckZ30gbs If there is one thing that I Like most about vim itās the ability to hack on it and make it work well for you. Replacing text in vim Vim can often be a bit verbose, but thatās ok because we can hack on it, and make our own shortcuts and keybindings. For instance, finding and replacing text requires using a command at the vim command-line. Replacing foo with bar looks like this, the final g means all of the foos, not just the first one on the line. making it better I have a keybinding in my that will allow me to search for a pattern with the usual character, page through them as normal with and, but when I press it will populate the replace command for me so that all I need to do is type out the new text. Note on the In command mode vimā¦
What does it take to create an installable python package that can be hosted on pypi? What is the minimal python package setup.py my_module.py This post is somewhat inspired by the bottle framework, which is famously created as a single python module. Yes, a whole web framework is written in one file. Directory structure setup.py name The name of the package can contain any letters, numbers, ā_ā, or ā-ā. Even if itās for internal/personal consumption only I usually check for discrepancy with pypi so that you donāt run into conflicts. Note that pypi treats ā-ā and ā_ā as the same thing, beware of name clashes version This is the version number of your package. Most packages follow semver. At a high level its three numbers separated by a that follow the format. Itās a common courtesy to only break APIs on major changes, new releases on minor, and fixes on patch. This can become much more blurry in practice so checkout semver.org. py_modules Typically most packages use the argument combinā¦
I do much of my work from tmux, I love it so much that I want to setup some functionality that puts me in tmux even if I didnāt ask for it. Bash Function Bash function to check if the shell is in a tmux session. Using the bash function I often open up vim to do some quite edits, but before I know it I have several splits open and I need access to another shell utility, but I forgot to start in tmux. This function makes sure tht I start in tmux everytime. Using to ensure vim is opened in tmux. I am not quite sure if this is proper use of the and, let me know if you have a better way to do one thing if returns true and another if it returns faslse.
If you are like me, you have created a macro or two that is pure glory, and you forget how you made it after a day or so, or you immediately want to store it away as a custom keybinding. As with most things with vim, itās easy to do once you understand it. Creating a Macro One of the earliest things we all learn to do in vim is to create macros, custom sets of functionality stored in a register that can be replayed later. To create a macro, get into normal mode, then type followed by a letter that you want to store the macro under. Note: a common throw-away macro register is q because itās easy to hit qq from normal mode to start recording. Replaying a Macro Macros can be replayed using followed by the letter that you stored the macro under. Registers Registers are nothing more than a single character key mapping to a value of some text. As you,, or create macros in vim, it automatically stores text into these registers. When you hit paste itās simply pasting in the default register. Yā¦
Replacing text in vim can be quite frustrating especially since it doesnāt have live feedback to what is changing. Today I was watching Josh Branchaudās Vim-Unalphabet series on Youtuve and realized that his vim was doing this and I had to have it. https://twitter.com/_WaylonWalker/status/1346081617199198210 How to do it I had to do a bit of searching and found a great post from vimcasts that shows exactly how to get the live search and replace highlighting using:h inccommand Add this to your config I believe that this is a neovim only feature, add it into your file. You can see it in my dotfiles as well. See it in Action example live substitution The Video that inspired this Check out Josh Branchaudās great series on the Vim-Unalphabet. https://www.youtube.com/watch?v=5jMiYtXz2QA
Web browsers are a black hole of productivity. I try to use them as little as possible when it is time to focus. I try to use,, or with ipython, or āhelp at the command line as much as possible. What about that time I am trying to see what my online friends are posting on their sites? I used to used google reader quite heavily before that was taken down. Newsboat I am going to give a terminal rss reader a try for a bit and see how that goes for me. I have really struggled to get into an rss reader since google reader died. installation I installed with the reccomended snap for Ubuntu. Adding feeds super simple Running help for newsboat directed me towards their config files at the bottom. I just need to edit its urls file. The Urls file is just a list of urls to rss feeds. Adding mine in allowed me to see all of my posts. Config I took most of my config from a blog post that I found by Evan Travers. It set some sane defaults to the reading width and vim keys. GUI Browser No matter howā¦
As projects grow patterns that worked early on break and we need to change things to make the project easier to work with, and more welcoming to new developers. git Before you start mucking up a project with wild commands at the terminal check that you have a super clean git status. We may make some mistakes and need a way to undo 100ās files and git makes it really easy if you start with a clean history. If we are ready to begin work we should see a response like this. It would also be wise to do this inside of a branch. The minute you try to do something wild in your working branch someone will walk by and ask you to do a five-minute task, but your deep in refactoring and havenāt left yourself a clean way back. grepr Time for the meat of this refactor replacing text across our project. I often will pop this bash function into my terminal session and tweak it as needed. This function is called for then. It will recursively search for a given pattern inside your working directory, thenā¦
I use my ipython terminal daily. Itās my go to way of running python most of the time. After you use it for a little bit you will probably want to setup a bit of your own configuration. install ipython Activate your virtual environment of choice and pip install it. Any time you are running your project in a virtual environment, you will need to install ipython inside it to access those packages from ipython. You are using a virtual environment right? Virtual environments like venv or conda can save you a ton of pain down the road. profile_default When you install ipython you start out with no config at all. Runnign will start a new profile called that contains all of the default configuration. This command will create a directory multiple configurations You can run multiple configurations by naming them with This command will create a directory startup Inside the profile there will be a startup directory. Ipython will execute each of the files in this directory on startup. This is partā¦
Iāve grown tired of the standard ipython prompt as it doesnāt do much to give me any useful information. The default one gives out a line number that only seems to add anxiety as I am working on a simple problem and see that number grow to several hundred. I start to question my ability š¤¦āāļø. Configuration If you already have an ipython config you can move on otherwise check out this post on creating an ipython config. Ipython-Config The Dream Prompt I want something similar to the starship prompt I am using in the shell. I want to be able to quickly see my python version, environment name, and git branch. python version active environment git branch Basic Prompt This is mostly boilerplate that I found from various google searches, but this gets me a basic green chevron as my prompt. The rest of this post will build off of this boilerplate and add to the method of MyPrompt Colors I mostly set the colors of my prompt throughout this post by guessing and trying different attributes underā¦
One thing we all dread is mundane work of getting started, and all the hoops it takes to get going. This year I want to post more often and I am taking some steps towards making it easier for myself to just get started. When I start a new post I need to cd into my blog directory, start neovim in a markdown file with a clever name, copy some frontmatter boilerplate, update the post date, add tags, a description, and a cover. Todo List for starting a post frontmatter template Title slug tags date cover description create markdown file open in neovim Lets Automate this This aint no proper cli hot and fast As with many thing running behind the scenes on this site, I am the one and only user, I have limited time, so this is going to be a bit hot and fast. Letās create a file called new-post. start the script new-post š Works on my machine If this were something that had more users than me I would probably use something like click, but for this I want to get it done quick and avoid any needā¦
In python data science we often will reach for pandas a bit more than necessary. While pandas can save us so much there are times where there are alternatives that are much simpler. The itertools more-itertools` are full of cases of this. This post is a walkthrough of me solving a problem with rather than reaching for a for loop, or pandas. I am working on a one-line-link expander for my blog. I ended up doing it, just by modifying the markdown with python. I first split the post into lines with, then look to see if the line appears to be just a link. One more safety net that I wanted to add was to check if there was whitespace around the line, this could not simply be done in a list comprehension by itself. I need just a bit of knowledge of the surrounding lines, enter. simplified rendering function I have a function that will check to see if the line should be expanded, then render the correct template. Fist step is to check if the line contains no spaces and starts with, if it doesā¦
This is episode 1 of the Waylon Walker Audio experience, posts from waylonwalker.com {.hoverlink} in audio form. So I have had this idea for awhile to add audio to my blog posts. The idea partly comes from the aws blog, if you have ever been on their blog you will have noticed that they have a voiced by amazon polly section. What to Expect Honestly I donāt know this is all new to me and I dont have much to go off of. For now its a test that may or may not work out. I will say that the time that I have available for clean audio is a bit limited so expect these to come out in batches as I get time to go back and record. What Not to Expect One thing that makes the aws blog really hard to listen to is the robotic voice, I definitely donāt want that. This will be voiced by a real human, Me. At the same time written text doesnāt translate directly to audio well so donāt necessarily expect the audio to be word for word. Code blocks There are a lot of code blocks in my blog, which donāt translā¦
Inspired by discourseās link expansion I am rolling out expansions for one line links on the blog waylonwalker. I was able to find a gatsby plugin gatsby-remark-embedder that expands one line links for social cards for popular platforms like twitter and YouTube through a repose from Kyle Mathews to my tweet. https://twitter.com/kylemathews/status/1329817928666005504 Use Cases This covers a couple of use cases I have with very little effort. Twitter YouTube install This was super quick and simple to setup, the only thing that was extra was to install the plugin as well as the. enable Thats it, now I can embed tweets and YouTube videos by just leaving the link on a single line.
I wanted a super simple way to cross-link blog posts that require as little effort as possible, yet still looks good in vanilla markdown in GitHub. I have been using a snippet that puts HTML into the markdown. While this works, itās more manual/difficult for me does not look the best, and does not read well as Goals for new card The new card should be fully automated to expand with title, description, and cover image. Bonus if I am able to attach a comment behind it. fully automated card expansion Title description cover image Old Card If you can call it a card š¤£. This card was just an image wrapped in an anchor tag and a paragraph tag. I found this was the most consistent way to get an image narrower and centered in both GitHub and dev.to. The key here is that I have to put the HTML into the markdown. It looks a bit dirty while editing and quite frankly itās a pain to deal with. New Card My first eight years as a working professional. First step My first attempt was to make my own traā¦
There are many reasons that you should be using kedro. If you are on a team of Data Scientists/Data Engineers processing DataFrames from many data sources should be considering a pipeline framework. Kedro is a great option that provides many benefits for teams to collaborate, develop, and deploy data pipelines What is Kedro Starter Template Kedro makes it super easy to get started with their cli that utilizes cookiecutter under the hood. Create New Kedro Project read more about how to start your first kedro project here Collaboration Kedro provides many tools that help teams collaborate on a single codebase. While writing monolithic scripts it can be easy to pin yourself in a corner where it is difficult to have multiple people making changes to the notebook/script at the same time. Kedro helps guide your team to break your project down into small pieces that different members of the team can work on in parallel. sharable catalog Kedro makes it easy to collaborate with members who arenā¦
Calendar data could not load. Try again.