Accidental Technologist

Musings about Entrepreneurship, Technology and Software Development

  • Home
  • About
  • Still River Software
  • Privacy Policy

Powered by Genesis

“Are you building a business or learning a stack?”

March 2, 2020 by Rob Bazinet Leave a Comment

Tweet

Stefan cosma 0gO3 b 5m80 unsplash

I always love when someone posts something online saying they have an idea for an application and ask, “What stack should I use?”

It’s a fair question, but the answers usually start with “it depends”.

What is a “stack”?

The “stack”, for those unfamiliar with the term, refers to what programming language, frameworks, and database a project uses to get its work done.

Examples could be Ruby, Ruby on Rails and PostgreSQL, or JavaScript, NodeJS and MongoDB or maybe C#, ASP.NET Core, and SQL Server. All acceptable choices to build a web application.

Indie Hackers

There is a post on Indie Hackers, titled Tech Stack Suggestions. The original poster wants to build an MVP for his business idea and is soliciting opinions as to what stack to use.

He’s wondering about using a frontend framework like React and replies to someone suggesting he keep it simple:

Shouldn’t I be using a frontend framework in order to develop this? Backend Django + SQL has its advantages, in fact, the current project I’m working on in my organization is partially based on that. But, I’d like to implement things like GraphQL, NoSQL primarily to get a more hands-on on how they’d work in a real project. Would really appreciate your input.

Volkan Kaya replies with brilliant and practical advice:

Are you building a business or learning a stack?
If you want to learn a stack do it while being paid, not while starting a business.

Nick Haskins pragmatically suggests:

It’s really unfortunate that our industry has convinced you that you need to utilize tooling built for larger applications. On behalf of the industry, I apologize for that.
You do not need a front-end framework to develop a web app.
I’ve built multiple very large apps with Rails + Bootstrap. No ReactJS. No VueJS. No JS libs, just a sprinkle of jQuery.

These are examples of excellent and practical advice. The responses to the post include a lot of misguided answers as well.

Shiny Things

The thread from Indie Hackers sums up what it’s like to be a technologist who wants to build their software. You should give the thread a read.

It’s easy to want to build something and want to use the latest frameworks. It’s a great chance to learn something new. I’m all for learning; you should never stop. But, if your goal is to build a business and challenge yourself with new technology while doing it is not the best decision.

I’ve been guilty of trying to convince myself there’s some technology I need to use because applications that are created with it are faster or scale better. It’s not essential before you have that problem. People will try to justify using it anyway.

Don’t follow like sheep do…right off a cliff.

Love the One You’re With

It’s best to take a step back and breathe. Take stock in yourself and where your strengths lie. Ask yourself which programming language and framework you use most today? Which one do you make a living using today?

What is wrong with this combination that you wouldn’t want to use it to create your application? You want to make the right choice and not regret it later.

In its most basic form, people want to make an application and try to think too far ahead. Thoughts of scaling, finding developers, performance, and such things that don’t matter until later.

As a software entrepreneur, more appropriate questions you should be asking yourself are:

  • Am I solving a real problem?
  • Do I know people who will pay me money for my solution?

These are the questions to ask yourself now. Notice these have nothing to do with the stack you choose.

The simple answer to the stack question as a developer is to use the stack, you know, leading from idea to product in the shortest amount of time.

Why strap yourself with two hard problems? Toss the stack problem right out the window.

The best advice is to use the framework you are most comfortable with and will be the most efficient—the one you can get done what you want in the shortest amount of time. You’ll be happier and have something to show for it.

Don’t let people try to convince you their stack choice is better. They will have convincing arguments. None should sway you.

Exceptions

The above is my rule, but there can be exceptions.

As a Ruby on Rails developer, if I want to build a native Mac application, then I probably need to use Swift or Objective-C. Yes, I could use something like React Native; that’s not the point, so please don’t send me an email to the effect. If I don’t know the language, then I have given myself multiple challenges.

I’m sure there are other instances where I would need to learn something new, but the cases will be unusual when you’re deciding the application to build.

Conclusion

