Avatar of Johnny Bell

Johnny Bell

Sr. Software Engineer at StackShare

Decision about GitHub, Gatsby, Netlify, styled-components, Redux, React, Firebase, Google, Frontend, ReactRally

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

I was building a personal project that I needed to store items in a real time database. I am more comfortable with my Frontend skills than my backend so I didn't want to spend time building out anything in Ruby or Go.

I stumbled on Firebase by #Google, and it was really all I needed. It had realtime data, an area for storing file uploads and best of all for the amount of data I needed it was free!

I built out my application using tools I was familiar with, React for the framework, Redux.js to manage my state across components, and styled-components for the styling.

Now as this was a project I was just working on in my free time for fun I didn't really want to pay for hosting. I did some research and I found Netlify. I had actually seen them at #ReactRally the year before and deployed a Gatsby site to Netlify already.

Netlify was very easy to setup and link to my GitHub account you select a repo and pretty much with very little configuration you have a live site that will deploy every time you push to master.

With the selection of these tools I was able to build out my application, connect it to a realtime database, and deploy to a live environment all with $0 spent.

If you're looking to build out a small app I suggest giving these tools a go as you can get your idea out into the real world for absolutely no cost.

31 upvotes·7 comments·84.4K views

Decision about ESLint, Prettier, Babel, npm, Yarn, Node.js, Webpack, ES5, ES6

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

So when starting a new project you generally have your go to tools to get your site up and running locally, and some scripts to build out a production version of your site. Create React App is great for that, however for my projects I feel as though there is to much bloat in Create React App and if I use it, then I'm tied to React, which I love but if I want to switch it up to Vue or something I want that flexibility.

So to start everything up and running I clone my personal Webpack boilerplate - This is still in Webpack 3, and does need some updating but gets the job done for now. So given the name of the repo you may have guessed that yes I am using Webpack as my bundler I use Webpack because it is so powerful, and even though it has a steep learning curve once you get it, its amazing.

The next thing I do is make sure my machine has Node.js configured and the right version installed then run Yarn. I decided to use Yarn because when I was building out this project npm had some shortcomings such as no .lock file. I could probably move from Yarn to npm but I don't really see any point really.

I use Babel to transpile all of my #ES6 to #ES5 so the browser can read it, I love Babel and to be honest haven't looked up any other transpilers because Babel is amazing.

Finally when developing I have Prettier setup to make sure all my code is clean and uniform across all my JS files, and ESLint to make sure I catch any errors or code that could be optimized.

I'm really happy with this stack for my local env setup, and I'll probably stick with it for a while.

17 upvotes·3 comments·34.1K views

Decision about Prettier, Git, Magento, Sublime Text, PhpStorm, Visual Studio Code, PHP, Frontend

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

I've been in the #frontend game for about 7 years now. I started coding in Sublime Text because all of the tutorials I was doing back then everyone was using it. I found the speed amazing compared to some other tools at the time. I kept using Sublime Text for about 4-5 years.

I find Sublime Text lacks some functionality, after all it is just a text editor rather than a full fledged IDE. I finally converted over to PhpStorm as I was working with Magento and Magento as you know is mainly #PHP based.

This was amazing all the features in PhpStorm I loved, the debugging features, and the control click feature when you click on a dependency or linked file it will take you to that file. It was great.

PhpStorm is kind of slow, I found that Prettier was taking a long time to format my code, and it just was lagging a lot so I was looking for alternatives. After watching some more tutorial videos I noticed that everyone was using Visual Studio Code. So I gave it a go, and its amazing.

It has support for everything I need with the plugins and the integration with Git is amazing. The speed of this IDE is blazing fast, and I wouldn't go back to using PhpStorm anymore. I highly recommend giving Visual Studio Code a try!

15 upvotes·36.1K views

Decision at StackShare about styled-components, Emotion, Glamorous, Showdown, Ruby, GraphQL, React, Markdown, StackDecisionsLaunch, CssInJs, Frontend

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

For Stack Decisions I needed to add Markdown in the decision composer to give our users access to some general styling when writing their decisions. We used React & GraphQL on the #Frontend and Ruby & GraphQL on the backend.

