Decisions 6
![](jpg/default_43253f45178c1952444a2acf9dddc5d2fb9af45c.jpg)
Johnny Bell
Software Engineer
When I switched to Visual Studio Code 12 months ago from PhpStorm I was in love, it was great. However after using VS Code for a year, I see myself switching back and forth between WebStorm and VS Code. The VS Code plugins are great however I notice Prettier, auto importing of components and linking to the definitions often break, and I have to restart VS Code multiple times a week and sometimes a day.
We use Ruby here so I do like that Visual Studio Code highlights that for me out of the box, with WebStorm I'd need to probably also install RubyMine and have 2 IDE's going at the same time.
Should I stick with Visual Studio Code, or switch to something else? #help
![](png/default_d649e1c8bbd3ea4b8831a126cd733c9df6c2a93a.png)
Nasser Khan
Product Manager at StackShare
We are highly dependent on G Suite for all our collaboration and productivity needs, from Gmail and Calendar to Sheets and Docs. While it may not be as robust as Microsoft's offerings in those areas, it's totally cloud-based, we've never had any downtime issues and it integrates well with our other tools like Slack. We write and collaborate on all our specs/PRDs in Docs, share analyses via Sheets and handle our meetings via Calendar. #StackDecisionsLaunch #ProductivitySuite #Collaboration #DocumentCollaboration
![](jpg/default_6cab2836c14f0be5d7934669c2d4afc09591b5ca.jpg)
Yonas Beshawred
CEO at StackShare
We've been using Stripe for a while to charge our customers (mostly for the ads you see on StackShare), but we only recently realized that you can actually invoice and charge customers all through Stripe's UI 😱
You just need a customer's email address, then you add them as a customer and create a new invoice and send it to the customer- all via the Stripe dashboard. The customer then gets an email with a link to the pay the invoice (via credit card, ACH, or wire transfer). Once the customer clicks the link in the email to pay they're taken to a page hosted at pay.stripe.com where they can download a PDF of the invoice and pay via credit card, or ACH/wire transfer.
Nevermind the fact that we built an entire Rails app to do all this 😒 We'll be sunsetting our payments app soon. I wish someone had told us about these features sooner! I doubt they had this when we first built the app but we could have stopped using/maintaining the app a while ago. Stripe is amazing. That is all.
#invoicing #payments
![](jpg/default_1e513bec60c7ca6a6ee6125383833dbaeec3ba47.jpg)
Russel Werner
Lead Engineer at StackShare
We began our hosting journey, as many do, on Heroku because they make it easy to deploy your application and automate some of the routine tasks associated with deployments, etc. However, as our team grew and our product matured, our needs have outgrown Heroku. I will dive into the history and reasons for this in a future blog post.
We decided to migrate our infrastructure to Kubernetes running on Amazon EKS. Although Google Kubernetes Engine has a slightly more mature Kubernetes offering and is more user-friendly; we decided to go with EKS because we already using other AWS services (including a previous migration from Heroku Postgres to AWS RDS). We are still in the process of moving our main website workloads to EKS, however we have successfully migrate all our staging and testing PR apps to run in a staging cluster. We developed a Slack chatops application (also running in the cluster) which automates all the common tasks of spinning up and managing a production-like cluster for a pull request. This allows our engineering team to iterate quickly and safely test code in a full production environment. Helm plays a central role when deploying our staging apps into the cluster. We use CircleCI to build docker containers for each PR push, which are then published to Amazon EC2 Container Service (ECR). An upgrade-operator
process watches the ECR repository for new containers and then uses Helm to rollout updates to the staging environments. All this happens automatically and makes it really easy for developers to get code onto servers quickly. The immutable and isolated nature of our staging environments means that we can do anything we want in that environment and quickly re-create or restore the environment to start over.
The next step in our journey is to migrate our production workloads to an EKS cluster and build out the CD workflows to get our containers promoted to that cluster after our QA testing is complete in our staging environments.
Tech Stacks 14
![](jpg/javascript.jpg)
![](png/puby5pvj.png)
![](jpg/lxekmmnb_400x400.jpg)
![](png/kepghic9.png)
![](png/ymxufywf.png)
![](png/asohu5xj.png)
![](jpg/default_fd639832ff07e3b4f80afd816d82ce5e3b666ed2.jpg)
![](jpg/16407404782_8b9c57eab3.jpg)
![](jpg/cu74ahcn_400x400.jpg)
![](jpg/kq_6nwmp.jpg)
![](jpg/default_aa447805966bbb635af0d113e93e1f1030497052.jpg)
![](png/crazyegg_logo_avatar.png)
![](png/default_452afb716f8f4b904f267638e5c6b9172f9fa06d.png)
![](jpg/default_51e537c5ed098d3e9aba0eb94299e4575a556aec.jpg)
![](png/devise.png)
![](jpg/gya5ijzo_400x400.jpg)
![](png/git.png)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](png/n4u37v9t_400x400.png)
![](png/21_d3cvm.png)
![](jpg/44mc-kj3.jpg)
![](png/docker-compose.png)
![](png/default_193410db3a7e419c7b436961bf41d733c7346b59.png)
![](png/default_9262326592c97828a2a4299dec085a3674dd05f4.png)
![](jpg/rnisryof_400x400.jpg)
![](jpg/-cvhthpk_400x400.jpg)
![](jpg/oykaxyqm_400x400.jpg)
![](png/r9ul4jwu.png)
![](png/qmwr6vjg_400x400.png)
![](png/default_6af179017eb5792be37441bc746e9cfd37814ea1.png)
![](jpg/od_opsbp_400x400.jpg)
![](png/bro-lnvh_reasonably_small.png)
![](jpg/javascript.jpg)
![](png/puby5pvj.png)
![](jpg/lxekmmnb_400x400.jpg)
![](png/logo-mysql-170x170.png)
![](png/default_cbce472cd134adc6688572f999e9122b9657d4ba.png)
![](png/paeckcwc.png)
![](png/ruby.png)
![](png/4agjtnqv.png)
![](png/ew6txeq3.png)
![](png/git.png)
![](png/lejvzrnlpb308aftn31u.png)
![](png/lu6cgu0z_400x400.png)
![](jpg/44mc-kj3.jpg)
![](png/-1wfgjnw.png)
![](png/gradlephant-social-black-bg.png)
![](jpg/cvqrssfs_400x400.jpg)
![](png/mocha.png)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](jpg/javascript.jpg)
![](png/asohu5xj.png)
![](png/default_cbce472cd134adc6688572f999e9122b9657d4ba.png)
![](png/c9qj7v3x.png)
![](png/amazon-ec2.png)
![](png/ruby.png)
![](png/x57_lorv.png)
![](png/4b7277462dadad85454ab427ce3f0ca7.png)
![](png/0skjzkftgup526281tkn.png)
![](png/default_452afb716f8f4b904f267638e5c6b9172f9fa06d.png)
![](png/devise.png)
![](jpg/default_59f521d302264f440a1b600eed39d6d12474c575.jpg)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](png/n4u37v9t_400x400.png)
![](png/21_d3cvm.png)
![](png/docker-compose.png)
![](png/default_193410db3a7e419c7b436961bf41d733c7346b59.png)
![](png/default_9262326592c97828a2a4299dec085a3674dd05f4.png)
![](jpg/cvqrssfs_400x400.jpg)
![](png/usvdlksy_400x400.png)
![](jpg/javascript.jpg)
![](png/n1jrsfeb_400x400.png)
![](png/oyiaj1kk.png)
![](png/kepghic9.png)
![](png/amazon-s3.png)
![](png/cyuh653y.png)
![](png/17475736.png)
![](png/default_db6159e1ae3d61e909d2c05d5a2c6990bdc6088f.png)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](png/visual_studio_code_logo.png)
![](png/n4u37v9t_400x400.png)
![](png/21_d3cvm.png)
![](png/img_4636.png)
![](jpg/q4l7jncy.jpg)
![](jpg/44mc-kj3.jpg)
![](png/-1wfgjnw.png)
![](jpg/javascript.jpg)
![](png/oyiaj1kk.png)
![](png/asohu5xj.png)
![](png/ruby.png)
![](png/3wgidj3j.png)
![](png/amazon-cloudfront.png)
![](png/x57_lorv.png)
![](jpg/hdnnpa4a_400x400.jpg)
![](png/1d289aab136f2d111387a399f3a91b6a.png)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](png/n4u37v9t_400x400.png)
![](png/21_d3cvm.png)
![](png/default_193410db3a7e419c7b436961bf41d733c7346b59.png)
![](jpg/cvqrssfs_400x400.jpg)
![](png/usvdlksy_400x400.png)
![](png/default_3accd6f46a6878fc4663003d9758e6d75bca9dd3.png)
![](jpg/javascript.jpg)
![](png/oyiaj1kk.png)
![](png/asohu5xj.png)
![](png/default_cbce472cd134adc6688572f999e9122b9657d4ba.png)
![](png/ruby.png)
![](png/3wgidj3j.png)
![](png/amazon-cloudfront.png)
![](png/x57_lorv.png)
![](png/4-rbfatj.png)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](png/default_193410db3a7e419c7b436961bf41d733c7346b59.png)
![](png/default_9262326592c97828a2a4299dec085a3674dd05f4.png)
![](jpg/cvqrssfs_400x400.jpg)
![](png/1781835.png)
![](jpg/javascript.jpg)
![](png/oyiaj1kk.png)
![](png/asohu5xj.png)
![](jpg/16407404782_8b9c57eab3.jpg)
![](png/default_cbce472cd134adc6688572f999e9122b9657d4ba.png)
![](png/c9qj7v3x.png)
![](png/ruby.png)
![](png/3wgidj3j.png)
![](jpg/kq_6nwmp.jpg)
![](png/default_452afb716f8f4b904f267638e5c6b9172f9fa06d.png)
![](png/img_4636.png)
![](jpg/cvqrssfs_400x400.jpg)
![](jpg/javascript.jpg)
![](png/default_cbce472cd134adc6688572f999e9122b9657d4ba.png)
![](png/amazon-ec2.png)
![](png/ruby.png)
![](png/x57_lorv.png)
![](png/4b7277462dadad85454ab427ce3f0ca7.png)
![](png/-s9uolin.png)
![](jpg/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg)
![](png/n4u37v9t_400x400.png)
![](png/docker-compose.png)
![](png/default_9262326592c97828a2a4299dec085a3674dd05f4.png)
![](jpg/cvqrssfs_400x400.jpg)
![](png/150px-vagrant.png)
![](png/phantomjs.png)