We All Deserve This Brief Reprieve From the Dumpster Fire That is the Internet

The Internet can certainly feel like a cold, dark place, especially for those of us who can’t help but stay mired in it day in and day out. I’m one of those people, and while I’d like to think I do a pretty good job keeping above the fray, it can be really hard when you just happen to stumble across pieces like this horrifying (and incredibly important) revelation in The Verge. (It turns out, being a professional Facebook moderator and having to witness the worst of the worst things people do to each other on a daily basis is extremely caustic for your health.)

But thankfully, we also have journalists like The Ringer’s Victor Luckerson, who did some work to uncover those times over the last decade when we weren’t trying to kill each other – times when we were actually able to put aside our differences and celebrate the things that connect us. And this isn’t just some dude sharing his favorite viral memes; it’s actually backed by UVM research.   

Building on Ethereum (Part 3): Set Up and Test

In this series, I'm discussing the phases of a project encompassing a non-trivial set of Ethereum smart contracts and the React/Redux application that communicates with them.

The project, called In-App Pro Shop, aims to help Ethereum developers easily support in-app purchases, and it was written over the last half of 2018 as a way of learning about the Ethereum development ecosystem.

This project revealed many aspects of the power and constraints of Ethereum and its programming language Solidity. I hope to pass as much of that on to you as possible in this series.

How to Choose the Best Photo Editor for Designing a Website

A lot of people understand photography as pointing and shooting objects on a camera. Obviously, that’s true, but it’s also only half the process. Photography, or rather professional photography, is a two-step process. In most cases, the second step is more important than the first, since it involves editing the captured images. The image editing […]

The post How to Choose the Best Photo Editor for Designing a Website appeared first on designrfix.com.

An IoT Device Has Finally Passed the CTIA’s Cybersecurity Certification Program’s Rigorous Standards

Introduced back in August of last year, the IoT Cybersecurity Certification Program sought to encourage the adoption of better security features in cellular-connected IoT devices. And now almost six months later, a manufacturer has finally managed to meet the hefty requirements.

HARMAN Spark, an aftermarket connected car device offered exclusively through AT&T, underwent testing at one of the CTIA’s authorized labs.

Graph Algorithms in Neo4j: Label Propagation

Graph algorithms provide the means to understand, model, and predict complicated dynamics such as the flow of resources or information, the pathways through which contagions or network failures spread, and the influences on and resiliency of groups.

This blog series is designed to help you better utilize graph analytics and graph algorithms so you can effectively innovate and develop intelligent solutions faster using a graph database like Neo4j.

Break Down Silos: Enhance User-Centricity With UX on Scrum Teams

I often see User Experience (UX) Designers struggle to align focus, work, and approach with Scrum Teams building increments of product in iterations of 30 days or fewer. Common concerns and questions I hear include:

  • "Developers aren't really interested in the user, they just want to build."
  • "I'm trying to work side-by-side with the team, but I'm always a bit ahead of them, so what should we talk about in our Daily Scrum?"
  • "I don't work in sort cycles, or tactically. My work is strategic."
  • "Why don't developers use my design artifacts and decisions? Why do they never go back and refactor for good design? Why do I feel like I never have any influence?!?!"

These challenges often result in tenuous relationships between UX Designers (UXDs) and Scrum Teams — or even worse, distrust, separation, and "staggered Sprints" (where completely separate teams pass work to each other that they execute in completely separate blocks of time, which they still call "Sprints" — even though those blocks of time function exactly the same as waterfall phases).

TechDays 2019: Microservices for Building an IDE and the Innards of JetBrains Rider

The nice folks of TechDays Finland provided me with the opportunity to speak about Microservices for building an IDE - The innards of JetBrains Rider. It was nice to be able to talk about some of the internals, architecture and design decisions that were made while building a .NET IDE - Rider.

If you’re interested in the slides, find them below. This story is also available as an article on CODE Magazine: Building a .NET IDE with JetBrains Rider.

How to Add a Static Member Property in a JavaScript Class

Recently while solving a problem, I came across a requirement to create a property in a JavaScript class, which needs to be shared by all the object instances. In the programming world, these types of properties are called Static Properties.

There are various scenarios when you need a static member property:

