When designing the architecture for #Configcat , we were dreaming of a system that runs on a small scale on low-cost infrastructure at the beginning and scales well later on when the requirements change. Should be platform independent, high performing and robust at the same time. Since most of our team were born and raised using Microsoft's enterprise-grade technologies in the last decade, we wanted to build on that experience. Finding the best solution was quite challenging. Finally, we came up with the idea of a .NET Core backend because it runs on all platforms highly scalable and we could start up with 5$ Linode Linux server. As a #frontend framework, we have chosen Angular mostly because of TypeScript which felt familiar and was easy to get used to after strongly typed languages like C# and the community support behind Angular 2 is awesome. Visual Studio Code makes the coding sessions with Live Share great fun and very productive. MySQL as a database is again is very affordable in the beginning, performs great a scales well and integrates with .NET Core's Entity Framework super easy.
Most companies use Google Analytics via the web interface. And although it packs a lot of power and features, it still lacks integration with all other data sources. You can hook Search Console and Adwords but that would be it. However, there is a way you can tap into Google Analytics and overlap it with any other data source you have - from your backend or any other tool you might use. And that is by using the Google Analytics API. Lots of people are familiar with its existence but few are using it. The decision to move and use Google API was based on the shortcomings of the web interface and the ability to collaborate using the same data set, the same view.
So combining Chartio for a good sharable view with Google Analytics API and all the other data we have ( semrush, oncrawl and backend data from several sources) provides a quick view on the KPI we care about and a common view that can be discussed easily - especially for remote teams.
In the Rails app I work on, I was recently wondering where to put a Ruby constant shared by 2 classes that belong to the same module.
That constant didn't really belong to either class... Then I remembered that you can just define the constant at the module level:
# app/services/m/my_constant.rb module M MY_CONSTANT = 'blah' end # app/services/m/a.rb module M class A def do_something puts MY_CONSTANT end end end # app/services/m/b.rb module M class B def do_something puts MY_CONSTANT end end end
The constant is in its own file, and the Rails autoloader picks it up fine.
This is similar to what Bundler does when you create a new gem:
bundle gem my_gem creates a
VERSION constant in
lib/my_gem/version.rb. This is a good reminder, as I sometimes forget these kinds of Ruby idioms after long periods of traditional Rails work. :-)
How car2go Chose a #frontend Framework between Angular 2 , React and Vue.js. We needed a #web framework that we switch to for all our current and future projects, internally and customer facing. This is the process how we went about it and how we decided.
I use Vim for text/code editing because when you starting understanding how it works (it take some time but it's worthy) you just fall in love with the tool!
The big advantage is that you can edit a text file anywhere if you are working in the unix environment (it may be possible to use it elsewhere also).
The configuration can be easily setup if you are using a dotfiles repository like mine: https://github.com/MartinDelille/dotfiles.