

What is your current stack? - lambdathoughts

I am looking for what to pick up next, and would like to see what you are currently using for your web framework&#x2F;language.
======
dqdo
I worked at 2 start-ups so here are the technology stacks:

The first company was started 3 years ago and our technology included: (1)
Python-Flask (2) Postgresql (3) SQL Alchemy (4) JQuery for web (5) Objective C
for IOS (6) Bootstrap

In my second company we wanted to take advantage of the growing ecosystem
around Node. We also did not want to have to manage a DB, migrations, and
server scripts. Our rationale is that we should focus more on the customer and
turning the customer requirements into the product than on the technology
working. We are an enterprise software company and so the less complicated the
technology the better since we are not doing anything ground breaking from a
technology standpoint. Our stack includes: (1) NodeJS/Express (2) Heroku (3)
Angular JS (I don't get all the negative comments about Angular lately because
it works fine for us) (4) Lodash (Javascript utilities) (5) S3 - static file
storage (images and files) (6) Jquery (7) Bootstrap (8) Firebase (9) Angular
Fire (to connect firebase with angular)

Using our current backend, we were able to build the SAAS product in about 1
month with only myself as a developer instead of 2-4 months that might be
required if we had used the previous technology stack. Firebase, Angular, and
the Node ecosystem really helped make the coding much faster than before.

~~~
dqdo
In my opinion, web technology has become so advanced that the technology for
the most part should not matter as much. Unless you are doing something on the
scale of Facebook or Google, your technology usually does not matter. Just
choose the stack that you are most productive with. And some are more
productive than others.

When choosing a technology stack I look to Southwest Airlines for inspiration.
I might sound strange but more people should embrace the Southwest model. As
an airline, they only have 1 type of plane and tries to keep things as simple
as possible. So instead of building some of your products in Ruby, other parts
in Python, and another part in Erlang; it is better to just stick with one or
two core technology. The rationale behind this is to reduce context switching,
reduce errors and bugs that occurs at the crack of technology systems, make it
easy to train and onboard other people to your project, and make it easier for
yourself to maintain it over the long run. My rule of thumb is that software
is maintained and read more often than it is written so now I tend to take
much longer to write software because I have to think about how people would
read it. For every 2 days of coding, I spend about 1 day of refractoring and I
do this religiously to keep the technical debt low.

~~~
akbar501
I have recently been going the other direction from the "Southwest model".

It's on a case by case basis, but if it takes less time to learn and use a
technology that is purpose built then I'll invest the time to learn / use
something new. I find for some situations it's less time and effort to use the
right tool for the job vs. trying to make one tool do everything.

~~~
dqdo
So I by no means am talking about following the Southwest model religiously.
There is always a tradeoff between over using a tool and having too many
different tools in place. Ultimately you have to choose the right tool for the
job. But more often than not, people tend to choose the trendy tools because
they sound cool. Leave the experimentation to side projects where there is
less risk involved and the codebase does not need to be maintained for years.

My general philosophy about software development is to keep things as clean
and simple as possible -- and no simpler because then you wouldn't be solving
the problem in the first place. So I am not suggestion that you over use (for
example Jquery) to do everything in the web. What I am suggesting is to think
about building software the same way that we build houses. You want to choose
carefully the tools that will stand the test of time and not just the fad
language or tools. For this I usually check out the community behind the
software.

When I architect a software solution one of the parameters that I think about
is how long will it take to get someone totally new to my technology stack up
and running (and hopefully productive). Most people don't think about this
deliberately and so a project might have legacy code that takes months for a
new person to come to grip with. Imagine trying to recruit for this type of
role. My general rule of thumb is to have the choice of tools/modules as
standard as possible and aim for a 2 week preparation period for anyone to get
acquainted with the code. For this reason when I use ExpressJS I stick with
EJS rather than Jade. I still use CSS rather than Less or Sass (these are my
personal opinion).

I also take this philosophy a step further by creating certain software
patterns and try as many of the well tested patterns as possible. Thing brings
consistency to the codebase.

------
brickcap
I am using openresty,couchdb and jquery.

Openresty because it so much fun :) It uses lua which is a very pleasant
language to work with (I love the idea of multiple return values from
functions) and it built on top of nginx which is a big win for me since I
always use nginx in front of my app server.

