
Ask HN: Hardware guy needs to learn web application development – what language? - god_bless_texas
After spending the past 10-ish years in hardware development, I have a business idea that I want to pursue.  I&#x27;m not going to seek funding, I&#x27;m not really (yet) even looking for a tech co-founder.  I want to develop this application that will be web based, and I want to do it slowly and learn along the way.  I have some crude C++ skill and intermediate Python skill.  My web app will incorporate drawing and hierarchies, with a database back-end.  Basically Evernote and Visio combined.<p>We&#x27;ve all been there when a guy walks in your door and promises huge wealth if you&#x27;ll just build and &quot;be the geek&quot;.  I&#x27;m going to be both this time.<p>So, HN, if you&#x27;re in my shoes and moving from hard stuff to soft stuff - what language or toolset gives you the best bang for the buck?  I&#x27;d like to make progress quickly but also have something I can build to be robust and perhaps bring professional developers in with me down the road.
======
ajford
I second using Python and a framework like Flask. If you're already
comfortable in Python, you'll be able to get off the ground faster, and be
productive sooner.

I would leverage a JS framework on the front end, as that will definitely
improve the responsiveness. Perhaps something in React or whatever is the
currently vogue framework.

For drawing and graphics, D3 is really powerful and will help you avoid having
to write all the drawing routines from scratch.

~~~
god_bless_texas
Holy mackerel. D3 actually already has the graphic type I need. It is possible
I may have a working prototype today.

You have helped me so much!

------
educationdata
Many times language is not the barrier. It is very likely it will take you
less time to learn a new language than to learn a framework in a familiar
language.

Personally, I found PHP is the easiest to get into web development. You do not
have to use MVC or any framework at all. For other languages (python, js), web
development almost always requires using a framework, which can take more time
to learn than learn the PHP language. And PHP is also easier for hosting.

~~~
tugberkk
This! I also don't think that you need frameworks for simple websites. If you
are familiar with one, OK; but if you are not, you need to learn the
"framework".

~~~
Yptur
Also from my personal experience if you DO want to learn about a PHP
framework: Laravel is a great framework and Laracasts is a great learning
ressource, I wish more frameworks/languages had learning ressources like that
(yeah I know Laracasts does some extra stuff as well :)) I can only recommend
it.

That being said the other options are great as well, JS has come a long way
since the days of yore.

PS: It's all going to be a bit... rocky in the beginning. No matter what you
choose. It takes a while to wrap your head around everything but it is doable
in a decent timeframe.

------
r4victor
Since you're already familiar with Python, I would recommend it for the
backend. Take a look at Django and Flask frameworks. Django has an ORM and
fits well for a typical CRUD application. Flask is a more lightweight tool.
Both are quite mature and pleasant to work with.

------
arcticwombat
Since you want to do drawings and stuff we're definitely talking JavaScript
and graphic frameworks, either raw canvas or something like the D3 library
would be my guess.

For the backend, although it pains me to say so, I suggest PHP simply because
there's a metric f __kton of tutorials, guide, mentors, bootcamps, and what-
have-you.

However, if your goal is to expand one day and hire on developers, I'd look
around your area to see what's in demand and go with that, as it'll be your
best bet to find developers later on.

I'm sure you'll get lots of suggestions for JS frontend frameworks, but
honestly I'd stay away from them and go with the basics, JavaScript + JQuery +
D3, plenty powerful and doesn't have the extra learning curve of whatever
flavor-of-the-month JS framework.

Personally I'd not use PHP because I don't like to work in it, and I'm more
productive in other languages, but there's no denying it's the most used
webserver language in existence, it's updated/modern, hosting is cheap, and
there are LOADS of information out there for how to do just about anything.

------
jungler
Bias heavily towards ease of debug and deployment. When you're the one-man-
band you need to leverage all the tooling towards realizing the design, and
avoid the scaling rabbit hole. That means - simple now, rewritable later as
you bring in hires.

You will need a solution for producing front end JS/HTML/CSS. This should
probably be your starting point in fact - create a site mockup with static
pages and no real backend, use that to gain feedback, then build out the real
functionality. For JS code Typescript is a very popular option to aid some
additional maintainability. There are also many build systems available for
compiling finished pages.

When you're ready to have a backend, you can evaluate it separately later. You
need a combination of a language, a web server, and a database at minimum.
Again, an early site can avoid horizontal scaling and focus on having one good
database doing everything and backing everything up reliably. (Focus backend
efforts on reliability first!)

------
saluki
If you're already familiar with python look at Django.

I would recommend taking a look at Rails (ruby) and Laravel (PHP).

Laravel is probably the best bang for your buck.
[https://laracasts.com/series/laravel-from-
scratch-2018/episo...](https://laracasts.com/series/laravel-from-
scratch-2018/episodes/1)

Laracasts, is a great way to get up and running.

I would start creating a standard web applications with just enough js+jQuery
in the beginning vs doing a full SPA with vue or react. You can do that with
version 2 if things take off.

------
oblib
I've been using the Apache web server and CouchDB on the server side along
with PouchDB.js, jQuery, Bootstrap, and Service Workers on the client side.

This provides most everything needed to create a feature rich "Single Page,
Offline First, Progressive, web app.

Almost all of the app code is Javascript. What little server side code is
needed I write in Perl, but Python would work just as well.

Personally, I think CouchDB/PouchDB is highly underrated. I believe the reason
for this is that most developers started out using an SQL backend DB and are
too lazy to learn how to use CouchDB.

