Why I Started Building OsmWallet?

Like many other applications out there, OsmWallet was started by me for my own needs. I never thought of it as a product and never had any intension to package and release it for public use.

The Beginning ..

It was around June of 2020, and I was working on a simple project which involved XRP Ledger in a small module. Each time I wanted to test something I had to make a transaction, analyze the transaction. And also create new accounts, activate it, and make the transaction, and then analyze the transaction details etc. I use to create and import XRPL accounts into my favourite XRP wallet, which is Xumm. But I was lazy to get data to and from mobile each time. Xumm is a mobile app. Copy pasting transaction id, scanning the QR code to import accounts, sending test payments. To reduce the time it takes to do all these tasks, I thought of writing my own little script to make XRP payments directly from my laptop.

OsmWallet Was Born

Stage 1: I wrote a simple 1 page script(with few lines of code in it) to handle XRP payments. Later I wanted to fetch transaction details from within the script, instead of loading an explorer and waiting until it fetches the data I need.

Like this I started adding one feature after the other. Soon I had a script which was working great, but there was no UI to it. I was operating it via command prompt / terminal.

Stage 2: After adding couple of features, sometimes, I would forget the exact command to invoke or use particular feature. I remember taking a weeks break from work, and when I returned to work I felt like someone else had written this script. I had forgotten all the commands. I had to go through the source code to figure out the commands. That’s when I added some simple labelling and explanation of how to input data. Believe me, these simple changes made huge impact on usability.

Stage 3: All the while I was also using Xumm wallet, and I was also using MetaMask for my ETH transactions. By this time I was also playing with Xumm SDK. I wanted to work on something to understand it better, so I implemented Xumm SDK in my own script. I could send push notification(sign request) to my Xumm wallet from my laptop.

The script had become a very useful tool for my development works. Overall my script was saving me a lot of development time.

Stage 4: After using the script for a very long time, I wanted to make some improvements to it. While working on projects related to XRPL, I was switching between webpages, my code editor and terminal all the time. So I thought of implementing a little UI for my script and also making it a Chrome extension – that way it stays in my browser and my account details are saved on the browsers local storage and I can easily switch between accounts and not enter secret key manually to make transactions. It had a lot of advantage. After procrastinating for a very long time, I finally started working on adding some UI and made it into a chrome extension.

Since it was already very useful for me in my development journey, I thought it’ll be helpful for other developers too. So initially my aim was to make it a tool for developers. Basically making developers life easy.

Stage 5: I started working on UI a bit more as I had made up my mind to release the chrome app for developers. As I worked on the UI, I realised its almost feature complete wallet which anyone can use. Developers can use for their needs, and regular users could also use it for their day to day crypto transactions.

I started thinking from users perspective too, and came up with a big list of things I would love to implement in the app. Below is a condensed list of things I want to implement:

Long Term Short Term Medium Term
Streaming Micro-payments WordPress Integration Twitter Tipbot
Non-fungible token (NFT) Building OsmAPI Osm T-shirts/mugs
Hooks / Sidechains Integration More XRPL Features Scratch card
Running a validator node Xumm Integration Voucher/Gift card
Decentralised Finance(DeFi) Token Swap: DEX OsmArmy: Community
USB Stick Integration Testing & Optimizing Educational Material

Looking back, when I first started writing simple code snippets for my own use, least did I know I’ll be naming it as OsmWallet and releasing it to the world to use.

Related Read: Introducing OsmWallet

OsmVision

In simple terms: Developers should be able to concentrate 100% on building their product, and payments should be taken care by OsmWallet. i.e., developers can include a simple JavaScript file in their project and start accepting payments from OsmWallet users. Soon we will also integrate Xumm into OsmWallet, so developers can accept payment from both OsmWallet users and Xumm users.

What would I have done differently?

If I knew I would release it some day for public use, I would have developed the chrome app sooner. For more than a year I was using the script version of the app and trying to improve it whenever I faced with issues. Instead, I could have developed the Chrome extension much earlier and worked on it to improve it further. That way I would have had a solid product much earlier.

I started hunting for bugs only recently, once I decided to let everyone use the extension. Also a lot of my code was not modular. Code was scattered and most of the time I had hard coded the things(ex: Xumm API Key / Secret), as I was the only one using it. I had to delete so many working parts of the app – ex: Xumm integration was already working, but it was bad code. So I had to remove it. Now I’ve put it in the roadmap to implement in proper/secure way.

Incremental Update

I kept postponing the release for months as I always felt that the app was not good enough. So many implementation were half way through and I thought of releasing once I finish implementing one more thing. But my list of things to implement is so big and almost all of them look important to me(or else I wouldn’t even include it in the list).

One thing was clear to me that it’s never going to be good enough. That’s the way everything is. I must keep working on making it little better each time. And the major lesson for me was that it’s not about “what I think” is good enough. It is what “users think” about the product and what is important and useful for them. It is more than just me now. It is about the OsmArmy! ⚔️

So I’ve decided to make this project/product public as of June 01 2022. ❤️

.           .           .

Proudly powered by OsmArmy ⚔️