fabiochiu/medium-articles huggingface dataset:
Solving the new HTTPS requirements in Flutter
By: Lew C
Tags: Flutter, Software Development, Android, Https, Software Engineering

Solving the new HTTPS requirements in Flutter

The new beta includes some unexpected surprises

Photo by Florian Berger on Unsplash

Since this morning, after updating my Flutter beta install, it has been refusing to load any resources from HTTP with this error:

Unhandled error Bad

state: Insecure HTTP is not allowed by platform

If you’re here because you’ve been furiously Googling a fix, and you don’t care why it’s broken, and you just want it fixed, here’s what you can do:

Navigate to your project Go to yourapp\android\app\src\debug\AndroidManifest.xml Add this line

<application android:usesCleartextTraffic="true">



</application>

4. Build your debug app and deploy it to your device of choice. It should work now.

Why is this happening?

Since a change in dart_sdk last month, outbound connections are checked to see if they are permitted to occur in plaintext HTTP. The commit that includes this change can be seen here. To be precise, this is the particular lines that are causing us grief:

The check that is failing for us, is the check for isInsecureConnectionAllowed . The API documentation for how that function works is here, but basically, it allows localhost connections but not the 10.0.2.2 connection that your Android Emulator uses to connect to your local computer. The only way this is permitted is if your application specifically requests to use cleartext HTTP connections. When we update the debug AndroidManifest.xml , our debug builds are specifically allowed to use plaintext traffic, but our release builds have the same HTTPS requirement.

If you ask me, cleartext HTTP should be fine in debug settings, but should obviously fail in release. The only reason why I think this is because it is very difficult to install SSL CA root certificates on an Android Emulator and use HTTPS in development, and the benefit is that your local traffic is encrypted. This should only ever be fake data, so transmitting this over HTTP locally isn’t that big a deal (to me anyway, your thoughts may differ).

If there are steps for iOS on how to resolve this I will update this article. Until then, happy Fluttering!
Alchemy and Individuation
By: Rev. Sheri Heller
Tags: Growth, Transformation, Self, Alchemy, Psychology

If you bring forth what is within you, what you bring forth will save you. If you do not bring forth what is within you, what you do not bring forth will destroy you. ~ Jesus

Alchemy pertains to the process of transmuting base metals to silver or gold. The search for the ‘gold’ in each person was a fundamental focus of late psychoanalyst Carl Jung’s work. Jung saw in the writings and symbols of alchemy a parallel to his psychological theories. For Jung, alchemy represents the circular process of individuation, in which internal opposing conflicts, and the conscious and unconscious is assimilated and integrated.

The internal process of individuation, aka the journey towards wholeness, is reflected in alchemy.

We begin at the seed level with our prima materia, or primary substance. It is our original material from whence we came, and it is paradoxically where we both begin and end our process of individuation.

Jung remarked, “There is no rebirth of consciousness without pain”.

Accordingly, an internal cross roads may precipitate a willingness to consciously submit the prima materia to the courageous process of transformation.

We fall from grace. The bottom falls out. A harsh awakening occurs which precipitates great psychological change and opens us up to inner exploration. It is then we ask the deeper questions about life, ourselves, and feel compelled to examine our fantasies and dreams. We venture into the realm of facing our sources of oppression, and the illusions, fears, and defenses that prevent the fragile ego from being crushed.

If we are fortunate the fires of calcination attack the ego so that ultimately purification, acceptance, and humility results. Calcination is where material and fire meet so that metal is extracted from ore. Psychologically, it is through this fiery confrontation with the self that volatile elements of the personality are ‘burned out’.

The terrifying primordial process of Calcination brings one’s shadow into conscious awareness for the purpose of integration.

What doesn’t suit our self-image we relegate to a less intrusive place.These rejected parts of us become our ‘shadow’. Our shadow self festers and lurks in the recesses of our subconscious, feared by the ego and split off from conscious expression. Bringing the shadow out of exile allows for an unearthing of vital aspects of the concealed self, in which mysterious gifts and talents and sources of creative potential seek realization.

Jung said, “To confront a person with their shadow is to show them their own light.”

Similarly, Jungian analyst and astrologer Liz Greene stated, “The shadow is both the awful thing that needs redemption, and the suffering redeemer who can provide it”.

We meet our darkness and it humanizes us and allows us to actualize our buried potentials. We can now diffuse our projections and free ourselves of guilt and shame. The ashes from the calcination process represent the inauthentic false aspects of the self. What is artificial has been burned away and all pretentiousness is broken down.
Next Level Data Visualization — Dashboard App with Bokeh & Flask
By: Dario Radečić
Tags: Programming, Flask, Data Visualization, Bokeh, Python

Visualization matters. Maybe not to you as a data analyst/scientist, you may feel confident looking at tabular data and drawing conclusions from there. But more often than not, you will need to present your work to your boss, and/or college professor (if you are still in college). Unlike you, they probably aren’t so acquainted with the data and will get confused if you throw a bunch of numbers at them.