One Method to Rule Them All: Map.merge()

 I don’t often explain a single method in JDK, but when I do, it’s about Map.merge(). This is probably the most versatile operation in the key-value universe. But it's also rather obscure and rarely used.

merge() can be explained as follows: it either puts new value under the given key (if absent) or updates existing key with a given value (UPSERT). Let’s start with the most basic example: counting unique word occurrences. Pre-Java 8 (read: pre-2014!) code was quite messy and the essence was lost in implementation details:

The Best SEO Tools the Pros Really Use in 2019

When I first started using SEO tools and tried to figure out which one was right for me, I was pretty confused.

There are a bunch of tools in the space, they seem to overlap a lot, and there are way too many specialist tools to sort through.

And which one’s have data that I can trust?

After using all these tools for years and years, I’ve come to realize there are only a few choices you need to make.

First, there are three main tools in the market: SEMrush, Ahrefs, and Moz. Everyone uses one of those three. We’ll get to our recommendations for these down below.

I call them the SEO workhors — and all three of them qualify as one of the best seo tools. These workhorses carry the bulk of the weight in any SEO program, but you only need one SEO workhorse.

Any serious SEO program absolutely needs a SEO workhorse. The rank tracking, keyword research, and link analysis are all too difficult or time consuming without one. I’ve tried to get away without paying for them; that was a mistake. I could have gained a lot more traffic by using one of these tools from the beginning.

After you pick your main SEO workhorse, I highly recommend you take full advantage of the free tools. Google Analytics and Google Search Console are both world class and I consider them both required tools in day-to-day SEO operations. Plus they’re free.

Beyond that, there are a few specialty tools worth picking up if you’re doing those types of tasks.

Pretty simple all-in-all.

Here’s how your decision process will go:

  • Pick SEMrush, Ahrefs, or Moz as your SEO workhorse.
  • Install a SEO plugin if you’re on WordPress.
  • Add an advanced SEO crawling tool if your site is massive.
  • Add an outreach tool if you’re doing link building.
  • Get the free SEO tools in place: Google Analytics and Google Search Console.

Best SEO Tool for Beginners: SEMrush

If you’re new to this whole SEO thing, I highly recommend that you go with SEMrush.

Compared to the other “SEO workhorse” tools, it’s by far the easiest to use. Ahrefs definitely has a learning curve and Moz has never clicked with me — I can never understand where to find anything.

SEMrush’s rank tracking reports are also the best in the industry. I check our reports every morning. Within a few minutes, I feel like I’m in complete control of what’s going on. All the other tools spread stuff out all over the place. Or the reports coddle me too much and don’t have enough density. SEMrush has that perfect balance of usability and depth with its reporting. You’ll have everything you need without getting overwhelmed.

SEMrush has all the other essential parts of a SEO workhorse: link analysis, keyword research, and competitive analysis. All of them are more than good enough to hold their own against the other SEO workhorses.

SEMrush Position Tracking

Just for Quick Sprout fans, SEMrush is offering a 7-day free trial, which they don’t normally do. In order to give you full access to their pro plan, they will ask for a credit card before starting the trial.

Best SEO Tool for Advanced Folks: Ahrefs

If you’re more comfortable with all this SEO stuff and want a tool to really flex your skills, go with Ahrefs.

They’re the “new” SEO kid on the block and I have to admit, their tool has a ton of depth to it. Every time I log in, I find a hidden feature or report that makes me giddy.

That’s also the one weakness, I’m still discovering new features I had no idea existed. Ahrefs doesn’t hold your hand at all. For an SEO expert, it’s liberating. The tool is denser than granite. But I’ve watched SEO beginners try to get their heads around it and they really struggle. After poking around a bit, they stop logging in altogether.

Ahrefs Dashboard

Ahrefs is perfect if you know exactly what you want and are determined to get it.

On specific features, I prefer the link analysis in Ahrefs over the other tools. So if you’re planning on doing a lot of link building, it’s worth getting through the learning curve.

Best SEO Plugin for WordPress: Yoast

There are probably thousands of SEO plugins for WordPress.

Only one of them matters: Yoast.

I consider it a required plugin on any WordPress site. It automates a ton of SEO tasks and makes things like meta titles and descriptions super easy to update.

