Hi, I’m Moti, a software developer in Berlin.

By day I’m a software engineer building large scale B2B products. In my free time I like to contribute to open-source projects, as well as develop my own ideas.

When I’m not building, I’m teaching and mentoring newcomers to tech, or losing at chess (challenge me). I've recently been diving into cybersecurity and LLMs. Say hi on motiko.live, or have a look at my CV (PDF).

Open source

I believe in open source, and I share most of what I create. Some of my projects have been running for over a decade.

QuickScan

Progressive web app

A document scanner that can run directly in browser or installed as an app. AI auto detect pages, detect and enhance text, and export a searchable PDF. All the text is searchable. Can be stored on device only or synced with end-to-end encryption.

Electricity billCustomer number 4471 0293 · BerlinBilling period 1–30 SeptemberMeter reading 18,452 kWh (actual)Consumption 241 kWhEnergy charge, 241 kWh €62.40Standing charge, 30 days €11.90Amount due by 15 October€74.30Electricity bill – September

Kindle Cloud Reader Translate

Chrome extension

Translate while you read in Kindle Cloud Reader. Select a sentence, get a translation and hear it read aloud. When Amazon stopped rendering the text as text, I switched it to OCR so readers didn’t lose it.

Kapitel 3 · Die Reise

Der Zug war voll. Lena fand einen Platz am Fenster und öffnete ihr Buch. Draußen regnete es, aber das störte sie nicht. Sie las weiter, bis der Schaffner kam.

Deutsch English

Lena found a seat by the window and opened her book.

VideoLib

Telegram bot in Python

Send the bot any link (YouTube, TikTok, etc.) and it sends the video back without any ads.

brew install motiko/videolib/videolib

Apex Debugger

Chrome and Firefox extension

Thousands of Salesforce developers around the world use it in their daily work. It makes debug logs searchable, readable and interactive, makes it easier to navigate and resolve issues and automates common actions.

“So good! I love debugging now. So clear, so perfect.”

Samuel David Israeli, Apex Debugger user
  1. 31.018CODE_UNITAccountTrigger on Account, BeforeUpdate
  2. 31.021METHODAccountService.syncContacts(Set<Id>)
  3. 31.024SOQLSELECT Id, Name FROM Contact WHERE AccountId IN :ids
  4. 31.031SOQLRows: 3
  5. 31.033DEBUGUpdating 0035g00000Kd9QzAAJ for 0015g00000LmT2aAAF
  6. 31.036DMLUpdate Contact, 3 rows
  7. 31.049DEBUGContact 0035g00000Kd9R1AAJ saved
  8. 31.052METHODTaskService.createFollowUp(Id)
  9. 31.055DEBUGOwner 0055g00000A1bCdAAE, Account 0015g00000LmT2aAAF
  10. 31.060DMLInsert Task, 1 row

Shape Multiplier

Web app

Upload an SVG, stack rules like repeat, mirror, ring and grid, and watch one shape become a spiral, rosette or tiling as you drag the sliders. Exports to PNG and SVG.

On npm

Packages I publish and maintain

  • capacitor-native-ocr

    On-device text recognition for Capacitor apps, with a box for every word. Apple Vision on iOS, ML Kit on Android, works offline from the first launch.

  • use-draggable-svg

    A React hook that makes SVG elements draggable with mouse or touch and reports where each drag started and ended.

  • @motiko/react-interactive-chessboard

    An interactive React chessboard made for playing and analysing together.

config-diff

CLI and web app

Compares JSON, YAML and .env files by meaning instead of text, so key order, formatting and 8080 versus "8080" don’t count as changes, while real drift between staging and production is reported with the line it came from.

Example config-diff result comparing staging.yaml with prod.env
Keystaging.yamlprod.env
server.portEqual after coercion8080"8080"
services[name=payments].timeout_msChanged30005000
database.passwordChanged, masked••••••••••••
features.beta_checkoutOnly in prod–true

Everything else, from browser extensions to this website, is on GitHub.

Volunteering

Being useful doesn’t stop at code. Some of my favourite hours are spent teaching and mentoring people who are new to tech, helping them find their footing.

  • ReDi School of Digital Integration

    A non-profit tech school where migrants and people who’ve been left out of the tech industry learn to code for free.

    I’ve taught coding classes there and mentored students through their first projects and job applications.

  • Imagine Foundation

    Helps engineers from all over the world find their first tech job in Germany.

    I mentor engineers one-to-one through their job search: mock interviews, coding challenges, and honest feedback on CVs.

More about both on LinkedIn.

Fancy a game?

Chess is how I switch off.

I play on Lichess as motiko, mostly rapid, sometimes a slow classical game when the evening allows. Any rating is welcome. I’m happy to lose to you.

Kind words from colleagues, clients and students

“A great “can do” attitude, hard-working ethics, mentors his peers to make them better and more productive. Moti is a creative “out of the box” thinker. Able to tackle architectural challenges while keeping the business needs in mind.”

Uri Pintov
VP Product, Salesforce

“Has a thorough knowledge and experience in web software development. Loves learning new technologies and languages.”

Yaniv Iny
CEO, PractiTest

“Provided great value by taking full ownership and responsibility from the design stage to a published application on AppExchange.”

Sami Cohen
CTO and co-founder, Balink