teleren/devto huggingface dataset:
Publishing your dev.to blog posts to diff.blog
Tags: productivity, beginners, webdev, writing
Published: 2019-07-09 16:35:45


diff.blog is an aggregator of developer and engineering blogs. I built it after I was having a hard time finding good developer blogs to follow. diff.blog makes it super easy to find and follow amazing developer blogs from all over the internet. 

If you have not yet included your dev.to blog to diff.blog now is the perfect time. Adding your blog to diff.blog is pretty simple and hardly takes a minute.

* Go to https://diff.blog and create your account

* Go to blog settings by opening https://diff.blog/account/settings/blog/

* Now enter this url in the input box.
  `https://dev.to/feed/<username>`
  Make sure to replace your `<username>` with your dev.to username

  ![](https://thepracticaldev.s3.amazonaws.com/i/fk7a7q3n2nqvsajaoq7y.png)

* Finally click the save button.

:tada: Congrats. You have added your blog to https://diff.blog. New blog posts would appear on diff.blog as you publish them on dev.to. If you have any questions ask me in the comment section. To learn more about diff.blog visit https://diff.blog/FAQ/
Should I keep Go in my tool box?
Tags: go, rust, javascript, discuss
Published: 2019-07-09 16:29:49

---
title: Should I keep Go in my tool box?
published: true
description: 
tags: go, rust, javascript, discuss
---

In any given day I may write C, JavaScript/TypeScript, Rust and Go... Due to my job, Rust and C are a must. And if you do anything with a web frontend, then JavaScript is a must. While I have a few applications that use Go on the backend, I'm struggling to find a reason to keep it that way. Seems to me Rust is catching up in terms of developer productivity when developing backend services, and JavaScript is fully capable of this as well with Node.

Given all my Go apps use SQLite, and need Cgo I don't even really take advantage of Go's killer feature - static binaries that can be cross compiled to any other OS/architecture.
What does it mean to you when people say "Coding is hard"? 
Tags: hard, beginners, programming
Published: 2019-07-09 16:26:44

---
title:  What does it mean to you when people say "Coding is hard"? 
published: true
description: 
tags: #hard, #beginner, #programming
---
  On Twitter, on this site, at bootcamps and just about everywhere that programming exists, you’ll find those who say "coding is hard". Allow me to add my two cents - coding is hard! I imagine it’s hard to different people for different reasons but surely there are areas of it we can all agree are difficult. 

  It’s certainly not natural for us humans to speak the 10100100 language. And yes, the code we write is abstracted away from binary so much, but it’s still a lot to wrap our human brains around! 

![Coral reef](https://images.unsplash.com/photo-1561990987-1ca4e39a4896?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1973&q=80) <figcaption>Brain coral</figcaption>

  Making sense of languages and syntax becomes easier with countless hours of practice but for myself the **logic** involved in programming is most challenging. Of course, logic is what makes up the fabric of programming. But as with most things, I constantly remind myself that it's a muscle that must be consistently exercised.

  Logic is the first thing that comes to mind when I hear someone say ‘coding is hard’. What comes to mind after logic is **creativity**. 

  What I mean by this is, _thinking_ of things to build. Starting with a blank canvas. There are many resources online to help with project ideas, but breaking away from 😖 tutorial hell 🤯 and starting something completely original can be a beginner's biggest challenge.

I know I'm far from being alone in regards to what is difficult as a new or even seasoned developer. I'm curious though, what comes to mind when you hear someone say "programming is hard"?
Do you know proxy in javascript?
Tags: beginners, webdev, career, javascript
Published: 2019-07-09 16:13:41

---
title: Do you know proxy in javascript?
published: true
description: 
tags: #beginners #webdev #career #javascript
---

Proxy seems to be a less famous javascript feature and but it holds a lot of power if implemented.

We can use it for validation, value correction, tracing property accesses, warning about unknown properties, negative Array indices, data binding, accessing a restful web service (method calls), revocable references, monitoring async functions, type checking and much more.

Here is a link of good read - https://overflowjs.com/posts/Proxy-In-Javascript-2019

Have a nice read!
An invitation to listen to Maintainable Software Podcast
Tags: technicaldebt, softwaredevelopment, agile, legacycode
Published: 2019-07-09 15:50:19

---
title: An invitation to listen to Maintainable Software Podcast
published: true
description: Have you had a chance to listen to Maintainable, yet?
tags: technical debt, software development, agile, legacy code
---

Around a year ago, I was chatting with a good friend about an idea I had for a podcast. Over the last several years, I've learned that I've become really focused on improving existing software over building something new. 

I'm not [a maker](https://medium.com/@robbyrussell/herzogs-cave-of-forgotten-code-432f73cf1903). That is somewhat true, I prefer to spend more of my time improving something than making something from scratch.

The concept for the [Maintainable podcast](https://maintainable.fm) was to challenge myself with finding a diverse collection of experienced professionals from our industry--and to hear their stories about how they played a part in improving existing software. 

While we, as an industry, are creating a ton of new things -- we also need to be focused on making the existing things better today than we found them yesterday. We don't need to label this as "legacy code"--it's just code. 

As of today, my team has helped me publish 13 episodes (with several more on the way). I've had an opportunity to speak with people like:

* [Charity Majors](https://maintainable.fm/episodes/charity-majors-deploys-are-just-the) of Honeycomb who thinks we need to spend more time "testing" in production.
* [Eileen M. Uchitelle](https://maintainable.fm/episodes/eileen-uchitelle-upgrading-ruby-on-rails) of GitHub on how to tackle a large Ruby on Rails upgrade.
* [Matt Weagle](https://maintainable.fm/episodes/matt-weagle-what-will-it-enable-us-to-do-in-the-future), Engineering Manager at Lyft on coaching developers on how to better discuss technical debt
* [Coraline Ada Ehmke](https://maintainable.fm/episodes/coraline-ada-ehmke-the-role-of-empathy-in-engineering-teams), Principal Engineer at Stitch Fix on the role of empathy in the workplace
* [Pim Elshoff](https://maintainable.fm/episodes/pim-elshoff-refactoring-how-engineers-c) a software developer at Procurious about communication tactics within technical teams
* ...and several other people that I have learned a lot from.

Have you heard any of the episodes yet? (and find value in it?) If so, it would mean the world to me if you could take a moment to [add a rating on Apple Podcasts](https://podcasts.apple.com/us/podcast/maintainable/id1459893010). 😊

if you haven't, I invite you to listen to an episode or two at [Maintainable.fm](https://maintainable.fm/).
Goでローカルのタイムゾーンを設定する
Tags: go
Published: 2019-07-09 15:48:00

---
title: Goでローカルのタイムゾーンを設定する
published: true
tags: Go
date: 20190709T15:48Z
canonical_url: https://qiita.com/shiena/items/dee4d10947bebb7e92d4
---
Goでタイムゾーンを変えたい場合は[func (Time) In](http://golang.org/pkg/time/#Time.In)を使います。

```go
package main

import "time"

const location = "Asia/Tokyo"

func main() {
    loc, err := time.LoadLocation(location)
    if err != nil {
        loc = time.FixedZone(location, 9*60*60)
    }
    now := time.Now().In(loc)
}
```

このようにタイムゾーンを変更したい処理が一箇所ならいいのですが、複数あると面倒な上に変更漏れがあるとバグの原因を見付けるのが大変です。そんな時は`time.Local`でローカルのタイムゾーンを変更してしまいます。

http://golang.org/pkg/time/#Location
> ```go
var Local *Location = &localLoc
```
> Local represents the system's local time zone. 

```go
package main

import "time"

const location = "Asia/Tokyo"

func init() {
    loc, err := time.LoadLocation(location)
    if err != nil {
        loc = time.FixedZone(location, 9*60*60)
    }
    time.Local = loc
}

func main() {
    now := time.Now()
}
```

ただし、[time.Timeから日付だけを取り出す](http://qiita.com/umisama/items/b50df4888665fc36346e)で指摘されているように[func (Time) Truncate](http://golang.org/pkg/time/#Time.Truncate)はタイムゾーンが考慮されていません。他にも同様のメソッドがあるかもしれませんので、時間が正しい事の確認は確実に行ってください。
🎩 JavaScript Enhanced SCSS mixins! 🎩 - CSS element() function polyfill
Tags: css, sass, javascript, codepen
Published: 2019-07-09 15:28:53

I was sad to see that its been 8yrs and only Firefox supports css element().

Fortunately with the help of some clever scss and css variables. I have been able to implement a polyfill. There are some limitations and I would not call it performant but its not the worst I have ever seen.

I will see if I can get a better version working with the Paint Api.

{% codepen https://codepen.io/acronamy/pen/VJqaBj %}

You might be thinking, this is useless?

well compositing live blur effects would be fairly simple using this approach, something I have sort of done before in other pens but not as elegantly as this.
Discontinued CMS
Tags: tutorials
Published: 2019-10-21 08:22:36

---
title: Discontinued CMS
published: true
tags: Tutorials
canonical_url: https://vuild.com/discontinued-cms
---

Given just how many content management systems there are out there, this list is mighty small. However, as content trends continue to move towards video, this list may grow considerably. Or not. Now go look at something useful, like our huge [list of places you can actually manage your content](https://dev.to/vuild/giant-list-of-cms-219h).

[Download as PDF](https://vuild.com/cms?pdf=1)
1. Apache Lenya
2. AxKit
3. Jakarta Slide
4. Mambo
5. MiaCMS
6. RadPHP
7. SMW+
Let us know if we missed any dead content management systems.

This data is from [Vuild’s list of content management systems](https://dev.to/vuild/giant-list-of-cms-219h). Please visit [vuild.com](https://vuild.com) for more.
Precis: A Minimal Note-taking Web-app
Tags: showdev, opensource, github
Published: 2019-07-09 15:13:51

[Precis](https://abhin4v.github.io/precis/) is a minimal note taking web-app built over Github Pages.

![](https://thepracticaldev.s3.amazonaws.com/i/twvkimih7uu1sbrrnd6g.png)
My Git tips for a better life in your console
Tags: bash, development, git
Published: 2019-07-10 13:06:03

---
title: My Git tips for a better life in your console
published: true
tags: Bash,Development,git
canonical_url: https://daniele.tech/2019/07/my-git-tips-for-a-better-life-in-your-console/
---

My daily Git life with commands and alias!

The post [My Git tips for a better life in your console](https://daniele.tech/2019/07/my-git-tips-for-a-better-life-in-your-console/) appeared first on [Daniele Mte90 Scasciafratte](https://daniele.tech/eng).
Requirements workflow
Tags: discuss, workflow
Published: 2019-07-09 14:43:36

---
title: Requirements workflow
published: true
description: What do you people use to gather and track requirements
tags: discuss, workflow
---

Hello everyone,
I'm always working to improve the requirements tools that me and my coworkers use to gather and track needs from users. I have freedom to choose one tool or another. So I was wondering what people here uses, if you chose a tool or not, and what would you use if you could choose a tool or several tools today.
Saludos,
Welcome Thread - v35
Tags: welcome
Published: 2019-07-09 14:41:20

---
title: Welcome Thread - v35
published: true
description: Introduce yourself to the community!
tags: welcome
---

![Moonmin says hello from a cloud](https://media.giphy.com/media/HgycnYQCMeJXO/giphy.gif)

### Welcome!

1. Leave a comment below to introduce yourself! You can talk about what brought you here, what you're learning, or just a fun fact about yourself.

2. Reply to someone's comment, either with a question or just a hello. 👋 

**Great to have you in the community!**
Always Read the Comments
Tags: career, product, feedback
Published: 2019-07-09 14:11:43

"Never read the comments" is a familiar maxim told to technologists building products.

It makes sense, right? Users typically only leave feedback after they've either had an extremely poor experience or a positive one.

However, there is value in reading online comments if you frame them correctly.

## Identify New Product Champions

Building a strong relationship with individuals who are passionate promoters of your products is a crucial strategy for growing a business. You can often find them in the comments! Look beyond traditional "comment boxes" to social media, forums, Slack groups - any online space where communities gather. They're the ones answering questions about your products, sharing your content, and seeking you out at conferences.

Once you've identified them, many opportunities arise. Praise their contributions publicly to the community. Send them swag. Give them early access to new products.

Any effort you put into supporting them will come back to you tenfold.

## Gain Product Insights

Ignoring blatantly toxic comments, you'll unveil new insights. Negative comments are often an expression of frustration: the person wants your product to succeed, but is running into issues, and so is reacting _in the moment_.

The key here is to look beyond the anger. Put yourself in the commenter's shoes: what are they trying to tell you? This approach has led me to identify lots of gaps in products from each of the companies I've worked at.

## Improve Your Ability to Receive Feedback

Due to their anonymous nature, online comments can be some of the nastiest feedback you'll ever receive. However, learning to stomach it is a low friction way to build mental toughness. The ability to shrug off negative feedback is highly valuable for personal and professional growth.

In an ideal world, everyone would be respectful at all times. The reality is that this will never be the case. Of course, if you find yourself overwhelmed by a particularly nasty comment, take a break and move on.

---

Go back to some of your product's online feedback. What new insights will you gain?
Released Sub::Meta that handles function meta information in Perl 5
Tags: perl, perl5
Published: 2019-07-09 14:05:28

---
title: Released Sub::Meta that handles function meta information in Perl 5
published: true
description: 
tags: perl, perl5
---

[Sub::Meta - handle subroutine meta information - metacpan.org](https://metacpan.org/pod/Sub::Meta)

`Sub::Meta` is a module to handle meta information such as subroutine names and subroutine input/output.
There are similar modules such as `Sub::Identify`,`Sub::Util` and `Sub::Info`, but write` Sub::Meta` because it can not handle the meta information of the input/output of the subroutine.

The basic usage is as follows.
You can get meta information based on the code reference:
```perl
use Sub::Meta;

sub hello($) :mehtod { }
my $meta = Sub::Meta->new(sub => \&hello);
$meta->subname;     # hello
$meta->sub;         # \&hello
$meta->subname;     # hello
$meta->fullname;    # main::hello
$meta->stashname;   # main
$meta->file;        # path/to/file.pl
$meta->line;        # 5
$meta->is_constant; # !!0
$meta->prototype;   # $
$meta->attribute;   # ['method']
```

You can also handle meta information without passing a code reference:
```perl
my $meta = Sub::Meta->new(subname => 'foo');
$meta->subname; # foo
```

Function input/output meta information can be added:
```perl
# INPUT
my $parameters = Sub::Meta::Parameters->new(
  args => [
    { name => '$a', type => 'Int' },
    { name => '$b', type => 'Int'},
  ],
  nshift => 1,
);

$meta->set_parameters($paramters);
$meta->parameters->args;
# [
# Sub::Meta::Param->new({ name => '$a', type => 'Int' }),
# Sub::Meta::Param->new({ name => '$b', type => 'Int' })
# ]

# OUTPUT
my $returns = Sub::Meta::Returns->new(
  scalar => 'Int',
  list   => 'Int',
);
$meta->set_returns($returns);
$meta->returns->scalar; # 'Int'

```

Let's dig into the motivations for working with function input and output meta information.

Perl5 has many modules that validate function input, such as `Params::Validate`,`Data::Validator`, `Smart::Args`,`Function::Parameters`, `Type::Params`, etc.

Each module has different usability, I thought it was somewhat stressful.
Also, I wanted to do Static analysis because I was annotating the types.

Therefore, I thought that if there is an object that handles meta information of the input of the function, it will be easier to handle in a unified I/F.

The same is true for function output.

Also, when trying to express a Java-like Interface in Perl5 such as `Function::Interface`, it is useful if the input/output of functions is easy to handle. 

The current `F::I` is sticky in the `Function::Parameters` and `Function::Return` implementations, and I thought that it could not handle many applications and lacked flexibility.

That's why I created `Sub::Meta` that can handle meta information including function input and output. I'm glad to try it if it is good! That's all!
🤖 Repeat tests. Repeat tests. Repeat tests.
Tags: node, javascript, testing
Published: 2019-07-09 14:03:23

---
title: 🤖 Repeat tests. Repeat tests. Repeat tests.
published: true
description: 🤖 Repeat tests. Repeat tests. Repeat tests.
tags: [nodejs, javascript, testing]
---

<img src="https://raw.githubusercontent.com/ehmicky/design/master/test-each/test-each.svg?sanitize=true" width="500"/>

[`test-each`](https://github.com/ehmicky/test-each) is a Node.js library to repeat tests using different inputs ([Data-Driven Testing](https://en.wikipedia.org/wiki/Data-driven_testing)):

- test runner independent: works with your current setup
- generates test titles that are descriptive, unique, for any JavaScript type (not just JSON)
- loops over every possible combination of inputs (cartesian product)
- can use random functions (fuzz testing)
- snapshot testing friendly
Kick CircleCI from Slack command + Google Apps Script
Tags: javascript, gas
Published: 2019-07-09 14:02:02

---
title: Kick CircleCI from Slack command + Google Apps Script
published: true
description: 
tags: javascript, gas
---

I've automated app deployment with CircleCI + Slack + Google Apps Script.

1. Create slack bot

2. Get Slack Webhook token

3. Create CircleCI Job

4. Get CircleCI Token

5. Create Google Apps Script:

```javascript
const GITHUB_REPO = 'account/repo'
const CIRCLE_TOKEN = '***'
const SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/***/***/***'

function doPost(e) {
  const branch = e.parameters.text[0];

  _deployToCircle('deploy', branch);

  return ContentService.createTextOutput('ok');
}

function _deployToCircle(circleJob, branch) {
  const url = 'https://circleci.com/api/v1.1/project/' + GITHUB_REPO + 'tree/' + branch + '?circle-token=' + CIRCLE_TOKEN;
  const payload = {
    build_parameters: {
      CIRCLE_JOB: circleJob,
      STAGING: 'true', // additional params
    }
  }
  const circleRes = UrlFetchApp.fetch(url, {
    method: 'post',
    muteHttpExceptions: true,
    contentType: 'application/json',
    payload: JSON.stringify(payload),
  });
  Logger.log(circleRes.getResponseCode());
  Logger.log(circleRes.getContent());

  const message = 'branch deploy start: ' + branch + '\nCircleCI response: ' + circleRes.getResponseCode()

  const slackRes = UrlFetchApp.fetch(SLACK_WEBHOOK_URL, {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify({ text: message }),
  });
  Logger.log(JSON.stringify(slackRes));
}

function doPostTest() {
  doPost({
    parameters: {
      text: ['branch_name_to_deploy'],
    }
  })
}
```

6. Set Slack command to kick the Google Apps Script
Neo4j & SSIS
Tags: neo4j, ssis
Published: 2020-02-19 09:33:10

---
title: Neo4j & SSIS
published: true
date: 2019-07-09 13:53:43 UTC
tags: Neo4j,SSIS
canonical_url: 
---

Neo4j and SSIS are awkward bedfellows – SSIS is Microsoft and has connectors to a plethora of database and technologies using ODBC, Web etc, and Neo4j is written in Java which provides a JDBC connection. SSIS however, does _not_ work with JDBC.

#badtimes

Some of the clients I’ve worked with like using SSIS – (some don’t), and value their 20+ years of using a piece of technology, and want to leverage it with new technologies. Nothing says _expensive_ like having to learn a new database _and_ a new ETL tool.

So today I’d like to introduce you to the beta (maybe alpha) version of the Neo4j Connector for SSIS. It uses **bolt** to securely connect to your Neo4j instance and call Cypher against it.

Version 1 beta features:

- Neo4j Connection Manager – manages the connection to the database, and securely _encrypts_ your password (and that is _actual_ encryption) making it safe for you to store. 

![](https://xclave.co.uk/wp-content/uploads/2019/07/image-2.png)

- Execute Cypher Task – Allows you to execute a piece of Cypher on a Neo4j instance as part of a Control Flow

![](https://xclave.co.uk/wp-content/uploads/2019/07/image.png)

- Execute Cypher Destination – Allows you to execute Cypher against a Neo4j instance as part of a Data Flow

![](https://xclave.co.uk/wp-content/uploads/2019/07/image-1-1024x468.png)

- Both the above pictures show the basic syntax highlighting as well
- Works with SSIS 2016, 2017 and 2019 (CTP 3)

Do you want to try it? You need the appropriate installer, there are 6 flavours (6!!), if you’re installing on a Server – you’ll probably want the x64 version of the Server version. What? I know – not that clear. If you’re installing on a SQL Server 2016 instance, use the SQL 2016 x64 installer.

To use on a local designer (VS 2017 or 2019) you’ll want the x86 SQL 2017 version – As the integration services addin for VS 2019 still uses the 2017 install locations.

Please go to here: [http://anabranch.co.uk/Projects/Neo4jSsis](http://anabranch.co.uk/Projects/Neo4jSsis) to get a link via email!

Give me feedback and I’ll put more posts up on how to use some of the features shortly!