b

l

o

g

P

o

s

t

(

z

a

i

n

A

l

s

a

a

d

)

;

T

h

e

S

t

o

r

y

B

e

h

i

n

d

D

a

t

a

i

s

m

:

M

y

J

o

u

r

n

e

y

i

n

S

o

f

t

w

a

r

e

D

e

v

e

l

o

p

m

e

n

t

1/12/2024 - Over the last few weeks I created a cool tool called Dataism, it’s a program that allows data scientists to run data science scripts without the headaches of staring at code. It’s basically Jupityr Notebook and RStudio in a GUI.

It works like this: A data scientist imports their dataset, and they are given a catalog of scripts/models, organized in categories of data science. After an option is selected, you are then given another GUI allowing you to select your required parameters for running the script/model (x variable, y variable, sensitivity, etc.), then the output would be shown on the screen.

Originally, I planned to turn this into a startup. But there were much more powerful alternatives out there which seamlessly runs as a web application. After creating Dataism, I will shift my focus into web development because I've learned that web applications are the future of software. There were many other lessons I've learned from creating Dataism as my first Software As a Service (SaaS) product, which I will go into in this blog post.

The Process

I decided to make Dataism as a desktop application, my SWE toolbox included: Visual Studio 2022, .NET, C#, RDotNet, PythonDotNet, and the necessary data science libraries (scikit, matplotlib, etc.).


I would also need a UI that is easy to implement basic functionality. For now, I just focused on pure functionality over design, so I implemented the UI with WinForms which sure.. does give it an outdated look. On the plus side, WinForms is extremely fast and easy when it comes to implementing functionality, so WinForms it is.





Ok, time to get to work.







First, I'll need to install some packages from the NuGet Package Manager to allow my program to utilize the Python and R engines. Because this is a .NET application, I'll be using rDotNet and PythonNet. Perfect, now I can write my own Python and R scripts to generate a plot given some parameters passed by the program.



I'll also have to work on the UI to get the core functionality to work. I'm thinking to include the basics: a terminal output, a visual output, and multiple GUI's where parameters for different data science scrips can be entered.



After that is done, I'll have to start the most important part of software development: Testing!



Now I'll be honest, testing was the most time consuming part of developing Dataism. Most people would (rightfully) think of testing as some big burden. But I'd argue that testing isn't just for fixing code, it also forces you to truly look again and understand how your code works, which will 100% help you in the long run if you plan to make any updates to your products.



Ok, now I'm going to look for a test dataset from Kaggle. I'm thinking one that's interesting, but not too big. I used dataset on BMI, perfect for us! Now I'm going to import the dataset in the program, select the parameters for a linear regression plot, and click run.



Once everything's working, now it's time to move onto the final step: making an installer for my program. This one was pretty easy, for this one I used the Inno Setup tool, pointed the script to the folder Dataism was compiled in, aaaand boom. I now have an installer for my program that's ready to distribute!

Vinod Jangid

What I've Learned

Dataism is my first attempt at creating a Software as a Service (SaaS) startup. The SaaS business is very competitive, and most SaaS products fail. Dataism is a cool program, but there were many facts I had to face: Dataism is my first failed SaaS.


It's pretty easy to feel demotivated when your first SaaS produt fails, but I did some more research on SaaS startups and found out that it's basically a guarantee for SaaS startups to fail.


Also the thing is, Dataism is a desktop application. It gets the job done, but there's more powerful alternatives, which are web apps. Web apps are much, much more powerful today than ever. Think about it, how often do you install desktop applications? Not as often as before. All web-based SaaS products can be used by pretty much any device with a browser, just look at Microsoft Teams or ChatGPT. All you need is a browser, and you're set. This is very, very convenient for people and businesses.


Because of these reasons, I've decided that my next project will be a web application. Also, since I'm going to build projects that needs a bigger scale, I'm going to include some of my friends after I get an idea of what to build (I'm open to anyone collaborating, feel free to reach out if you'd like to be involved!)


Vinod Jangid