I don’t spend any time on this decision — I install Yoast and move on.

Just use the free version of Yoast; there’s no reason to upgrade.

Check out our full list of recommended SEO WordPress plugins here.

Best SEO Crawling Tool: Screaming Frog SEO Spider

There’s one type of SEO task that the main SEO tools struggle with: crawling and auditing huge sites.

When you have a site with thousands of URLs, there’s just no way to go through the site on your own. And the audit tools in SEMrush, Ahrefs, and Moz are pretty basic.

For a massive site that needs a huge audit, a dedicated crawling tool makes the task so much more manageable. The entire UI and all the workflows are built around having to manage thousands of pages at once. There’s no extra clicking or back and forth. And the tool automates as much of the process as possible. You’ll instantly find all the broken links, missing meta descriptions, bad redirects, and duplicate content on your site.

Screaming Frog SEO Spider is our preferred site crawler. It’s been around the longest and has site crawling dialed.

You didn’t hear this from me, but since site audits are usually a one-and-done type project, you can sign up for the tool, pay for a few months while doing your site cleanup, then cancel it once you’re done.

The only folks I know who have long-term subscriptions are SEO consultants who do multiple audits every month for clients.

Best Outreach Tool: Pitchbox

I remember the days when you could get away without doing any link building in SEO. That’s how we built the KISSmetrics marketing blog to over 700,000 visitors per month. We just posted a ton of great content over an 8 year period.

Nowadays, that’s not nearly enough. SEO has just gotten too competitive.

My rule is that if I’m not willing to do outreach for link building, I shouldn’t be focusing on SEO for traffic. I should find another strategy to grow my business.

I’ve done a bunch of outreach projects out of Gmail and a Google Sheet. It’s such a pain. Especially when a team is involved. Keeping track of who contacted who, updating last status, remembering to send follow-ups, coordinating and updating templates, it’s all a massive pain that takes up way too much time.

And outreach is painful enough, no reason to make it any harder.

These days, I always use an outreach tool when link building. I don’t even consider the option of skipping it. A good outreach tool automates the majority of the outreach. It’s a game-changer. I used to hate outreach with every fiber of my soul, now I don’t mind it.

Our favorite tool for outreach is Pitchbox. It’ll find contacts for you, automate email follow ups, and keep track of all your outreach contacts. Seriously, use it.

Make Use of Google’s Free Tools

Google Analytics is our favorite website analytics tool. And the search data in Google Search Console is a gold mine. Don’t bother trying to pay for any of the paid analytics tool. Google Analytics gives you more than you’ll ever need and it’s completely free.

We have a guide on how to set up Google Analytics here.

After you get Google Analytics installed, go set up Google Search Console too. It’s completely free and you’ll get access to your data once Google Search Console verifies your Google Analytics account. Other than the authentication to prove that you own the site, there’s nothing else you need to set up for Google Search Console.

Google Search Console is the one and only place to get real keyword data from Google. Every other tool is a best guess. It also records all the errors Google picks up on your site, tells you what’s been indexed on your site, and gives you impression and click-through data on all your keywords. I can’t overhype it enough — use it.

We never work on websites without installing both of them and they’re completely free. Even if they were paid, they’d be worth every penny.

Mark Zuckerberg’s New Privacy Initiative Needs to Be Seen as the Regulatory Dodge It Is

In a recent blog post on Facebook, Mark Zuckerberg laid out his vision for “building a privacy-focused messaging and social network platform.” Too bad it’s a bunch of BS.

“I believe the future of communication will increasingly shift to private, encrypted services,” he wrote, “where people can be confident what they say to each other stays secure and their messages and content won't stick around forever.” Zuckerberg acknowledged the company’s abysmal reputation for protecting users’ privacy, saying, “I understand that many people don’t think Facebook can or would even want to build this kind of privacy-focused platform.” He then set out to reassure the apparently gullible masses that Facebook has officially turned over a new leaf.

Get the Social Media Marketing Bundle for only $34

With the introduction of social media, the whole marketing landscape has changed. While traditional forms of advertising such as billboards, TV, radio, and newspapers are still being used, social media makes it easier for businesses to reach their audience and increase brand awareness. Incorporating social media into your marketing mix can help you grow your […]