If you’re planning on starting a software business and you’re going to be the primary developer, then use the tools you know best. You are in a great position to get something out for your customers to see. Remember, they don’t care what your application is written in, only that it solves their problems.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Bootstrapping, Programming, Technology Tagged With: Ruby on Rails, stack

This Wisdom of Joe Armstrong Will Live On

April 24, 2019 by Rob Bazinet Leave a Comment

Tweet

I found out about the death of Joe Armstrong, the father of Erlang, recently as did the world.

It is with great sadness that I share news of Joe Armstrong’s passing away earlier today. Whilst he may no longer be with us, his work has laid the foundation which will be used by generations to come. RIP @joeerl, thank you for inspiring us all.

— Francesco Cesarini (@FrancescoC)

April 20, 2019

It saddens me that I never had the opportunity to meet him. I did find this very interesting and applicable quote to all developers. We can take guidance.

Spf13 2019 Apr 23

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: erlang

Fixing Missing Sublime Text 3 Package Manager

March 3, 2017 by Rob Bazinet 1 Comment

Tweet

I’ve been a big fan and long-time user of Sublime Text 3. Recently, I ran into a problem where Package Control stopped working. When I say, not working, I mean behaving as though I never installed it.

Attempting to install or remove packages was not even an option any longer. All menu items relating to packages was gone..yet by all accounts, Package Control was still installed.

NoPackageManager

This had been working in the past and as far as I could remember, it worked recently. I figured either an update to Sublime Text 3 had broken the Package Control or maybe another package had caused some problems.

I tried reinstalling the Package Control but nothing changed.

After much trial-and-error, I discovered an interesting section in user settings (Preferences -> Settings), name Ignored Packages. What?

IgnoredPackageManager

I could see the Package Control package was ignored. I removed it from this section and restarted the editor.

YeahPackageManager

Checking Package Control now reveals it’s running as it was before. I have no idea how this happened but I’d venture to guess a bug in a Sublime upgrade at one point.

I hope this fixes this really annoying problem for someone else.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: sublime text 3

Greener grass

September 23, 2014 by Rob Bazinet Leave a Comment

Tweet

I ran across an interesting post this morning from Frans Bouma, of LLBLGen fame. ?He is a long-time .NET developer who felt a bit complacent in the work he had been doing on .NET and ORM development. Frans decided to explore some of the recent cool technologies to see how green the grass was on the other side of the technology fence.

After I finished LLBLGen Pro v4.2 this summer, I fell into the usual ‘post-project’ dip, where everything feels ‘meh’ and uninteresting. Needless to say I was completely empty and after 12-13 years of doing nothing but .NET / C# / ORM development, I didn’t see myself continuing on this path.

I found myself in the very same place a few years ago. ?Microsoft felt wrong, it felt boring. No, I didn?t know everything about .NET but I felt I had experienced everything there was about the part of the ecosystem that effected me. ?I left .NET and haven?t returned but a piece of me does think back with some fond memories, like I left part of my life behind.

Frans did what so many do, pickup something that seems everyone is enjoying, in this case Go:

I already knew this of course when I went into this journey, so learning Go was, in hindsight, more of a ‘let’s do this, see where it leads me’ kind of thing than a real move to Go. After learning the language and working with the tools available I realized it wasn’t the world I wanted to be in. The main reason was that I develop and sell tools for a living, I’m not a contractor and Go’s commercial ecosystem is simply not really there. After my Go adventure I had learned a new language but nothing of what I needed to get past my problem.

Then try something else, Objective-C on OS X:

To learn a language and platform, it’s best to use it in a real project. Some time ago I had an idea for an app for musicians (I’m an amateur guitarist) on OS X. This was the perfect opportunity to learn a new language and platform, so I did the radical move to learn Objective-C with XCode, targeting OS X. I have to say, this was a true struggle. XCode was ‘OK’, but Objective-C was something I hated from the start.

In his case he discovered something in these other languages and frameworks that opened his eyes to something he could explore and use in .NET, where he ended up going back to:

