Author: Jones

#Developer: Reimagine Communities 2018 – The Full Retrospective

#Developer: Reimagine Communities 2018 – The Full Retrospective

I recently visited Capital One’s Conference Center in Plano to attend the Reimagine Communities symposium on the topic of Harnessing Technology to Increase Access to Opportunity. If you missed my last post with an overview of the symposium, you can check it out here. In this post, […]

Instagram: How to Send a DM

Instagram: How to Send a DM

In this blog I’ve covered different types of social media platforms, what different kinds of interactions mean, and what kind of messages won’t get you replies. In this post I’m going to outline what a DM (direct message) is and how you can actually send […]

Instagram: Getting a Cease and Desist Order

Instagram: Getting a Cease and Desist Order

24,522 Followers

Things that make my list of “unpleasant but necessary things to deal with” include: taxes, insurance of all kinds, making doctor appointments, and anything involving legal action.

Which is why when I got an Instagram message from an account telling they had a cease and desist order against me, my immediate reaction was to have a small panic attack followed by a lot of confusion.

The Confusion

Since this blog is about interactions online  – and they’re not all glowing experiences – I try to be objective. Everyone has different standards of interaction on the internet which is both understandable and makes it way more interesting (e.g. some people will swear by Instagram bots, some people think they’re the bane of the earth). That being said, I couldn’t imagine someone finding a legal reason to file a cease and desist order about something I’ve said.

To add to the confusion, I’d never heard of this account or store before. I searched my blog for their account name and got nada. However, when I googled their name and the word “scam” lo and behold my blog showed up on the second page of google because one of my commenter’s had mentioned the brand in a comment.

Things started making a lot more sense

The Resolution

Since I had to go to a search engine just to figure out why they were messaging me, I also incidentally saw a host of other blogs and reviews about their website that showed them in a less than glowing light. This definitely piqued my interest and made me wonder whether they were trying to get rid of any bad press.

I was suspicious that they hadn’t emailed me (my email is pretty much everywhere, including on the social media account they messaged me on) and requested that they send me the actual paperwork.

I then looked at the comment (it was actually three comments) that was on my post to try to gauge if it was actually unfair to them

It looks like [this company] does the same thing. But what makes worse is they are a clothing company, so it makes it look like they are selling the clothes that the “model” is wearing, even though those are just their own clothes.

 

Well after further looking. They have similar items to what the women are wearing and then not at all listed. But a lot of the modeling poses don’t even make sense.
Also there are lots of generic instagram names but when you click them they tell you to go to [their website]
I looked at another website that lists clothing store that scam and in the comments several women posted that it was a scam.
It just seems kinda sketchy.

 

Oh also there’s no “shout out” that I can see. So I dunno.

I can definitely see how the company wouldn’t like it, but the commenter clearly goes from “It looks like this company does this too” to “I’m not actually sure, maybe they aren’t”. It’s a stream of consciousness investigation of their social media and internet presence, which honestly sounds like pretty good feedback (especially if people think your website looks like a scam and it isn’t).

While I didn’t think my commenter did anything egregious, I also don’t like being on the wrong side of the law, so I eagerly looked for the document in my inbox (which they said they’d send me within 48 hours).

Long story short: It’s been a month and a half and I haven’t received an email from them

So What Happened?

After doing some research, it looks like this company exists only online and heavily uses Instagram collaborations for publicity (a lot of the FAQs on their website are about collaborating and discount codes, there’s no physical address on the website, etc.).

I suspect that they were (or are) trying to get rid of bad press and wanted to scare me into taking the comments down. They could have filled out one of the handful of contact forms on my blog, left a comment on the blog itself, or emailed me, but instead they chose to first comment publicly on an Instagram post and then privately DM me. Using an Instagram DM meant that it looked reasonable to not send an actual document but say that they had one.

The fact that they never followed up via email reinforces my belief that it was a scare tactic. Maybe they just forgot, but it definitely looks like they were trying to see what they could get away with via DMs.