I don't mean that to be an insult, they're using what they know and that's to
be expected, but they don't know what they're missing by not learning how to
use CouchDB/PouchDB, and they're missing a lot.

CouchDB was designed from the ground up for the web apps. It has features that
make it much easier to develop multiuser apps and PouchDB makes it incredibly
easy to implement them. User signup, authentication, permissions, are all very
easy to implement. CRUD routines and Full Text Search are super easy, and
lightening fast. Live Data Sync for multiuser/collaborative apps is builtin.

Adding offline first capabilties is easy using Google's "Workbox"
([https://developers.google.com/web/tools/workbox/](https://developers.google.com/web/tools/workbox/)).

That's a pretty powerful foundation to build upon.

~~~
Torgo
Please do a writeup on something you've built, I am extremely interested.

~~~
oblib
You can find more info about this approach and a "blog" app I've been working
on at Azartiz.com.

------
ArtWomb
This caught my attention because of the mention of MS Visio. I used to use it
quite a bit back in the day. And I think a web port is a terrific idea!

Honestly, if you can teach yourself the basics. Your main tech challenge
domains will be network and canvas rendering runtime debugging.

Take a look at High Performance Browser Networking

[https://hpbn.co/](https://hpbn.co/)

And Google's series of Udacity courses on building performant web apps

[https://www.udacity.com/course/browser-rendering-
optimizatio...](https://www.udacity.com/course/browser-rendering-optimization
--ud860#)

Best of luck ;)

------
lewisjoe
Django(Python) for backend. React for the front-end.

Pros:

\+ You are already a bit familiar with Python

\+ Django provides out of the box solutions for authentication, db management,
migrations + bunch of stuff that takes quite a bit of effort

\+ React is easy to grasp, since there isn't many buzzwords and concepts.
Basically it's just JS.

Cons:

\- You have to put effort in learning Javascript and browser fundamentals.
There's no running away from it.

I built [http://writango.com](http://writango.com) with the stack I mentioned.
Literally took me a weekend to get the project's first version up.

------
pascalxus
The so called modern day web frameworks (Vue, React, etc) are needed if you
want to get a job and become a hardcore FE developer.

But, if you just want something that will maximize your productivity, you
should stick to the basics: HTML, CSS, Javascript and jQuery. It's super easy
and will get your web app done much more quickly than anything else.
Otherwise, you'll end up in a rabbit-hole spending days just getting your
infrastructure set up.

------
verdverm
I'd recommend full stack JavaScript because it's so pervasive. You'll find
many more learning resources and starter kits.

------
dublin
Flask isn't bad, but as an absolute beginner, you might want to start with a
"batteries included" web app platform like Web2Py. It's surprisingly good, and
I've had teams use it as the basis for a fairly complex prototype that became
a sophisticated product.

------
mars4rp
Use a functional language, it is way closer to verilog or vhdl. Global
variables need different mental model. My experience when I switched.

------
god_bless_texas
Thank you much so far, I installed Django and am trying that with bootstrap to
see how far I can go.

------
snake117
If you are feeling a bit adventurous and open-minded as you begin this
venture, I would highly suggest looking into Elixir and Phoenix, especially
since you are asking for "...best bang for the buck".

In fact, the 1.8.0 release for Elixir was just announced earlier today here:
[https://elixir-
lang.org/blog/2019/01/14/elixir-v1-8-0-releas...](https://elixir-
lang.org/blog/2019/01/14/elixir-v1-8-0-released/)
([https://news.ycombinator.com/item?id=18903602](https://news.ycombinator.com/item?id=18903602))

What makes Phoenix great is that, not only is it blazing fast, but the
framework serves as more of a web interface to your application as oppose to
"taking over" your application, like with other major frameworks. Moreover,
you get the full power of Erlang and OTP as well. I will have to say that some
things are a little rough still, like deploying your application. This process
is not as smooth as what you would experience with a Rails or Django app, but
it will definitely get better over time. One of the features of Phoenix that
is also really exciting is LiveView. If you have some time, definitely check
out Chris McCord's 2018 keynote:
[https://www.youtube.com/watch?v=Z2DU0qLfPIY](https://www.youtube.com/watch?v=Z2DU0qLfPIY)

There are a lot of great books and resources to explore. I listed a few below:

[https://elixirforum.com/](https://elixirforum.com/)

[https://elixircasts.io/](https://elixircasts.io/)

[https://www.manning.com/books/elixir-in-action-second-
editio...](https://www.manning.com/books/elixir-in-action-second-edition)
(just released)

[https://pragprog.com/titles/category/elixir?f[sort_by]=pubda...](https://pragprog.com/titles/category/elixir?f\[sort_by\]=pubdate&f\[category\]=elixir&f\[skill_level\]=All&f\[title_contains\]=)

[https://www.manning.com/books/phoenix-in-
action](https://www.manning.com/books/phoenix-in-action)

With regards to Python, I cannot give too much recommendation as I have
experience in Ruby/Rails and Elixir/Phoenix primarily. However, if you really
want to begin building, stick with Python, since you already have experience
with that language, and look into a popular framework, like Django or Flask.

~~~
newen
I created my first dynamic website using Phoenix, coming from a data mining
background. I knew about HTML and CSS but that was it. I followed one of the
Phoenix books, and managed to make a full blog website in a couple of weeks in
my spare time. Though Phoenix tutorials and books in general tend to assume
that you know how to use Javascript, and so I never really picked up how to
make a proper Javascript-based website with React (or whatever) except for
copy-pasting relevant stuff. Anyway, overall pleasant and easy experience
since Elixir is very logical and straightforward.