My little journey brought me back to .NET without realizing it, to find back the love of writing code by finding motivation in an element that’s a core part of an OS I don’t use in my daily work. It opened the route out of the rabbit hole by showing a new path I could take without leaving my life’s work behind; on the contrary: it opened my eyes to completely new opportunities and ideas.

The reason this post interested me so much is because how familiar it sounds for me personally. ?I seem to continually am bored lately with the technology I work with and I venture to try new things. ?Trying new things, exploring unfamiliar territory is good. ?It opens your eyes to something that may send you down an entirely new path. ?It?s easy to stick with what you know, to not get out of your comfort zone but you miss out on many opportunities.

The post is a good read and I recommend you read it.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: .net, go, objective-c

What He Said – Tim Bray ? Software in 2014

January 9, 2014 by Rob Bazinet Leave a Comment

Tweet

Tim Bray has a great post discussing the state of software development in 2014. ?I found myself nodding in agreement virtually all the way through this one, mainly about client-side development for mobile and the web.

The client-side mess ? Things are bad. You have to build everything three times: Web, iOS, Android. We?re talent-starved, this is egregious waste, and it?s really hurting us.

A bit about mobile:

Mobile sucks ? I?m going to skip the differences between Android and iOS here because they?re just not that significant in engineering terms. Anyhow, here?s the suckage.

  • First of all, you have to do your mobile development twice.
  • The update cycles are slow. Days in the case of iOS, hours for Android (compared to seconds for browser-based apps). What?s worse is that you can?t even count on people accepting the mobile-app updates you send them. Got a critical data-losing account-compromising privacy-infringing bug? Sucks to be you.
  • The devices are memory-starved, CPU-starved, and battery-starved.
  • There are loads of form factors and it?s getting worse.
  • You don?t get a choice of languages; if you hate both Java and ObjC, get another job.

Bottom line, client-side development is a difficult place to live but server-side is more stable. ?I have felt this way for a long time, client-side makes me cuss and server-side makes me smile. ?

It?s a good read.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: client-side, mobile

Maybe You Are Doing Too Much Test Driven Development

December 11, 2012 by Rob Bazinet 3 Comments

Tweet

I came across this StackOverflow post from 2008 where someone wanted to know when a developer can do too much testing. ?Simply brilliant summary by the father of test-driven development (TDD), Kent Beck:

I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence (I suspect this level of confidence is high compared to industry standards, but that could just be hubris). If I don’t typically make a kind of mistake (like setting the wrong variables in a constructor), I don’t test for it. I do tend to make sense of test errors, so I’m extra careful when I have logic with complicated conditionals. When coding on a team, I modify my strategy to carefully test code that we, collectively, tend to get wrong.

Different people will have different testing strategies based on this philosophy, but that seems reasonable to me given the immature state of understanding of how tests can best fit into the inner loop of coding. Ten or twenty years from now we’ll likely have a more universal theory of which tests to write, which tests not to write, and how to tell the difference. In the meantime, experimentation seems in order.

I always find interesting to read so many blog posts about how to do TDD, including unit tests, integration tests, functional tests, factories, mocking and on and on. ?There are conferences dedicated to software quality and software craftsmanship where TDD is advocated as all-in and anything less is not doing the right thing.

Clients pay me to write code too and not tests. ?I write tests just enough to know the critical pieces of my system are working?.and continue to work. ?Developers could easily spend double their time writing completely tested systems and I’m not sure the customer gets 2X the value or ROI.

I think experimentation is certainly in order and see what best fits your situation. ?The biggest takeaway, step back and decide for yourself what’s the right amount of testing and don’t simply follow the pied pipers of TDD. ? Lots of great feedback from the others in response to the original question in that thread and great food for thought.

UPDATE: If you want to hear another developer’s perspective on TDD and using it as-needed, Marco Arment discusses how he uses testing in his very successful business on the latest Build and Analyze. ?Very timely to my post.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: kent beck, tdd, tests

Functional Programming Principles in Scala

October 15, 2012 by Rob Bazinet Leave a Comment

Tweet

Large icon

I subscribe to the school of thought that learning should never end, and I also believe that as a software developer it’s important to learn new programming languages yearly. ?

