teleren/devto huggingface dataset:
When to Call it Quits on a Project: Stepping Back and Taking a Break
Tags: webdev, development, learning, frontend
Published: 2018-03-29 20:43:05

---
title: When to Call it Quits on a Project: Stepping Back and Taking a Break
published: true
description: Abandoning a project isn't a bad thing, sometimes it's necessary
tags: webdev, development, learning, frontend
---

I was trying to make a Pomodoro timer for the [Scotch.io Challenge #6](https://scotch.io/tutorials/code-challenge-6-build-a-pomodoro-timer) using a framework I had just started learning, Angular. It was going pretty well at first. I had replicated the desired design look. I'd setup the components and just needed to create the javascript to make the timer actually countdown from a given time. This is where it took a sharp downturn.

## Problem Strikes
I just couldn't get the timer to countdown no matter what I tried, I felt I had a good game plan. I thought I knew the steps to make this work and it would be no problem. It did not work out that way at all. I spent a few hours trying to lookup any examples of people who'd done something similar, to no avail. None of the examples where using the setup I had of using Angular CLI. They were all using a setup that relied on $scope and I didn't know anything about that or how it related to my setup. 

I'm a pretty determined person so I spent a good part of my night trying to break this "problem hump". Thinking if I just pushed enough everything would click into place and it would all make sense. That's usually how it works for me, I do research and trial & error and then things works. I kind of figure out what I needed to do and then it's something I've learned.

## Calling it Quits
It was getting close to 3am. I was super tired and very angry, at myself. I wanted so badly to do this, I thought that I'm better than this I can make it work. That wasn't actually fair or true. It had nothing to do with my abilities in the sense of I'm a failure but more that I'm really new at this. Why should I be expected to know everything about a framework I just started using not even a month ago. Once I realized that I thought it was silly to push myself to learn everything about Angular in the wee hours of the morning.

I didn't want to but I put this project, making a Pomodoro Timer with Angular, on the backburner. I made it in [Vue](https://codepen.io/Vpugh/pen/GxmmwO) and don't regret that. That's a framework I've had a few more months experience with and I feel really comfortable in. Took about two days but I got it working and fleshed it out into a full functional Pomodoro Timer.

## End Result
I would have never gotten that far if I was too upset about my Angular project and called it quits. I know when I have more experience in using Angular and have a better handle of how it works I will come back and finish that project. There is not doubt in my mind.

Sometimes you need to give up and come back later. If you don't know why it's not working or you feel your missing something, step back and get a different perspective. There is no shame in not having enough experience. Just don't give up and you can always come back later.
Changelog: Customized emails to catch folks up on posts they might not want to miss
Tags: changelog, meta
Published: 2018-03-29 19:08:12

---
title: Changelog: Customized emails to catch folks up on posts they might not want to miss
published: true
description: This email will go out "every so often" depending on how each individual member takes to it.
tags: changelog, meta
---

We have created a new type of email called **DEV Digest**, which will help inform folks about some of the more interesting things happening on-platform based on the tags they follow. It's more for the casual [dev.to](/) reader than the folks who come back daily on their own. Feel free to turn off this email in your [settings](https://dev.to/settings/notifications).

## How often does it get sent out?

This email will go out "every so often" depending on how each individual member takes to it. Basically, we use an [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) algorithm to send it less often if people have indicated through their actions that they aren't all that into it.

It will serve to catch folks up on things they might have missed since the last instance of the email. People like to stay up to date in a variety of ways, and this should serve a big segment of the community who lean on email.

[Mac](/maestromac) was primarily in charge of this feature and did a great job building all of the complicated logic that this sort of thing requires.
What If Swift Didn't Exist?
Tags: discuss, swift, objectivec, ios
Published: 2018-03-29 18:43:34

---
title: What If Swift Didn't Exist?
published: true
description: 
tags: discuss, swift, objectivec, ios
cover_image: https://thepracticaldev.s3.amazonaws.com/i/a71y1zb8z3cuo46tzepi.jpg
---

Bashing against one technology or another is something we as developers are born with. Often, our comments are ungrounded, caused by our daily work or a particular problem we cannot solve. Sometimes, they are justified. I get to follow a large community of experienced iOS and macOS developers on Twitter. These last couple of days, a few heated discussions got my attention:

{% twitter 977281338523967488 %}

{% twitter 976923176092520448 %}

{% twitter 977943101452029952 %}

I totally hear what you are saying! These kinds of discussions are nothing new among Apple developers. I do not want to initiate flamewars here. I am by far the last person on Earth who could take a side, moreover, due to the fact that my Objective-C experience is fairly limited. Indeed, I have gained a bit of Swift knowledge over the past year or so, but that's mainly due to my interest in the language and less so because of the Apple developer ecosystem. I develop iOS apps, enjoy doing that, both as a hobby, and on a professional level, but I enjoy writing Swift, because I believe that the language has a potential far exceeding the limits of the Apple ecosystem (ping me if you want to chat about running Swift apps on the server 😉)

It is however, a bit distressing when you see the Apple developer community being torn between the new wave of Swift programmers, and those who would choose Objective-C and not look back. For many, it is not a decision hey can take themselves. The maturity of the projects, and the specific requirements often force developers choose one over the other. There are obvious pro and cons for each, and as said already, I wouldn't be the one to take a side. These discussions just got me thinking, what if Apple had chosen not to go forward with a completely new language, but tried to modernize a workhorse that has served the company for decades? 

Looks like a little too late for that? I'd love to hear your opinions on this. 

--

_This post appeared originally on [my blog](http://www.preslav.me/2018/03/26/what-if-swift-didnt-exist/)_
Long long ago, in a telnet far, far away...
Tags: justforfun, nerdlife
Published: 2018-03-29 18:38:58

---
title: Long long ago, in a telnet far, far away...
published: true
description: Who couldn't fall in love with ASCII starwars?
tags: justforfun, nerdlife
---

I don't remember exactly where I first heard of this, but it's been around online for a very long time.

If you're on a mac or linux system, open the terminal and enter "telnet". When the telnet terminal opens, enter "o" (as in open), then enter towel.blinkenlights.nl.

Neato ASCII entertainment ensues.

It just makes me so happy that someone put the time into making this, and that it's still online after all of these years.
Dynamically filter data via URL params with Rack::Reducer
Tags: ruby, rails, rack, filtering
Published: 2018-03-29 17:48:26

---
title: Dynamically filter data via URL params with Rack::Reducer
published: true
description: Rack::Reducer is a new gem for connecting URL params to functions that filter data, in any rack app.
tags: ruby, rails, rack, filtering
---

Whether you're building a tiny API or a giant monolith, your app probably needs to render a list of database records somewhere. And you probably want those records to be filterable via URL params, like so:

`GET /artists?genre=electronic&sort=name`

It'd be nice to sort or filter when the relevant params are present, and return a sensible default dataset otherwise.

```
GET /artists?name=blake` => artists named 'blake'
GET /artists?genre=electronic&sort=name => electronic artists, sorted by name
GET /artists => all artists
```

You _could_ conditionally apply filters with hand-written `if` statements, but that approach gets uglier the more filters you add.

In Rails, you could use Plataformatec's venerable [HasScope][has_scope] gem.

But what if you're working in Roda, Sinatra, or Hanami? Even in Rails, what if you'd rather write dedicated query objects than pollute your models and controllers with filtering code?

[Rack::Reducer][reducer] can help. It's a gem that maps incoming URL params to an array of filter functions you define, applies only the applicable filters, and returns your filtered data. It can make your controller logic as minimal as... 

```ruby
@artists = Artist.reduce(params)
```

...or, if magical, implicit code isn't your thing, you can call Rack::Reducer as a function to build more explicit queries -- maybe right in your controllers, maybe in dedicated [query objects][query_obj], or really anywhere you like.

```ruby
# app/controllers/artists_controller.rb
class ArtistsController < ApplicationController
  def index
    @artists = Rack::Reducer.call(params, dataset: Artist.all, filters: [
      ->(name:) { where('lower(name) like ?', "%#{name.downcase}%") },
      ->(genre:) { where(genre: genre) },
      ->(sort:) { order(sort.to_sym) },
    ])
    render json: @artists
  end
end
```

Rack::Reducer works in any Rack-compatible app, with any ORM, and has no dependencies beyond Rack itself. Full documentation is [on GitHub][reducer]. Whether you work in Rails, [Sinatra][sinatra], [Roda][roda], [Hanami][hanami], or raw Rack, I hope it can be of use to you.

[reducer]: https://github.com/chrisfrank/rack-reducer
[query_obj]: https://robots.thoughtbot.com/using-yieldself-for-composable-activerecord-relations
[has_scope]: https://github.com/plataformatec/has_scope
[rails]: http://rubyonrails.org
[sinatra]: http://sinatrarb.com
[roda]: http://roda.jeremyevans.net
[hanami]: http://hanamirb.org
Teaching and learning
Tags: devadvocacy, launchdarkly, concepts, nontechnicalpeople
Published: 2018-04-03 06:45:06

---
title: Teaching and learning
published: true
tags: Dev Advocacy,LaunchDarkly,concepts,non-technical people
canonical_url: http://www.heidiwaterhouse.com/2018/03/29/teaching-and-learning/
---

At LaunchDarkly, we’ve been [hiring really aggressively](https://launchdarkly.com/careers/), because we’re doing amazing things. (Come work with me!)

That means that we are also doing a bunch of training, and I’ve been working on doing the training for our non-technical employees, folks like marketing, design, outbound sales. They’re important to our success and they have a TON of domain knowledge that I don’t have, but we’re all going to work together more successfully if they know what they’re selling. Also, selfishly, the more people who can help work a table at a conference, the easier it is for everyone working at the conference.

Me, I’ve been doing tech for 20 years, at all levels, including hardware through to cloud. I bring a ton of domain knowledge with me every time I start a new job. But for this training, we need to explain enough about the software lifecycle to be able to talk about the problems that LaunchDarkly solves. That gave me a chance to really dig in and figure out how to explain the basics in a way that’s useful to people who haven’t been accidentally drinking from the devops firehose.

- What are developers trying to do? What does their work life look like?
- What is deployment and how is it hard?
- How does software get to the user?
- What are waterfall and agile and how does that relate to us?
- What are APIs, SDKs, CDNs, CI/CD, devops, feature flags, polling and streaming updates?
- What’s a monolith vs a microservice?
- Why wouldn’t everyone just build their own software?
- What is Software as a Service?

It was satisfying to realize that I can define and describe all of that in pithy and accessible terms for people. It’s the same thrill I get from writing a really solid document. I know that I am helping actual humans by describing something they need at the moment they need it.

I hadn’t thought about internal training as being part of my job duties, but when we realized we needed it, it seemed logical and easy to do it. After all, my whole purpose is explaining the product to people, and understanding and explaining people’s pain points to my company. This is a natural fit. Plus it was super fun!

In my infinite free time, I’m thinking about recording these explanations with a couple slides, so we have bite-sized concepts when people want to look them up.
People that don't use Github, what do you use and why?
Tags: discuss
Published: 2018-03-29 17:21:19

---
title: People that don't use Github, what do you use and why?
published: true
tags: discuss
---

As a developer I've been using Git and Github for the past few years. To me, it's such a breath of fresh air compared to SVN and *gasp* CVS. I also find that Github has the most mature integrations and tooling compared to Gitlab and Bitbucket. I'm interested to hear what others use, and more importantly, why.
TDD, all the time?
Tags: discuss, javascript
Published: 2018-03-29 16:38:27

---
title: TDD, all the time?
published: true
description: Is TDD what you
tags: discuss, javascript
---

<img width="100%" src="https://thepracticaldev.s3.amazonaws.com/i/v4axbrlqmcej7glafwet.gif" />

You actually do TDD all the time? Sometimes? When fixing bugs? When doing APIs, when doing UIs, when? 
Or you do DDT, development driven testing? 
Ok, I just made up the last one.

I find it an amazing approach, I rarely do it. When I know exactly what I'm gonna code yes it just works.
Most of the time though I reiterate so much on my code that it just does not feel right. I prefer to finish my code and then add tests to them.
This obviously need some forward thinking. 

So I'd say: I think in TDD, I don't do TDD.

What about you people?
Vue.js Kanban Board: The Development Process
Tags: javascript, vue, webdev, kanban
Published: 2018-03-29 16:23:40

---
title: Vue.js Kanban Board: The Development Process
published: true
description: Let's use Vue.js to build a Kanban board with drag and drop support.
tags: #javascript #vuejs #webdev #kanban
canonical_url: https://auth0.com/blog/vuejs-kanban-board-the-development-process/
---

Learn how to use Vue.js to build an interactive Kanban board in the browser. 

[Read on 👀](https://auth0.com/blog/vuejs-kanban-board-the-development-process/?utm_source=dev&utm_medium=sc&utm_campaign=vuejs_kanban)

![Vue.js Kanban Board: The Development Process](https://thepracticaldev.s3.amazonaws.com/i/ikedb30yy4fbsy0s26d3.png)
Cross-Functional Teams and What Value They Bring
Published: 2018-04-16 13:23:39

---
title: Cross-Functional Teams and What Value They Bring
published: true
tags: 
canonical_url: https://perfectial.com/blog/make-a-cross-functional-team-work/
---

Today, when you embark on the product development journey setting strictly-enforced boundaries between the departments, won’t accelerate the growth, but will only slow it down. To bring a gulp of fresh air, some creativity and, perhaps, new ideas, try opting for a cross-functional team instead.

A [cross-functional team](https://en.wikipedia.org/wiki/Cross-functional_team) comprises a group of people with different functional expertise that work towards a common goal. It includes representatives from different levels of the organization and may also include members from outside the company. Team members are often separated by functional or organizational boundaries but they all work towards a common goal.

![cross-functional team](https://perfectial.com/wp-content/uploads/2018/03/img3.jpg)

So how to set up such a miracle or a team? What are its strengths and weaknesses? And why should you even bother with a cross-functional team?


## Adopting a Cross-Functional Approach

Cross-functional teams work better under certain conditions. Going back to the previously mentioned HBR study, it concludes that what keeps such groups focused on the project is primarily a clear and strong cross-functional governance.  
 ![cross-functional team](https://perfectial.com/wp-content/uploads/2018/03/img2.jpg)

There has to be a top tier of senior managers that oversee cross-functional projects and make sure that a team sticks to proper project prioritization. They guarantee effective use of resources while keeping the bigger picture of their project in mind.

But as important as clear governance is, the main ingredient of your product’s success is a talented and competent team that will do all the heavy lifting.

In an interview with [MIT Sloan](https://sloanreview.mit.edu/article/cultivating-a-culture-of-cross-functional-teaming-and-learning-at-carmax/) Shamim Mohammad, CIO of CarMax, the largest retailer of used cars in the US, shares their success story of setting up an agile cross-functional team. Mohammad distinguishes three key roles on their cross-functional team:

- 
  - A product manager who is typically not from IT field and acts as a CEO of the team
  - A lead developer or an engineer
  - A UX (user experience) designer

Their teams are free to bring their input and ideas into product development as they are self-governing in finding solutions on their own, the leadership team only guides them when it comes to setting objectives and KPIs.


<center><a href="https://perfectial.com/approach/" target="_blank" rel="noopener noreferrer" data-wpel-link="ignore">Build your team with us! Check out our approach</a></center>

The post [How to Make a Cross-Functional Team Work and What Value They Bring](https://perfectial.com/blog/make-a-cross-functional-team-work/) appeared first on [Software Development Company Perfectial](https://perfectial.com).
Mobile App Development Company - Apptunix
Tags: mobileappdevelopment, mobileappdevelopers, iosappdevelopers, appuidesign
Published: 2018-03-29 13:00:03

---
title: Mobile App Development Company - Apptunix
published: TRUE
description: Apptunix is a top-notch mobile app development  that specializes in the Android app, iPhone app, and web development. Our solutions include conceptualizing, designing and developing new apps as well as rebuilding existing apps to extend features and provide them a fresh & innovative look. Apptunix mobile apps are visually rich, dynamic and user-friendly, which work flawlessly on all screen sizes be it tablet, phablet or phone.
tags: mobileappdevelopment, Mobileappdevelopers, iosappdevelopers, AppUiDesign
---
Maximum line length in your code
Tags: discuss
Published: 2018-03-29 09:02:13

---
title: Maximum line length in your code
published: true
description: 
tags: discuss
cover_image: https://cdn-images-1.medium.com/max/1000/1*hrFhKc1lS4vj63nGdxgezg.png
---

Until now I've always tried to stick to 80 characters per line and it worked just fine in plain ol' JavaScript, however after adopting TypeScript it feels like it's not enough with all these type declarations, sometimes code becomes harder to read, an example:

``` typescript
export const setCommunity: ActionCreator<SetCommunityAction> = (
  id: string
) => ({
  type: '@@community/SET_COMMUNITY',
  payload: {
    id
  }
});
```
Whereas if limit would be 100, this becomes more readable:
```typescript
export const setCommunity: ActionCreator<SetCommunityAction> = (id: string) => ({
  type: '@@community/SET_COMMUNITY',
  payload: {
    id
  }
});
```
Of course this is a single example that was frustrating me.

What max line length do you use and what are the reasons behind it?
WerckerでPhoenixアプリケーションのCI
Tags: elixir, phoenix, ci, wercker
Published: 2018-03-29 12:37:55

---
title: WerckerでPhoenixアプリケーションのCI
published: true
description: 
tags: Elixir,Phoenix,CI,Wercker
canonical_url: https://crieit.net/posts/Wercker-Phoenix-CI
---

WerckerにてPhoenixアプリケーションのCIをするためのwercker.yml。
DBもservicesで追加できるので専用のコンテナを準備する必要がない。

```yaml
box: shufo/phoenix:1.6.0

services:
  - id: mariadb
    name: mysql
    username: root
    password: ""
    tag: latest
    env:
      MYSQL_ALLOW_EMPTY_PASSWORD: "true"

build:
  steps:
    - script:
        name: mix format --check-formatted
        code: mix format --check-formatted

    - script:
        name: mix deps.get
        code: mix deps.get

    - script:
        name: mix test
        code: mix test
```

ほんとはbrunchのビルドもしたかったのだがこのboxだとnpmコマンドが見つからない。
自分で作っているboxを使えば良いのだが、面倒だったのでとりあえずelixir側だけにした。
How I learned to compile example from GLFW3 on macOS
Tags: opengl, graphics
Published: 2018-03-29 11:49:32

---
title: How I learned to compile example from GLFW3 on macOS
published: true
description: 
tags: OpenGL, graphics
---

I'm just starting to learn graphics.

Where it all began: the CG textbook we currently use (Hearn, Baker, Carithers) uses OpenGL 2.0 (using things like GLUT), while on my system (macOS 10.12.6 @ rMBP 13” late 2013), it’s simply deprecated as per compiler warning. Also I read that modern OpenGL does things differently and handsomely, so why not just go 4.1 (up to my system’s highest support)? (I even attempted Vulkan, but it’s too new for my system.)

I learned that I should use [GLFW](http://www.glfw.org/) to interact with desktop window manager, and [GLEW](https://glew.sourceforge.io/) to manage OpenGL extensions. On macOS they are readily [brew](https://brew.sh/)ed:

    $ brew install glfw --with-examples --with-test
    $ brew install glew

but I was at lost when I tried to compile `simple.c` in GLFW examples. `linmath.h` was readily [found](https://github.com/datenwolf/linmath.h), but what was I supposed to do with [GLAD](http://glad.dav1d.de/)?

Apparently I can directly compile some even simpler code, as found in [this post](http://seaneshbaugh.com/posts/creating-an-opengl-4-1-program-with-glew-and-glfw-in-xcode), which didn’t use GLAD as in `simple.c`.

I didn’t install the full Xcode, but used brewed `gcc-7`. It took me some time to figure out that I should compile the above code with

    $ g++-7 -lglfw -lglew -framework OpenGL [filename]

and it runs fine.

And today I stumbled upon [learn OpenGL](https://learnopengl.com/Getting-started/Hello-Triangle) which shows how to set up GLAD. I should download a certain version of it, put the headers into `/usr/include`, and also compile and link the accompanying C code. Following this instruction I finally get my own “simple.c” compiled.