With openresty I can use nginx both as an app server and as a proxy. I think
that if anyone is already using nginx they should look into openresty because
it opens up so many possibilities.

couchdb because of it's ease of use. It has a simple http api that works well
with openresty's `location.capture/capture_multi` capabilities. It has a
server side javascript environment which can be used to validate data/render
templates etc,the common js module system is very capable. It also gives me an
excuse to have erlang in my stack, ready just in case.

jquery because it is reliable. The other javascript framework that I like is
knockout js but I use it only when I need to have a complex client side logic
and knockout js works well with jquery.

------
bikamonki
If I do my own REST back-end: node/express or good old php. If I go no-
backend: parse.com or firebase.com (different use cases). Front-end:
BackboneJS and the usual mix (CSS, HTML5, Bootstrap, Jquery, etc) and I am
looking into adding ReactJS to the stack.

Increasingly I am using more free/paid SAAS for services like file uploads,
emails, storage, monitoring, etc. Not sure if we can call this approach a
"stack" but surely it is becoming very relevant and it solves most requests I
get. I guess it is also interesting to rapidly hack an MVP with such tools and
if the thing picks up (traffic/user base) you can scale the services (pay
more) or start programming them yourself, if the think flunks time/money was
not wasted. It is also a big plus that these services play super nice with
mobile native and mobile web, SDKs are always available. Maybe I am a wishful
thinking hipster but somehow I feel this is the trend to follow.

~~~
smt88
> Increasingly I am using more free/paid SAAS for services like file uploads,
> emails, storage, monitoring, etc.

Yes! I forgot to mention this in my answer.

For prototyping, Parse is great. I recently built something in an hour that
would've taken me a day in the past.

When I get past the prototype, RDS, S3, and Dploy.io are also huge time-
savers.

~~~
bikamonki
I surely will check out dploy.io, I was uploading static sites to AWS S3
through the AWS Console :(

~~~
smt88
There are actually a lot of solutions (cloud-based, as well as local/terminal-
based) for this. I can't say that Dploy.io is the best, because I haven't used
many others. I will say that it's "good enough" for me -- provides web hooks
and allows rollback.

------
pairing
Languages: Ruby / Clojure / JS

Frameworks: Rails / AngularJS / Cordova

DB: Postgres / Redis / Elasticsearch / Memcached / DynamoDB

Messaging: SQS

Plan on learning in the next few months:

More Clojure

Machine Learning

ReactJS (Hopefully a replacement for AngularJS / Cordova from above)

I've been picking things to learn based on reading programming books and
observing trends. 7 concurrency models in 7 weeks, 7 languages in 7 weeks, and
7 databases in 7 weeks are all good places to start for finding something new
to learn. As you can tell, I'm a big fan of the series as an introduction to a
topic that can then be explored in more depth after reading.

------
smt88
Depending on the frontend, I use either PHP or Node. Python is a better
language and more enjoyable to code in, but I often pass my projects on to
junior devs to maintain. It's a lot harder to find someone to take over a
Python project than a PHP or JavaScript one. All the good Python devs seem to
be gobbled up by larger companies.

I'm getting into Go now, but I'm hopeful Rust will become the language of the
future. I'm desperate for a great type system in a web framework. Elixir is
cool, but I don't think I could find anyone to work on it for me.

~~~
rubiquity
> _Elixir is cool, but I don 't think I could find anyone to work on it for
> me._

You would be surprised! The Elixir community is growing quite fast. Come hang
out on IRC in #elixir-lang on freenode sometime. Elixir also has the added
bonus of the entire community more or less accepting Phoenix as the "go to"
Web framework so Elixir doesn't have nearly the amount of web framework
fragmentation of Go or Node.

------
EnderMB
Languages: C# / JS Frameworks: .NET / AngularJS / jQuery Database: SQL Server
or SQLite if needed for a tiny system Tools: TeamCity / Octopus

Nothing too fancy on my end. I build standard CMS based websites at my day job
using ASP.NET MVC. At home, I occasionally work with Django, but with all the
news about .NET support across Linux I've put Python down and have been toying
with writing C# on my Ubuntu box.

------
iEchoic
My current stack:

\- Server: Node & express

\- DB: Mongo (using mongoose)

\- Frontend: Knockout.js using components (introduced in 3.2), Cordova when
developing mobile.

\- Hosting (db, services): Azure

Pretty standard with the exception of Knockout.js, which I think is criminally
underrated following the introduction of components in 3.2, especially given
all the recent hype around component/module based separation of concerns. Also
Azure, mostly because I get $150 free monthly from MSDN.

~~~
itsbits
knockoutjs is something i loved to code. Althgh its long time now when I had a
look. Does that still fire all bindings together?

~~~
iEchoic
If it's been a long time, you should definitely take a look again at
components, which really feel like the thing knockout has always been missing.

All bindings are still fired upon applyBindings, but I haven't encountered
issues here - it's still once on page load, and I can't imagine that it's much
different than building the DOM initially using handlebars or react.

~~~
itsbits
I would surely make time for KnockoutJS. But currently I have been following
flux which is quite easy to implement althgh I am still not sure how it works
with routing, 3rd party libs like some charts etc.

------
playing_colours
At work it is Scala with Spray, that is becoming now Akka Http. In Spray you
have to write your our implementation / helpers for many things as Spray is
quite minimal. Scala gives your type-safety, but sometimes it feels like too
much typing (say, for prototype app). So for hobby projects I started to look
at Clojure / Luminous and Elixir / Phoenix.

------
losingthefight
I have joined a few startups and architected a few as well. I currently love
one of the following two stacks, depending on the need:

GoLang -> Postgres -> React Meteor -> MongoDB -> Blaze

Of course, most of those are interchangeable. We use Redis for caching,
Docker/Ansible for deploy, etc.

------
damian2000
Golang + Gorilla, running the built in Golang net/http web server on a Linode
VPS. Frontend is just HTML/JS/CSS with assorted JS libraries like jQuery and
Bootstrap. I use this for several side projects.

------
haidrali
My current development stack:

( During my day job ) Front-End: AngularJS BackEnd: ROR Database: Postgress

( For my side projects ) Android Development ROR Redis/Postgress/freebase and
lots of reading about Material Design

------
cweagans
Plain ol' LAMP stack here (with some extra goodies thrown in - memcache,
varnish, redis). You should use what you're most productive with, not the new,
shiny thing of the day.

