teleren/devto huggingface dataset:
Focus and Forget Microservices!
Tags: microservices, architecture, startup
Published: 2019-03-01 20:28:56

---
title: Focus and Forget Microservices!
published: true
description: How to start a scalable software architecture with simplicity
tags: microservices, architecture, startup
---

What are microservices for?

- Scaling parts of the system independently
- Scaling the engineering team so they can work "independently"
- Keeping a separation of different contexts in [DDD](https://martinfowler.com/tags/domain%20driven%20design.html)

All that comes with costs...

- How do you organize an infrastructure that is auto-scalable, self healing and so on to run this microservices?
- How do you organize an scalable infrastructure for your state storage? (databases, file storage)
- How do you make sure and test that all this tiny pieces are talking to each other in the right and secure way? 
- How do you manage all the communication overhead of the team to deal with that kind of architecture?

If you are starting a business forget about microservices, your mayor concern is if there are people there outside willing to pay for your services or product and if you can create a repeatable business case.

Microservices are an optimization and if you do it early you know you are sinning. Do it when you need to, keep them in mind so you can do it later; but not when you don't know if you have to scale.

My only advice on early stage company microservice wise is: make a modular monolith.

- Keep a clear separation of the bounded contexts in some kind of "modules" or whatever the technology you use supports. Always in the beginning of a company the context you are exploring changes a lot but that's fine, starting a company is a discovery journey, embrace it and be flexible.
- Each module should be as full-stack as possible, containing its own piece of front-end, APIs, business logic and persistency layer.
- Don't let modules interact with the internals of other modules, to communicate and pass information between them use APIs, events, smoke signals... I don't care, keep them together but not mixed.
- Dependencies between modules are fine, but try to make them unidirectional, so if you start deleting the leaf modules of your system, it should continue to work just with less capabilities.

If you kind of follow this recipe you will be able (when you need to) to extract modules from your system and deploy them independently, specially the leaf modules because no one will depend on them.

If you have any other kind of experience about this, please share it!
What was your win this week?
Tags: discuss, weeklyretro
Published: 2019-03-01 20:27:43

---
title: What was your win this week?
published: true
description: Got to all your meetings on time? Started a new project? Fixed a tricky bug?
tags: discuss, weeklyretro
cover_image: https://cl.ly/188e843c2985/download/Image%202019-02-15%20at%202.36.37%20PM.png
---

It's the end of the week...you know what that means...

Weekly retro time!

Looking back, what was something you're proud of?

All wins count -- big or small!

Examples of 'wins' include:

- Getting to all your meetings on time
- Starting a new project
- Fixing a tricky bug
- Cleaning your house...or whatever else that may spark joy 😄 🎉
The Power of Plain Text
Tags: csv, data, json
Published: 2019-03-01 20:26:39

---
title: The Power of Plain Text
published: true
description: I believe portability and ease of exploration beats a tight schema-conforming database any time. 
tags: csv, data, json
---

I sometimes get excited by binary file formats for storing data. A couple of years ago it was [HDF5](https://www.hdfgroup.org/solutions/hdf5/). Now [Apache Parquet](https://parquet.apache.org/) looks pretty promising. But most of my data work, especially if I share it with others, is stored in just simple, plain text.

> I believe portability and ease of exploration beats a tight schema-conforming database any time.

Be it CSV, JSON or YAML, I love it that I can just peek into the data real quick.

```bash
head -n100 data.csv
wc -l data.csv
```
are commands I use quite often. And nothing beats the human readability of a nice YAML document.

Sure, performance is sometimes an issue. If you are regularly reading and writing tens of millions of rows, you probably don’t want to use plain text. But in most of our use cases, a data product is read and written maybe a couple times a day by its developer and then shared with several users who read it once or twice. It is more important to facilitate sharing and discovery than to save some bytes. And you can always zip of gzip. (Never rar or 7z or the like. Do you really expect me to install an app just to read your data?)

![](https://thepracticaldev.s3.amazonaws.com/i/ni9gxpezx7dpno6wjfdx.jpeg)

Besides size (big) and speed (slow), there are three issues with CSV files:

1. No standard definition. Should all strings be encapsulated in quotes? What happens to quotes inside quotes? Never write your own csv parser. There will be [special cases](https://chriswarrick.com/blog/2017/04/07/csv-is-not-a-standard/) you didn’t think of. Use a standard library like [Python3 csv](https://docs.python.org/3/library/csv.html) or [pandas](https://pandas.pydata.org/).
2. Character encoding. As with all plain text files, you have to realize there is no such thing as plain text. Your file is just a sequence of bytes, and you have to tell your computer [what your bytes mean](https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/). In our daily work, conversion to UTF-8 is the first order of business.
3. No schema. This is a big headache. Is this column a string? A date? I am constantly struggling with leading zeros and weird date formats. (But I would struggle with these in a proprietary data format, too. Date/time functions are impossible to remember in any programming language.) I have played around with schema validation in [Cerberus](http://docs.python-cerberus.org/en/stable/) and it looks cool, but we haven’t adopted anything formal yet.

So why am I a big fan of plain text data despite all these problems? I believe portability and ease of exploration beats a tight schema-conforming database any time. (Mind you, I am not working in a bank. Or health care.) See your data for what it is and play with it.
Why writing everyday?
Tags: career, discuss, writing
Published: 2019-03-01 20:24:14

---
title: Why writing everyday?
published: true
description: I’m writing this post (day 13) to remind myself why am I writing everyday and maybe, hopefully I get to convince you to do so.
tags: #career #discuss #writing
---

I’m writing this post (day 13) to remind myself why am I writing everyday and maybe, hopefully I get to convince you to do so.

It’s not my idea actually. I’ve been *brainwashed* by the one and only Seth Godin who really encouraged me, in his videos and his amazing podcast called [Akimbo](http://akimbo.link) to do something everyday even if it sucks. So here are the reasons why am I writing everyday:

Getting naked

Getting vulnerable is one of the most important things when writing. Letting people inside my head can be pretty uncomfortable because we fear their judgement. So we do it anyway, and we dance with that fear of judgement. I was trying to keep a good image of myself, not revealing my weaknesses but when writing, my weaknesses are going to show up and that’s okay.

The perfect article

I was never going to write the perfect article. Promising myself that I will be writing blog posts about some topics wouldn’t be happening if I kept waiting for writing the really good article or the perfect one.

Organizing thoughts

It’s incredible how thoughts can be so clear if you write them down. Some of the conversations are smoother because I’ve already laid out the ideas that I want to share and explain. A friend told me: “that’s cool but why would you put them online? You can just take notes”. But why wouldn’t I? it’s a perfect way to share my knowledge and story with the world. I believe there are some genuine people out there who will empathize and relate with I’m writing and there are people who will be directed even a little a bit of what I’m writing.

Sharing knowledge as going on a journey

I’m not positioning myself as an expert, not yet, not soon. Instead, I’m giving people like me an opportunity to walk with me my journey. I’ll be teaching what I’ve learnt and if I make a mistake, I won’t be hiding it, I’ll show you how I did it and how I solved the problem if I did. People who will relate to me may find some value in what I write, if not, it’s here anyway, even it won’t be seen, it’s okay.

It feels good

It feels good because I’m not lying, I’m exposing some mistakes I’ve done and I’m sharing who I really am without any makeup or even any clothes. It feels good because I’m dancing with my fear, not escaping from it. It feels good because I’m giving myself permission to mess up and make mistakes.
So, how does your solution compare to…
Tags: devrel
Published: 2019-03-05 15:03:30

---
title: So, how does your solution compare to…
published: true
tags: DevRel, DeveloperRelations
canonical_url: https://maxkatz.org/2019/03/01/so-how-does-your-solution-compare-to/
cover_image: https://thepracticaldev.s3.amazonaws.com/i/6hiaos76emznievlfk9r.jpg
---

If you have been doing Developer Advocacy for some time, it’s very likely you heard this question:

"_So, how does your solution compare to insert_competitor_solution_"

This is probably not a question of if (if someone will ask but) but a question of when. This question can be asked at a conference, meetup, workshop, an online forum or even just via email.

There is no right or wrong answer here – as usually in developer advocacy. I want to share some guidelines I shared with my team on how to respond to this question.

Unless you have a deep knowledge of the competitor’s solution and can offer a constructive comparison, don’t offer a comparison. With so many different frameworks, libraries, tools, clouds – it’s not easy to have a strong understanding of how competitor’s products work.

Never bash the competition. It doesn’t make you look good and most likely damages your credibility, reputation and your company’s. It also damages any goodwill you had with the community. It shows weakness.

Here is one example what you could say:

"_Solution X from company Y is a good solution but because I’m from company Z, I’m most familiar with our solution. You should try both solutions and see which one is a better fit for your particular problem.  I’m here to help you. I will guide you and answer any questions you have about our solution. I will show you how it solves your problem._"

Here is another approach (can be easily combined with above):

"_Solution X from company Y is a good solution but because I’m from company Z, I’m most familiar with our solution. Here is how our solution works [short explanation how it solves a particular problem] and these are the benefits [go over the main benefits, not features]. And here is a great resource [tutorial/how-to/video] to help you get started._"

Say something positive about the competition (let’s face it, competition is essential) and then move on to talk about value and benefits your solution provides.

There is more than one way to answer this question. I hope this short blog post gives a template that you can customize for your unique situation.

_Photo by [Bao Truong](https://unsplash.com/photos/hYrnz92-bpY?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/competition?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_
🆕 Jekyll Rest
Tags: ruby, jekyll, opensource
Published: 2019-03-04 14:15:39

---
title: 🆕 Jekyll Rest
published: true
tags: [ruby, Jekyll, oss]
canonical_url: https://github.com/scottwater/jekyll_rest
---

[Jekyll Rest](https://smw.fyi/4C)

If you use Jekyll, I wrote a little API to help with automation. I am still working on some more details. In the meantime, I would love to hear what you think about it.
Should hooks always return an array? 
Tags: gatsby, discuss, react
Published: 2019-03-01 19:25:53

Looking at gatsby's [`useStaticQuery`](https://www.gatsbyjs.org/docs/use-static-query/), it just returns an object where I would expect it to return an array. I've been using urqls [`useQuery`](https://github.com/FormidableLabs/urql/blob/master/docs/getting-started.md#using-hooks) lately and it returns and array with the result in the first spot of the array. 


Is this just a preference or should this be a convention our libraries should follow?
Using Codeship with .Net Core
Tags: dotnet, codeship, devops, ci
Published: 2019-03-01 19:11:30

---
title: Using Codeship with .Net Core
published: true
description: On a quest for free stickers, I found a cool tool.
tags: dotnet, codeship, devops, ci
---

On a [quest for free stickers](https://dev.to/m1guelpf/the-ultimate-sticker-list-for-developers-4e56), I gave [Codeship](https://codeship.com/) a try this morning.

Maybe someday I'll do a full review of the application, but on a cursory glance it's pretty cool. Instead of being forced into working with `yaml` files everywhere, they provide an option where you can just throw in a set of commands and have them run. 

With that platform, I was able to take a simple repo I had in GitHub and build it without having to think about containers.

Here's the script I used:

```console
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-2.2
dotnet build
```

Simply put, this pulls in the .Net SDK and installs it so you can run commands like `dotnet build` and/or `dotnet test`. I can't help but imagine there are better ways to go about solving this problem, but to go from no pipeline to running in a couple of minutes was pretty cool.

I don't know how much of a desire there is to run .Net Core apps in Codeship right now, but I figured since I didn't see a solution right off it would be worth sharing.

Now I just need to figure out how to use it more so I can get those stickers...
TIL about automatically bumping NPM versions
Tags: npm, productivity, todayilearned
Published: 2019-03-01 19:08:14

---
title: TIL about automatically bumping NPM versions
published: true
description: bump your versions with npm-check-updates
tags: npm, productivity, til
---

Do you need to update a bunch of packages? Do they all have a similar scope* or name? 

`npm-check-updates` checks the packages listed in your package.json file, and prints out a list of the packages that can be updated to the latest version.

To install:
```
npm install -g npm-check-updates
```
Then, run it in your project folder:
```
ncu 
```
You’ll get some output that looks a little something like this: 
![sample output from npm-check-updates](https://thepracticaldev.s3.amazonaws.com/i/cj8dzofzcldlaeuki1ka.png)

If you want it to automatically bump the versions in your package.json file you can pass in the update parameter:
```
ncu -u
```
You can also run it with a regex string if you are just curious about a certain scope or package:
```
ncu '/^@npm.*$/' -u
```
Remember to run `npm install` afterwards to actually install the packages since npm-check-updates will just update your `package.json` file.

Presto-chango you've just saved yourself some seriously tedious file changes!

---

*PS: [scopes in npm](https://docs.npmjs.com/about-scopes) are useful if you need to group packages by your organization.  In the following example “npm” is the scope.
```
@npm/package-name
```
---

This post was originally published on [my blog](https://erinbush.postach.io/post/til-about-npm-check-updates)
How to Ask the Right Questions as a New/Junior Developer
Tags: beginners, career, discuss
Published: 2019-03-01 17:53:56

---
title: How to Ask the Right Questions as a New/Junior Developer
published: true
description: 
tags: beginners, career, discuss
---

When you first start working as a developer, it can be a bit daunting to learn about the way things work among your fellow co-workers. As a junior developer, you probably feel and don’t want to burden the more senior developers with stupid or mundane questions. And as a senior developer, you probably don’t want to just spoonfeed them the answer and want them to learn.

When I first started, I used to simply say things like this. “Hey, I don’t know how to do this, can you help me?”

Then it slowly evolved to something like this. “Hey, I’m not sure how to do this and I have tried doing [stuff], what do you propose I should do?”

It might not be a big difference, but the first question acts as if you want them to solve your problems. The second question shows that you are being proactive and a lot more motivated.

Let’s discuss! Senior developers, what do you expect from new/junior developers when they ask questions?
User Deletion vs. User Retention
Tags: discuss, opinion, features
Published: 2019-03-01 17:46:41

---
title: User Deletion vs. User Retention
published: true
description: Opinionated piece on letting a user delete their account on your app
tags: discuss, opinion, features
---

I was having a weekly call with a startup I'm currently working with and the co-founders shared an interesting point of view and I wanted to know if others felt the same way.

We were going over features for the next sprint, and one of the features they mentioned was content deletion. Meaning, as a user, I should be able to delete my own content along with anything associated with it (likes, comments, reposts, etc.).

I agree it's needed if we want users to maintain ownership of their work, but I also took it a step further and wanted to include user deletion. Meaning, as a user, I should be able to delete my account (and anything associated with it) if I no longer want to be on the platform. Pretty straight forward, right?

So I was a bit confused when I got push back with the main concern being, in short, "we want to keep our users so if anything we should only allow deactivation in case they change their mind, not complete deletion".

Now I've worked with startups in the past that have written internal viruses almost to ensure they scrub user data, and any associations to the user, from their systems if a user requested to be removed- no questions asked.

But after seeing the other end of the spectrum where organizations solely care for user numbers as opposed to churn rates or user activity, I'm a bit uneasy.

Maybe I'm just being a privacy freak who de-authorizes apps linked to my gmail account when I'm not using them anymore, so I assume everyone would want the ability to delete their account if/when the time comes.

What are your opinions? Should platforms that require user sign also have a delete account feature by default? Yay? Nay?

P.S. Cheers for my first dev post! :)
🏫 DotFiles & White Space
Tags: vim, dotfiles
Published: 2019-03-01 17:22:02

---
title: 🏫 DotFiles & White Space
published: true
tags: [vim,dotfiles]
canonical_url: https://scottw.com/s7x
---

I could spend hours reading dotfiles. I always learn something new.

Highlight trailing white space in vim via https://smw.fyi/48

```shell
set list listchars=trail:.,tab:>.
highlight SpecialKey ctermfg=DarkGrey ctermbg=Black
```
Authentication system with the MERN Stack
Tags: react, javascript, help
Published: 2019-03-01 15:53:37

---
title: Authentication system with the MERN Stack
published: true
description: 
tags: #react,#javascript,#help
---

<h2> A very strange night </h2>

<p> Yesterday at night i decided to build the auth system for the application that im currently working on, in order to complete this task i watched some videos regarding this particular topic and based on the git hub repository of this instructor i was able to build up half of the auth system, meaning that i developed only the backend </p>

<p> Now, even tho my backend is working with this auth system just fine i found myself in the situation where i did not understood almost all of it, i dont really know why this thing that i build up works! </p>

<p> So as you can tell, that night was very strange </p>

<h2> What are the pieces that comforms my auth system? </h2>

Well that i know of course, i used **mongoDB**, **mongoose**, **passport**, **bcrypt**, **jwt**, and i think thats all of them.

<h2> Help me out? </h2>
So i was wondering if by any chance, one of you guys have a book or a reference to a good post, or maybe a good documentation, a video, something that might help me understand a little bit more about how the auth system works on **nodeJS**, and what is a JWT token, what does it really do.

Watching those video series helped me a little bit but i still dont get most of it.

Thanks.
Around the Web – 20190301
Tags: blog
Published: 2019-04-10 13:43:45

---
title: Around the Web – 20190301
published: true
tags: Blog
canonical_url: https://wipdeveloper.com/around-the-web-20190301/
cover_image: https://wipdeveloper.com/wp-content/uploads/2017/07/WIPDeveloper.com-logo-black-with-white-background.png
series: Around the Web
---

And now for somethings to read (or watch) over the weekend, if you have some spare time that is.

## [207: All Purpose Nerd](https://www.gooddaysirpodcast.com/podcast/2019/2/27/207-all-purpose-nerd)

**Good Day, Sir! Show – Salesforce Podcast**  – / John De Santiago – Feb 27, 6:05 PM – In this episode, we discuss getting enough sleep and staying active, building a community on platform vs. custom, lightning development, experienced gained developing on Salesforce, and Aura archiving March 2019.

## [Salesforce Developer Week 2019: Lightning Web Components](http://www.mobilecaddy.net/mobilecaddy-recaps-salesforce-developer-week-2019-lightning-web-components/)

**MobileCaddy Stage**  – Robbie Westacott – Mar 1, 2:28 AM – At the end of last month, Salesforce hosted the latest in a long line of global events for its vast and ever-growing community. Developer Week 2019 provided a chance for Salesforce Community User Groups around the world to learn about the newly…

## [The Expanse (Show)](https://www.amazon.com/gp/product/B018BZ3WVE/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=wipdevelope05-20&creative=9325&linkCode=as2&creativeASIN=B018BZ3WVE&linkId=db3dab824c4aa056470a759056c03b20)

The disappearance of rich-girl-turned-political-activist Julie Mao links the lives of Ceres detective Joe Miller (Thomas Jane), accidental ship captain James Holden (Steven Strait) and U.N. politician Chrisjen Avasarala (Shohreh Aghdashloo). Amidst political tension between Earth, Mars and the Belt, they…

## [Perspectives on Lightning Components: AURA vs LWC vs W3C](https://www.linkedin.com/pulse/perspectives-lightning-components-aura-vs-lwc-w3c-don-robins/)

**LinkedIn: Log In or Sign Up**  – Mar 2 – Unless you’ve been on an extended holiday vacation, with your devices offline and your head deliberately down in the sand rather than up in the Salesforce cloud, you most likely have been keeping up with all the hot news around the Lightning Web…

## Till Next Week

Want to share something? Let me know by leaving a comment below or emailing [brett@wipdeveloper.com](mailto:brett@wipdeveloper.com)  or following and tell me on [Twitter/BrettMN](https://twitter.com/BrettMN).

Don’t forget to sign up for **[The Weekly Stand-Up!](https://wipdeveloper.com/newsletter/)** to receive free the [WIPDeveloper.com](https://wipdeveloper.com/) weekly newsletter every Sunday!

The post [Around the Web – 20190301](https://wipdeveloper.com/around-the-web-20190301/) appeared first on [WIPDeveloper.com](https://wipdeveloper.com).