To avoid this, one approach is to generate charts via Matplotlib and/or Seaborn and show your superior charts directly in Jupyter Notebook or as a saved PNG file. While that is by no means a bad way to display your results, it surely won’t leave your superior stunned, and therefore, you won’t be able to stand out from the crowd.

Thankfully, there exists a pretty cool library called Bokeh, and this post will cover the process of creating a simple Dashboard application which is more likely to leave your superiors surprised. Not only that, your superior will be able to manually filter or drill-down data, not just to look at the charts.

One thing to note here, this is not a tutorial on how to use Bokeh or Flask. This post only covers how to do data visualization by combining those libraries. Before we begin, I assume that you have at least some knowledge of the following technologies:

HTML

CSS

Flask (Python)

Bokeh (I’m using version 1.2.0)

and are fluent in:

Python (loops and conditionals)

Pandas/Numpy stack

You can still follow along if your Python isn’t great, but I can’t guarantee that you will understand everything. Throughout this article, I won’t explain any of the HTML and CSS snippets and will be focusing mainly on Bokeh and Flask.

I will be using the famous Titanic Dataset. If you get stuck during the process, you can get the code at my GitHub Repo.

Here’s what you’ll be making. Notice the dropdown menu and how the value is changed. When reapplied, the charts are re-drawn for the relevant passenger class (my apologies for the terrible design skills though).

Final Dashboard

Okay, without further ado, let’s get started!
Anatomy of a Hit Song
By: Michael Tauberg
Tags: Spotify, Music, Words, Culture, Women

Many before me have tried to find the formula for the perfect pop song. From academics who analyze the acoustic complexity of popular music, to famed produces who’ve learned which heuristics work and which don’t.

My interest in the problem began when I saw this infographic:

https://infogram.com/anatomy-of-a-hit-song-1g0q3plrxwvnp1g

It shows that many characteristics are shared by the hit songs from the 1950s to the 2000s.

There have been 221 number one songs on the Billboard Top-100 chart since Jan 1, 2000. I decided to use data that I’ve collected from Spotify, Billboard and other sources to see what updates can be made to these conclusions. What is the anatomy of a hit song in the last two decades?

Female Artists are More Dominant

Although only 41.6% of the number 1 songs came from female-fronted acts, the artists with the most hits tend to be women. If we ascribe Destiny’s Child songs to Beyonce, then the top 3 artists are all women (Rihanna and Katty Perry being the other two)

Rock Songs aren’t Hits

Although country, rock, and electronic dance music (edm) are well represented on the Top-100 charts, they have only a tiny percentage of the hits. If you want to make it to number 1, then rap, r&b or pure pop are the way to go.

Hit Songs are all about 3–5 Minutes Long

As with all popular media, keeping it short and simple seems to work best.

Lyrics Emphasize ‘Like’

The lyrics of number one songs are easy to guess. Some variation of “you know I like it baby yeah” tends to do well.

Of course, using these words doesn’t guarantee a hit. Despite being the platonic ideal of an empty pop song, Enrique Iglesias’ “(Baby) I Like It” only reached number 4 on the charts.

Hit Songs are Happy and Danceable

In general, there isn’t much difference between the audio features of all Billboard Hot-100 songs and the ones that reach the top of the chart. There are two exceptions. The valence of a hit song, or its positivity (happiness) is noticeably higher for the hits.

Similarly, hit songs seem to be significantly more danceable.

Tempo is Trimodal

Surprisingly, there isn’t one perfect number for the beats-per-minute for a hit song. Looking at all of the chart-toppers, it seems that there are three distinct, groups clustered around 95 bpm, 130 bpm, and 170bpm respectively.

Other Interesting Facts

Some other findings that came from looking at the number one songs of the last 18 years are below.

96% of hit songs use the 4/4 time signature

There are 491 words in the lyrics of the average chart-topper (MG Siegler has the right idea)

The average hit song title is 2.57 words

The most common key of a hit is C or C#/D

60.5% of hit songs are on a major scale

So, if you want to write a song that will reach that rareified air at the top of the charts remember — keep it simple, make it dancy and happy, and most of all, it doesn’t hurt to be a woman.
Breakout Game with JavaScript, React and SVG. Part 2
By: Rodion Chachura
Tags: React, Functional Programming, Game Development, JavaScript

Let’s add file core.js to the game folder. First, we import Vector and utils and declare sizes of different things in the game.

We give 1/3 of game height to paddle, which means, that blocks will be on the center of the top 2/3 of the game.

paddle area

Beside paddle area, other constants, like ball radius expressed as fractions of block width, since block width is the unit in our game.

BLOCK_WIDTH and BLOCK_HEIGHT

Then we declare directions by using Vector class.