After learning about Coursera and hearing that Martin Odersky was going to be teach a course covering functional programming titled?Functional Programming Principles in Scala, I had to sign up. ?The class is a 7 week long introduction to functional programming principals using the Scala programming language.

Course Syllabus

Week One: Programming paradigms; overview of functional programming and the Scala programming language.
Week Two: Defining and using functions, recursion and non-termination, working with functions as values, reasoning by reduction.
Week Three: Defining and using immutable objects, review of inheritance and dynamic binding.
Week Four: Working with collections: Sequences, sets and maps
Week Five: Defining recursive data and decomposition with pattern matching.
Week Six: Reasoning about functions
Week Seven: Case study

Weekly

Each week, on Tuesdays, students are presented with a series of lectures by Martin that cover the week’s topic. ?The lectures include prepared slides, writing on a virtual whiteboard and live code examples and run 2-3 hours per week.

After listening to the lectures for the week there are homework assignments which exercise the material reviewed in the lectures. ?Pretty common for a college course.

I have to admit the assignments are hard. ?I am always up for a challenge with a new language but the assignments go well beyond general Scala syntax or basic functional programming paradigms. ?These lectures force the student to learn (or remember) computer science and mathematics from my early days of algorithm and data structures from college. ?No complaints here, all really good stuff, but it took some research to recall some of these things.

Conclusion

Would I recommend this class? ?You bet! ?It was a great class and I learned ton. Scala was a language that I wanted to have a look at and this course was a great introduction but assumed a background in programming and did not cover the basics. ?

One things that annoys me is that most programming books start with the very basics of a language, trying to cater to the widest audience possible. ?This leaves most books with only 1/2 of their content really unique and usable.

After spending some time with Scala, I decided I was not a fan and won’t be using the language for future projects. ?I love the idea of functional programming, lots of small functions with specific functions, but Scala is way too verbose for my liking. ?It just looks like functional Java and not different enough from Java or C# for that matter to attract me to use it. ?I think Scala drove me to appreciate Clojure much more and I will be writing a lot more parentheses because of it. ?

I think it’s good to see other programming languages and styles. ?Scala works for some but not all.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: functional programming, martin odersky, scala

Functional Programming Battle

October 3, 2012 by Rob Bazinet 2 Comments

Tweet

2012 10 03 09 09 21

I’ve been spending some quality time with Scala lately and ran into this research paper comparing Scala, Haskell and F# titled?Haskell vs. F# vs. Scala: A High-level Language Features and Parallelism Support Comparison. ?It’s a great read and well-worth the time.

This paper provides a performance and programmability comparison of high-level parallel programming support in Haskell, F# and Scala. Developing several parallel versions, we employ skeleton-based, semi-explicit and explicit approaches to parallelism. We focus on advanced language features for separating computational and coordination aspects of the code and tuning performance. We also assess the impact of functional purity and multi-paradigm design of the languages on program development and performance.

It’s interesting to see the three languages compared for their abilities in parallel applications. ?It should be noted that the paper is from the?Glasgow Parallel Haskell web site so there may be some bias but nothing outstanding.

I like the fact that the comparison is based on a Java VM language, Scala, a .NET language, F#, and a native language of Haskell. ?Running on a rich runtime such as the JVM or .NET gives the developer a library of which to draw from, it also adds some overhead. ?The results are pretty much what I expected with Scala doing better than I would have envisioned. ?The JVM seems to be well-tuned.?

You can download a PDF version of the paper here. ? The code used in the benchmarks are also available.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: f#, functional programming, Haskell, scala

Read Structure and Interpretation of Computer Programs for Free on the iPad

August 24, 2012 by Rob Bazinet 2 Comments

Tweet

9780262011532 medium

I found out recently that one of the all-time classic book in computer science,?Structure and Interpretation of Computer Programs, is available in ePub format for free. ?The book is truly a classic but has been out of print for a long time now.

For those unfamiliar with the text, from Amazon’s site:

Abelson and Sussman’s classic Structure and Interpretation of Computer Programs teaches readers how to program by employing the tools of abstraction and modularity. The authors’ central philosophy is that programming is the task of breaking large problems into small ones. The book spends a great deal of time considering both this decomposition and the process of knitting the smaller pieces back together.