The post Get the Social Media Marketing Bundle for only $34 appeared first on designrfix.com.

Build Your First Chatbot With SAP Conversational AI

When you’re a beginner bot builder learning about natural language understanding, conversation flows and messaging platforms can feel a bit overwhelming. In this guide, I’m going to help you build your first bot on SAP Conversational AI. By the end of this tutorial, you will have a functional chatbot, and you will know how to:

  • Make your bot understand human language
  • Build a conversation flow
  • Deploy your bot to an external channel (Facebook Messenger, Twitter, etc.)

With SAP Conversational AI, you can easily design complex conversational flows fueled by a powerful artificial intelligence.

HMTL, CSS and JS in an ADD, OCD, Bi-Polar, Dyslexic and Autistic World

Hey CSS-Tricksters! A lot of folks tweeted, emailed, commented and even courier pigeoned (OK, maybe not that) stories about their personal journeys learning web development after we published "The Great Divide" essay. One of those stories was from Tim Smith and, it was so interesting, that we invited him to share it with the broader community. So, please help us welcome him as he elaborates on his unique personal experience and how it feels to be in his shoes as a front-ender.

Hi folks, my name is Tim Smith

I have ADD, OCD, Bi-Polar, Dyslexia… and not to mention that I am on the Autism spectrum. This combination (apart from causing me to feel a lot of personal shame) makes coding very hard — especially learning how to code, which I am trying to do. Things get mixed up in my head and appear backwards to the point that I find it nearly impossible to focus any longer than 15-20 minutes at a time. Perhaps I will expand on this in another post. Even now as I write this, I feel pulled to rate each song on YouTube Music and attempt to correct every mistake I make. And since I keep switching “write" with “right," this becomes infuriating and discouraging, to say the least.

I do not read well, so learning from books is the least effective way for me to learn (sorry O’Reilly). Online tutorials are OK, but I tend to sell myself short by being lazy with copy and paste for the code examples. If I force myself to hand-type the examples, I get the benefit of muscle memory but drown in the words of the tutorial and eventually lose interest altogether.

Video tutorials are my ideal learning method. There’s no reading involved and no way for me to copy and paste my way out of things. Having to stop and start the videos in order to type the code is maddening, but well worth it. YouTube is a great place for video tutorials if you have the patience to wade through them… which I don’t.

I found Chris Coyier in the early 2000s. The treasure trove of articles, guides, and videos contained here on CSS-Tricks has been a major benefit for me and actually progressed my ability to learn code. Later, I found Wes Bos. He, too, has been a leading contributor to my web learning. Wes unlocked many of the things I struggled with, namely React and the new features of ES6.

Together, I’d say Chris and Wes are responsible for at least 80% of my collective front-end knowledge. (Personal aside: Chris and Wes, you two are my heroes and secret mentors.) Both Chris and Wes have a way of giving me the information that's relevant to what I'm learning in a way that is fun and entertaining as well as straightforward and precise. They don’t just present the code; they explain the why and history behind each topic. Wes is a little better at this, but the sheer number of videos Chris has created has kept me busy for years and will continue to into the future.

Simply writing code is another effective way for me to learn. I like to geek-out and setup development servers for various web languages and libraries and play around. I have learned a lot about MacOS and Linux (mostly Ubuntu) while also learning the basics of many web languages and libraries: PHP (for WordPress themes), Python, React, Vue and many others. I learned to embrace the command line and avoid GUIs when possible. Nothing against GUIs; I simply find the command line more precise (and just between you and me, way cooler to brag about to non-coders).

I still do use the command line — or at least I would if I still had a laptop or desktop to work on. I am actually writing this on an iPad Mini 2. However, I have found another great way to write and share code without the need to set up servers and complicated environments: CodePen. I joined an early beta way back when and it was love at first sight. I can now write code, share it and get feedback all in one place (here’s my profile). Every time I get a fun idea or find a fun kata, I fire up Codepen and just start coding. No tricky dev setup. There are other apps that do this but CodePen is unique because of the social aspect and the ability to easily embed code samples on forums.