One thing that may look strange is that the UP vector is pointing down. This is also can look controversial since the state doesn’t deal with the screen where coordinate starts in the left top corner, but in this type of game, the choice of Y-direction doesn’t make much of a difference.

Since we also need to get an initial position of paddle and ball when the player misses the ball, it is better to create a separate function that will return the initial state for these objects. As parameters, it receives the width and height of the game field and the width of the paddle. It places the paddle and the ball at the bottom of the field and directs the ball randomly in the left or right direction.

Finally, we can write a function that receives a level and returns the initial state. The game field always square, we determine it’s size by looking at the length of the first row of blocks. Then we place blocks at the center of 2/3 area of the field.

Complete Page Component

Now we are going to finish the Page component that we started in the previous part. This component serves as a wrapper around a game scene. It is watching for window resize and passes how much free space is available to its children — Scene.

Since we will need to add window event listeners, let’s write a function at utils.js that will register a listener and will return function via which we can unregister the listener.

Next, we need to create a Scene component at the scene.js inside of the components folder. For now, it will receive container size and console log it out without doing anything.

We want the scene on the center of the screen, so let’s add styles for scene container in index.css.

Now, we can open page.js and finish it. We are using React hooks here to get access to the container and keep its size in the state. Via useEffect, we register an event listener when the component is mounted and unregister listener on unmount.

If we run the app and open developer tools, we can see that every time resize happens Scene receives a new width and height.
What’s New in Scala 3?
By: Akash Srivastava
Tags: Scala, Functional Programming, Software Development, Programming, Software Engineering

New Ways to Manipulate Types!

Scala 3 gives us a much richer toolkit for describing data by letting us define types in a much more descriptive way. Let's have a look at some of the new types introduced.

Types can now be defined as a union of other types, and they don’t necessarily have to share a common base class. Let’s understand this with a simple use case: You have to buy a new smartphone, and the reason you choose one can be either its camera, processor, or operating system. Let's take a look at how we can cook this up in Scala 3.

Scala 3 also have intersection types now. To put it simply, if we think of the union of types as either A or B , then intersection can be thought of as both A and B . Here’s an example:

Literal types

We can now literally define any literal value as a type with a singleton instance of itself. Simply put, a literal value like ABC , 2.7 , and true can now be treated as a type in itself. Let’s understand this with an example:

This one is particularly useful when we are working with domain-driven design, and we often have to define new types as wrappers over other types. For example, we may define a type called ItemID which is actually just a wrapper over the String type with a restriction that the first character needs to be in uppercase.

The problem with using wrapper types for this is that we incur unwanted overhead when accessing their fields or methods, or composing these types. And these overheads start to add up if we have a lot of such entities in our design.
Lunatic, Sage, & Child
Tags: Self, Mental Illness, Perspective, Creativity, Poetry

You met me when I was manic. I didn’t think anyone would love me — could love me — when I wasn’t.

Mania

brings out the best

and worst of me

Saturation

turned on high

Hey! Look @ me!

Watch me fly!

watch me dip

watch me spin around n’flip

Watch me chew my lip.

Watch me trip

and stumble

on habits and booze

on specific foods

on a variety of moods

Watch me dig

my claws into life itself

rip out the marrow

and scream

into the open wounds.
Man versus Boredom
Tags: Self Improvement, Entrepreneurship, Software Development

“This is the part in the movie where that guy says, “Zombies? What zombies?” just before they eat his brains. I don’t want to be that guy.”

― Holly Black, Kin

I work at a mega corporation suffering a very slow death.

It’s much like being in a zombie movie : death come from afar, moaning and stumbling along the way, you first ponder if it will ever reach you, but if you take your eyes off it for some time, you get eaten. The eating I don’t mind, but the wait is killing me.

I have worked at the same place for 5 years, first software developer then technical manager, and I think I am ready for a change of pace. Next up I want to make all the calls, so I will do it my way. No lemonade stand poster child story here, I am just fed up.

I don’t intend to achieve things by sheer willpower, but with discipline. It’s just depressing to wrestle with your own laziness when you want to spin your life around. So I use simple tricks, my fav being Guiding Structure and Timeboxing. Writing here every so often is my way of committing myself and reflecting on everything along the journey. It’s my very own echo chamber.

First in order, finding something I wish to dedicate a big part of my life. No magic here, I have to search and not give up, so at first a series of 2 weeks projects from idea to MVP until something shiny come up. Next is to make it ramen profitable.

My first 3 projects I want them fairly simple. I wish to get in the habit of starting and finishing every time on mark. No market research just personal usefulness. A website, a mobile app and a video game.

Website — I play pen and paper RPG a couple of times a month, and I want to make a campaign diary to keep track of story elements. Optional is a small calendar coupled with the twilio API to send texts to my mates. Mobile App — A gamified todolist. Every time you achieve something, you get your alien invasion survivors party going. If you stop, you are dead in the water. Video Game — A clone of a small flash game I liked, where you had to dispatch special ops to rescue survivors from zombies overrunning a suburb. One simple map, some semi random stuff, it’s all about risk-reward mechanism.

