teleren/devto huggingface dataset:
LambdaTest + JIRA Integration - One Click Bug Logging
Tags: testing, beginners, tips, showdev
Published: 2019-02-19 08:12:26

---
title: LambdaTest + JIRA Integration - One Click Bug Logging
published: true
description: Now, with a single click, you can push your bugs and create tasks in JIRA directly from LambdaTest. 
tags: #testing #beginners #tips #showdev
---

Now, with a single click, you can push your bugs and create tasks in JIRA directly from LambdaTest. 

You can choose details like JIRA project, Issue type, priority, assignee, summary etc. and push your bugs directly into your desired project. In addition, LambdaTest will automatically include testing environment information tasks as well as add testing screenshots and videos as attachments.

Kick start your testing now: https://goo.gl/fQGZLs

Sign Up for free now and get
+ 100 Minutes of Free Automated Cross Browser Testing With Selenium Grid.
+ Access to 2000+ different cloud browsers
+ 60 Minutes of Free Live Interactive testing per month
+ 10 Responsive Testing (Test a page across 19 devices with a single click)
+ 10 Screenshot Testing (Take instant screenshots across 2000+ browsers)
+ Smart Testing
+ Auto Shot Testing
+ 3rd Party Integrations.

Learn more about LambdaTest and JIRA integration here - https://goo.gl/bYy3Kf
It is NOT always right to pin your dependencies
Tags: javascript
Published: 2019-02-19 01:21:30

---
title: It is NOT always right to pin your dependencies
published: true
description: 
tags: js
---

> TL;DR;
> If you are writing a library/package, make sure you will update your dependencies in time before pinning all dependencies. Otherwise, issues may be caused.