So, that’s a little about me. What I want to get into is how I learn HTML and CSS because it’s probably somewhat similar to yours, but different than how you might have gone about it.

Breaking into HTML

A black and white tree illustration.

I learned HTML in a few different ways. At first, I would look at the source code of popular web sites. In the early nineties, when I started to learn HTML many, if not most, web browsers had the ability to show the source code of a website. I saw all of the tags, how they were used and the basic structure of the sites. I was able to reverse-engineer them. I had not learned CSS at the time, so my first websites were single column and very boring.

Quick aside: Without CSS, all websites are perfectly responsive and look great on any device or screen size. We break them with CSS, then need to fix them... ponder that a bit.

Thanks to source code, I began reading articles on the web and studied constantly. I found the DreamInCode forum which serves as a forum for all code disciplines and languages — similar to StackOverflow because, like StackOverflow, the people were arrogant and rude to newbies, at least in my experience. Still, I was able to see how people approached various HTML concepts and problems and this was the springboard upon which I launched my learning adventure. I received blunt, often harsh feedback on my code examples. As hard as it is to hear hard criticism, it benefitted me as it taught me the right and — even more importantly, the wrong — way to approach and write HTML.

Like most things, writing and mastering HTML is all about trial and error. I had to create hundreds of horrible websites (if you could call them that) before it “clicked" for me. But that’s better than nothing, as we’ve all heard it said before:

Just build websites!
— Chris Coyier

It was not long after that I was introduced to CSS, and then the real journey began...

Along came CSS

Tree illustration with green background

The easiest way for me to describe CSS is this: It’s the code that makes your HTML look nice." I had to adopt a KISS attitude as I learned CSS because I found that I was overthinking it. CSS is simple if you let it be. Let’s have a look:

See the Pen
Thing
by Tim Smith (@WebRuin)
on CodePen.

This is about as simple as CSS is. Name your block in HTML (e.g. <div class="Tim">...</div>), then target that name in a CSS file with properties to describe the block, like colors, borders, font treatments among much, much more.

At first, I would spend all my time trying to memorize as many CSS properties as I could. I would “Alta Vista" (remember that?!) around for what sort of things others were doing with CSS and how they were doing it. This was fun and informative but only served to confuse me to no end. Trying to reverse-engineer CSS as I did with HTML only got me so far. My memory for stuff like this is poor, at best. I had to step back, take a deep breath (literally and figuratively) and find a new approach.

My thought process typically goes something like this:

  1. Do I want the words to be black? If so, do nothing
  2. What about the background color? The default white is boring so... give it a background color.
  3. How big do I want the element to be? Don’t overthink this as far as measurement units go, because pixels are fine and, well, height and width seem pretty logical to me.

And so on. Simple questions with simple property names. My point is you can do some amazing things with simple CSS. It was that simplicity that made me want to learn and apply everything I found. But, at the same time, I was so overwhelmed that I almost quit web development for good. It’s an awkward conflict: the simplicity and elegance are welcoming and fun but the myriad possibilities are dizzying and impossible to retain.

What worked for me was taking an incremental approach to learn CSS. By starting small and slowly adding more as I truly learned and understood the properties. I found I could have fun and be creative at a comfortable pace without putting too much pressure on myself.

I won’t lie. I am not a designer. Given a blank canvas, I will freeze or come up with a mediocre design that’s derivative of a mish-mash of other designs I like. That said, I am great at coding a design that someone with actual design skills can put together (like this).

I fell in love with CSS for one reason: it is the perfect balance of logic and design. A lot of coding is like this. Code can be beautiful, but CSS is the bee’s knees for me!

JavaScript is hard! But I’m trying.

Full color tree illustration

HTML and CSS came relatively easily to me. I stumbled a bit on CSS Grid and some of the more advanced stuff, but it just clicked for me. As I alluded to earlier, I am a visual learner. Both HTML and CSS are inherently visual languages, and they give me the instant gratification my ADD needs. Both are straightforward and commonsensical to me.

In contrast, Javascript is something I find to be very, very difficult. It is a logic-based language which would ordinarily be my cup of tea; nevertheless, I have found it challenging to “click" with. Despite a few epiphanies while learning it, JavaScript seems to elude me beyond the basics. I have completed Wes Bos’ JavaScript30 course along with many other tutorials. They make sense in the moment it’s being explained to me, but even still, when presented with a “blank canvas" so to speak, I forget most of the concepts and either write the same ol’ stuff over and over or simply give up.