------
evo_9
Meteor. It's a fun, fast and modern web framework that uses javascript on both
the server and client so it's easy to pick up if you already have web skills.

~~~
ledzep2
I've tried Meteor with a side project. I did manage to develop fast and the
initial performance is ok. However I found the Meteor server runs slower n
slower. I'm not sure why. I just assume it might have some traps or catches
that I don't thoroughly understand.

------
solomatov
Java - server side / GWT - client side.

~~~
lfx
Interesting. We used to use GWT for several projects, but ditched for new ones
to simple Java backend and AngularJS. Now when I had to fix some bugs, etc it
feels so unpleasant to work and kinda slow (for dev). Project still uses old
GWT 2.5 since transition to new version & 3th party component replacement
would cost too much.

Do you use modern super dev mode and latest GWT version? How this turned out?
Are there 3th party plugins repository?

~~~
solomatov
> Interesting. We used to use GWT for several projects, but ditched for new
> ones to simple Java backend and AngularJS.

We would love to use lighter-weight technology but project currently is about
300kloc and we share code on the client and the server. It's just not the size
of application which JS is good for.

> Do you use modern super dev mode and latest GWT version? How this turned
> out? Are there 3th party plugins repository?

These are great. In 2.7 you can just refresh page and incremental compilation
will do the job. It's almost like writing code in JS.

------
JackMorgan
Angular, C#, Oracle, SQLServer is the legacy system. Angular, Clojure, CouchDB
is the new one.

------
anderspetersson
Python / Django / Postgres / jQuery

Currently trying to learn iOS development with Swift.

------
dllthomas
The most recent web work I've done was Haskell/Yesod.

~~~
solomatov
Is it commercial project or hobby project?

~~~
dllthomas
Non-profit. snowdrift.coop

------
akbarnama
Python, Django, Postgres, Jquery

------
guiye
spring boot + mybatis in backend, ZK in frontend, it's for an company ERP
extension app