Well, I start tomorrow, wish me luck!
Practical Rails Plugins
By: Nick Plante
Tags: Books, Publishing, Software Development, Ruby on Rails

Hey wow, author copies of my book just showed up yesterday. That’s pretty cool. My side of things has been finished for a few months now, but it’s nice to finally see it in print!

The book, Practical Rails Plugins (Apress 2008), is aimed at the beginning to intermediate Rails developer, featuring a number of recipes for using popular third party plugins in Rails projects. So it’s sort of a recipes book but with a focus on leveraging plugins to accelerate feature development, and on standalone mini-projects rather than code snippets, which I think is much more illustrative for developers who are new to the framework. Topics include video transcoding and asynchronous processing, state machine modeling, payment processing, geocoding, full text search, testing and a whole lot more.

I wrote about 50% of the content, David Berube (author of Practical Ruby Gems and Practical Reporting with Ruby and Rails) is responsible for the rest. If you want to pick up a copy, you can order it via Amazon. We also put up a companion site for the book last week, if you wanna check it out.
AWS Lambda Now Supports Container Images
By: Michael Chi
Tags: AWS Lambda, AWS, Software Development, Programming, Docker

Creating a Lambda Container

Here, I have a basic Lambda function named lambda.js with the dependency file package.json :

lambda.js

package.json

The Lambda itself just has a simple console log outputting a string and the payload. But in the real world, you’d have more complicated code here and more dependencies in package.json .

To create the image, we have a Dockerfile:

The first line is pulling the base image provided by AWS. We want to use the node:12 runtime to run the Lambda. There are other base images you can use and they are all hosted in Docker Hub or the ECR Public Gallery.

Then, we copy over package.json and lambda.js to the container and run npm install . This will install all the dependencies the Lambda needs.

Line 5 will then set the command of the image to the function handler. This can be overridden as a parameter when configuring the function. To bring up this container, create another docker-compose.yaml file in the same directory:

This file builds a Lambda service with the Dockerfile we just created, and it will expose port 9000 for our usage. Running docker-compose up --build will now build the image and spin up a container for local development.

To trigger this function, you can use the Lambda Runtime API by sending an HTTP post request to: http://localhost:9000/2015-03-31/functions/function/invocations with any JSON payload. You should see that your Lambda function is triggered and you can see log output.

You can now start using this Lambda in your other services and test it locally.
Who You Were Yesterday Does Not Define Who You Could Be Today
By: Barry Davret
Tags: Self Improvement, Leadership, Life Lessons, Productivity, Inspiration

Who you were yesterday does not define who you could be today

Too often, we look to our past as evidence of what we cannot accomplish in the future. We recognize our lack of competency, ambition, or fearlessness and reason that if we try again, we’ll face the same result.

That’s often true, but only because we convince ourselves of it. When we allow our past to convince us of what’s possible, we let it define our limits, cocooning ourselves in a steel gated comfort zone with little chance of escape.

You probably know somebody who lived their entire life like that. They’re usually in their 50s, critical of everyone, resigned to merely getting by, convinced they’re not worthy, not capable, not valuable.

That’s what happens when you allow your past failures to convince you of your inadequacy instead of looking at your faults as opportunities to learn, grow, and expand your vision of what’s possible.

To get past your inadequacies, accept that you don’t have to let your past limit your future.

The first step in transforming yourself begins with believing that who you were yesterday does not define who you could be today.

How to overcome whatever’s holding you back

When my midlife crisis crept up on me, I could have sidestepped it or recognized the absurdity of it. Instead, I embraced it because I needed to manufacture motivation to push forward. Ironically, it was a lesson from my days in sales that taught me how to overcome fear and doubt.

If the fear of taking action > the fear of doing nothing, then you will justify a reason to do nothing or avoid the action that scares you.

If the fear of avoiding the action > the fear of taking action, you will muster the courage to do what’s necessary.

In short, we do whatever we believe will result in the least amount of pain. That’s how life works. We avoid the stuff that scares us unless the alternative terrifies us more.

A tool to defeat fear and self-doubt

Ask yourself a variant of these questions whenever you allow your past to dictate your future.

If I shy away from doing X because history has shown I’m not capable, what are the negative consequences?

If I avoid taking this necessary action, how might it hurt me?

Involve your emotions when you answer. It’s not enough to say you’ll be upset with yourself. How will it make you feel if you allow your fear to destroy your dream?

Write that question and answer in your journal every night. Pretty soon, it’ll chomp away at your insides until you can’t take it anymore. If you need a little extra mental firepower, think up a few justifications as to why your fear or doubt is unfounded.

