Ask HN: What else besides writing code or managing people? - <AUTHOR> Hey HN, long time lurker, hoping this awesome community can help me (and others like me) figure out the next step in my (thier) career(s).
I spent 2006-2012 on three self funded ventures that didn't come to fruition, which left me tapped for spending ability, several maxed credit cards, and a job in Seattle thats not advancing me career-wise.
I am starting to feel a slip in my creativity, which I think is attributed to some drop in self confidence / depression / anxiety that's been creeping up.
I'm in love with business strategy, project ideas / planning, budgeting, and architecting.  I love prototyping, but that leaves me with a gap in mastery of any specific technology.
I'm starting to panic that I'm running out of time to "get my shit together."
I have a potential opportunity to work with an incubator vetting applicant's technology.  I'd take that job in a heartbeat, but they are not running yet (probably 1yr+ away)
I would love to take my experience in business, engineering, and product / project management, and find a position where I am helping a growing company with a full pipeline of projects get focused and prioritized.
I'm concerned that as I get older it's harder to find an engineering job.  I get bored where it's building and fixing things all day.  Management-wise I struggle with giving critical feedback to people as their "boss".
My uncle used to be a manufacturing / process consultant.  He had a constant flow of new challenges and companies to work with. This sounds highly interesting to me when applied to tech, but I have no idea where to start.
So, I'm interested to see the discussion about what those of us who are life long hackers (with a ton of varied experiences) can do besides keep writing code or moving into people management.  And some advice on how to start down such a path.
Thoughts? <comment><USER4> > I'm starting to panic that I'm running out of time to "get my shit > together."

There is no time limit on getting your shit together. Seriously.

 _Please_ don't buy into the valley hype of everybody-is-a-success-in-their- twenties. It's bullshit.

> So, I'm interested to see the discussion about what those of us who are life > long hackers (with a ton of varied experiences) can do besides keep writing > code or moving into people management.

Considering what you said about liking prototyping, product strategy, etc. you might want to consider looking at adding some UX-ish skills to your skill set. There's a lot of overlap in goal, if not necessarily technique, and from my perspective it's even harder to find good UX folk than it is good developers at the moment.

Also - pretty much any consulting or team lead job is - at some level - <USER2> management. Don't mix up people management skills with organisational hierarchy or "being the boss" or telling people what to do.

I'd imagine that if you go chat to your uncle about his consulting work he'll tell you that large chunks of it aren't figuring out what to do - but working with people to make sure that it gets done. Management is all about helping groups of people do stuff effectively together. It's hard to think of jobs that don't involve people management of one sort or the other.

<comment><USER5> _Please don 't buy into the valley hype of everybody-is-a-success-in-their- twenties. It's bullshit._

VCs and in-crowd founders, not engineers, created that age discrimination culture. It's a way for the people who have made it already to put phony time pressure on the people coming up the ladder. The only way to get a highly talented person to throw 100 hours per week behind someone else's shitty idea is to convince him that he'll be yesterday's dogshit by age 40. When people are scared, they're less likely to challenge authority.

Back when the Valley was about technology (imagine that!) an age discrimination culture was untenable, just because ours is a field where it takes so long to get half-decent at it. Now that the marketing people and MBAs rule it and actual smart people are second-class citizens, age discrimination is much more prevalent.

<comment><USER4> _" VCs and in-crowd founders, not engineers, created that age discrimination culture"_

Just not true in my experience. I spend most of my time outside the valley/VC world. Seems to be common among twenty-something dev types everywhere. I've not noticed any change for the worse over the last twenty years (although now I'm in my forties I'm seeing more of the disadvantages of ageism ;-)

</comment></comment></comment><comment><USER6> The most important thing you can do is relax.

Sure, life is pretty grim in the sense that you can't do whatever you want unless you're rich. On the other hand, your life as a coder is far, far higher quality than e.g. a construction worker's or (regrettably) a teacher's.

One thing you could do is try to grow a source of passive income. See patio11 for insights on achieving this.

Also, three failures isn't anything to worry about or lose confidence over. Just remember how many times Jobs failed. Most of the successful people on here have a similar background of failures. The path to success is usually through failure, as paradoxical as that sounds. Sometimes you'll just be unlucky multiple times in a row. That's just life. But that's also a reason to keep your spirits high, because it's far less likely you'll fail ten times in a row. So, keep trying.

<comment><USER7> > because it's far less likely you'll fail ten times in a row. So, keep trying

Stated like that, that sounds like an example of a Monte Carlo fallacy. Sometimes "just keep trying" is not sound advice but wishful thinking.

<comment><USER6> The Monte Carlo fallacy is believing that if something happens more frequently than normal during some period, then it will happen less frequently in the future. This isn't an instance of that.

If the goal was to flip tails in a coin toss, and I said "Keep flipping! You're bound to get tails within ten flips," then there's only a 1 out of 1024 chance that I'd be mistaken.

Success isn't as simple as a coin toss, but sometimes the best strategy is to try all possibilities as quickly as possible. This was how Carmack succeeded, for example.

There is no alternative but to try; best get used to the idea of trying many times before succeeding.

<comment><USER8> Added to which we assume the OP is _learning_ \- improving his coin flipping ability - such as putting the heads on top before flipping anyway.

Other advice would be to put your failures up here and accept some (pretty painful) critques. Then OP could learn faster ...

</comment></comment></comment></comment><comment><USER9> You ask "what else besides writing code or managing people" and mention prototyping & creativity: have you considered moving into product design/UX or product management?

After working as a developer for a few years, I got a bit disillusioned with "building and fixing things all day" as you say. I now work as a User Experience architect and am still involved with building and fixing things, but in a very different way. I still write code, but mostly to prototype ideas and collaborate with developers.

A broad understanding of various technologies and lack of specialisation/investment in particular frameworks is a plus, as you can understand what's required, without getting bogged down in details. You can take a leading role, without having to be anyone's boss.

Not sure if this sounds attractive to you, but it works for me :)

<comment><USER10> Product management could be a great fit for the OP. However, PM means a lot of different things. Even within one company, day-to-day experiences of PMs can vary a lot depending on the nature of their product or product-area. Some PMs have very broad exposure to the company when bringing a product or feature to market. Other PMs are more marketing and sales leading, while still others focus on learning/developing requirements and writing specs.

My advice to the OP is to set titles aside for a moment and focus on what it is they like doing and where they want their career to go, then work from there to find a position that suits. It might be called product management, product marketing, or it might even be called lead architect or CTO.

The one piece of advice I'd give, though, is that for such broad ranging interests, I think one will need to relax and give up a modicum of direct control, particularly for larger more complex projects. What is it they say about product management? All of the responsibility and none of the authority? Or, more prescriptively, lead by influence.

</comment></comment><comment><USER8> I am old enough that there was only one way to go once you hit "team leader" and wanted to earn more -> "management".

About 3 years ago I said stuff it, took a pay cut and spent a long and happy time just coding all day. It seems however that no matter which way I turn people will not let me sit in a box and type, I have to help straighten out teams, talk to humans, navigate politics.

We use _coding_ as if it was a real job - it is no more a job than _writing_ or _literacy_. A few privileged, talented people will be paid for their writing skills. the rest will _use coding in the same way as literacy, as part of their job_

1\. You won't ever escape "people management", but that's not a bad thing. People (especially highly skilled professionals) are like autonomous self- guided missiles, you just need to know how to guide them, and let them be guided by you.

Start with Google's 8 rules [http://www.davidzinger.com/8-google-rules- improving-manageme...](http://www.davidzinger.com/8-google-rules-improving- management-and-employee-engagement-10955/)

Remember - you will _not_ be making the tough decisions - your team / people will. You just get to guide _which_ tough decisions get looked at.

2\. Having a "constant flow of new challenges" is all about building and filling a sales pipeline. This is pretty brutal work. There is nothing other than knuckling down, calling people, building audiences, sales sales sales. To me this is the biggest cost of being in business for myself - and I am a long way from having got it right.

So the advice I have and am trying to live by is

* build an audience on a subject you are good at

* build a product related to what you are good at

* keep going

</comment><comment><USER11> Lots of good options here but let me add one more: maybe you're completely fine and don't need to make any kind of career change.

I and many developers I know have been through a phase like you describe. This is especially true in tech, where most projects fail, and for people with wide interests like yourself. Some people would be happy writing nice code and leave it at that. But you're going to be bummed if the design is ugly, the marketing plan doesn't work, or if any of a dozen other things outside your control goes wrong. You are upset, anxious, and fearful. You attribute your feelings to objective things around you like business failures, etc. and guess that a new line of work might solve those feelings.

Let me suggest that maybe they won't. Those feelings are telling you something, but you can't trust your guesses about what will solve them, and you especially should not make large, life-changing decisions because of half- understood feelings of anxiety and depression.

Instead, try to engage with and resolve those feelings in smaller ways. Pick something small you will decide to do really well and just thoroughly engage in it. Make some new friends. Maybe go talk to a therapist or religious figure.

What I found out of this process was that I had made several career moves, some bad choices in my personal life, and a lot of stress by setting myself impossible goals and ignoring some longstanding things I disliked about myself. In the process, I learned that I wasn't really paying attention to the world around me and especially to close friends and family. After some reading, low-pressure work, and therapy, I understand my own feelings much better, and I derive much more satisfaction from my life outside work.