TL;DR

I had a company DM me on Instagram saying they had a cease and desist order for me regarding a comment on one of my blog posts. I asked them to email it to me and they never did, which makes it look like they might be deserving of the bad rap they’ve gotten online. I didn’t do anything and they haven’t contacted me since.

The moral of the story: Always ask to see the paperwork.

 

#Developer: Reimagine Communities Symposium 2018

#Developer: Reimagine Communities Symposium 2018

As a born and raised Alaskan now living in Texas, I get a lot of questions about why I came to the Dallas area and why I’ve chosen to stay. Though I initially moved south to attend university as a student, I’ve stayed because of […]

Amazon Reviews: Vine Voice and Unusual Reviewing Activity

Amazon Reviews: Vine Voice and Unusual Reviewing Activity

Amazon Ranking: #12,153 I purchased a beard-care gift-set for my bearded male associate, and after two weeks (and several tests of the product) wrote an extensive amazon review detailing the loves and eh’s of the product. I went to press “submit” and an Amazon error […]

Programming with the Sphero BOLT

Programming with the Sphero BOLT

My first exposure with robots was at an engineering camp I attended when I was 15, and let me tell you: it was not love at first sight. I loved the programming aspect of it (that camp was also where I was introduced to programming), but I never developed a love for sticking bits of machinery together.

I avoided it so thoroughly that I managed to escape a (now mandatory) class in university that involved building robots. While my friends were playing with arduinos and drones, I was reading books about data science and the human mind.

Enter, the Sphero Bolt

When I was asked if I’d like to try out the new Sphero Bolt I was skeptical. I knew they were a robotics company and I don’t like advocating for products that I, well, don’t like. However, after unboxing it and fiddling with it for thirty minutes I was completely sold.

The Sphero Bolt is a small plastic orb with machinery inside (the guts don’t just make it move and light up, but also have a host of sensors that I haven’t even begun to explore). It differs from Sphero’s other products in that it has a matrix on top that can be used to spell out words or create shapes which provides a whole different level of interaction.

A robot for the sake of being a robot? Not cool.

A robot for the sake of education? I can get behind that.

A robot that you can program to interact with a human (or group of humans) that is also educational? Count me in.

The Bolt also happens to be cute and compact – coffee cup for scale

In terms of programming, you can choose what level of complexity you’re comfortable with. They have both phone and computer apps that act as IDEs (development environments) with drag-and-drop capabilities as well as the ability to program in JavaScript. Then again, if you feel like just using the Bolt as a remote-control ball so you can run into people’s ankles, you can do that too.

Programming a Party Game in JavaScript

I don’t have a ton of room in my one-bedroom apartment, so I had no desire to set up a maze or obstacle course that I’d be tripping over for days. After looking at some of the programs published by the Sphero community, I realized that the matrix could act the interface for a video-game, but instead of buttons to push you can use the sensors to interact with it through collisions and tilts.

For my first interactive program i decided to go simple, very simple.

  • I have 8 different frames (images), 7 of them are hearts in different colors, and 1 of them is a little fire symbol
  • The Bolt starts out with a heart
  • When it senses a collision, it randomly choose a number between 0 and 7 and displays that frame
  • Rinse and Repeat

 

If I’m being honest, I’m unreasonably proud of the flame symbol I came up with

 

Their IDE is contained within the Sphero Edu app that you can get on either your phone or computer (or both) – it has a fair number of pre-named functions, auto-complete, and the IDE will throw errors to help you debug your code. This means that if you want to try your hand at textual programming but have never used JavaScript before you won’t get totally lost.

The IDE also allows you to do “block” programming (and it can translate the block programming into JavaScript). Block programming is akin to programming in sentences; it involves pre-made instructions you drag-and-drop into order then fill in the blanks:

“Turn 90 degrees and travel for 2 seconds” or “Show this picture on the screen”.

All this is to say that if you’re hesitant to dive right into JavaScript (or if you’re using this with a child who’s not ready for functional programming) you can create a program using the blocks and then view the JavaScript code after you’ve perfected your program.