In time, the fear of avoiding that which terrifies you will soon overpower the unease holding you back.
How to Use Optional Chaining and Nullish Coalescing in JavaScript
By: Kunal Vishnoi
Tags: React, Angular, Nodejs, Programming, JavaScript

How to Use Optional Chaining and Nullish Coalescing in JavaScript

Navigate nils in your code safely

Image by Caspar Camille Rubin on Unsplash

Introduction

Optional chaining and nullish coalescing both are available to use in JavaScript with the launch of ES2020 aka ES11.

The optional chaining operator, ?. , permits reading the value of a property located deep within a chain of connected objects without having to expressly validate that each reference in the chain is valid.

The ?. operator functions similarly to the . chaining operator, except that instead of throwing an error if a reference is nullish ( null or undefined ), the expression short circuits with a return value of undefined . When used with function calls, it returns undefined if the given function doesn’t exist.

The nullish coalescing operator may be used after optional chaining in order to build a default value when no value is found.

Generally, accessing values from deeply nested objects in JavaScript can be error-prone because some values might not exist, so they’ll evaluate as null or undefined.

We use the logical operator, && , to overcome this problem, which makes our code super long when we have a deep-tree structure like JSON.

I’m a front-end developer who works with a lot of JSON structures. When I’ve stumbled across a situation where I need to do a lot of conditional checks to map/access a nested property in the JSON, optional chaining comes into the picture.
Time-Series Forecasting: Predicting Stock Prices Using Facebook’s Prophet Model
By: Serafeim Loukas
Tags: Machine Learning, Facebook, Data Science, Stock Market, Forecasting

1. Introduction

1.1. Time-series & forecasting models

Traditionally most machine learning (ML) models use as input features some observations (samples/examples), but there is no time dimension in the data.

Time-series forecasting models are the models that are capable of predicting future values based on previously observed values. Time-series forecasting is widely used for non-stationary data. Non-stationary data are called the data whose statistical properties, e.g., the mean and standard deviation, are not constant over time but instead, these metrics vary over time.

These non-stationary input data (used as input to these models) are usually called time-series. Some examples of time-series include the temperature values over time, stock price over time, price of a house over time, etc. So, the input is a signal (time-series) that is defined by observations taken sequentially in time.

A time series is a sequence of observations taken sequentially in time.

An example of a time-series. The plot was created by the author in Python.

Observation: Time-series data is recorded on a discrete time scale.

Disclaimer (before we move on): There have been attempts to predict stock prices using time series analysis algorithms, though they still cannot be used to place bets in the real market. This is just a tutorial article that does not intend in any way to “direct” people into buying stocks.

1.2 The forecasting model: Facebook’s Prophet

The most commonly used models for forecasting predictions are the autoregressive models. Briefly, the autoregressive model specifies that the output variable depends linearly on its own previous values and on a stochastic term (an imperfectly predictable term).

Recently, in an attempt to develop a model that could capture seasonality in time-series data, Facebook developed the famous Prophet model that is publicly available for everyone. In this article, we will use this state-of-the-art model: the Prophet model. Prophet is able to capture daily, weekly and yearly seasonality along with holiday effects by implementing additive regression models.

The mathematical equation behind the Prophet model is defined as:

y(t) = g(t) + s(t) + h(t) + e(t)

with, g(t) representing the trend. Prophet uses a piecewise linear model for trend forecasting.

s(t) represents periodic changes (weekly, monthly, yearly).

h(t) represents the effects of holidays (recall: Holidays impact businesses).

e(t) is the error term.

The Prophet model fitting procedure is usually very fast (even for thousands of observations) and it does not require any data pre-processing. It also deals with missing data and outliers.

In this article, we are going to use the Prophet mode to predict Google’s stock price in the future.

Let’s get started!
Functional Programming Example in Dart
Tags: Filter, Tips, Google, Dart, Functional Programming

For a quick reference.

At the time of writing (Feb 2014), the top results from a Google search on ‘Dart functional programming’ or ‘Dart list comprehension’ don’t immediately yield clear examples. That’s crazy given that Dart is such a boss language. So here’s an example:

// double all values

List myList = [1, 2, 3, 4];

List doubledList = myList.map((x) => x * 2);

You can do the standard map, reduce, filter on Iterables on Dart. Of course you can chain them up like other languages. Although it’s not strictly using the set building notation like in Python, you can still pretty much do everything so something like:

[x * 2 for x in myList if x % 2 == 0]

in Python would look like:
Mining geo-tagged photos
By: Aleksey Tikhonov
Tags: Data Science, Maps, Clustering, Urban, Data Visualization

I owe this post myself for about six years — all the presented here results that are dated around 2012. For some time I did not publish them, hoping to proceed with this project, then I passed it on to my friends, who, after completely redesigning the original ideas, eventually made a tourist mobile application (but this project, alas, already closed).

Here I publish my initial results in almost the original form. I just rebuilt them on modern technologies, using mostly leaflet.js (with a bunch of plugins) for visualization and tiles from Stamen. Detailed credits are at the end of this post.

