teleren/devto huggingface dataset:
Interfaces are cool!
Tags: softwaredevelopment, baddesign, design, development
Published: 2020-01-27 22:16:58

---
title: Interfaces are cool!
published: true
date: 2017-10-31 07:32:38 UTC
tags: Software Development,bad design,design,development
canonical_url: https://www.funkysi1701.com/2017/10/31/interfaces-are-cool/
---

A while back I [blogged](https://dev.to/funkysi1701/interfaces-34on-temp-slug-2228381) about learning about interfaces as I didn’t really understand the value of them. I do now.

I created an application that used interfaces so I could learn how it worked. I created a Logger Interface and created multiple classes that implemented that interface so I could swap out the different implementations easily. I created a SQL Logger and a File Logger and my code could be written and be completely unaware of which implementation it was using.

This application uses SQL Azure and so I have a monthly bill to pay. Wouldn’t it be cool if I could reduce this bill? How about using the cheaper table storage instead?

**Easy!**

Create a new class that implements my interface and all I need to do is write the three methods defined in my interface and I can swap from SQL Azure to table storage.

Another benefit to interfaces is testing. Say I have an interface called inotification for sending notifications, I can have several implementations of this email, twitter, slack etc

None of these implementations should be used in unit tests, as you don’t want a tweet being sent every time you run your tests. Why not create an implementation that simply returns something for each method call and doesn’t actually do anything. I can then run my tests with my fake implementation which tests my code logic but not the implementation I have chosen (this can be tested later on with integration tests or user testing if required).

This is pretty much all I have to say about interfaces. I just like how I can swap different implementations.

It does take a bit of work to get the interface setup. I found that when writing the second implementation the interface would need to change slightly, mostly as it was badly designed to begin with. I think for beginners there may be some value to writing multiple implementations of an interface so you can be sure your interface is good, however I am sure with experience this will not be required.

The post [Interfaces are cool!](https://www.funkysi1701.com/2017/10/31/interfaces-are-cool/) appeared first on [Funky Si's Tech Talk](https://www.funkysi1701.com).
A framework-agnostic explanation of web components
Tags: webcomponents, talks
Published: 2017-11-01 02:08:33

---
title: "A framework-agnostic explanation of web components"
published: true
tags: web components,talks
canonical_url: https://george.mand.is/2017/10/a-framework-agnostic-explanation-of-web-components/
---

Last month I spoke at JSFoo and really enjoyed my time there. Besides the overall experience and amazing people there were some very good talks as well! One of them was by Rahat Khanna from Apple on web components.

Web components are one of those modern development tools that are hard to talk about in a way that’s framework agnostic. Rahat’s talk manages to do just that — discuss web components in a way that’s completely separate from frameworks like React, Angular and Vue. I often prefer these kind of talks that hone in on core ideas, concepts and APIs rather than the abstractions we build up around them. Frameworks come and go, but the underlying ideas end up sticking around… hopefully!

His talk inspired me to try a framework-agnostic approach to a client project using web components. It seemed like a good idea and turned out to be _great_ idea! If you’re just getting started with web components or need a little inspiration you should watch his talk:

{% youtube 71JdaRofCgA %}
Using git wiki instead of evernote to organize personal content 
Tags: productivity, notetaking, organization
Published: 2017-10-31 06:40:22

---
title: Using git wiki instead of evernote to organize personal content 
published: true
description: 
tags: [productivity, note-taking, organization]
---
After reading JoÃ£o Cerqueira's post on how he recommends [Organizing your life using Github](https://dev.to/und0ck3d/organizing-your-life-using-github-6an) I thought, "yes, I'm not the only one to see the benefit of version control for content other than code. 

My problem was that I've never been satisfied with the way I organised my notes. I have lists, book quotes, notes on code, and all the kinds of content which tools like evernote were build for. 

The trouble with evernote is that I found it to be ugly! Reading my own content in that editor distracted me. Not to mention it's inability to handle code, and markdown. 

In case you are wondering, I tried other solutions. On mac there's a beautiful editor called [Ulyssesapp](https://ulyssesapp.com/), it took me very far but it lacked the power of detailed organization. I also ran a local blog for a while but the more content I added the slower it all got. 

Now I use gitlab's wiki pages. I'm sure it's just like github's wiki pages, I just use gitlab due to it's unlimited free private repositories.

The pages are basically markdown file, which when pushed to the remote repository, they are read as html. 

## Auto-generated pages

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

Inspired by static website generators like jekyll, I created my own little generator with node. Above is a snippet of the homepage, the links to articles are all auto generated. In the terminal I type the following snippet 

```js
npm start -- "post title" tags1 tag2 
```

and a markdown page is created in a folder with the name of the first tag. Also, a page is created for each tag (if it doesn't exist) and the a link to the new page is added. 

I then run 

```js
npm run build
```

which takes all the pages and adds a reference link to the home page.

The end result is a blog/wikipedia-style private website which I can access from any computer.

The main benefits are:

1. I write my content in my prefered editor. With few packages, sublime text it's truly sublime to write markdown content. 
2. Functionality grows with my own needs. I reacently added the ability to create sub-folders, or how I think of them as sub-blogs.
3. Even online editing is pleasant. If I am away, and don't have the ability to clone the repo, the wikipages can be edited on the browser. It doesn't add much value but it's a bonus. 

## Finally, the code

You can see my simply solution on [github](https://github.com/aurelkurtula/wiki-generator). I hesitate to share this as now looking at it, the code is a bit messy.

The commands are a bit different as the file names will be unique to you, but if you choose to play with it, read the `readme.md` file, it's pretty easy. All you need is node installed on your machine. 

Now that it's public, I'll refactor the whole thing at some point
Hi, I'm Aurel and I'm unusually enthusiastic to have discovered you all!
Tags: introduction, bio
Published: 2017-10-31 04:49:02

---
title: "Hi, I'm Aurel and I'm unusually enthusiastic to have discovered you all!"
published: true
description: "A bit about Aurel Kurtula"
cover_image: https://burst.shopifycdn.com/photos/rooftopper-looking-down_4460x4460.jpg
tags: [introduction, bio]
---

I discovered this website last night, through reddit and I immediately fell in love with it!

Whilst learning the ever growing number of javascript frameworks and trying to build my own projects I found writing to be an amazing tool to help me understand exactly what I don't understand! I have been writing my own notes for a while now. I've also been thinking of starting a blog but something didn't feel right about that idea!

This platform really feels welcoming and I think it might be a great gateway to start sharing what I have learned and what I am still learning. 

So ... let's see what else can I say about me that would not bore you? 

Other than being addicted to caffeine and the computer screen, I also love running!

One afternoon 2 years a go I felt as though I was an absolute rubbish programmer. You know, when you read an error, you copy and paste it in google, you click on the first few StackOverflow questions but none of them relate to your problem? You might even ask a question and get told that the question was asked before, then, as if every StackOverflow user is watching you, you go red and think "I know but I had no choice, I been staring at this for hours". You know what I mean, right? Come on, it can't be just me! Well, on one of those afternoons 2 years a go, when a bendy bracket decided to be curly, I abandoned my hot coffee and went for a walk! The walk turned into a run! When I came home, it was as if the curly bracket was shouting at me "yo, I'm not supposed to be here you know? My bendy friend should replace me", and that was that, I became a runner! 

Thanks for reading, write to you soon!
reMarkable review
Published: 2017-10-31 19:53:28

---
title: "reMarkable review"
published: true
tags: 
canonical_url: https://michael.mior.ca/blog/remarkable-review/
---

As an academic, I spend a lot of time reading papers. I generally hate the idea of printing out a paper for a one-time read since it feels wasteful, but I also don’t enjoy the reading experience of viewing papers on a desktop screen. I’ve always liked the look of the [Sony Digital Paper](https://www.sony.com/electronics/digital-paper-notepads/dpt-rp1) that my advisor uses but it’s rather expensive and not easy to find. I used a [Samsung Galaxy Tab 3](http://www.samsung.com/consumer/mobile-devices/tablets/others/GT-P5100ZWAXEF/) for several years which freed me from my desk and made note-taking easier, but still wasn’t as nice as paper.

This is why I was excited to hear about the [reMarkable](https://remarkable.com/). The stated goal of reMarkable is to be a tablet for paper lovers. The cost is still fairly significant for a grad student, and I actually cancelled my first preorder before changing my mind and committing. While I did experience shipping delays that seem inevitable with crowd funded projects, I finally got my device this past Thursday.

So far, I’m pretty impressed by the hardware and the writing experience. There’s definitely no perceivable latency when writing and most other actions happen quite quickly as well. The software still needs a lot of work (especially the [Android app](https://play.google.com/store/apps/details?id=com.remarkable.mobile)) and I’ve had some issues with syncing not working correctly. My biggest disappointment so far, is that the Wi-Fi on the device doesn’t currently support networks which use usernames and passwords for authentication, which means I can’t use wireless connectivity in the office. This is a pretty big drawback, but there’s already a promise to fix this in a future software update. Overall, I’m looking forward to seeing what happens.
Evangelizing for open source
Tags: opensource
Published: 2017-10-30 16:01:45

---
title: Evangelizing for open source
published: true
tags: opensource
canonical_url: 
---

Long-lasting open source projects require a strong community around them. Although communities can emerge organically, project evangelism is a great way to accelerate and sustain community growth. Evangelism (in the technical sense) is the process of building a critical mass of support for a particular open source project. So what things should you keep in mind when outlining an evangelism strategy for your open source project? From my experience, I’ve narrowed it down to four key tips.

**Diversify, diversify, diversify**

Evangelism can happen online and in real life. Note the and. It’s important to diversify evangelism efforts across both domains. You should try to write blog posts, speak at Meetups or conferences, organize Meetups or conferences, appear on podcasts, make YouTube videos, and so on. All this might sound overwhelming, so I should add that it is best to focus most of your efforts across a digital space and a non-digital space. For example, the project should have an active blog and contributors who speak frequently at conferences and Meetups to cover both domains.

**Quality not quantity**

When it comes to evangelism strategy, it’s best to have a few high-quality pieces of content as opposed to many relatively low-content pieces. An engaging, shareable blog post is much more likely to attract new users and contributors to the project than multiple, lower-quality blog posts. Not to mention, because of network effects, the impact of that single blog post can be magnified as time progresses and the post is shared more often.

**Be kind, always**

Evangelism, in the end, is about depicting the project as a friendly and welcoming space. People want to feel like engaging with a particular open source project will be fun and fulfilling. Being kind as you engage with readers, audience members, and anyone else who happens to come across your content can go a long way to increasing project engagement. Kindness is a positive externality. When people see you being kind, even if they are not directly affect by it, their trust and comfort around you (and their engagement with the project) will increase.

**Pick a niche**

Centering your project’s evangelism strategy around a particular niche makes it easier to create new, unique, and engaging content. Although it’s OK to write with a fresh perspective on common topics, honing in on a particular topic can make it much easier for your project to achieve reputability in a particular domain.

And finally, remember that evangelism is a long process and the returns come slowly but consistently not immediately. Given enough time and dedication, your evangelism strategy is guaranteed to help boost your project’s community.
Rebase or merge
Tags: git, vcs, discuss
Published: 2017-10-30 22:06:29

---
title: Rebase or merge
published: true
description: 
tags: git,vcs, discussion
---

I don't have a lot of experiences with git. I mostly used merge, but I have a suggestion that rebase is better. People on internet are divided, one says one thing and the others say the other. 



What do you think?
Imger, a Hapi plugin to process images on the fly
Tags: discuss, hapi, javascript
Published: 2017-10-30 19:49:03

---
title: Imger, a Hapi plugin to process images on the fly
published: true
description: 
tags: discuss, hapi, javascript
---

Hi guys! I am the developer of Imger, a hapi plugin to process images on the fly. I am about to make the first npm release and I would like to ask for feedback.

What feature would you like to see there?

You can find the plugin at: https://github.com/mariosant/imger
Use the force, Luke
Tags: arduino, mind, game, c
Published: 2017-10-30 19:42:37

---
title: Use the force, Luke
published: true
description: Hacking Mindflex with arduino.
tags: arduino, mind, game, C
---
![](https://media.giphy.com/media/XBMbRaUrnjXvq/giphy.gif)

There are certain things in computer science that remind us of cyberpunk, and certainly mind-reading tech is one of the most cyberpunk things that I have found. Let me explain: There's a toy called **Mindflex** which is very easy to hack using arduino, so you can read certain mind waves and use them in C code. I tend to specialize in security... But this is a lot of _fun_. 

The hardware of the mindflex has an EGG chip, a radio transmitter and a microcontroller. The _hack_ consist in link the EGG chip with the arduino using some soldering abilities and using the library "Brain" for arduino, which will allow us to play with it. To do this, is as easy as removing the plastic cover of the head device, creating a hole on it for later, soldering what we need, put the cover again passing the cables through the hole and connecting the arduino. Before putting the cover again and all, I suggest to try the device, and see if the soldering is right. The soldering should go like this:

![](http://frontiernerds.com/files/imagecache/half-column/t-pin-soldered.jpg)

The soldering goes into a T labeled pin and the ground (the pic is not mine, But I did the same). Once we have the hardware checked, we should start studying the Brain arduino library. This is one of the basics example codes:

```
#include <Brain.h>
 
// Set up the brain parser, pass it the hardware serial object you want to listen on.
Brain brain(Serial);
 
void setup() {
        // Start the hardware serial.
        Serial.begin(9600);
}
 
void loop() {
        // Expect packets about once per second.
        // The .readCSV() function returns a string (well, char*) listing the most recent brain data, in the following format:
        // "signal strength, attention, meditation, delta, theta, low alpha, high alpha, low beta, high beta, low gamma, high gamma"   
        if (brain.update()) {
                Serial.println(brain.readCSV());
        }
}

```
![](https://i.giphy.com/media/UsmcxQeK7BRBK/giphy.webp)

This will basically show the data of the different mind waves read, printing them in the Serial. The mindflex basically reads the concentration (read with Yoda voice) _if the force strong is on you_ and this is the measure you should take care of:

**Delta** (1-3Hz): sleep
**Theta** (4-7Hz): relaxed, meditative
**Low Alpha** (8-9Hz): eyes closed, relaxed
**High Alpha** (10-12Hz)
**Low Beta** (13-17Hz): alert, focused
**High Beta** (18-30Hz)
**Low Gamma** (31-40Hz): multi-sensory processing
**High Gamma** (41-50Hz)

But this is a toy, after all, and it doesn't work _perfectly_. I'm trying to experiment a mixture of arduino, python, bash and openssl to make it work with randomness in algorithms and other geeky stuff. But in the future it could lead to help with prosthesis movements or VR-controlling. Future seems very _cyberpunk_!
Git log a range of lines of a file
Tags: git
Published: 2017-10-30 19:41:06

---
title: Git log a range of lines of a file
published: true
description: Ever want to see the changes to a specific set of lines in a file?
tags: Git
---

Found this handy command today, it is a newer usage of 'git blame' with the addition of `-L start,end:file/path`. Super handy when tracing back the changes to a specific set line group.


`git log -L 50,75:./some/path/file.ext`
Challenge: Write your worst program
Tags: javascript, python, java, discuss
Published: 2017-10-30 18:46:40

---
title: "Challenge: Write your worst program"
published: true
description: 
tags: javascript, python, java, discuss
---

Hi everyone,
As you may know, there is no way in JavaScript to determine whether or not a number is a multiple of another number, so I wrote this function.

```Javascript
function isMultiple(big, small){
    return (big/small + "").indexOf('.') < 0;
}
```

Now you can use this in your code as well. You're welcome. Got any other tips for me? I am looking for functions, that can ease my programming life.  Any programming language is appreciated.


**EDIT**: Some quick edit, because there seems to be confusion. This introductory text is supposed to be sarcastic. I know there is a `%` operator. I know this function does not make sense and that it is super inefficient. The challenge is, that you should provide pieces of code that are (on purpose or not) weired or way too complicated or inefficient or useless.
SQLite Rocks and Here's Why
Tags: sqlite, database
Published: 2017-10-30 18:37:05

---
title: SQLite Rocks and Here's Why
published: true
description: Some high-level reason why you should be looking into SQLite with links to videos about its features.
tags: sqlite, database
canonical_url: https://blog.xojo.com/2017/10/03/sqlite-rocks-let-us-tell-you-why/
cover_image: https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/SQLite370.svg/1000px-SQLite370.svg.png
---

Here are some reasons why you should be using SQLite with your apps:


## It is fast

SQLite is an embedded database so the database engine gets built right into your app. It is also designed for incredible speed. It can handle millions of rows with ease.

## It is typeless

Unlike other databases, SQLite does not care what type of data you put into a column. In fact, it really doesn’t use types at all! Columns are assigned an “affinity” of INTEGER, REAL, TEXT and BLOB which helps determine how they are used for queries and functions. But you can stick text data into an integer column without a problem. You can read more about SQLite’s unique handling of Data Types on their documentation page.

## It is cross-platform

SQLite works on every platform imaginable, including: Windows, macOS, Linux, Raspberry Pi, web, iOS and Android. Additionally, the database files themselves are cross-platform. So if you create a database and populate with data on iOS, you can move the file over to Windows and be able to read, write and otherwise use it without trouble. This makes SQLite a great fit for cross-platform development tools like [Xojo](https://www.xojo.com).

## It is public domain

Because it is public domain, SQLite is complete free to use with no restrictions of any kind. And the full source code is readily available, of course.

## It works with most programming languages

Most programming languages have built-in support for SQLite, including: Delphi, C, C#, C++, Go, Java, JavaScript, LiveCode, Lue, Objective-C, Perl, PHP, Python, Ruby, Visual Basic and [Xojo](http://www.xojo.com). With Xojo you can use SQLite with desktop, web, console and iOS apps.

## It is updated often

SQLite is a mature database with few bugs, but it is updated often to ensure it remains at its best quality. If any bugs sneak in, they are quickly squashed.

## It is fast

SQLite is so fast that it is worth saying again. Seriously, it is fast. Don’t use a text file or JSON or some other thing that will likely be much slower, especially when the files get large. Use SQLite and you’ll be happier.

## It is used everywhere

It is a good bet that apps you rely on are using SQLite in some way. It is a great storage mechanism for preferences, general app data and can even be used as the app file format itself. For example, Apple Mail uses SQLite to save email messages and Firefox uses SQLite databases to store much of its profile information.


## Free Videos

For more information, check out these videos:

{% youtube PQ36OKeIZMM %}

{% youtube lqy9SEWRr8Y%}


*Original version of this article appeared here: [SQLite Rocks , Let Us Tell You Why](https://blog.xojo.com/2017/10/03/sqlite-rocks-let-us-tell-you-why/)*
Show Dev.to: Underexpress - Free bootstrap 4 UI KIT with 100+ components and landing pages.
Tags: webdev, html, bootstrap, showev
Published: 2017-10-30 17:46:56

---
title: "Show Dev.to: Underexpress - Free bootstrap 4 UI KIT with 100+ components and landing pages."
published: true
description: Hey fellow developers, presenting [underexpress.com](https://underexpress.com), a free bootstrap 4 based UI kit which you can use freely in your awesome web projects and create stunning websites quickly. Save 100s of hours in development. Kindly share feedback and help a fellow dev.
tags: webdev, html, bootstrap, showev
---
What were your problems with "real world TDD"? 
Tags: tdd, unittests, beginners, discuss
Published: 2017-10-30 17:40:10

---
title: What were your problems with "real world TDD"? 
published: true
description: 
tags: tdd, unit-tests, beginners, discuss
---

When I started using TDD, I found that writing unit-tests for business logic is straightforward. But what about all the rest? As a developer using ASP.NET MVC, what about my views and controllers?

It took me quite some time to figure out all my missing pieces to use TDD in my daily work. 

I'm planning to write a couple of blog posts about, what I call, "Enterprise TDD". With them, I want to help beginners getting started with TDD in real world scenarios. 

For these blog posts, I am collecting pain points, lessons learned and "missing pieces", when it comes to "real world TDD". I would love to hear about your experience.