Surprisingly, React came much more naturally to me. I think it has to do with its modularity and my love for blocks, LEGOs, and puzzles. I have learned it well enough that I have been able to be creative with it and have started writing an app with it: a crowd-sourced urban bathroom locator. I have written and rewritten the start of the app with various Flux libraries and backend data libraries. I invariably give up only to start again, like the famous definition of insanity. I just keep thinking I will figure it out and/or find someone to do the hard parts for me.

My roadblock with React is JavaScript, of course. That may not make sense, but remember my stance on blocks. I know React is JavaScript. To me, though, it is quite different than vanilla JavaScript. Closures, pure functions, arrow functions, let vs. const vs. var, the enormous set of built-in methods, not to mention imported libraries, classes, and of course, my nemesis, Big O (how I loath Big-O)... my head is spinning even as I write this.

I want so badly to be, at the very least, decent at Javascript so I keep trying. Hundreds of tutorials, code schools like freeCodeCamp.org, Treehouse, Khan Academy, and yes, even muscling through many books (I love JavaScript: The Good Parts).

I have no trouble learning the syntax. The hangup, I think, lays in a lack of computer science knowledge and this inability to think mathematically. Algorithms make sense in concept, but their practical application simply blows my mind.

For mental health reasons, it was necessary for me to step away from my web development career in 2005. I was able to get back into it around 2010 when I worked for a few startups, but I never truly got back in. Javascript is my Achilles heel. I was lucky to find a few jobs that were truly light on JavaScript so I could focus on HTML and CSS — the things I thought added up to front-end development — but inevitably, I was expected to write JavaScript beyond basic interface enhancements and the jobs fell apart. So I either quit or was fired.

The ongoing search for work

Animated version of all tree images from start to finish.

Looking for work in recent times has been a nightmare! We now live in a world dominated by JavaScript and it seems no one wants a front-end developer whose strengths lie in HTML, CSS with an intermediate knowledge of Javascript — especially those without a degree in Computer Science. I can’t even find a job posting for this on any major job site.

I have had the honor of interviewing with recruiters at Facebook, Google, and Apple but I could not get past the first round of phone screening. I was asked questions that I felt have little-to-nothing to do with what I understand front-end development to be. There were no questions about CSS best practices and even nothing about semantic HTML or the proper use of ARIA attributes. All they seemed to care about was Big O and efficient loops. Even interviews with smaller companies were like this. Have services like Wix and the like taken all the core front-end jobs away?

Despite all the challenges I have faced, I feel I have mastered HTML and CSS and have a baseline grasp on JavaScript. I am very proud of that. While I dream of getting a job at a large company like Facebook, Google, or Apple, I really just hope to find a role where my HTML and CSS skills will shine and I can gain real-world experience with JavaScript as a junior developer with the benefit of mentoring somewhere, like the San Francisco Bay Area where I currently live.

We all have different learning styles and paces, so don't give up before you have tried every possible way to learn what you are trying to do. And, if you come up with a new way, please share so we can all broaden our individual and collective knowledge.

I hope this article has reached at least one other developer like me! Thank you to all my predecessors. Happy coding!

The post HMTL, CSS and JS in an ADD, OCD, Bi-Polar, Dyslexic and Autistic World appeared first on CSS-Tricks.

Making Sense of Time-Series Analysis

Even if you haven't heard of data described as a "time-series," you've probably seen examples out in the wild. As the name suggests, a time-series is a representation of an event over a period of time. That could mean representing many different changes: the highs and lows of your curling ice temperature over a year, the number of cars that drive across a bridge every day — or, more relevantly, your application usage data, such as error rates over time or the growing number of activations per day. With enough data collected — that is, over a long enough time period — you can start to forecast future trends using time-series analysis.

There are many different ways to project trends about your application's behavior. Some systems are configured to perform a handful of tasks, while others are much more flexible, at the cost of a longer initial setup and administrative time. Your choice of tool depends on the goals you're trying to achieve.