Illustrations for this post made mainly based on the data of Berlin and Moscow, as I know these two capitals good enough to check the plausibility of the results.

In many aspects, this research initially inspired by the visualization of cities based on the Flickr-dataset, made by Eric Fisher in 2010.

DATASET

For all experiments, I used a dataset of geotagged photos published by users on the Internet. The first versions of the dataset I scrapped myself from various services similar to Panoramio, later a team of Yandex.Fotki provided me with a larger anonymized dataset for analysis, so all the illustrations for this post made based on its basis.

The dataset structure is pretty simple — one photo per line, and each photo is described by 5 fields: unique photo id, unique author id, latitude, longitude, timestamp. Here it is a tiny random sample:

DOTS AND CLUSTERS

The first thing you can do with such a dataset is to draw all the dots:
Yes, this is an ad, but it’s legitimately well done and funny. But also serves it purpose: to highlight what a good product Google Photos is. Hard to remember another product Google has launched in…
By: M.G. Siegler
Tags: Google Photos, Tech, Google, Advertising, Nickelback

Yes, this is an ad, but it’s legitimately well done and funny. But also serves it purpose: to highlight what a good product Google Photos is. Hard to remember another product Google has launched in recent memory that was so universally loved (storage policy changes aside). Also, kudos to Nickelback for having a sense of humor about this — seems like a good move for an oft-mocked band. This song remains annoyingly catchy.
8 Things Web Developers Should Know About SEO
By: Louis Petrik
Tags: SEO, JavaScript, Web Development, Online Marketing, Marketing

What is SEO? And what is it not?

SEO stands for Search Engine Optimization. So it is all about ranking your own website better on Google and co. If we enter something into a search engine, it will spit out heaps of results. But the order is not arbitrary; it is based on many factors that should be covered by a qualitative website.

SEO is pull-marketing. This is precisely why it is no substitute for paid advertising — because the latter is push marketing. With an improved ranking, we can better reach the people looking for us or our topic. So if we have a website that offers cosmetic products, our goal with good optimization should be that our website is displayed high up when people are looking for it.

This is incredibly powerful — after all, it allows us to reach people who are already willing to buy our product or use our website — what’s more, SEO does not usually cause running costs but is a one-time optimization.

On the other hand, Push-marketing means that we push something under the nose of people we assume are interested in it.

Types of SEO

The ranking of a website is defined by two factors — the optimization on the website itself and the optimization outside the website.

The former is called on-page SEO, the latter off-page SEO.

Optimizing our rankings in the search engines is outside of our own site; for example, it is about building referral links. These links then point to our site from other websites and make our site's credibility appear higher.

in this article, we only cover on-page SEO. This section can be broken down again into two areas, which I like to call as follows:

Content SEO — that means adjusting the length of the content, keyword density, choosing good images, writing headlines that ensure a long reading time on the site.

— that means adjusting the length of the content, keyword density, choosing good images, writing headlines that ensure a long reading time on the site. Technical SEO — this is about making the site technically clean so that it works well & fast and seems trustworthy for the search engines.

Structuring content, copywriting, and selecting images is not the job of a web developer — that’s why I explain in this article everything that belongs to technical SEO.
BankLocal: Where You Bank Matters
By: Nick Plante
Tags: Fintech, Finance, Sustainability, Banking, Data

I’ve been a volunteer and board member for a local-first non-profit for several years now. I’m kind of a hippie do-gooder like that, you know? Most recently I’ve been involved in our community capital / entrepreneurship programs, which is kind of a spiritual cousin to the work I was doing with Wefunder and the JOBS Act, but at a much smaller community scale. Access to capital and economic support from your neighbors is a critical ingredient to creating the awesome spaces, inventions, and events that make cities and towns of any size worth living in.

Crowdfunding is a great way to get new businesses off the ground, but bank loans are obviously a big part of it too, and that won’t be changing any time soon. What a lot of people don’t think about is that your choice of bank can really matter. Many local firsts run local banking initiatives to encourage people to move their money from large megabanks to locally owned banks and credit unions. There are a number of reasons this is meaningful but what it really boils down to is when you deposit money with one of these banks, typically a much larger percentage of your dollars is reinvested back into the local economy in the form of small business loans, employee wages, and vendor purchases from other locally owned businesses. Because bank executives tend to be local themselves, they tend to care more about the needs of the local economy.

This information is all publicly available, thanks to data.gov, and call reports published by the FDIC, FFIEC, and NCUA, but it’s not exactly easily digestable. We struggled to find any sort of bank report summaries we could point people at, much less ones that were localized to our area. There are a few tools like ICBA’s community bank locator, but what we really wanted was something that’d take a bunch of factors into consideration (are they headquartered locally? what percentage of their loan portfolio is small business lending? do they engage in speculative trading?) and give us a sort of local impact score.

