Welcome!

My name is Uri Shani, and I am a maker, a tinkerer, and an engineer.

I can design and build most anything out of wood, program and build Arduino and Raspberry Pi devices, design all sorts of mechanical contraptions and devices, and design rubber and plastic parts for any manufacturing technology. In the past year or so I’ve taught myself to program web apps, at first in order to provide virtual UI to Arduino apps, then later it became a goal all in it’s own.

You can find out more about some of my past and current projects on my portfolio. You can also read about some of my adventures in making over the last few years on my blog postings, below.

  • Enhancing the VPN Profile Switcher: Introducing Local DB Creation and a Self-Test Tool

    In my last post, I mentioned upcoming enhancements to the VPN Profile Switcher, and today, I’m excited to share two new scripts that take this project to the next level. These scripts not only add functionality but also pave the way for a more robust and self-sufficient toolset.

    1. Creating a Local Database with get_groups_and_countries_to_tsv.sh

    One of the critical components of the VPN Profile Switcher is the ability to maintain an updated list of available VPN server types and countries. Previously, this information was stored in the db branch of the repository and updated through a GitHub action. However, this approach comes with a caveat: the GitHub action will be canceled after two months of inactivity in the repository, potentially leaving the database outdated.

    Read more...
  • Updating the `vpn-profile-switcher.sh` to Include WireGuard Support

    In a recent update to the vpn-profile-switcher.sh script, I have added support for WireGuard, expanding its functionality beyond the initial OpenVPN compatibility. This update allows users to choose between OpenVPN and WireGuard for their VPN configurations on OpenWRT. Below, I will walk you through the changes and explain the new options and functionalities added to the script.

    Read more...
  • Upgrading the VPN Profile Switcher Script for OpenWRT

    In this post, I will walk you through the process of updating and upgrading a shell script I originally wrote a few years ago for changing the VPN profile on OpenWRT routers. This script connects to NordVPN’s recommended servers, and I’ve recently added support for WireGuard (NordLynx) alongside the existing OpenVPN functionality.

    The original script was intended for OpenWRT installations on TP-Link Archer C20i and Raspberry Pi 3B+ with 2019 firmware. You can find the VPN Profile Switcher script here.

    The script queries NordVPN’s API for the recommended server and then updates the OpenVPN or WireGuard configuration on the router accordingly.

    Read more...
  • Integrating Machines Using Android and Python - Part 3

    Overcoming Dynamic Screen Challenges with ADB and Appium

    When working with consumer-level machines integrated into larger systems, I faced a significant challenge: dynamic screens. These screens, which change frequently based on user interactions, made it impossible to control the machine using just ADB. This is where Appium came in handy.

    Read more...
  • Openwrt On Raspberry Pi For Shell Script Development

    Setting Up an OpenWRT Dev Environment on a Raspberry Pi 3 B+

    It’s been a while since I last tinkered with something fun, but I finally got around to setting up an OpenWRT development environment on my Raspberry Pi 3 B+. This time, it’s for version 2 of my VPN profile switcher script, which you can find on my GitHub repo.

    Note: this post is about setting up a shell script dev environment on OpenWRT, not an actual OpenWRT development environment. For that, please follow the official developer’s guide

    Read more...
  • Integrating Machines Using Android and Python - Part 2

    For the next iteration of our machine, a different machine was selected because the first one wasn’t quite up to the task. Besides functioning poorly (for our purposes, at least), the Bluetooth connection wasn’t reliable enough.

    Asking around, one of the entrepreneurs’ CTO heard of a (supposedly) better machine that had been “hacked” by one of the distributor’s clients.

    Read more...
  • Integrating Machines Using Android and Python - Part 1

    As part of working for an engineering firm, I sometimes need to integrate machines into a system designed by one of the firm’s mechanical engineers. This could be part of a POC, so we can move things a bit quicker. Or it could be part of our final product - integrating proven products into our designs means we can focus on getting the final machines built quicker, and less prone to errors. This is done on a regular basis in different disciplines of engineering. In mechanical engineering, a lot of designs integrate standard parts such as bearings or motors, for example. In electronics engineering, relying on pre-built modules in designs could save a lot of hassle.

    But in this one machine we’re building, I needed to integrate a couple of different machines that required a different set of skills, since they were (definitely) not meant to be included in any larger machine - and that’s what I want to write about.

    Read more...
  • Customizing Jekyll With A Portfolio

    In my last post I detailed how I used Jekyll and the the new version (3) of the Minima theme, to style my site so that it looked similar to the WordPress team’s Twentythirteen theme.
    In this post, I am going to outline how I created a new layout portfolio that could showcase any project of my making/tinkering/engineering/enginerding - be it a woodworking project, a mechanical contraption, or a Python script.

    Read more...
  • Customizing Jekyll's Default Theme

    Jekyll installs with a nice, clean theme, called Minima. While there are a lot of nice themes out there, I had both a clear view in my head of what I wanted to accomplish, and ample time thanks to CoVid19. So, armed with Minima’s source and Jekyll’s documentation, I decided to have a go with modifying the theme a bit, and in this post I’ll try to outline the way I went about it.

    Read more...
  • Adding Staticman To Jekylls Minima Theme

    After modifying the theme to fit my aesthetics, then adding a nice portfolio layout (which required writing and modifying a couple of plgugins), it was time to add a commenting system to my blog. Now, it’s not that I write a lot of blog posts, but for some projects I want to write some sort of how-to, or some sort of a thought process documentation - and for those, I really do wish for people to interact with me. Now, Minima already comes with a layout ready for adding Disqus comments. But I don’t really like relying on the free tier of a paid service, so I did a quick search and found Staticman, which is a self hosted solution.

    Read more...
  • New Order

    I decided to separate this blog from my main website. The main reason being that I need to use the website as an online portfolio, and I did not think there’s a justification to mix in the blog and too much personal stuff in that. The other reason is that I feel more comfortable writing about technical stuff in English, and my portfolio and business pages need to be in both Hebrew and English.
    Hope it works well, though if it doesn’t I can still probably figure out how to revert the process.

    Read more...
  • NiTi Light (1/2)

    This post is mostly a technical documentation of a project I have done a few years ago, and have never been documented before. The reason for doing a write-up now is so I can have a step back and see where I am today, compared to a few years ago. Also, it might be interesting to others. I hope my wife, which designed the lampshade, will someday do a write-up concerning her design decisions.

    Read more...
  • What's on my mind, 07.04.18 edition

    I kind of let the blog thing fade. I’m not a fan of documenting, I’m always thinking that what I think today might sound awful tomorrow, and that who the hell am I to actually come up with ideas, and similar debilitating thoughts. So I usually just don’t document. But… I set up this blog in the hope of actually writing down some of my thoughts, and I haven’t really used it yet, so… Here goes:

    1. I have this vision of building an easy to assemble and program DIY MIDI controller. This is supposed to be a modular system for musicians, DJ’s, sound technicians, etc., who don’t want to learn electronics or (even basic) programming.
    Read more...
  • Engineering for the love of music

    When I was about 13 I became fascinated with the design of electric guitars. My mother who is a librarian took me with her to a warehouse of a company that imported magazines from around the world to Israel. She took me there to look at comics, but I found there fascinating magazines on all kinds of subjects. There were firearms magazines, sewing magazines, magazines for car and motorcycle enthusiasts, and many other topics. The best magazines I found (and my mother bought me) were the fringe and wacky comics and musical instruments magazines.

    Read more...