Author: Jones

#Developer: Autogenerating (and Formatting) Table of Contents in Powerpoint using Macros

#Developer: Autogenerating (and Formatting) Table of Contents in Powerpoint using Macros

You can take the consultant out of a development role, but you can’t take the developer out of the tech consultant So when my work-partner said “I added a slide at the beginning of this deck, can you update the seven table of contents slides 

Instagram: What Happens When Instagram Goes Down

Instagram: What Happens When Instagram Goes Down

25,554 Followers I tried to post a picture. Failed to upload. I tried again. Failed to upload. Tried again. Finally uploaded! Checked it 20 minutes later: 19 likes. Checked twitter to see if there were any #InstagramDown posts and: In honor of the July 3rd 

Instagram: The 25k Plateau

Instagram: The 25k Plateau

Over the past few months (if I’m being honest, the past seven months) life has done what it tends to do: it’s gotten really busy

Between traveling for the holidays, a new project at work, planting a garden, and other things that have made my to-do list longer than usual, advancing Instagram growth on Jones Does Life just wasn’t one of my top priorities.

Fun family photo
Pictured: My family

Where We Left Off

We left off mid-October with 24.9k followers. I made 25k in November, and since then I have posted 30 times, which averages to something like 4 posts a month (this is a huge departure from the 15 posts a month I was posting prior to this period).

The Ramifications

Interestingly, I’ve managed to hover around that 25k mark for that half-year period. There hasn’t been a huge exodus or addition since then. In general, engagement has decreased (less messages in my inbox, fewer people reaching out for collaboration), but it seems like over the 20k follower mark results in some sort of stable mass of people that will interact and promote the content you create whenever you create it. 

In the meantime, I have been creating story content. Nothing extravagant, just quick updates to inform anyone curious that I am still alive. It still seems like posting on the native feed is what drives engagement numbers up, and I don’t see a future where you can fully exist on Instagram as a story-based entity. 

Going forward

I’m starting another project that will involve a lot of travel (and ironically, probably a lot more down time) so I’ll be starting back up with the observations, commentary, and experiments. 

One of the things I’m adding to my to-do list is a coherent newsletter with combined life, instagram, and blog updates. If that sounds interesting to you feel free to fill out this form where you can specify what topics you’re interested in.


Though I’ve taken a hiatus over the past few months, the 24k – 25k threshold of followers has held strong with minimal upkeep.

#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


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.


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:

[pastacode lang=”javascript” manual=”%2F%2F%20This%20is%20triggered%20as%20soon%20as%20the%20program%20starts%0Aasync%20function%20startProgram()%20%7B%0A%09playMatrixAnimation(0)%3B%0A%7D%0A%0A%2F%2F%20This%20is%20triggered%20each%20time%20there%20is%20a%20collision%0Aasync%20function%20onCollision()%20%7B%0A%09%20var%20randomNumber%20%3D%20getRandomInt(0%2C%207)%3B%0A%09%20playMatrixAnimation(randomNumber)%3B%0A%7D%0A%0AregisterEvent(EventType.onCollision%2C%20onCollision)%3B%0A%0A%2F%2F%20Each%20frame%20is%20registered%20separately%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%20%0A%09%09%7B%20r%3A%20255%2C%20g%3A%200%2C%20b%3A%200%20%7D%5D%20%2F%2F%20Red%0A%7D)%3B%0A%09%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%0A%09%09%7B%20r%3A%20119%2C%20g%3A%20136%2C%20b%3A%20153%20%7D%5D%20%2F%2F%20Grey%0A%7D)%3B%0A%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%202%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%202%2C%202%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%202%2C%201%2C%202%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%202%2C%201%2C%202%2C%202%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%202%2C%201%2C%201%2C%202%2C%202%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%202%2C%202%2C%201%2C%201%2C%202%2C%202%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%202%2C%201%2C%201%2C%201%2C%201%2C%202%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%202%2C%202%2C%202%2C%202%2C%200%2C%200%5D%20%2F%2FFire%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%20%2F%2F%20Black%0A%09%09%7B%20r%3A%20255%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%20%2F%2F%20Red%0A%09%09%7B%20r%3A%20255%2C%20g%3A%2097%2C%20b%3A%203%20%7D%5D%20%2F%2FOrange%20%0A%7D)%3B%0A%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%0A%09%09%7B%20r%3A%200%2C%20g%3A%20245%2C%20b%3A%20255%20%7D%5D%20%2F%2F%20Turquoise%0A%7D)%3B%20%0A%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%0A%09%09%7B%20r%3A%20142%2C%20g%3A%2056%2C%20b%3A%20142%20%7D%5D%20%2F%2FPurple%20%0A%7D)%3B%0A%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%0A%09%09%7B%20r%3A%2061%2C%20g%3A%2089%2C%20b%3A%20171%20%7D%5D%20%2F%2FCobalt%20%0A%7D)%3B%0A%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%0A%09%09%7B%20r%3A%20255%2C%20g%3A%20182%2C%20b%3A%20193%20%7D%5D%20%2F%2FPink%20%0A%7D)%3B%0A%0AregisterMatrixAnimation(%7B%0A%09frames%3A%20%5B%5B%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%200%2C%200%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B1%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%5D%2C%0A%09%09%09%20%20%5B0%2C%201%2C%201%2C%201%2C%201%2C%201%2C%201%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%201%2C%201%2C%201%2C%201%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%201%2C%201%2C%200%2C%200%2C%200%5D%2C%0A%09%09%09%20%20%5B0%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%2C%200%5D%20%2F%2FHeart%0A%09%09%09%20%5D%5D%2C%0A%09fps%3A%201%2C%0A%09palette%3A%20%5B%0A%09%09%7B%20r%3A%200%2C%20g%3A%200%2C%20b%3A%200%20%7D%2C%0A%09%09%7B%20r%3A%200%2C%20g%3A%20205%2C%20b%3A%20102%20%7D%5D%20%2F%2FCobalt%20%0A%7D)%3B” message=”Sphero Bolt Party Game” highlight=”” provider=”manual”/]

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.


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