Instead of using Showdown or another tool, We decided to parse the Markdown on the backend so we had more control over what we wanted to render in Markdown because we didn't want to enable all Markdown options, we also wanted to limit any malicious code or images to be embedded into the decisions and Markdown was a fairly large to import into our component so it was going to add a lot of kilobytes that we didn't need.

We also needed to style how the markdown looked, we are currently using Glamorous so I used that but we are planning to update this to Emotion at some stage as it has a fairly easy upgrade path rather than switching over to styled-components or one of the other cssInJs alternatives.

Also we used React-Mentions for tagging tools and topics in the decisions. Typing @ will let you tag a tool, and typing # will allow you to tag a topic.

The Markdown options that we chose to support are tags: a, code, u, b, em, pre, ul, ol, li.

If there are anymore tags you'd love to see added in the composer leave me a comment below and we will look into adding them.

#StackDecisionsLaunch

10 upvotes·172.6K views

Decision at StackShare about Apollo, GraphQL, MobX, JavaScript, ES6, React, jQuery, Context, Hooks🎣

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

We are always building new features and replacing old code at StackShare. Lately we have been building out new features for the frontend, and removing a lot of old jQuery code (sorry jQuery but it's time to go).

We've mainly been using React, ES6 and JavaScript on the frontend to build out the components, and we've been slowly removing some legacy MobX and using GraphQL and Apollo for our state management, if we need to control state further than GraphQL and Apollo allows us to we use just plain React with #context , or the new fancy React #hooks🎣 .

As we've moved towards the above tech, its really made smashing out new features and updating legacy code super fast, and really fun!

9 upvotes·99.5K views

Decision about Code Climate, CloudFlare, Amazon CloudFront, Buddy, Amazon S3, Netlify, GitHub, Gzip, Git, Webpack, Devops

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

When I first built my portfolio I used GitHub for the source control and deployed directly to Netlify on a push to master. This was a perfect setup, I didn't need any knowledge about #DevOps or anything, it was all just done for me.

One of the issues I had with Netlify was I wanted to gzip my JavaScript files, I had this setup in my #Webpack file, however Netlify didn't offer an easy way to set this.

Over the weekend I decided I wanted to know more about how #DevOps worked so I decided to switch from Netlify to Amazon S3. Instead of creating any #Git Webhooks I decided to use Buddy for my pipeline and to run commands. Buddy is a fantastic tool, very easy to setup builds, copying the files to my Amazon S3 bucket, then running some #AWS console commands to set the content-encoding of the JavaScript files. - Buddy is also free if you only have a few pipelines, so I didn't need to pay anything 🤙🏻.

When I made these changes I also wanted to monitor my code, and make sure I was keeping up with the best practices so I implemented Code Climate to look over my code and tell me where there code smells, issues, and other issues I've been super happy with it so far, on the free tier so its also free.

I did plan on using Amazon CloudFront for my SSL and cacheing, however it was overly complex to setup and it costs money. So I decided to go with the free tier of CloudFlare and it is amazing, best choice I've made for caching / SSL in a long time.

9 upvotes·2 comments·24.6K views

Decision about CloudFlare, Amazon CloudFront, Amazon S3

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

I recently moved my portfolio to Amazon S3 and I needed a new way to cache and SSL my site as Amazon S3 does not come with this right out of the box. I tried Amazon CloudFront as I was already on Amazon S3 I thought this would be super easy and straight forward to setup... It was not, I was unable to get this working even though I followed all the online steps and even reached out for help to Amazon.

I'd used CloudFlare in the past, and thought let me see if I can set up CloudFlare on an Amazon S3 bucket. The setup for this was so basic and easy... I had it setup with caching and SSL within 5 minutes, and it was 100% free.

8 upvotes·14.7K views

Decision about Redux, Bugsnag, Sentry, LogRocket, JavaScript, React, ErrorBoundry, OpenSorce, Chrome, OpenSource

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·
ReduxReduxBugsnagBugsnagSentrySentryLogRocketLogRocketJavaScriptJavaScriptReactReact
#ErrorBoundry
#OpenSorce
#Chrome
#OpenSource

For my portfolio websites and my personal OpenSource projects I had started exclusively using React and JavaScript so I needed a way to track any errors that we're happening for my users that I didn't uncover during my personal UAT.

I had narrowed it down to two tools LogRocket and Sentry (I also tried Bugsnag but it did not make the final two). Before I get into this I want to say that both of these tools are amazing and whichever you choose will suit your needs well.

I firstly decided to go with LogRocket the fact that they had a recorded screen capture of what the user was doing when the bug happened was amazing... I could go back and rewatch what the user did to replicate that error, this was fantastic. It was also very easy to setup and get going. They had options for React and Redux.js so you can track all your Redux.js actions. I had a fairly large Redux.js store, this was ended up being a issue, it killed the processing power on my machine, Chrome ended up using 2-4gb of ram, so I quickly disabled the Redux.js option.

After using LogRocket for a month or so I decided to switch to Sentry. I noticed that Sentry was openSorce and everyone was talking about Sentry so I thought I may as well give it a test drive. Setting it up was so easy, I had everything up and running within seconds. It also gives you the option to wrap an errorBoundry in React so get more specific errors. The simplicity of Sentry was a breath of fresh air, it allowed me find the bug that was shown to the user and fix that very simply. The UI for Sentry is beautiful and just really clean to look at, and their emails are also just perfect.

I have decided to stick with Sentry for the long run, I tested pretty much all the JS error loggers and I find Sentry the best.

7 upvotes·24K views

Decision at StackShare about Markdown, GitHub, Trello, Jira, Agile, StoryPoints, TrelloPowerUps, StackDecisionsLaunch, Startup, Kanban, Massive

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·
MarkdownMarkdownGitHubGitHubTrelloTrelloJiraJira
#Agile
#StoryPoints
#TrelloPowerUps
#StackDecisionsLaunch
#Startup
#Kanban
#Massive

So I am a huge fan of JIRA like #massive I used it for many many years, and really loved it, used it personally and at work. I would suggest every new workplace that I worked at to switch to JIRA instead of what I was using.

When I started at #StackShare we were using a Trello #Kanban board and I was so shocked at how easy the workflow was to follow, create new tasks and get tasks QA'd and deployed. What was so great about this was it didn't come with all the complexity of JIRA. Like setting up a project, user rules etc. You are able to hit the ground running with Trello and get tasks started right away without being overwhelmed with the complexity of options in JIRA

With a few TrelloPowerUps we were easily able to add GitHub integration and storyPoints to our cards and thats all we needed to get a really nice agile workflow going.

I'm not saying that JIRA is not useful, I can see larger companies being able to use the JIRA features and have the time to go through all the complex setup to get a really good workflow going. But for smaller #Startups that want to hit the ground running Trello for me is the way to go.

In saying that what I would love Trello to implement is to allow me to create custom fields. Right now we just have a Description field. So I am adding User Stories & How To Test in the Markdown of the Description if I could have these as custom fields then my #Agile workflow would be complete.

#StackDecisionsLaunch

7 upvotes·20.9K views

Decision about G Suite, FullStory, Google Analytics

Avatar of johnnyxbell
Sr. Software Engineer at StackShare ·

For any project that anyone creates these days (myself included) you want to see how many visitors your site gets, where they come from, what they clicked etc. The easiest and cheapest way to do this is obviously Google Analytics I think that 99% of websites out there have Google Analytics embedded into their code.

I am no different, I wanted to see how the users were getting to my site, what they clicked, how long they were on there for etc. etc. So I added Google Analytics to my site too... Which was really cool and free, but the longer I used Google Analytics I felt that I wanted more insight. Like what if I could actually see how users interacted with my site.

I came across FullStory and this is exactly what I wanted, it will record all your user sessions and you get to replay them in full. So you can see exactly how a user uses your site, what they click, and see if your site might benefit from some A/B tests or changes. - I am on the free plan, so it doesn't need to cost you a fortune.

Both Google Analytics and FullStory allow you to login with your G Suite account which helps you keep your accounts all linked.

With FullStory and Google Analytics I feel that I have the perfect insight into how the users are using my site, and all the analytics around how they get there. Its a perfect combo

6 upvotes·11.1K views