Of course, by no longer putting on my job the stress to define me and my value as a person, I get to approach it much more freely and joyfully. It ain't perfect, and it doesn't always work, but on a good day I can deal with setbacks and annoyances without them damaging my emotional state.

A therapist would call this cognitive therapy focused on mindfulness. Various religions would call it spiritual direction aimed at contemplation or present focus. There does appear to be actual evidence of its value, though I'm only qualified to say it works anecdotally. Good stuff.

Anyone who is interested, feel free to ask questions here or email me at username at gmail.

</comment><comment><USER12> > Management-wise I struggle with giving critical feedback to people as their > "boss".

Don't be a boss. Ask for "Lead [...]" in your job title, and get your colleagues to do what you tell them because of technical seniority, not hierarchical seniority.

As for your path: convince your company to let you develop a product with an Open Source license. Tell them it will provide them with free advertising, increase their notoriety in the industry, and mean they'll get other companies to work on their project for free.

Contact other companies and promote your project, this is simply a trojan horse for building a great contact list. This then leaves you free to move on to freelance down the road by charging for features, but fixes and support. It also allows you to find work really easily.

</comment><comment><USER13> > I'm in love with business strategy, project ideas / planning, budgeting, and > architecting.

So... do that?

If you tried 3 self-funded ventures you should know there's _tons_ to do outside of coding. Maybe not when there's zero traction and just one person on the team, but as soon as there's more than that, there's plenty to do that's not coding. Managing systems, managing customers, managing finances, marketing, general office 'stuff'. And hell, no coder spends _all_ their time actually coding.

One of my friends is just re-learning coding after being in startups for seven years simply because he was so busy doing all that other stuff for the startups he worked for.

Arguably, managing/dealing with people - not necessarily as their boss - <USER3> always going to be part of _life_ , not to mention any business venture, so I'd say there's no getting away from that.

</comment><comment><USER14> Write. I don't mean the standard documentation kind of stuff, but "XYZ For Hackers" articles and books. There's a serious lack of people doing that, because it requires both technical chops to understand the material plus a large time and skill-development commitment to do the actual writing. In an ideal world, you'd have the opportunity to do some serious tinkering with a couple of brand-new technologies a year, then be the first to write for a very hungry audience, then you'd move on. Combine that with some speaking and more speculative commentary, and it could even get pretty lucrative.

</comment><comment><USER15> I've been in the same situation - now you are not in your best mental shape, so help can be obtained from a psychoanalyst or psychiatrist.

After 6 months on antidepressants I was again in top-notch condition and the effect continued after I stopped the medication.

To fight the boredom and anxiety you can use some medicine, widely used in the college, but I don't remember its name. A colleague of mine was using it responsibly and he was extremely productive and was more calm when communicating with our manager.

Good luck, man.

<comment><USER16> Valium. One of the commercial names of Diazepam. That's probably it.

</comment></comment><comment><USER17> It sounds like you like process and management, but doesn't have that authoritative leader streak. It sounds like you are technically capable, but you feel that you've missed the boat to be a top coder or engineer. It still sounds like you can be very useful, especially with your experience. Perhaps look at the new developments in the project or process management space and ride with it, or keep prototyping to try new business ideas on the side.

</comment><comment><USER18> I was at a struggling startup and was going through some of the same issues. I decided to take a one year contract as a dev on a low stress project to give myself time to figure out what I wanted to do next without having to burn through savings. With a 9-5 schedule I'm doing some more traveling, relaxing, going to meetups, and doing some consulting projects. I also learned that I don't like working at a huge institution where no one is invested in the project. It helped me reinforce my passion for startups. You seem like you have some hard skills. You just seem depressed that you didn't succeed in the last few ventures. You've got to do it for the love of the game, not for the love or money/power/fame/whatever.

</comment><comment><USER19> Sales might not be so bad for the right product---especially when you consider the "superpowers" you have relative to the average salesman. Who writes their own crawler to find potential clients? You can.

</comment><comment><USER20> Is your requirements list compatible with classical "systems analyst" role, or if not, the details why would probably help narrow the field. Ditto "product manager" role.

Also you need to evaluate yourself by your own metrics. In the grand scheme of things over human history having a "career" and "advancement" is unusual, apparently temporary, and is going away, back to the way it was. Being born into a declining economic era is not a personal failure worth feeling stressfully responsible about. Work to live vs live to work and all that.

</comment><comment><USER21> Become an expert in efficiency. Company processes are what separate great companies from good ones. The ability of having processes down, and duplicating those for scalability without foregoing quality. If you make yourself an expert on being able to see holes in efficiencies, then you create a lot of value for yourself.

This is just what I found when working, it would be the first thing people notice and reward, in companies.

</comment><comment><USER22> 1 possible route is to gather domain knowledge and move into the core business.

A common career path in finance for instance is start out as a developer, pick up the business side and later move to a function closer to the market (risk analyst, quant, structuring etc). Must be similar avenues for other domains. You need to be on top of the domain subject@hand anyway to be a good dev in my opinion...

</comment><comment><USER23> You could argue that the mapping of manufacturing and processes into the technology world is ERP systems. If you find that kind of world interesting and also like software then you could do worse to look into that area - certainly there is no lack of work in that area and there a lot of technical issues around integration and a _lot_ of opportunities for 3rd party products.

</comment><comment><USER24> It sounds like you need to look at your situation with a detached perspective - when you are in the middle of something it is hard to know what to do.

My thought is you need to do something totally different for 6 to 12 months. It really does not matter what you do, but jobs that involves hard physical labor help separate what is important from what is not.

</comment><comment> zupa-hu If you haven't red the book The Lean Startup by Eric Ries, run, don't walk to get it. He was basically writing the book to you.

[http://www.amazon.com/The-Lean-Startup-Entrepreneurs- Continu...](http://www.amazon.com/The-Lean-Startup-Entrepreneurs- Continuous/dp/0307887898)

</comment><comment><USER25> This might sound like a focus issue? Three startups in six years?

Are you able to focus on only one thing and for more than 5 years? Almost nothing extraordinary can happen before 5 years. Even if you sell before.

Example: I am 99% sure I can make millions of dollars if I go on my yard and start making a hole in the floor. Although, here are the constraints: \- working 18 hours a day. \- every day and 7 days a week. No vacation.

Are you able to accept the constraints?

This come back to this: passion never fails.

I wish you the best luck on your next thing.

<comment><USER26> "passion never fails"... you are being incredibly optimistic and have heard way too many success stories i think. There's a massive amount of passionate people working incredibly hard for many years straight who haven't achieved even medium amount of success.

<comment><USER25> Do you know anyone who followed the 3 constraints and failed? I don't know any.

I just googled "startup persistence" and look what comes out in point 5 and 6: [http://www.paulgraham.com/really.html](http://www.paulgraham.com/really.html)

<comment><USER27> This kind of hyperbole only serves to reinforce the OCD some people in tech have about "working" long hours. What you described in your OP is lunacy, which will cause mental illness in many people. It is also fallacious, since it will be nearly impossible to find a statistically significant sample of people who have actually done this.

<comment><USER25> I'm an engineer, so I'm giving out the only thing I learned by observation.

As an engineer, my observation and pattern matching skills are pretty good, so I am only describing what I observed by analysing "successful" entrepreneurs. I'm probably different, because I arrived to the Bay Area only five years ago. It may not be clear to you if you always lived and worked here.

In any case, depends how you define success? The author of the thread is also an engineer that codes, so I am guessing his definition of "come to fruition" would be an exit where he can cash-in more than $10mm.

What's the aggregate number of engineers who made a satisfactory exit? Is it "statistically significant" to you?

I did that formula for the past year and was very lucky that it worked before 5 years. Although, I was planning to "exit" in 10 years.

<comment><USER28> "Every successful engineer I've observed wears socks. Thus, wearing socks is the cause of their success; if you wear socks you will be successful".

I hope the logical fallacies are clear when expressed like that. 1) sample size is too small to draw conclusions from. 2) correlation is not causation. 3) even if something is a factor in success it does not follow that it will determine success (necessary but not sufficient).

Besides, where did the OP express an interest in cashing out? S/he wants a job that is interesting to them.

</comment></comment></comment></comment></comment></comment><comment><USER29> Public scientific research?

</comment><comment><USER30> To echo those who came before, consider the following:

\- Technical Marketing

\- Product Design

\- Product Management

\- UX</comment>


A Mercedes self-typing AI typewriter - <AUTHOR> https://www.slashgear.com/mercedes-self-typing-ai-typewriter-harry-potter-magic-14467500/ <comment><USER2> That is seriously cool! I would love to see the inner workings of that thing a bit more. Reminds me of the typewriters in the tv show Fringe.</comment>


Pytest-voluptuous – a pytest plugin for asserting data against python schema - <AUTHOR> https://github.com/F-Secure/pytest-voluptuous <comment><AUTHOR> So in short, rather than doing something like:

        assert 'info' in r
        assert 'package_url' in r['info']
        assert len(r['info']['package_url']) >= 10