The authors employ this philosophy in their writing technique. The text asks the broad question “What is programming?” Having come to the conclusion that programming consists of procedures and data, the authors set off to explore the related questions of “What is data?” and “What is a procedure?”

The authors build up the simple notion of a procedure to dizzying complexity. The discussion culminates in the description of the code behind the programming language Scheme. The authors finish with examples of how to implement some of the book’s concepts on a register machine. Through this journey, the reader not only learns how to program, but also how to think about programming.

The contents of the book are timeless and give computer scientists young and old a solid level of knowledge. ?It uses Scheme, a dialect of Lisp, but that should not deter readers as the lessons are universal.

The full text is also available to be read online for those not able to read in ePub format. ?Great stuff!

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: book, lisp, scheme, sicp

Dark Matter Developers: The Unseen 99%

March 7, 2012 by Rob Bazinet 2 Comments

Tweet

A really interesting and true post today by Scott Hanselman as he explains what Dark Matter Developers are and how a large percentage of developers can be classified this way:

My coworker Damian Edwards and I hypothesize that there is another kind of developer than the ones we meet all the time. We call them Dark Matter Developers. They don’t read a lot of blogs, they never write blogs, they don’t go to user groups, they don’t tweet or facebook, and you you don’t often see them at large conferences. Where are these dark matter developers online?

Scott points out where he thinks these developers are:

Where are the dark matter developers? Probably getting work done. Maybe using ASP.NET 1.1 at a local municipality or small office. Maybe working at a bottling plant in Mexico in VB6. Perhaps they are writing PHP calendar applications at a large chip manufacturer.*

Personally, I know quite a few of these developers and I prod them to not be so introverted, get out to meet ups, blog or at least join and use Twitter. ?Maybe these folks have it right, maybe we should just get things done and spend the rest of the time focused on things that are more important to us. ?I think they could be right, we spend our time on things we are passionate about, we work because we have to?we need to provide for our families.

To me, the difference between the Dark Matter Developers and those like Scott, is the passion. ?Not everyone is passionate about the work they do, the work on and move on to things they like better. ?I have been passionate about computers for as long as I can remember, devouring technology in every waking hour because it fascinates me. ?I believe this is what separates these two distinct types of developers.

I am a Dark Matter Home Owner. ?I hate doing maintenance around the house; lawn mowing, raking, building and painting. ?I have better things to do with my time and fixing a leaky gutter is not it. ?I would rather read a book on algorithms and pay someone to mow my lawn..that’s just I roll.

Share this:

  • LinkedIn
  • Twitter
  • Facebook
  • Email
  • More
  • Pinterest
  • Tumblr
  • Pocket
  • Reddit

Filed Under: Programming Tagged With: career, hanselman, programmers

Next Page »

Recent Posts

  • Social Media Times Are Changing
  • It has certainly been a long time…
  • How to Fix Rails Flash Rendering When Using Hotwire
  • Hotwire Fix for CORS Error when using Omniauth
  • Fix Installation of Ruby using rbenv on macOS Big Sur

Categories

Services I Love

HatchBox - Easy Rails Deploys Fathom Analytics
Follow @rbazinet

Rob Bazinet
@rbazinet

  • Great little utility https://t.co/6AgboJv6oI
    about 21 hours ago
  • Funny watching the hate to show up in my time line for ChatGPT. People getting defensive about it.
    about 4 days ago
  • I just backed The SaaS Playbook, by Rob Walling on @Kickstarter https://t.co/1FpTWN9c9v
    about 4 days ago
  • This looks like an interesting project. I need to dig in a bit. https://t.co/gacEX9AmEn "Phlex — fast, object-orie… https://t.co/4AUL0Z0SBl
    about 5 days ago
  • I attempted to use ChatGPT today and asked a couple questions it couldn’t answer. I thought it was a magical black… https://t.co/uJGw0CgUAv
    about 5 days ago
  • RSS - Posts
  • RSS - Comments
Find me on Mastodon