For the past month or so I’ve been working on a new side project. It’s a small project that will allow me to exercise existing skills, re-sharpen older skills that I’ve not used in awhile, and learn some new ones.
I’d like to share it with you…
Working in Public
I’ve been working my side project every weekday morning for an hour or two before my workday starts and on the occasional weeknight or weekend. I toil away mostly in solitude, except when I solicit feedback or ask for advice from a colleague and buddy who’s working on his own project.
I’ve recently been inspired by a few folks on various podcasts to start working in public. They speak of the benefits of sharing what you’re learning, developing, building with your audience as you’re working on it, an idea that strikes fear in the hearts of those who, like me, are inclined towards self-conscious perfectionism. It’s difficult to put your in-progress work out there for all to see, warts and all.
There’s been an increasing trend towards working in public, particularly among indie makers and developers. I dipped my toe into those waters with my last project, Open Shippers, earlier this year*, and I plan to get back in the pool with this project.
My plan is to post fairly regular (weekly?) updates about what I’m doing on the project:
- What did I do the prior week?
- Is there a particular problem I solved, pattern I used, or trick I learned that is worth sharing?
- What do I plan to work on in the coming week?
- Any particular challenges worth mentioning?
Things like that.
These will be pretty rough, unpolished posts. Sometimes a particular topic I encounter will be worthy of becoming a more in-depth, polished post, and put these up from time to time.
So what are my goals with working on this new project, and doing so in public?
- Get into the habit of writing regularly.
- Sharpen old skills and learn new ones.
- Share what I’m working on and what I’ve learned. Hopefully it is helpful to someone.
- Demonstrate the process of taking a product from concept to market.
- Demonstrate well-architected, working product on the Azure / .NET Core stack.
- Have fun.
- Make some lunch money if anyone subscribes to the service.
What’s the Project?
The idea is not particularly novel or interesting, but it’s a good candidate for what I’m trying to achieve with this project.
I’m building a stock alerts app (hereafter referred to as Stock Alerts until I think of a good name for it) that will allow the user to create an alert definition for a given stock based on a set of criteria that they define. When the alert is triggered, the user will be notified according to their preferences by push notification, SMS, and/or e-mail.
“Aren’t there a ton of other stock alert apps out there?” Yes, there are. Some just let you set a simple price alert; others offer many more features. I plan to support complex alert criteria that include not only simple price alerts, but eventually also technical and fundamental alerts as well, which will differentiate the app from a portion of the market.
I also want to challenge the idea that you have to have a completely novel idea to succeed in building an app that people will pay for. There’s room for multiple competitors in most markets, and oftentimes your app will be the right choice for a segment of the market that’s not currently being served well.
To be clear, I have no illusions of replacing my income with this app, but it will be great fodder for achieving the goals I mentioned above, and it should be a fun little project.
Here’s the some of the technology I’m using:
- Hosted in Azure
- ASP.NET Core
- Azure Functions for the data feed, alert definition evaluation, and notification processing
- Azure Service Bus Queues
- Web API Azure App Service for the user and alert definition management
- Azure SQL
- Entity Framework Core
- Xamarin Forms
- Azure DevOps for CI/CD
The backend API is coded and running in Azure. I’ll share more detail about the API and how it’s built in future posts, including the overall architecture. I’ve been working on the mobile app for about a week now. I’m able to register/login through the mobile app and display my current alert definitions. Last week I put together some UI wireframes for the Create Alert Definition screens, and I’ll be working on implementing those screens this week.
In the spirit of working in public, I’ve made the Stock Alerts repository public: https://github.com/jonblankenship/stock-alerts. As with most projects, there are areas of the codebase that need some work and refinement, but we’ll address those things together down the road.
Thanks for reading! Until next time,
(* After spending several months working on Open Shippers, I was burned out on it by the time I launched it in preview in February. I failed to differentiate it from other similar services out there, and I didn’t have any gas left in the tank to work on building an audience and making it successful. Someday I may do a post-mortem on the project. Open Shippers wasn’t a total failure though – I learned quite a bit while working on it, particularly about ASP.NET Core and Blazor, and I’ve reused several things I developed for Open Shippers in more recent projects. The site is still live, and I may revive efforts around it at some point, but I’m content to work on something else for the time being.)
If you’d like to receive new posts via e-mail, consider joining the newsletter.