This is what the code looks like:

// This is triggered as soon as the program starts
async function startProgram() {
	playMatrixAnimation(0);
}

// This is triggered each time there is a collision
async function onCollision() {
	 var randomNumber = getRandomInt(0, 7);
	 playMatrixAnimation(randomNumber);
}

registerEvent(EventType.onCollision, onCollision);

// Each frame is registered separately
registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 }, 
		{ r: 255, g: 0, b: 0 }] // Red
});
	
registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 },
		{ r: 119, g: 136, b: 153 }] // Grey
});

registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 2, 0, 0, 0],
			  [0, 0, 0, 2, 2, 0, 0, 0],
			  [0, 0, 2, 1, 2, 0, 0, 0],
			  [0, 0, 2, 1, 2, 2, 0, 0],
			  [0, 0, 2, 1, 1, 2, 2, 0],
			  [0, 2, 2, 1, 1, 2, 2, 0],
			  [0, 2, 1, 1, 1, 1, 2, 0],
			  [0, 0, 2, 2, 2, 2, 0, 0] //Fire
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 }, // Black
		{ r: 255, g: 0, b: 0 }, // Red
		{ r: 255, g: 97, b: 3 }] //Orange 
});

registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 },
		{ r: 0, g: 245, b: 255 }] // Turquoise
}); 

registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 },
		{ r: 142, g: 56, b: 142 }] //Purple 
});

registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 },
		{ r: 61, g: 89, b: 171 }] //Cobalt 
});

registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 },
		{ r: 255, g: 182, b: 193 }] //Pink 
});

registerMatrixAnimation({
	frames: [[[0, 0, 0, 0, 0, 0, 0, 0],
			  [0, 1, 1, 0, 0, 1, 1, 0],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [1, 1, 1, 1, 1, 1, 1, 1],
			  [0, 1, 1, 1, 1, 1, 1, 0],
			  [0, 0, 1, 1, 1, 1, 0, 0],
			  [0, 0, 0, 1, 1, 0, 0, 0],
			  [0, 0, 0, 0, 0, 0, 0, 0] //Heart
			 ]],
	fps: 1,
	palette: [
		{ r: 0, g: 0, b: 0 },
		{ r: 0, g: 205, b: 102 }] //Cobalt 
});
Sphero Bolt Party Game

A collision is registered when the Bolt senses it’s run into something. Traditionally, this would be hitting a wall or other object, but it can also be something like being tapped or landing in someone’s hand after being thrown.

In terms of making this into a game there’s a lot of flexibility and variations you can do with this select-a-random-image pattern. Personally, I like the idea that when someone gets the fire symbol they have to answer a question or do something silly (or a different activity, depending on the age group).

This program could also be easily modified into some kind of icebreaker used by an organization by making each symbol represent a different get-to-know-you question, it could be used to decide where lunch-mates should go out to eat, or it could even be modified to create a “surprise workout routine” – if you wanted, you could get really complicated and add a timer to it. Like I said, the opportunities are endless even for adults.

To test your program you must have a bluetooth connection to load it up onto the Sphero Bolt, but it happens so fast (less than 10 seconds) that it’s easy to make minor adjustments and test as you develop.

TL;DR

Sphero sent me their new product to test out, and I absolutely love it. I can see how it would be great for teaching kids how to program, but even as an adult the applications seem pretty endless. In this blog post I explain the code for a simple game that you could use at a party or within a small group of people, but it could be modified to do pretty much anything. You can get your own here.

Salesforce Marketing Cloud Email Specialist Certification: A Retrospective

Salesforce Marketing Cloud Email Specialist Certification: A Retrospective

One of the things I love about being a technical consultant is that I’m encouraged to learn new things, even if they don’t directly relate to my projects. Over the past year one of those technologies has been Salesforce: first with my Platform Developer 1 […]

Instagram: Unexpected Collaborations Vol 1 – That Time I Went to a Martial Arts Studio for Social Media