So about six months ago my friend Bob Marino (a fellow board member and financial analyst) and I decided to put together a little side project to make it easier for people to find this sort of information. If you care about this sort of stuff — and you should — check out our BankLocal project. Take a look at data for your current bank and see how it stacks up against other institutions in your area. We’d love to hear what you think.
Real-Time Meditations: Tool’s ‘Fear Inoculum’
By: James Ryan Leonard
Tags: Philosophy, Fear, Life, Music, Meditation

With today’s release of Fear Inoculum, Tool ends a 13-year hiatus and resumes their exploration into what it means to be a human being.

For all the over-analysis of Lateralus, that album in particular contained a treasure trove of practical wisdom (which I explored in a previous real-time meditation). Given how much each band member has likely grown individually over the years, and how much time went into the creation of Fear Inoculum, there was no doubt in my mind that this would be a near-perfect album. (And no, I had not listened to any of the songs prior to today, except for the title track, once.)

I also knew an album like this could not be digested in real time in a single sitting. On my first listen, I let myself get lost in the music. On my second listen, I also read through the lyrics. Then, during my third listen, I wrote.

As with Lateralus, I wrote (and edited) my thoughts on each song as it played. Once one song ended, I stopped and moved on to the next. (This includes the two-minute instrumentals, which I spent all of two minutes on.)

And the same disclaimer applies: This is not presented as a review of the album, or an analysis of the lyrics, or speculation as to what the band was trying to convey with each song. This is simply where my head went as I listened to these songs. Your mileage may vary.
GCP — Deploying Vue App With Java Backend on GKE
By: Bhargav Bachina
Tags: Google Cloud Platform, Programming, Software Development, Web Development, Kubernetes

GCP — Deploying Vue App With Java Backend on GKE

A step by step guide with an example project

GKE is Google’s managed Kubernetes solution that lets you run and manage containerized applications in the cloud. Since this is a managed Kubernetes service, you can start quickly with single-click clusters, leverage a high-availability control plane including multi-zonal and regional clusters, eliminate operational overhead with auto-repair, auto-upgrade, and release channels, secure by default, including vulnerability scanning of container images and data encryption, integrated Cloud Monitoring with infrastructure, application, and Kubernetes-specific views

In this post, we are going to deploy a Vue application with a java environment. First, we dockerize our app and push that image to the Google container registry and run that app on Google GKE. We will see how we can build the Kubernetes cluster on Google GKE, Accessing clusters from outside, configuring kubectl to work with the GKE cluster, and many more.

Example Project

Prerequisites

Install gcloud CLI and Configure

Dockerize the Project

Pushing Docker Image To Container Registry

Creating GKE Cluster

Configure Kuebctl With GKE Cluster

Deploy Kubernetes Objects on GKE Cluster

Access the WebApp from the browser

Summary

Conclusion

Example Project

This is a simple project which demonstrates developing and running Vue application with Java. We have a simple app in which we can add users, count, and display them at the side, and retrieve them whenever you want.

Example Project

If you want to practice your own here is a Github link to this project. You can clone it and run it on your machine as well.
The Heart Chakra: We Don’t Feel the Love in Our Hearts When This Chakra Is Blocked
By: Kimberly Fosu
Tags: Spirituality, Love, Inspiration, Energy, Creativity

How to Strengthen The Heart Chakra

Past pain and trauma that aren’t healed throw our heart energies out of alignment and blocks it from receiving divine energy.

It isn’t easy for us to knock down the walls we built around ourselves when we didn’t feel safe. Strengthening the heart chakra is knowing that we are safe and protected at all times.

It is knowing that when the external environment is too much for us to handle, we can retreat inwards where there is peace and love.

We must accept, acknowledge, and come face to face with the pain that we feel. We must sit with this pain no matter how much it hurts.

When we accept our pain and learn the lesson it came to teach us, we open up our hearts, and whatever we are struggling with dissolves.

The moment we acknowledge the pain, honor it, and surrender them to the universe, our hearts begin its healing process. And when we are no longer afraid of the pain, we take our powers back.

The moment we let it all go is the moment it all comes to us.

Because the heart chakra relates to the air element, it is literally and symbolically recharged through breathing in that good prana.

Simple breathing exercises help us connect to our hearts.

When times are crazy, it is easy to forget how good it feels to just slow down and breathe in air. We forget the wonders of simple 10-minute meditation.

When we can sit still and bring our attention inwards, we expand our hearts and transmute all the pain inside of it.

Self-love and self-care activities will strengthen a weak chakra.

Activities such as taking a luxurious bubble bath with essential oils and candles burning with our favorite music playing in the speakers is an act of self-love.

Treating ourselves to a wonderful massage, or simply being there and showing up for ourselves — especially when there is no one there — is an act of self-care and a powerful way to recharge our heart chakras.

It all comes down to giving ourselves the love we wish to receive from others.