You might have used tools like [`renovate`](https://github.com/renovatebot/renovate) to manage dependencies of your GitHub repository. The first thing it will do is to pin your dependencies.

Pinning dependencies can:
- Avoid potential bugs caused by upstream package/library updates. (*Such bugs are still possible because upstream packages may not have pinned their dependencies.*) 

- Help your collaborators or people who are interested in your project to reproduce your dev environment. (*It will be even sweeter if combined with docker.*)

However, it can also cause issues sometimes. And I am going to share with you a recent experience.

I am doing a Google Map project, and I have two repositories for this. (I tried `lerna`, but failed to get everything to work well and had to give up.)

One is a React wrapper around Google Map API:

{% github lucifer1004/react-google-map %}

The other is the application:

{% github lucifer1004/boycott %}

For both repositories, the dependencies are pinned. One day, to my surprise, all my React hooks failed to work. Such error messages kept occurring:

> React Hooks Error: Hooks can only be called inside the body of a function component...

They provided no useful information at all! I WAS calling hooks inside the body of functional components.

After a tough search, I finally found something inspiring. **This error can occur when there is React version inconsistency.** I then checked `package.json` of both the library repo and the application repo, and found that the library was using `React 16.8.1` while the application was using `React 16.8.2`. I quickly updated my library to use `React 16.8.2`, and then the errors went away.

Now, I have moved `react` and `react-dom` to `peerDependencies` and relaxed the version restrictions to `^16.8.2`. I think this is enough to prevent similar issues.

What I have learned from this experience is that something GOOD (pinning dependencies) is not always RIGHT. It DEPENDS! Dependency pinning is GREAT for an application. However, you should be more CAREFUL when writing a library/package.
Free Kubernetes namespace for learning and hobbies!
Tags: kubernetes, showdev, programming, webdev
Published: 2019-02-19 07:20:51

---
title: Free Kubernetes namespace for learning and hobbies!
published: true
description: Just launched KubeSail.com to make it easy to learn Kubernetes - still a lot to do but the free tier should be helpful!
tags: kubernetes,showdev,programming,webdev
---

A friend and I just launched [KubeSail.com](https://kubesail.com) to make it easy to learn and use Kubernetes right away - still a lot to do but the free tier should be helpful for launching small projects or learning Kubernetes!

We've included a big enough free tier to host a small app or gameserver (factorio runs like a charm!), and a few examples that hopefully help people get excited! There is a ton to do and we have big plans, but we'd love any feedback!

Thanks everyone!
List of Awesome MacBook screensavers
Tags: webdev, macbook, macos
Published: 2019-02-19 05:26:02

In this post, I'm going to share some of my favorite screensavers for MacBook which will make your MacBook much prettier when you leave it alone for a few minutes. Here we go 🏃🏻‍♂️

# [Padbury Clock](https://www.screensaversplanet.com/screensavers/padbury-clock-1027/)

![](https://raw.githubusercontent.com/agarrharr/awesome-macos-screensavers/master/screenshots/padburyClock.png)

# [Word Clock](https://github.com/chrstphrknwtn/word-clock-screensaver/)

![](https://raw.githubusercontent.com/chrstphrknwtn/word-clock-screensaver/master/screenshot.gif)

# [Simple Clock](https://github.com/Wandmalfarbe/Simple-Clock-Screensaver/)

![](https://raw.githubusercontent.com/Wandmalfarbe/Simple-Clock-Screensaver/master/images/KundoQuartzRepetitionWestGermanyWecker.png)

# [Grid Clock](https://github.com/chrstphrknwtn/grid-clock-screensaver/)

![](https://raw.githubusercontent.com/chrstphrknwtn/grid-clock-screensaver/master/GridClock.png)

# [Fliqlo](https://fliqlo.com/)

![](https://raw.githubusercontent.com/agarrharr/awesome-macos-screensavers/master/screenshots/fliqlo.png)

# [Fractal Clock](http://www.dqd.com/~mayoff/programs/FractalClock/)

![](https://media.giphy.com/media/w8qzomcUchsn3yrDlV/giphy.gif)

# [Word Clock](https://www.simonheys.com/wordclock/)

![](https://raw.githubusercontent.com/agarrharr/awesome-macos-screensavers/master/screenshots/wordClock.png)


If you like these screensavers, share them with your buddies! What are *your* favorite screensavers? Let me know in the comments!
How do you introduce yourself at parties?
Tags: career, discuss, funny
Published: 2019-02-19 04:31:40

---
title: How do you introduce yourself at parties?
published: true
description: Hello! I'm X and I'm a Y developer
tags: career, discuss, funny
---

Recently, a new survey about [The state of CSS](https://stateofcss.com/) has arrived from the guys of State of JS. I was answering the survey when an interesting question appeared:

![How do you introduce yourself](https://thepracticaldev.s3.amazonaws.com/i/rv8u410wiehw3mdy77ft.PNG)

(Yes, I consider myself a full-stack developer but we're not talking about that 😛). This question made me laugh a little bit: I've been a developer for 5 years and have been in a lot of parties, but I've never introduced myself as developer at parties 😅.

How about you? Do you mention your title when you introduce yourself at parties?
Bridge Design Pattern [Structural]
Tags: blog, designpattern, designpatterns, programming
Published: 2019-02-26 03:24:57

---
title: Bridge Design Pattern [Structural]
published: true
tags: blog,Design Pattern,Design Patterns,programming
canonical_url: https://itscoderslife.wordpress.com/2019/02/19/bridge-design-pattern-structural/
---

 **Why?** Increasing feature set explode class hierarchies. The Bridge pattern dissolves complex class hierarchies by separating common and specific functionality into different hierarchies.

In typical software development, as we add new features, the number of subclasses increases at an alarming rate. By decoupling an implementation from an interface, both can vary independently.

**Goal is to separate out common functionality and specific ones.**

> The bridge pattern separates the abstraction from its implementation and reduces the impact of the changes.

Example:

Consider 2 classes – **GroupChat** & **DirectChat**. Now if these were in a plain chat format. Then you get a requirement to add support for Secure Chat and Self-destructing chat, now the general tendency is to extend each chat into 2 others SecureGroupChat and SelfDestructGroupChat also SecureDirectChat and SelfDestructDirectChat. Now consider if there is another type of chat – **BroadcastChat** and we need to extend this to SecureBroadcastChat and SelfDestructBroadcastChat. Now we have a total of 9 classes.

Bridge pattern – solves this with interfaces and a bridge between the interface.

![Bridge.jpg](https://itscoderslife.files.wordpress.com/2019/02/bridge.jpg?w=656)

Using bridge pattern all Chat classes implement ChatInterface which will include a MessageInterface. On the other side all 3 Secure, SelfDestruct and Plain Message types will conform to MessageInterface.

Advantages:

1. Separates Common and specific functionality
2. Increases Cohesiveness
3. Removes inheritance (hierarchies)
4. Removes tight coupling
5. Reduces the number of classes
On going freelance full time.
Tags: freelance, discuss, freelancejourney
Published: 2019-02-19 01:50:22

---
title: On going freelance full time.
published: true
description: After 10+ years in the workforce, I'm freelancing it.
tags: freelance,discuss,freelancejourney
---

After over 10 years working, I've branched out on my own. I loved my office, the people I met, the things I learned, the stories I heard and equally told. The horrors, the good days, the just plain old weird days. They were all days that I'd never take back. Many ask, if I've had a secure job for years, why leave? No, the work wasn't boring, we did exciting things - we took a 20 year old product and made it look and feel like a successful start up. We built an ecosystem around our product, opened it up to remote developers, freelancers, you name it.

It was a strange feeling when I decided it's time to go freelance, I wanted to experience the world more on my own, having some successful side projects, I wondered, "how hard could it be?" - it's hard. I'm still learning, but I'm happy to declare I'm profitable. Living wise, it's rough come the bills, but I'm penny pinching everything.

The end goal is simple: a remote self-owned business, with one or two employees (*where everyone matters!*), which is profitable that we don't have to sweat every second. With a few products launching soon, I'm hoping to take on my own full time employee come June or July this year.

I'm half way there, and lots to go. I'll be bringing updates to the feed "#freelancejourney" about the struggles, the high moments, and the low moments of growing a business from zero, into something profitable enough to work full time. Feel free to follow the feed, and if you want to reach out via message and lend a hand - all is appreciated! (*all products will be open-source, with paid editions*)
Habits I Don't Regret
Tags: habits, selfimprovement
Published: 2019-02-19 01:47:57

---
title: Habits I Don't Regret
published: true
description: Habits are the quirks that form around our priorities. What are yours?
tags: habits, selfimprovement
---


We all have some habits we’re proud of, and some we aren’t. Having been inspired by some of your posts about habits, here are some that have helped me keep consistent and keep learning.

## Get to bed by 9:00 PM every night, including weekends
(There are always exceptions to this, but it helps with the next one.)

## Get up at 5:00 AM every morning, including weekends
I’ve found that for me, the consistent sleep schedule always feels better than trying to sleep in. Of course there is the occasional exception when I just need to crash. These are the days I don’t even remember turning off the alarm.

This is great because on weekdays I have something of an early-in early-out schedule, and weekends I can either have a super productive morning or I can “reward” myself by using that time to relax or game.

## Eat breakfast
I can't believe people get by without this! Waking up early means if I haven't eaten yet my stomach has become a commercial vacuum cleaner by 9:00 AM.

## Use the commute to listen to audiobooks and podcasts as much as possible
Sometimes you just need to hit reset with some good music, but I found that by this simple habit I was able to hit book goals I never could otherwise. (I got through the entirety of The Hobbit, The Lord of the Rings trilogy, and The Silmarillion in less than 6 months, and I guess I'm sharing that because I don't regret it.)

My podcast rotation right now is heavily TechStuff and Hanselminutes, with a mix of Cyber Security Weekly Podcast and 99% Invisible. I love the variety this gives to my day, as well as the connectivity I feel to things I would otherwise never hear about.

## Read e-books in the bathroom
This is time you will always have, and it adds up. Since making this a regular thing, I’ve read Robert C. Martin’s Clean Code and The Clean Coder (both are must reads in this community!) and half of the GoF Design patterns book.

# Keep trying new things
This list isn’t exhaustive, but these things keep me consistent and always learning. Some of these may have made you shudder. I acknowledge these aren't for everybody, but they've shaped me into who I am today.

How much time, attention, and effort you invest in something will determine how much you gain; whether in physical results, understanding, or building of character. This is also how you fundamentally recognize your priorities, and how you evaluate what they should be.

With your own habits, decide what you want most. If something is a priority, you can give it your time without any guilt or regret. Always be willing to try new things, and when something works, stick with it.

*Habits are the quirks that form around our priorities.* What are yours?
Bothering people over [communication tool]
Tags: remote
Published: 2019-02-19 01:27:17

---
title: Bothering people over [communication tool]
published: true
description: A short post on feeling like you don't want to interrupt people with notifications
tags: #remote
---

I've worked remotely for a couple of years, and I still find myself learning things about the practice.

I recently suggested to a colleague that I didn't like to "bother" people by asking them questions over Slack. 

I described how much easier it was when working in an office; I could look and see if people seemed busy, and ask them whatever I needed to if they didn't.

Knowing that my message would result in a notification put me off sending it. I didn't know what that person was doing. I wanted to avoid disturbing them. This led me to "saving up" questions that I wanted to ask people.

My colleague told me that other people's management of their own notifications wasn't my problem. And she was right. 

I had been wasting my own time by making a decision about other people's. Even my suggestion that it's easier in an office isn't true; asking "have got a minute?" in person is a much bigger interruption.

Perhaps everyone else has managed to figure this out for themselves, but in case anyone hasn't: Your colleagues are adults. They can manage their own time and alerts. 

Ask the question and get on with your day.
Frogram - this might be the best way to introduce programming to laymen
Tags: beginners, tutorial, webdev, opensource
Published: 2019-02-19 01:19:11

## TL; DR

I created a website, [frogram](https://frogram.ycmjason.com/), which aims to introduce programming to anyone who has no previous experience in coding.


## Background

[Anthony Stewart](https://community.dur.ac.uk/a.g.stewart/) and I were invited to hold an "Introduction to Programming" workshop for non-STEM students at [The University of Manchester](https://www.manchester.ac.uk/). Here is a story of how we ended up building [Frogram](https://frogram.ycmjason.com/).

## Initial Idea

The initial idea that me and Anthony had, was to teach the basics of Python; then give out some challenges for the participants to work on, e.g. printing `hello world` 10 times, solve the quadratic equation etc.

However, we see two problems with this approach:

1. The challenges are not rewarding. There is no incentive for the participants to work on them. Why would they want to print `hello world` 10 times? They solved the quadratic equation, so what?![](https://media.giphy.com/media/xT77Y36ijyuwn58bja/giphy.gif)
3. It is more like an "Introduction to *Python the Programming Language*" than an "Introduction to *Programming*" because the participants are likely to struggle more on language issues, e.g. incorrect indentations, incorrect syntax, rather than logic issues.



## Frogger

![Frogger game](https://media.giphy.com/media/2WeOD9LfJGY4PN8VSy/giphy.gif)

To make the challenge more rewarding, we have this idea of asking the participants to win the Frogger game by writing some code. The code will essentially control the frog. It is obvious that playing games is much more rewarding than printing `hello world` 10 times.

## The Frograming Language

We invented a frogger-specific language to minimise the time needed for fixing language issues. We want to make the language as minimal and restrictive as possible so that it could provide super helpful error message.

For example, since the available predicates are limited to only `isGoalUp|isRiverUp|is(Car|Log|Wall)(Up|Right|Down|Left)`, if the user types `isCardown` with a lowercase `d`, the error message generated would be super specific saying: `Expected "Down", "Left", "Right", or "Up" but "d" found`. (Thanks to [PEG.js](https://pegjs.org/) for the amazing parser generator!)

## Frogram - Frogger x Program

At last, combining the frogger and the frograming language, we have our final [Frogram](https://frogram.ycmjason.com/)! Go ahead now and check it out! Any feedback would be greatly appreciated. Remember to star it on [github](https://github.com/ycmjason/frograming). And more importantly **share the site to your friends** who wish to learn some about programming. And more importantly !
How do you take breaks throughout the day?
Tags: productivity, career, discuss
Published: 2019-02-19 01:09:12

---
title: How do you take breaks throughout the day?
published: true
description: How often, and what do you during them?
tags: productivity, career, discuss
---

I've been working from home a lot more often recently, and without the commute and normal hum of office activity and side-conversations, I've been having a hard time stepping away from the computer.

I'm confident that I'll be substantially _more_ productive if I can break up my work in the right way, but I've been finding it difficult to build the right habits and reminders.

So, how do you break up your work throughout the day?  How often do you take breaks?  And what do you do during them?
Greetings from the MidWest
Tags: greeting, welcome, new
Published: 2019-02-18 22:39:43

---
title: Greetings from the MidWest
published: true
description: Hello greeting
tags: greeting, welcome, new 
---

Greetings All! Just wanted to check out this site. Hopefully, I will be learning some new skills, techniques. 

Thanks,
Cookie
Cryption - In-Browser AES File Encryption 🔐 with Data Integrity Check 🔍built with React and Redux
Tags: webapp, opensource, tool, encryption
Published: 2019-02-18 22:13:13

---
title: Cryption - In-Browser AES File Encryption 🔐 with Data Integrity Check 🔍built with React and Redux
published: true
description: In-Browser AES File Encryption 🔐 with Data Integrity Check 🔍built with React and Redux
tags: webapp, opensource, tool, encryption
---

Since I was in need of a file encryption/decryption tool that could do its job in the browser without actually talking to the internet, I created Cryption by using React and Redux as a base. It is open-source and has several features like manipulation check and multi-file-upload.



You can check it out here: https://github.com/lagmoellertim/cryption
Back to the Browser: React Form Validation with the DOM API
Tags: frontend, javascript, react, webdev
Published: 2020-06-25 22:34:17

---
title: Back to the Browser: React Form Validation with the DOM API
published: true
date: 2019-02-18 21:28:49 UTC
tags: frontenddevelopment,javascript,react,webdevelopment
canonical_url: 
---

[![](https://cdn-images-1.medium.com/max/1132/1*lOBid_kZry-I0rkPpu7Slg.png)](https://itnext.io/back-to-the-browser-form-validation-d32dd01802c0?source=rss-ea85e17e7579------2)

Last week I wrote an article about how we can build a form validation hook with React Hooks (more about it here)

[Continue reading on ITNEXT »](https://itnext.io/back-to-the-browser-form-validation-d32dd01802c0?source=rss-ea85e17e7579------2)
How to send Rails deprecation warnings to Airbrake
Tags: ruby, rails, todayilearned, tutorial
Published: 2019-02-18 21:04:20

---
title: How to send Rails deprecation warnings to Airbrake
published: true
tags: ruby, rails, todayilearned, tutorial
cover_image: https://thepracticaldev.s3.amazonaws.com/i/qngjzqspg20mduoo9sgs.png
---

We’re upgrading our Ruby on Rails version from 4.2 to 5.2 this week. A long-awaited change for us. Of course, there are a lot of deprecation warnings that was thrown at us during this process. Rubocop and tests caught the vast majority of those, but we don’t have 100% code coverage, so some of these warnings got into production.

In development Rails send these warnings to the log file:

```ruby
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
```

A reasonable default, but I changed it to `:raise`. It's way faster to find and deal with the warnings this way in development.

For production environment Rails uses [`ActiveSupport::Notifications`](https://api.rubyonrails.org/classes/ActiveSupport/Notifications.html):

```ruby
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
```

The problem is that nobody listens for it in production. Fortunately, that was easy to fix with Airbrake. I tried to “google” the solution at first but didn’t find anything useful, so I’m sharing my solution for other seeking souls like me :)

```ruby
# config/initializers/deprecations_notifier.rb

ActiveSupport::Notifications.subscribe('deprecation.rails') do |_name, _start, _finish, _id, payload|
  error = ActiveSupport::DeprecationException.new(payload[:message])
  error.set_backtrace(payload[:callstack].map(&:to_s))
    
  params = {
    gem_name: payload[:gem_name],
    deprecation_horizon: payload[:deprecation_horizon]
  }

  Airbrake.notify(error, params) do |notice|
    notice[:context][:severity] = 'warning'
  end
end
```

If you’re using [`CurrentAttributes`](https://api.rubyonrails.org/classes/ActiveSupport/CurrentAttributes.html) and storing `request.uuid` there it would be a good idea to add current request UUID to the `params` as well.