Instagram: Unexpected Collaborations Vol 1 – That Time I Went to a Martial Arts Studio for Social Media

23,833 Followers Would I, unprompted, ever go to a kickboxing gym? Probably not. Would I do it for Instagram? Absolutely The Approach I received a message from a mixed martial arts studio in Dallas offering free classes to influencers. I thought this was an interesting […]

Developer Book Club: Weapons of Math Destruction

Developer Book Club: Weapons of Math Destruction

Good writers make you think, great writers make you want to change the world around you. I would argue without hesitation that Cathy O’Neil is a great writer, and with a PhD in Mathematics from Harvard you can rest assured that she knows what she’s talking about.

Her book, Weapons of Math Destruction tackles one of the tech world’s hottest phrases of the decade: Big Data.

Artificial Intelligence (AI), mobile, social and Internet of Things (IoT) are driving data complexity, new forms and sources of data. Big data analytics is the use of advanced analytic techniques against very large, diverse data sets that include structured, semi-structured and unstructured data, from different sources, and in different sizes from terabytes to zettabytes.

Big data is a term applied to data sets whose size or type is beyond the ability of traditional relational databases to capture, manage, and process the data with low-latency. And it has one or more of the following characteristics – high volume, high velocity, or high variety. Big data comes from sensors, devices, video/audio, networks, log files, transactional applications, web, and social media – much of it generated in real-time and in a very large-scale.

Analyzing big data allows analysts, researchers, and business users to make better and faster decisions using data that was previously inaccessible or unusable. Using advanced analytics techniques such as text analytics, machine learning, predictive analytics, data mining, statistics, and natural language processing, businesses can analyze previously untapped data sources independent or together with their existing enterprise data to gain new insights resulting in better and faster decisions.

IBM

Click the image above to buy the book

Big Data is being used in the modern world for anything and everything you could think of: it’s used to develop marketing campaigns, determines what Netflix suggests you watch next, predicts the spread of diseases, and it’s the reason why airline flights are more expensive on certain days (no one can quite agree on which days for very long). “Data Mining” is a hot topic as people try to identify patterns and use them in an ever-increasing number of fields.

O’Neil isn’t interested in Netflix suggestions, however, she’s far more concerned about the way data is being used to target certain populations through harmful proxy measurements. Proxies can seem like a good idea because they can be used to “measure” things that are subjective (e.g. how responsible a person is), but can turn destructive when the proxy can also be indicative of things that are largely outside of a person’s control (e.g. socioeconomic status).

A frequent example of a bad proxy measurement in the WOMD is the use of credit scores to judge people: a bad credit score may be interpreted as an indication that a person lacks financial responsibility, but it could just as easily indicate that someone is going through tough times due to circumstances beyond their control. If an employer weeds out an application based on the candidate’s credit score without even talking to the person, they’re inevitably missing out on potentially good employees while also preventing that person from earning money that could go towards improving their score. If enough employers rely on this proxy measurement, then what’s the chance that a candidate will ever find a job?

Many of the examples in the book rely on algorithms being able to cut people out of the equation in order to save time and energy: a school that wants to weed out 3/4 of applications, a police department that only wants to focus on the most dangerous parts of the city, an employer that only wants to spend time interviewing “qualified” applicants. The people who are denied access (or targeted) often don’t even know why they were disqualified, and the people relying on the algorithms will never know what they’re missing out on for the sake of efficiency. By using these flawed algorithms, those relying on them are acting a way that is systematically prejudiced against certain groups (systematic in the purest technological sense of the word, because even the humans utilizing them may not totally understand how they were designed).

How do bad proxies apply to software engineering?

In reading Weapons of Math Destruction, I began to think about how the applications programmers create can be biased in ways that aren’t commonly thought about but could be equally harmful.

In my university’s Graphics & User Interface (GUI) class we talked about accessibility for all of one class period. The focus was on color schemes and the colorblind: if you make a website with red on a green background, that will render it totally useless for about 8% of Northern European men. I’m happy that I learned to take that 8% into consideration, but there are other groups that we aren’t talking about.