When we care and ‘love on’ ourselves, we can love and care for others. The compassion and love we feel for ourselves spread to those around us.

When we commit to doing this, we push our heart chakra back into alignment and it receives energy from the upper and lower chakras so we feel connected to ourselves and all that is around us.

We exchange energies between the physical, mental, emotional, and spiritual bodies and we live a harmonious life.

We appreciate life in all of its glory and we see the beauty in everything, even when the world is in crisis.

A person with a strong and balanced heart chakra radiates love, warmth, joy, harmony, and peace, and it is therefore easy for them to attract their heart's desires, manifest their wildest dreams, and experience a healthy and abundant life.
How to Show Love During the COVID-19 Pandemic?
By: Estacious Charles White
Tags: Health, Humanity, Empathy, Compassion, Love

Love and compassion are necessities, not luxuries. Without them humanity cannot survive.

Dalai Lama

As the above quote states, we cannot survive without love and compassion. In the current situation we need these two concepts more than ever. Hoarding food and toilet paper leaves nothing for the most vulnerable within our nation. I’ve seen the photos of empty shelves and I must admit that struck a bit of fear into my heart. I was actually surprised how horrible the grocery stores became.

However, it not just the food and water hoarding but the amount of people who are still on the streets during a pandemic that could possibly overwhelm our health system. If you are blessed to be healthy, please be thankful but don’t put others at risk.

80 percent of the infected only exhibit mild symptoms or none at all, but those who become deathly ill are in that 20 percent. Consider that 20 percent when you are on the beach or saying I won’t become infected. Please, remember your mom or grandma and consider what life would be without them.

Embrace your humanity by staying home as much as possible. Thank God for each day this silent monster doesn’t come to your door. Call a friend and check on them and offer each other a bit of human kindness through conversation.

While you are at home with the kids, spend quality time together. Have a specific time of day when the devices are off. Relax and watch a movie together or pull out a board game that’s collecting dust. Fill your home with laughter and remember the preciousness of family.

I know it’s been said before, but we are at war with an enemy we can’t see. COVID-19 doesn’t carry a gun or raise a fist. It lays in your body and takes away God’s most precious gift- your breath. It steals the air we’ve taken for granted and enjoyed.

We must lay in the fox hole together. We must fight with the human diligence used in WWII. The best method to mitigate the spread is to shelter in place. By doing that, you are possibly saving lives. Several states have shut down all non essential businesses, so I hope the amount of people out and about begins to dwindle.

Please, be safe, my readers and friends. It’s up to each of us to do our part to defeat this biological enemy.
How My Cat Taught Me a Lesson About Great Customer Service
By: Alyssa Greenfield
Tags: Branding, Business, Marketing, Cats, Customer Service

How My Cat Taught Me a Lesson About Great Customer Service

The unexpected perks of a fluffy little troublemaker

Thinking about great customer service… maybe

Some things you should know about me:

I work in marketing. I love my cats. I’m a sucker for great customer service.

Typically, these things exist independently of one another. This time, they came together beautifully and I was not about to miss a chance to write about it.

The fella in the photo above is Simba. He’s about eight months old and has far outgrown our five-year-old cat, Snuggles, who was clearly the runt of the litter at about seven pounds fully-grown.
Better Types, Fewer Tests. Why you should care about types and how…
By: Salvatore Pelligra
Tags: Testing, Type Systems, Programming Tips, JavaScript, Typescript

No Types

In CRUI we have a function to bind a Stream and a particular element property. In it’s simplest form, it looks like this:

function h$b(tag, bind)

Honestly, I would not know what to do with this function.

Silly me, the problem is clearly not having documentation! Let’s add it.



* Element with Bind.

* Create an DOM Node and bind properties to a StreamBox.

*

*

*

*

*/

function h$b(tag, bind) /*** Element with Bind.* Create an DOM Node and bind properties to a StreamBox. @param tag A string with an HTML Tag like 'div' @param bind An object specifying which property to bind to which stream box. @returns A component*/function h$b(tag, bind)

Ok, now I’m ready to use it: I’ll use 'input' for tag and for the second one I need an object with a StreamBox and… wait a minute, what are these properties the doc mentions?

After some digging we figure it out (again) and decide to fix the problem once and for all:



* Element with Bind.

* Create an DOM Node and bind properties to a StreamBox.

*

*

*

* This parameter should look like: {value: StreamBox}

*

*/

function h$b(tag, bind) /*** Element with Bind.* Create an DOM Node and bind properties to a StreamBox. @param tag A string with an HTML Tag like 'div' @param bind An object specifying which property to bind to which stream box. We support 2 properties: `value` and `checked`.* This parameter should look like: {value: StreamBox} @returns A component*/function h$b(tag, bind)

A valid example will be:

const stream = new StreamBox('')

const comp = h$b('input', {value: stream})

Now that we understand the function, we still need to verify that it does what it promises.