This plugin allows you to rather:

        assert S({
            'info': {
                'package_url': Length(min=10)
            }
        }) == r

It bolts on into pytest and provides a sensible error message in case validation fails. See README at [https://github.com/F-Secure/pytest- voluptuous](https://github.com/F-Secure/pytest-voluptuous) for docs.

Background: There's not much code in it, but this is what I've been using to validate the responses of my flask application for a while now (as commit history will tell). It's simple and useful, as you can focus on just the interesting bits, and abstract away the nitty gritty details that might step into way. It also allows to keep the syntax concise, and reduces amount of boilerplate you'd have to write otherwise.</comment>


Nicolas Bourbaki: The Greatest Mathematician That Never Existed - <AUTHOR> https://en.wikipedia.org/wiki/Nicolas_Bourbaki <comment><USER2> Feast your minds on this guy [https://en.m.wikipedia.org/wiki/Aryabhata](https://en.m.wikipedia.org/wiki/Aryabhata)

Notable ideas around 400CE: Explanation of lunar eclipse and solar eclipse, rotation of Earth on its axis, reflection of light by moon, sinusoidal functions, solution of single variable quadratic equation, value of π correct to 4 decimal places, diameter of Earth, calculation of the length of sidereal year Influenced

</comment><comment><USER3> What's really frustrating is that Bourbaki's way of approaching set theory and abstract algebra remains canon today. As a result, even though category theory and modern mathematical logic are nearing their first centennials, folks are still very hostile towards any reorganization of fundamental objects which doesn't place sets on the bottom as the bedrock.

</comment><comment><USER4> What makes a mathematician great is discovering new theorems or fields of mathematics, e.g. Galois inventing group theory.

All Bourbaki did was formalize, not break new ground.

<comment><USER5> That is a trivialization of what was at the time a great leap forward. War had shattered the old schools which had promoted the idea that each application had special methods and formulae which were fundamentally different from and incompatible with each other. The idea that people from radically different fields were all making similar use of the same concepts and could instead make use of the same robustly generalized concepts and formulae was so radical that it was necessary to hide behind a psuedonym because so many professionals felt their careers were put at risk by these meddlesome mathematicians. Nicholas Bourbaki took the mathematics of the time from something resembling magic incantations into the modern world of reasoning from base principles.</comment></comment>


Ask HN: Which site is the best source for world news? - <AUTHOR> Is there something like HN but for world events? <comment><USER2> Not really HN style, but you can try Cnn [1], Bbc[2] or Guardian International[3], alternatively Dilber [4]

[1] [http://edition.cnn.com/](http://edition.cnn.com/) [2] [https://www.bbc.co.uk/](https://www.bbc.co.uk/) [3] [https://www.theguardian.com/international](https://www.theguardian.com/international) [4] [http://blog.dilbert.com/](http://blog.dilbert.com/)

</comment><comment> happy-go-lucky [https://www.reddit.com/r/news/](https://www.reddit.com/r/news/)

</comment><comment><USER3> [http://spidr.today/](http://spidr.today/) Is a great News aggregator</comment>


Professors seek information on students using online services for assignments - <AUTHOR> https://www.cavalierdaily.com/article/2020/09/professors-seek-information-on-students-using-online-services-for-assignments <comment><USER2> Inevitable, I guess. Timed tests are mostly useless.</comment>


Things get worse for Vonage - <AUTHOR> http://gigaom.com/2007/05/10/vonage-1q-2007/ <comment><USER2> I guess I should get ready to use somebody else. I've been with Vonage for a number of years now--happy customer.</comment>


Facebook Messenger lets you write basic mathematical formulae in LaTex - <AUTHOR> https://thenextweb.com/evergreen/2017/09/27/facebook-messenger-lets-you-write-basic-mathematical-formulae-in-latex/ <comment><USER2> Neat. That's probably pretty easy to implement using things like MathJax [1]. I put math in my webpages all the time and it's just pure LaTeX equations.

[1] [https://www.mathjax.org/](https://www.mathjax.org/)

<comment><USER3> They actually use KaTeX [1], which is much faster than MathJax, supports server-side rendering, but supports a smaller subset of LaTeX than MathJax.

[1] [https://khan.github.io/KaTeX/](https://khan.github.io/KaTeX/)</comment></comment>


Amazon Web Services (AWS) Everything Will Fail - <AUTHOR> http://www.mnxsolutions.com/amazon/designing-for-failure-with-amazon-web-services.html

<comment><USER2> Quite a list of affected companies... <http://ec2disabled.com/></comment>


Ask HN: What stack would you use to build a CRUD web app in 2018? - <AUTHOR> <comment><USER2> I work with startups, so I make this decision every 2-3 weeks or so.

Language: Python. Python is easy to learn for those that don't know it, and all-around liked. It's not hard to find engineers with existing experience if you need to grow.

Framework: Django. Django does everything you might want in a framework. It scales with larger teams, and the admin is still one of its killer features.

Frontend: SCSS/SASS, and vanilla JS with some jQuery sprinkled in. When (if) the team/product grows, figure out which frontend framework fits best.

Database: PostgreSQL. Well-maintained, reliable, and great documentation.

In-memory cache: Redis.

Infrastructure: AWS. EC2 for hosting, S3 for file uploads and static file storage, CloudFront for content delivery.

Web server: nginx. Let's Encrypt for SSL cert generation.

App server: gunicorn. It works.

There are probably a few other things I'm missing but these are the big ones! All of my clients from years back (a few who now have 20+ people on their engineering teams) are still using this entire stack, so it scales both technically and as the number of team members grow. Happy to answer any questions!

<comment><USER3> I always had a question I wanted to ask an experienced Django dev. After trying this framework for a couple of hobby projects (I'm a client game developer primarily and never worked on "serious" web project), I kinda got the impression that it's architecture is created for two main user roles: admins who create most of the content and have marvelous admin forms in front of them to input all the data, and users, who mostly consume the content and only occasionally input some data. When I tried to create complex input forms with a lot of complicated, relational data that users would be able to input and modify, it felt so much harder than exposing the data models in the admin panel — it really felt that this wasn't the use case this framework was designed for.

Did I get the right impression, or may be I just didn't learn to use Django correctly?

<comment><USER4> From the Django tutorial:

> Generating admin sites for your staff or clients to add, change, and delete > content is tedious work that doesn't require much creativity. For that > reason, Django entirely automates creation of admin interfaces for models.

> Django was written in a newsroom environment, with a very clear separation > between "content publishers" and the "public" site. Site managers use the > system to add news stories, events, sports scores, etc., and that content is > displayed on the public site. Django solves the problem of creating a > unified interface for site administrators to edit content.

> The admin isn't intended to be used by site visitors. It's for site > managers.

[https://docs.djangoproject.com/en/2.0/intro/tutorial02/](https://docs.djangoproject.com/en/2.0/intro/tutorial02/)

</comment></comment></comment><comment><USER5> Twenty years ago, a simple CRUD app would have been written in Visual Basic or Delphi. It would have needed one programming language, and one framework. The tool support would be good: everything would talk to everything else. Heck, you'd even have an IDE with autocomplete!

Today, a typical web app requires no fewer than five different languages (JS, HTML, CSS, Python/Ruby/whatever on the server, SQL). And that's before you even start on the frameworks:

      - Something to make JS bearable (eg React)
      - Something to make CSS bearable (eg Bootstrap)
      - Possibly another JS framework (eg Redux)
      - A framework to make web serving bearable (eg Flask)
      - Something to make database access easier (eg SQLAlchemy)

      - Did I mention Webpack, Docker, AWS, CI/CD...?

Now, I'm sure we're going to have a big lively thread, debating which technology we should choose for each of these slots (and whether the answer has changed since last week). But the ecosystem which requires so many components, for a simple CRUD app, is _utterly insane_.

We designed Anvil ([https://anvil.works](https://anvil.works)) to be the complete opposite of this. It's a development environment that lets you build and deploy full-stack web apps, from your browser, with nothing but Python. There's a visual designer, client code, server code, and a built-in database. Unsurprisingly, when we did the head-to-head tests, a typical CRUD app is about seven times faster to build with Anvil than with traditional tools. Looking at the list above, are you surprised?

<comment><USER6> You need neither JS nor CSS to build a simple CRUD app. Just use the server technology of your liking and a database. Sure, it will look ugly but so did apps 20 years ago.

The landscape got complicated because now we build beautiful and elaborate things. We have apps that serve hundreds if not thousands of users simultaneously. Modern databases get hammered with requests every single second. What was the average case scenario for a CRUD app 20 years ago? Some godforsaken company that had a couple hundred employees at best and no more than 10 at time were accessing the data. And lets not forget the endless hours we used to spend trying to get reports printed properly. With web apps whatever you see on the screen you get on the paper.

<comment><USER7> > The landscape got complicated because now we build beautiful and elaborate > things

As someone who works at a large company which has TONS of crud web apps, let me just say ...

No.

We don't.

We build ugly disasters, badly, with loads of bugs and unusable interfaces.

And of course, only very rarely are 2 crud apps built using the same stack. We have everything from Oracle WebForms to Ruby on Rails, to AngularJS on NodeJS.

And may I add, the "beautiful" ones are the worst in terms of usability. Can we place take all the frameworks that don't have a very good and built-in data grid and shoot them ?

<comment><USER6> As someone who builds SaaS sites the shit I build now are miles more elegant and functional than the apps I used to build back in the Visual Basic days, or even earlier when I was writing software for DOS. We may bitch and moan all we like but the fact is that the average web app of today is way more usable than the average windows app some twenty years ago.

I won't argue that the situation with web development is ludicrous, we have a bazillion of js frameworks that last no more than two to three years until the next shinny thing pops-up not to mention changes in pretty much every aspect of the stack, from devops to server-side languages and whatnot.

As a testament, take a look at the available dashboard templates in the major template sites. Some of them are so beautiful they make me droll. We never had so gorgeous interfaces in recent history.

Of course as always YMMV.

<comment><USER7> Well, perhaps it's that I used Delphi back in the days, but I have a different experience. Delphi apps the equivalent of tiny webapps were orders of magnitude simpler.

</comment></comment></comment></comment></comment><comment><USER8> Clojure(script) with re-frame, using the luminus template.

[https://github.com/Day8/re-frame](https://github.com/Day8/re-frame) [http://www.luminusweb.net/](http://www.luminusweb.net/)

edit: Should probably say why...

\- Clojure and clojurescript give nearly identical experiences on the front and back end, with the ability to actually share some code between the two.

\- Clojure is dynamic and spec gives some really awesome validation and generative test capabilities

\- There is a lot of fuss around javascript frameworks and dealing with html / css build tools and their arbitrary syntax. Clojure front end frameworks provide tools that make templating html look just like regular data structures in clojure, styles too. With stylefy you can also keep all styles inline while supporting media queries. It really is a low cognitive load setup once you get going. I love it.

[https://github.com/Jarzka/stylefy](https://github.com/Jarzka/stylefy)

edit-2: More whys...

\- re-frame is basically redux but easier and with less boilerplate. I use it for small and large projects.

\- Pure immutable functions are such a game changer. Even poorly written projects with tons of features can be reasoned about and broken down for long term maintenance if the language supports immutability and pure functions. Re- frame really plays to this strength for managing state and I can't say enough good things about it. Been working with it for 2+ years and I can't imagine switching for anything else I've seen out there.

<comment><USER9> How healthy is the Clojure web development ecosystem - especially library availability - compared to Ruby on Rails and Django?

<comment><USER8> I haven't tried to find something and not found it.

The back end is way more mature than front end SPA stuff so I'll just list some things I'm really glad to have in that space

\- re-frame : like redux but better

\- re-learn : lets you create tutorials for application with no changes to dom

\- cljsjs/filesaverjs : cross browser file download dialog

\- cljs-react-material-ui : material ui react library port

\- camel-snake-kebab :useful for changing casing

\- com.rpl/specter : easy way to deal with large nested data structures

\- stylefy : inline styles with support for media queries and animations (all with clojure data structures!)

</comment></comment></comment><comment><USER10> The same as 4 years ago.

Server side rendered templates with Rails or Flask using Postgres + Redis + background worker of choice.

I'm starting to build some apps with Phoenix now, but it's not because I feel the above 2 are poor choices. I just like learning new things, especially when I see big wins of potentially using it. It's another tool in my tool belt, not an all-in replacement of the previous thing.

<comment><USER11> 100% agree - unless you're doing anything especially novel, or know you're getting 10's of millions of connections from day 1, with the ecosystem around it, I wouldn't hesitate choosing Rails + Postgres + Redis + Sidekiq.

<comment><USER12> Even then. Are you going to be bigger than Shopify on day one?

<comment><USER13> Or.. github.. or gitlab..

<comment><USER14> Amazing ... are Shopify, Github and Gitlab using a similar stack at their scale? I feel less bad about not using an exotic stack now.

<comment><USER10> They are all built with Rails.

</comment></comment></comment></comment></comment></comment><comment><USER15> If you're using Postgres and want to get something done today, use PostgREST:

[https://postgrest.com/en/v4.4/](https://postgrest.com/en/v4.4/)

It is the fastest, leanest, and most powerful way to interface to postgres with an API.

I've been using Python for 25 years an can tell you with certainty that Django is a slow, leaky, autocommit-infested, memory hogging pile of crap with a degenerate half-ORM that cannot model even the simplest aggregates.

[https://www.youtube.com/watch?v=GxL9MnWlCwo](https://www.youtube.com/watch?v=GxL9MnWlCwo)

Learn SQL and do it right.

<comment><USER16> This is the exact thing everybody seems to be looking for. Create the DB, get an API out of it, polish it off with a frontend framework.

Why hasn't this taken over the world by storm? What's the catch?

<comment><USER17> The coaching gap: [https://www.youtube.com/watch?v=ecIWPzGEbFc](https://www.youtube.com/watch?v=ecIWPzGEbFc)

People early in their career thinking SQL is something UNIX greybeards did in ancient times, and which is not necessary anymore.

</comment></comment></comment><comment><USER18> Great question. The funny thing is, 6 years ago, if you'd ask the same question (and I'm guess that's what you're coming from) the go-to answer on HN would've been Rails / Django something. Where both will allow you to build a basic crud app in 20 minutes.

Since then, everybody has gone heavily into various javascript stacks, and the norm has become to deal with 20 different packages to build (somewhat) the same thing. And the first hour will easily be spent researching different dependencies, trying to get them all to work how you'd want etc.

It's easy to see this as a horrible backwards progression, but the reality might be a bit nuanced.

The easiest way to get a basic crud app up and running these days is probably still some sort of rails/django stack. But today's requirements in terms of UX / dynamism (is that a word?) require you to end up building things differently, so even if you get up and running fast with a rails app, you'd end up having to build up a pretty hefty JS stack in the end, so you'd basically be delaying the inevitable.

So the answer really depends on what level of "good enough" you're going for.

<comment><USER19> > But today's requirements in terms of UX / dynamism (is that a word?) require > you to end up building things differently, so even if you get up and running > fast with a rails app, you'd end up having to build up a pretty hefty JS > stack in the end, so you'd basically be delaying the inevitable.

I'm starting to wonder to what degree this is actually true.

Most people I know, all along the spectrum of 'computer literacy', complain about the slowness and brokenness of many sites and web apps. On the other hand I've never heard anyone complain about a lack of 'dynamism'.

To be clear, _some_ degree of interactivity is often useful. But I can't help but feel that it's quite often not at all necessary to move things like routing, validation, and (almost) complete page changes to the client side, at least not as long as it increases complexity to such a degree.

<comment><USER20> I came to say something similar, it's easy in tech to see something could be "better" but from the outside most people just want something that works and is easy to use (pretty is bonus).

Secondly I'd argue that if "dynamicism" matters, choosing rails or Django doesn't hinder that ability as a lot of that is simply presentation layer concerns.

</comment></comment></comment><comment><USER21> Start with what you know, don't spend months figuring out a certain database tech for example when MySQL/mariaDB is just as good for 99% of the use cases.

I know there's a lot of bias out there against PHP. But I would still use it over the alternatives, there's a large community. With excellent frameworks who do the heavy lifting for you. (Symfony, Laravel). Great support and tooling, a large recruiting base and easy to pick up.

I personally love using Drupal 8 (which is built with Symfony), it has an excellent database abstraction layer, you can easily swap MySQL out for Postgres for example. There's a lot of functionality built in, and very developer minded (compared to WP) with many extra 3rd party addons. It also has a proven track record with deployments from small SMB to large enterprise users. It can also easily be extended with any Symfony packages.

For front end, I swear by Ember.js it is a framework which makes a lot of important decisions for you. You don't loose time setting up your tooling, deployments, state management, ... A great community, many excellent add-ons. A proven track record (LinkedIn, Twitch, Apple Music, ...) And on top of that, it has been around for 6 years, and is still actively developed with regular releases, with a excellent deprecation support so you can easily upgrade to new versions.

<comment><USER22> "_Start with what you know_" \- amin to that. I also found this is the most important consideration for this decision. I've made the mistake of applying the "_if it fails, at least I used and learnt a new system_" logic, but every time I did that, I still preferred my old stack. So I ended up taking 2x as much time to build, to re-use nothing of the learning (on the development front). I'm now a big believer in the "_build fast, fail fast_" mantra.

My favorite stack: nginx, PostgreSQL/MySQL, PHP 7.1/7.2, Laravel, BackpackForLaravel for admin panels, jQuery/Vue.js

That being said, I'm the creator of BackpackForLaravel. So my productivity is off-the-charts with it, and I'm probably biased towards PHP. I think PHP is underrated, especially in the US & Silicon Valley. It's "cool" to hate on PHP for its past mistakes, and I agreed on many of them, but nowadays, with Laravel... \- it's a joy to work in it (I now like it better than Ruby) \- you get _so much_ done, so fast \- I've been able to easily scale it for millions of users (I've built a social network, a video-on-demand app, an e-learning app - for clients, not myself) \- PHP/Laravel developers are easy to find, all across the world, when you need it \- there's a plethora of good agencies that use it, if you ever want to outsource the entire development team

IMHO, Laravel is here to stay. And with BackpackForLaravel for admin apnels, I hope it'll soon be on par with Django.

</comment></comment><comment><USER23> The boring Java enterprise way, 2018 edition.

Back end: Java 9 JVM, Spring Boot web service, Kotlin, plain SQL via JdbcTemplate working with Kotlin data classes, Liquibase for DDL and migrations, Spring caching with redis if need be, Postgres, deployment via docker to AWS Fargate

Front end: Angular... but I'd like to try Vue. Nginx and docker to Fargate

<comment><USER24> I tried Vue a few months back and I could not be happier. The single-file components (html/css/js) make development a breeze. I now need to make changes in relatively complex components I created 2 months ago, and my learning curve is small. Most things in Vue are expressed as expected and just work.

I cannot wait for full ES6 support in vue - it will get massively better by then.

<comment><USER25> I'm really in love with just having v-if available. Ternary operators in React are ugly and the alternative of hoisting control flow makes things much more complicated to read through.

</comment></comment></comment><comment><USER26> As a developer working with Rails (and previously Django), I'd love to try Phoenix/Elixir now. I'd probably find lots of great reasons why it's the best choice. And I won't be wrong.

As an entrepreneur however, I would opt for Wordpress unless there's a clear, strong reason not to. I know it's a bit heretic here on HN, and I dislike PHP and working with Wordpress isn't fun at all. But they take the concept of "Batteries included" to the next level. It's like "Nuclear power included".

You want a simple and powerful admin backend? got it. Caching? check. Image optimization? Yup. Logins? of course. Payment/Shopping Cart/Even subscriptions - just get woocommerce. 5 minutes later you're charging credit cards or paypal. Not to mention how easy it is to create content pages, landing pages, blog posts... You know, the stuff that actually convinces people to even consider your shiny new app.

<comment><USER27> I often meet people who want to use <insert tech here> for their generic MVP or website, and seem quite eager to spend thousands on programmers replicating what you can easily find on WordPress. But even though I tell them they should buy a WordPress template closest to the result they want, and hire a programmer if they need to customize it (saving thousands of dollars and a while load of grief), quite a few simply don't believe it's possible and still spend the money.

<comment><USER26> couldn't agree more. This was from the perspective of a developer- entrepreneur. If I was talking to non-technical entrepreneur the arguments in favour of Wordpress are probably stronger. So much easier to find developers and agencies who are familiar with it. Without spending a fortune. It's easier to pass from one agency to another even. Not to mention easier to sell your business later on... To quote Patrick McKenzie[0]:

 _" Practically speaking, this means that the market wants your website to be on WordPress and your technology stack to be something very, very mainstream, like Rails or PHP. That ensures that, when they want to hire someone to work with it, that person will exist in quantity and be inexpensive. The market highly dislikes software which is written in something more esoteric (the new Javascript hotness, Golang, Erlang, etc) because that adds substantial risk and cost to operating the business."_

[0] [https://training.kalzumeus.com/newsletters/archive/selling_s...](https://training.kalzumeus.com/newsletters/archive/selling_software_business)

</comment></comment></comment><comment><USER28> I build lots of CRUD apps very fast with JHipster, which is designed to handle the initial bootstrapping of traditional CRUD apps very well, while also allowing you to choose your tech stack (in some ways). Because it's giving you a nice boilerplate, you can customize it as you go.

The stack ist mostly Java with Spring and AngularJS on the frontend.

[http://www.jhipster.tech/](http://www.jhipster.tech/)

</comment><comment><USER29> Honestly, I would probably build it out on WordPress with a slick theme from somewhere, and the app built out as a plugin using jQuery or Backbone on the frontend. See if works and people give me money.

If I get money, refactor frontend to use react/redux.

On the back, if PHP/WordPress weren't a good fit, I'd rewrite in another language and have WordPress proxy the requests and cache the responses smartly (POST/DELETE/etc would invalidate the cache for GET) or something.

I don't understand why you'd want to start out with a complex stack. It locks you into a set of solutions when you don't even know the whole problem set yet. See what people give you money for and figure it out from there.

<comment><USER30> What is the default crud solution on WordPress? Do you create new objects? Are there API generation plugins?

I like WordPress for a CMS (wouldn't recommend anything else for a small to midsize CMS solution) but wouldn't think of it for a crud app.

That said, haven't researched it much lately, so wondering what I am missing.

<comment><USER30> Never mind, someone answered my questions: [https://news.ycombinator.com/item?id=16509513](https://news.ycombinator.com/item?id=16509513)

</comment></comment></comment><comment><USER31> Depends on how complicated the app is.

Most of the times a good old non-SPA with NodeJS / Express / Some ORM with vanilla JS / Handlebars and SASS will do the job without having a huge technical debt.

If on the other hand the requirements are to have a more complicated SPA, I would go with React / Redux and a NodeJS / Express / ORM for the API. Hosting the front-end on an S3 and the backend on a Digital Ocean Droplet.

<comment><USER32> NodeJS + TypeScript works wonderfully. Nunchuck templates (Jinja2 inspired).

And we use Angular on the front end.

And I'd recommend GraphQL, takes a lot of worry about API design and wiring off your shoulders.

</comment></comment><comment><USER33> Funny, I was writing something to manage orders for a side business that looks promising and I started building it with Node+Express. It took some hours (3-4) but then I realized I haven't deployed a Node application to production and I'm not even sure how to keep the process alive forever, how updates would work, etc.

I re-wrote it last night in the LAMP stack in about 30 minutes. So I would write a CRUD app in PHP in 2018, I would suggest you do too tbh; PHP7 is a joy to work with. For backend framework I'm using [https://www.slimframework.com/](https://www.slimframework.com/)

<comment><USER34> i've been an occasional defender of php, but darn...those backslashes.

and, symfony is the worst garbage in the history of the planet. worst mistake ever.

<comment><USER33> I agree, backslashes are annoying. Unfortunately that ship has sailed :|

I've never used the full-fledged Symfony framework but I have used individual components from time to time. Surely it can't be worse than Zend 1?

</comment></comment></comment><comment><USER35> Golang for the API, running on Lambda. React or Vue for the UI.

FaaS isn't a fad, new systems built on an event based architecture are simpler, more cost effective, and scalable than the traditional application server approach.

And the reactive programming pattern is easy and powerful and maps extremely well to modern UI needs.

I have a boilerplate Go / Lambda app here:

[https://github.com/nzoschke/gofaas](https://github.com/nzoschke/gofaas)

I use it with this excellent admin interface framework for CRUD tools:

[https://github.com/marmelab/admin-on-rest](https://github.com/marmelab/admin- on-rest)

<comment><USER7> Half the source files read like J2EE stuff. An example:

      // KMS is an xray instrumented KMS client
      func KMS() *kms.KMS {
      	c := kms.New(session.Must(session.NewSession()))
      	xray.AWS(c.Client)
      	return c
      }

> Golang for the API, running on Lambda. React or Vue for the UI.

You forgot "YAML for configuration. Python for ... I'm not even sure what for (linting the configurations ?), but you use lots of it. TOML for golang dependencies. JSON for other pieces of configuration. There is even some XML stuff in there". Even just limiting to Go you're using something like 10 large external libraries.

When I read this, I'm like ... _sigh_ not AGAIN.

Oh and after starting it, may I just point out, that despite all that work, it's nowhere near as good as a Laravel, Drupal or Ruby-on-rails app, in terms of functionality (speficially, using this, you'll constantly need to write extra tools for basic operations on the database that your tool doesn't support, whereas each of those frameworks have something like Drupal's "admin"). And I might add, more expensive to host than either of those options too.

<comment><USER35> Yes static YAML for config.

It may be more verbose but it's simpler than Rail's ERB in YAML that requires a the Ruby VM plus application config to interpret.

Yes external libraries. 80% of those are for testing (as is the Python stuff). In Go land you should effectively ignore the vendor folder, I check it in for developer convenience and system stability.

Compare to Rails which has a massive dependency graph. And one that has to follow your app around for every build and deploy.

I will absolutely grant that for SQL CRUD apps, you still can't beat the Rails tooling. Migrations, rake tasks, ActiveRecord, Scaffolding and the Ruby REPL to poke at your models and data are very useful.

But decoupled tooling is getting really good.

The [https://github.com/marmelab/admin-on- rest](https://github.com/marmelab/admin-on-rest) project is better than Django Admin. The basic CRUD stuff is just as easy, then it's infinitely more configurable with a bit of custom React programming. And it's not coupled to any language, framework or database.

Finally cost is effectively zero for all of these options to start. AWS and Heroku offer a generous free tier. Developer time is the real cost to watch.

But in terms of raw resource consumption, static Go binaries talking to DynamoDB plus a static React page are obviously less "expensive" than Ruby VMs talking to a dedicated Postgres server and rendering HTML pages.

</comment></comment></comment><comment><USER36> One you are familiar with, if possible. Django, Rails, or maybe Elixir+Phoenix if you absolutely need something modern.

<comment><USER37> I completely agree with this. Whatever's most familiar for you, but hopefully, it should be familiar for other people too. Try to write it in a way that you can switch out parts if you really needed to. For example, I'm still a Rails programmer but I've been structuring my apps differently from traditional Rails (oftentimes just doing the API backend).

However, that's only because I still have the luxury of time. If I had a gun to my head and a finite number of hours to code an app, then I'd go with vanilla Rails. If I was given a few weeks to study a new framework, I'd go with Elixir/Phoenix, but only because I spent a few days trying it around and while I'm not particularly fluent with it yet, I like its design and speed a lot more than Rails.

I think this is why we perfect our craft. We have to be able to code fast or code pretty, depending on the circumstances.

</comment></comment><comment><USER38> For those of you saying WordPress...could you elaborate a bit more? I'm willing to shelve my pride in favor of speed, but it seems like there are _very_ few guides to building a web app in WP.

HelloBar from 2012 seems to still be one of the top results.

Could you elaborate on your approach to setting up a WP CRUD app? What are your go-to tools?

<comment><USER39> There's a couple ways to do it, depending on how much you do/don't want it to look like WordPress. In both scenarios you have to mentally translate what you want to do into WP architecture (e.g. you want a new model? In WP that's a custom post type, etc.).

The "easier" way is to create custom post types for each model you want, and use Advanced Custom Fields (plugin) for the data fields. Users log into the WP backend and can CRUD the custom post types. With ACF, pretty amazing things are possible (inter-model relationships, uploads, etc, and all done with amazing UIs for each type of field).

The "harder" way (if you are trying to make your app appear less like WP) is to get a plug-in that hijacks the user login process and admin, then customize the front-end to display the CRUD fields/controls (again using custom post types and ACF) when users are logged in, so your users never see the WP admin.

Both ways (and more, now that WP also has a new-ish full-featured rest API) are possible, however the standard WP caveats apply: the more plugin- spaghettini you introduce, the more unexpected issues you will face. I've been meaning to write up a guide, need to do that one of these days...

<comment><USER30> If you want your custom posts using the ACF to be accessible via a json API, you might want to check out this SO post:

[https://stackoverflow.com/questions/10132685/json-api-to- sho...](https://stackoverflow.com/questions/10132685/json-api-to-show- advanced-custom-fields-wordpress)

</comment></comment></comment><comment><USER40> Use what you know. In my case, probably ASP.NET Core and either SQL Server or PostreSQL.

</comment><comment><USER41> Rails. Rails was basically designed to write CRUD apps. You will 99% never get big enough where rails' downsides become a problem.

</comment><comment><USER42> I've been using:

Server side: Apache Web Server CouchDB Perl or Python

Client side: Pouchdb jQuery Bootstrap Moustache/Handlebars

On client side that toolset provides an almost seamless API that gets you authorization, authentication, offline/mobile first, and data sync among all connected devices. And it's a very fast app because it runs almost entirely on the client side and transfers very little data between the client and server.

There's not a lot to do on the server side with this setup. PouchDB/CouchDB work together to handle the CRUD routines for both the client and server side and to sync data automatically and/or on-demand when the client is online.

You can also setup a 2nd CouchDB on a remote server to replicate your data to for automated backups. And it's fairly easy to configure a cluster of CouchDB servers with load balancing.

Productivity is what we're really looking for in a framework. To achieve that you want a very low learning curve and a very rich feature set. You want to leverage what you already know, as opposed to "learning a new way" to do things.

For me, this "stack" provided that.

</comment><comment><USER43> PHP with Laravel :)

For JS, Vue.js probably. Though I'm still using Backbone + Marionette.

<comment><USER44> [https://vuejsdevelopers.com/2018/02/05/vue-laravel- crud/](https://vuejsdevelopers.com/2018/02/05/vue-laravel-crud/)

</comment></comment><comment><USER45> I would go with PHP+mySQL/PostgreSQL maybe some Redis for good measure. What PHP framework to use in 2018? Fat-Free Framework, of course.

</comment><comment><USER46> I've also worked with quite a few startups and usually recommend the following:

\- Python / Node.js for the backend

\- React.js (with Redux) / Angular for the front-end

\- MySQL / Postgresql as the db

\- Host on a digitalocean or linode VM

\- ReactNative (if using React.js) for mobile apps, prefer to write native apps otherwise.

All of the above are proven technologies with Node.js giving an edge when it comes to real-time applications.

The hardest part I've found is in having a consistent design, marketing and branding strategy. Usually the inhouse designers are swamped and it gets really tricky for frontend developers to make the beautiful looking widgets that were designed in Adobe InDesign or whatever...

</comment><comment><USER47> For the APP I 'd use ReactJS

For the compute back-end I'd use Serverless Lambda or Google Functions, nodejs.

For the database I' d use Firestore or datastore

For the communication between client and back, I'd use GraphQL.

</comment><comment><USER48> Has anyone here used DataTables, specifically the Editor?

[https://www.datatables.net/](https://www.datatables.net/)

[https://editor.datatables.net/](https://editor.datatables.net/)

[https://github.com/DataTables](https://github.com/DataTables)

I have a license for the Editor and have to say it works very well. They have an online Generator that makes it easy to get started very quickly.

<comment><USER49> It works pretty well and is fairly straightforward to use. It can be really frustrating if you have more advanced requirements for your editable tables, but it works great and is documented pretty well for its intended use cases.

</comment></comment><comment><USER50> Design crud API in swagger generate code api server / April in your favourite language/framework with swagger codegen

Design frontend in web or mobile with poison of your choice

</comment><comment><USER51> PHP and CRUD is match made in heaven.

Use a framework like symphony or laravel and you only need to worry about business logic. The rest is taken care of by the framework.

</comment><comment><USER52> \- Any of the Sinatra-derived frameworks (flask, express, etc. Language isn't a major factor as the API is small).

\- Neo4j graph db instead of a relational db. Simple crud stuff is easy, and you can encode most business logic (if there is a need for anything beyond basic crud) as simple graph operations, avoiding the need for a bunch of other boilerplate that is found in frameworks that leverage ORMs.

</comment><comment><USER53> It always depends on the use-cases. JS frameworks are good for interactive content, but if the content is write once read many times, they might not be the best solution. So I wont even mention any of them.

From server oriented stacks I would suggest and personally use for many years:

Open-source:

OpenXava - because it will generate the whole CRUD app automatically based on the database relations, and this will be sufficient for generic use-cases (it is based on Java Server Pages, Hibernate)

or

Tapestry - if I need something which is very component oriented, flexible and capable of extreme customization of the rendering process.

or Commercial:

Oracle APEX (Application Express) - it is extremely easy to create CRUD apps and general table/grid/master-detail type UI. Even if you are not a programmer you will be able to create a nice app. There are free options and there are cheaper options for smaller websites. If you get a hosted version it's easeir, if you host it yourself you would need a Oracle DBA knowledge to install it.

</comment><comment><USER54> Its surprising that I don't see any of the new headless cms stacks here. Checkout [https://headlesscms.org/](https://headlesscms.org/)

I am working on [https://github.com/daptin/daptin](https://github.com/daptin/daptin)

</comment><comment><USER55> If the application is going to be around longer than 5 years, roll your own MVC or ROA pattern in Java. Write your own DAO and database calls (stay away from ORMs). Keep 3rd party library use down to a minimum, limiting your vulnerability exposure and rewrites due to upgrades.

<comment><USER25> Home-grown means every other developer that ever has to touch it is going to have huge additional overhead getting started with the codebase (because your documentation is going to be nonexistent), and you're going to spend a ton of time unnecessarily reinventing the basics.

These days it's never worth it to home roll in the CRUD world. There's way too much good tooling out there.

<comment><USER56> While it is true that there is additional overhead, they did say "if the application is going to be around for more than 5 years".

After 5 years there is a better chance you can make changes to a pure language coded app, than try and get what ever stack was common at that time working.

Basically, it could be the difference between throwing away your app and rewriting it.

<comment><USER25> > than try and get what ever stack was common at that time working

Doesn't seem like a problem for languages with sane package management solutions, of which there are plenty. A Java app on Maven is going to work just fine in 5 years, and on the latest version of java to boot.

<comment><USER55> Maven is a build tool and can help manage dependencies. It doesn't ensure your code base is compatible with the latest version of the dependency or ensure the dependency is still supported.

</comment></comment></comment></comment></comment><comment><USER57> I had to build an in house CRUD app that serviced millions of records and multiple users. It's a pain. The same technologies that existed years ago still work best today. I'm always open to rebuilding it and connecting the database to something _new_ but everything is cumbersome. I'd really like to move away from certain CRMs system but there is a lot to consider and it's always been a long battle. That's why older more mature systems have solutions ready to go.

Waiting for the day where something is smart enough to look at a SQL db and understand it then build out a quick web app that integrates with it.

</comment><comment><USER58> Node/Express, or maybe Django, depending on a project (Django for simpler, standard ones, Node if I want a REST API).

Although recently I'm mostly using Node/Express for almost everything, and I'm really happy with them.

</comment><comment><USER59> If it's a simple CRUD app, whatever stack you already know.

For a simple CRUD app the stack is irrelevant. You'll want to get to market as quickly as you can and that will be with the stuff you already know.

</comment><comment><USER60> Django Admin. Or even Drupal, for all its brokenness, bloat, slowness and security problems, you can build fairly decent data entry and retrieval apps with it without writing a single line of code.

</comment><comment><USER61> Don't look too far, Django is still the most flexible and stable solution (If you're familiar with Python) for CRUD unless you need a single page application (SPA).

</comment><comment><USER62> This is probably more hopeful/an ambitious end goal than anything sane people would really do today, but I would try to write a functional reactive isomorphic Rust app.

</comment><comment><USER63> .NET (C#) for the back end and Mithril.js for the front end.

</comment><comment><USER30> I'd use Rails today. But I can see the value in Django or Express or ASP.Net or Spring Boot.

Criteria I'd think about:

What is going to be easy for my organization to support (both operationally and with future code changes).

What do I know/want to learn? If the CRUD app is complicated, then I want a tech I know well. If the CRUD app is simple, then I may want to experiment with a different technology (again, within the organizational support guardrails).

</comment><comment><USER64> Whatever you're experienced with. I know it's nice to write a backend in js and easy to learn Python, but if all you ever did is writing C#, then there's nothing wrong with using it. You only know jQuery? Don't worry, you're probably being paid for the result and not for using React. (This is obviously not true if you want to learn new technologies)

</comment><comment><USER65> [http://www.hyperfiddle.net/](http://www.hyperfiddle.net/) (Karl and I made this)

</comment><comment><USER66> Regarding front-end, CxJS is a JavaScript framework specifically designed for large CRUD apps. It offers powerful data-binding, form widgets + validation, advanced grid (data-tables) and much more. CxJS is free for small teams and startups.

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

</comment><comment><USER67> Developer of Solvent (codesolvent.com)...We are still finding the right angle for the product but it has been my goto platform for web development for the past 3 yrs.

Combines custom middle-ware+appserver+IDE to give you a one-stop web app solution. You then use whatever else you want on the front-end or backend (jvm libraries).

</comment><comment><USER68> Development: Definitely Laravel (PHP7 + Mysql) for backend with Vue 2 + Webpack (or mix) for frontend. It's the best combo to get shit done.

Deployment: EC2 or DO both work great.

P.S. Most important thing. Do not worry about optimization before you ship your first version.

</comment><comment><USER69> I would use rails for the API and react on the front end. Rails 5.1 makes it super easy to do this and Rails 5.2 which is coming out soon (5.2.rc1 I'd already available) also adds some neat features. Database I usually pick is postgres.

</comment><comment><USER7> PHP, Drupal, Ruby on Rails, or GWT.

In increasing level of complexity. PHP is very fast to write, but gets unmanageable relatively quickly. GWT can handle anything you could possibly want to do, but it'll be quite a while before your app starts working.

</comment><comment><USER70> Whichever one you're familiar with - that requirement doesn't provide any meaningful information to decide among the many choices. It's like asking "which path should I take to cross the street".

</comment><comment><USER71> Well, of course it's personal choice, but I ended with Aurelia JS + Typescript on the client side and .net core with SQL server for the backend.

</comment><comment><USER72> Its like asking economists about the economy: so many people, so many different answers ;-)

Interesting enough, it probably means the market is still growing.

</comment><comment><USER73> I would use WordPress if its a simple site. For a more complex site, I would choose PHP/MySQL with CodeIgniter or Laravel framework.

</comment><comment><USER74> Golang + VueJS will do a great Job , otherwise you can get up and running within an hour with Express,Mongo and Handlebars or EJS .

<comment><USER75> Came here to say this. Go is such a nice language to develop with and once you understand the ELM architecture, VueJS with ElementUI makes throwing a webapp together a breeze.

</comment></comment><comment><USER76> 2018 is not special, so the same answer as any other year: the stack that you know inside and out and are most productive in.

</comment><comment><USER77> Building a lot of SaaS products for startups these days.

Frontend: ReactJS

Backend: NodeJS

Database: Postgres

Hosting: AWS

CI/CD: Gitlab

Simple for me. Easy to deploy changes quickly. Fast iteration.

</comment><comment> jonathan-kosgei Lambda + API Gateway + Dynamodb

</comment><comment><USER78> Golang for api, React front-end

<comment><USER79> Any Golang framework?

</comment></comment><comment><USER80> This is a big question and hard to answer IMHO without more context and constraint. I'll take a stab at laying out some thoughts on the matter.

So many apps can fit into the CRUD tent. I mean, Jira and Confluence are basically CRUD apps, right? But so is an ad-hoc internal company app. I'll focus more on apps that are meant to be externally facing as I typically work on larger efforts, and then mostly on backend services and infrastructure automation.

I would personally stay away from Python. Not only do I prefer typed languages, but I also appreciate languages with fantastic tooling and language services, mature concurrency primitives, and an active/energetic community. I find Python seriously lacking in those regards, and falling further behind other language choices every year. I personally have no issues with writing prototype/production ready code in less dynamic languages at the same speed; faster usually is my sense for anything more than a few dozen lines.

If elixir had focused more on a type system and better language services/tooling(like the F# team) I'd probably be more interested in Phoenix. Ignoring the erlang VM, I find F# much more compelling as a language and am hoping one of the new crop of frameworks will shape into a viable Phoenix alternative. That being said, I could still see myself pushing Phoenix depending on the experience and leanings of the rest of the team.

In no particular order:

TypeScript+React+ASP.NET:

I really like C#; it's not for everyone, but coupled with the CLR it has completely acceptable performance, concurrency primitives, and language services(intellisense, refactor support, etc). Entity framework and linq are a super compelling combo; using this ORM will ruin most other ORMs for many people. Dotnet core has resulted in a lot of extra activity in the OSS community, and the dot.net ecosystem is full of very well engineered, comprehensive projects.

F#+React+ASP.NET:

For some extra spice try F# full-stack. There are some great backend frameworks shaping up, and Fable makes F# possible for the client. Great language and great concurrency support. F# is my crush language. Fable's creator has been doing excellent work including making it possible to consume TypeScript type definitions; going so far as to reach out to the F# team to include features necessary to support the flexibility of TS. Ability to execute on this would really depend on the starting team as well as current/future hiring practices.

TypeScript+React+Node.js(TypeScript):

This is one of my favorite "easy-ish-to-sell" stacks. Nodejs has come a long ways, and offers a sufficient concurrency experience with async/await. Node- Chakra-Core has some clutch time-travel debugging abilities.. Javascript programmers at least keeping up with ES6 shouldn't have TOO much trouble adjusting to TS, and as a bonus they can be more effective working full-stack on the backend. This should provide for a very large potentially hiring pool. There are some super compelling TypeScript-first projects cropping up as well like MobX, NestJS, TypeORM, etc. My sense is that TypeScript is attracting more of the "engineery" types to the JS/Node ecosystem. If C# is any indication, this is a welcome addition IMHO.

Dart:

Dart appears on the surface to be a more first class TypeScript. It looks super compelling, has some great tooling(including a sweet looking profiler), has a great looking VM for server side execution, and a small but very passionate and motivated community.. A few highly visible companies adopted it and swear by it. This is probably the most experimental stack I would consider and can't really explain it... I'm dart-curious. I feel they should ditch the custom eclipse based IDE and focus on the language server protocol and plugins for the popular IDEs with the 2.0 initiative.

TypeScript+React+Golang:

Sure, why not? I think I'd need a good reason for going golang... Like some serious server-side performance requirements and/or lots of backend services. In the context of a "CRUD" app, I'd be more likely to swap services written in other languages out with golang as the performance requirements became clear.

Mini-rant:

React is pretty great but I wouldn't mind a TypeScript-first implementation to it's interfaces. DefinitelyTyped group has done an excellent job but keeping everything typed can be a bit gnarly and gross.

I'm a huge proponent of MobX over redux until you know you need redux. I haven't personally missed redux since extricated myself from it, however I can imagine circumstances where I'd "see the light" and want it. Take the redux creators advice; you probably don't need it.

</comment><comment><USER81> Sails.js for the backend react/Redux for the front

</comment><comment><USER82> AdonisJS (like Laravel but in JS), PostgreSQL, Vue.

</comment><comment><USER83> Flask and SQLite3

</comment><comment><USER84> Laravel or Flask.

</comment><comment><USER85> Dropwizard on the server. Vue on the browser.

</comment><comment><USER86> Rails + Postgres

</comment><comment><USER87> Java (Spring) + vanilla JavaScript.

</comment><comment><USER88> Tcl/Tk/SQLite, obv

<comment><USER89> Tcl/Tk supports doing web stuff?! There's gui frameworks that can produce a web interface and a native gui now?

<comment><USER88> As a Tcl fan, I was just clowning around; but as a matter of curiosity, there do happen to be a number of possibly-credible Tcl web frameworks. I haven't done any homework on any of them. [https://wiki.tcl.tk/40649](https://wiki.tcl.tk/40649)

</comment></comment></comment><comment><USER90> backend : ratpack + java + kotlin + ebean (sql orm) + postgresql

frontend : VueJS

</comment><comment><USER91> ASP.NET/angular5

</comment><comment><USER92> Rails + jQuery

</comment><comment><USER93> Elm + Parse

</comment><comment><USER94> nuxt and mysql.

</comment><comment><USER95> At my company, we still use the same thing to create high performance web sites. HTML, CSS, JavaScript, SQL and our favorite programming language which I won't go into. We don't even consider anything else because we've been there and done that (whatever one needs) years ago. The only time we give any thought to any framework or library is when the client requires it for some existing interface and we can't get around it. But we will make an effort to scrape off such things wherever possible cause that's our job: high performance at low cost.

</comment><comment><USER96> For CRUD, I like CakePHP + Bootstrap

</comment><comment><USER97> Full stack Dart.

<comment><USER98> What Dart library/framework do you use for the backend? The recent DartConf has only 5 mins of talk of Dart server end. The emphasis seems to switch to use Dart for front end clients.

</comment></comment><comment><USER99> Postgres database, an express server and React front end.

</comment><comment><USER100> Rails. It's minutes to build a functioning CRUD.

</comment><comment> Ruud-v-A You should not write a CRUD app in 2018. Update and delete are remnants from the times where memory and disk were expensive, and update in place was a necessity. This is no longer the case. Apart from a few very specialised use cases, there is no need any more for update or delete. Record new facts and don't destroy the older ones.

<comment><USER101> What should I use to write a CR app?

<comment><USER102> Probably Object Oriented

</comment></comment></comment><comment><USER103> Disclaimer: I'm about to promote my own company, Surround Technologies[1]

Reading through all of the comments so far, I'm seeing solutions that give you a CRUD web app... and nothing else. If that's all you really need, then that's fine. For the past seven years I've been working with large companies who need Enterprise-class CRUD apps, with Enterprise-class requirements that go far beyond what you get out of the box with most of the cobble-it-together- yourself solutions being mentioned here.

Surround Accelerator is a CRUD Application Generator and Framework. To use it, you first develop an optional plugin that customizes the generator, then you run the generator and point it at your database. It loads the schema, does a bunch of analysis, and asks you a bunch of questions. Your plugin is used to govern the analysis and provide standard answers to the questions, so that you can customize the result consistently. Finally, a set of C# web services and applications are created. We're currently producing both a WPF desktop application and a fully-responsive ASP.Net MVC SPAs. Both GUIs are highly customizable; our framework is very flexible and all of the code you need to change to customize the application is part of the generation rather than locked up in the framework.

Generation isn't a one-time thing though; if your schema changes we've got tools that you can use to re-generate just the parts you've changed, or to add generation for the parts that are new. Typically, the way we've structured our code to allow for customization, it's easy to merge your customizations back into the generated code.

If any of this interests you, please visit our website. We've got a number of videos showing the process, a bunch of demos, and many case studies and testimonials from actual customers.

[1] [http://surroundtech.com/](http://surroundtech.com/)</comment>


Trump administration will ban lobbyists - <AUTHOR> https://www.washingtonpost.com/news/powerpost/wp/2016/11/16/trump-administration-will-ban-lobbyists-enact-five-year-lobbying-ban-after-leaving-government/ <comment><USER2> It would be interesting to see how media will respond. Last time I watched them they were upset he went to dinner without inviting them or some such thing.

One complaint I heard on a Washington, DC forum was that it would destroy DC culture. I imagine "lobbyist struggling to make ends meet after being laid off" might be an angle.

> The five-year ban will make it harder for Trump to recruit people to work in > the administration.

I imagine anyone in Washington who knows how things run is a lobbyist of some sort. Wonder how or who they'd have to hire who wasn't some insider of sorts. If people don't know the system they'll probably make mistakes or take too long to get started. If they know too much they are probably corrupt and lobbying for someone else as well.

<comment><USER3> This won't clean up Washington much at all as it only involves the Trump administration appointments. IF Trump was serious about clamping down on the revolving door between Lobbyists and Congress he would have to enact this ban for Congress as well as his administration. Congress is the "swamp", not the Trump White House, correct?

Sadly I think this is nothing but smoke and mirrors, an attempt to appear to "clean up" Washington whilst at the same time doing as little as possible to actually sort out the problems at hand.

<comment><USER2> Ah good point!

Wasn't he talking about term limits. Let's see how well the Congress will like the idea to enact term limits for the ... Congress.

Legislature is funny like that. They can change the rules which are used to make the rules so to speak. But I want to see him pull that off.

</comment></comment></comment><comment><USER4> FTA: "On its face, the lobbyist ban appears stringent, but it could be easily skirted if a lobbyist were to deregister to be eligible to join the administration. One sign indicates that it may already be happening: A close aide to Pence who is a Washington lobbyist, Josh Pitcock, filed paperwork with the Senate on Monday to terminate his status as a federal lobbyist."

In other words, this is meaningless for people being hired into the administration, and of course they can become lobbyists again after they leave government service.

<comment><USER5> However, there is a registration involved when going through the revolving doors, both ways?

Is that public information? Sounds like a good service to American society?

</comment></comment><comment><USER6> Obama had a similar policy in place (2 year ban instead of 5 years), but ended up making exceptions left and right to hire people he wanted.

<comment><USER7> A podcast talked about this recently (can't remember which one). Basically said that government employees make so little that anyone worth their weight has to eventually be allowed to make lobbyist salary, otherwise they won't go work for the administration.

<comment><USER6> NPR politics podcast (I think the most recent episode) ;) I listened to the same one

</comment></comment></comment><comment><USER8> Wasn't this one of Obama's promises?

</comment><comment><USER9> Not likely to become a law either. Many congresspersons have an excellent backup plan in becoming a well-connected lobbyist if they are ever voted out of office. They are not likely to vote that away from themselves.

<comment><USER9> Sorry on mobile. Should have been in reply to Jotato

</comment></comment><comment><USER10> Unless a law is enacted, I wonder how legally binding the 5 year waiting period is. That is one long non-compete agreement!

<comment><USER6> You put it in their hiring contract, similar to non-compete clauses. No law needed, just force people to tie their own hands in the future if they want the job now.

<comment><USER11> But if it's not a law, who are they making the agreement with? Suppose Trump is voted out in 4 years, is he going to go after any of these guys for breach of contract if they become a lobbyist? It seems strange to make it anything but a law if you want it to have teeth.

<comment><USER6> Maybe him making it 5 years is a statement that he plans to be in office for a second term, but you're right someone needs to be there to enforce the contract.

I think a law would be ideal, but I have little hopes of that being passed (similar to Trumps plan to add term limits), the lobbyists don't like it and they control the purses and the purses control the congressmen/women.

</comment></comment></comment></comment><comment><USER12> Previous HN discussion on the legality of lobbying.

[https://news.ycombinator.com/item?id=11508551](https://news.ycombinator.com/item?id=11508551)

<comment><USER13> Thanks for linking to that. I found kbaker's input interesting, that transparency of Congressmen's votes leads to powerful lobbyists: [https://news.ycombinator.com/item?id=11509420](https://news.ycombinator.com/item?id=11509420)

</comment></comment><comment><USER14> yeah.. but, theyll introduce a more exclusive, effective version for the elite insiders

</comment><comment><USER15> Title makes it sound like a lot more than it is.

</comment><comment><USER16> First they came for the lobbyists and I did not speak up because I was not a lobbyist.

<comment><USER17> Then they came for deplorables.</comment></comment>


UK sets out open banking API framework - <AUTHOR> https://www.finextra.com/news/fullstory.aspx?newsitemid=28439 <comment><USER2> This would be fantastic and would definitely open the door for all kinds of products, especially as the API library/tool ecosystem grows around it.

But, undoubtably, the banks will drag their heels and try to somehow make themselves 'stand out' from the rest.</comment>


CAPTCHA Busted? AI Company Claims Break of Internet's Favorite Protection System - <AUTHOR> http://www.wired.com/wiredscience/2013/10/captcha-busted/

<comment><USER2> They have released no code and no paper, and failed at the demo that ScienceNOW asked for.

Here's their explanation for the failure, quoted in the article:

> So why didn't our demo work on the checkerboard pattern? Before the image is > presented to our algorithm, it has to pass through a retina+LGN kind of > processing (it is a basic, common-to-all-CAPTCHAS pre-processing). In the > demo, we had a specialized retina which was faster and gave a few percentage > points more accuracy on reCAPTCHA; the downside being it not working well on > the checkerboard pattern. (Or any pattern where some portions of the letter > are black and some portions of the letter are white). Its just like putting > on sunglasses being specialization we add to our eyes for going out in the > sun, which causes us to see some other patterns not as well. It is not a > fundamental flaw and we have tested that our system works with the > checkerboard pattern as well

That's a lot of fancy words to say that they overfit to their training data.

That makes this sound like a very typical result in supervised machine learning (if it's a result at all). They have used an algorithm to learn a brittle heuristic that works in the cases it was trained to work on. Whether they have a Recursive Cortical Network™ that Emulates The Human Brain™ is irrelevant.</comment>


Humans Need Not Apply [Video] (2014) - <AUTHOR> https://youtube.com/watch?v=7Pq-S557XQU <comment><AUTHOR> Fun anecdote: The company that made the Baxter Robots you see in the video actually went bankrupt and no longer exists anymore.</comment>