One of the groups that’s been haunting me in particular is people who don’t have personal computers. In 2014 a study confirmed that the group most likely to use internet at public library are those living at or below the poverty line who generally do not have a computer at home.

According to the Gates Foundation, in 2010 seventy-seven million people used internet at public libraries in the United States; that’s almost 24% of the population (a huge percentage that was never discussed in any of my computer science classes).

What did those people use the internet for?

  • Career needs: searching for jobs, filling out resumes, etc.
  • Health issues: learning about illnesses, seeking health providers.
  • Education: homework, online-classes

I don’t know a lot about internet at public libraries, but I would imagine that most of them aren’t operating on Google Fiber. As a developer in a first world country, I know that I’m personally accustomed to working with the best computers (and acceptable internet) that my company can get its hands on – this means that when I’m testing my software I’m generally not thinking about how long it takes someone on a 5-year-old computer to do the exact same thing.

If your website is aimed at providing a service for people, then make sure it’s providing that service for all people. More than once I’ve cursed at a website that takes a minute to render or I’ve just given up on looking at it altogether (I’m looking at you, Invision).

Ironically, much like biased algorithms, service-based websites that are created to “help” are also more likely to be slow and fail their end-users

Chalk it up to Capitalism, but it seems like websites that generate major revenue are rarely down, whereas websites offering free or affordable services for people suffer from poor architecture and  testing strategies.

Do you remember the Obamacare website that crashed when people tried to sign up for health insurance?

“The problem has been that the website that’s supposed to make it easy to apply for and purchase the insurance is not working the way it should for everybody,” Obama said. “There’s no sugar-coating it. The website has been too slow. People have been getting stuck during the application process. And I think it’s fair to say that nobody is more frustrated by that than I am.”

You know who was probably more frustrated than the President? Single moms using public computers during their lunch hour who were trying to sign up for health insurance and couldn’t when they finally had the time to do so. I know people who will give up their access to whole websites just because they forgot their password information; how many people do you think ended up not signing up for health insurance because the website’s architecture wasn’t built to scale well? We will never know the answer to that because much like the employers who use algorithms to cut people out of the application process, developers usually only see the people who made it through successfully. Unless you have monitoring software or very vocal customers, you aren’t going to get a lot of valuable feedback on why people quit halfway through.

The Obamacare website got a lot of publicity because it involved a large government initiative, but there are other websites that are equally necessary that go down without notice or have unexplained latency issues.

  • The website where my boyfriend pays off his student loans was down for at least 24 hours last month with no information as to why or when it would be up and no news coverage – there’s nothing scarier than your bank’s website just suddenly being offline
  • I’ve personally been waiting for a money transfer to go through for almost a week to my Health Savings Account so I can re-order my prescriptions without trying to find time in my schedule to call my insurance and explain why they have to put the charge on two different cards
  • The VA’s website allowing vets to obtain identification cards crashed earlier this year likely because they hadn’t properly load-tested their site
  • And others that never got news coverage but definitely impacted people’s lives

We get it, websites go down, what are you going to do about it?

Besides just being frustrated, we (developers) need to hold ourselves and our websites to higher standards. Engage in not just appropriate testing practices, but go overboard in how thorough we are in developing user profiles.

TL;DR

Weapons of Math Destruction by Cathy O’Neil is a great quick and simple read. You don’t have to have a PhD in mathematics to appreciate her illustrations and writing style, but the concepts are far-reaching in our modern world. You can buy it here

Amazon Reviews: Reply-All Podcast Features Amazon Reviews

Amazon Reviews: Reply-All Podcast Features Amazon Reviews

Amazon Ranking: #11,008 Do you listen to Reply All? Did you listen to today’s? Weren’t you blogging about how amazon reviews are rigged? Well, that’s today’s episode! This was the series of texts I got from one of my friends who keeps up to date […]