Experience

My Role at Punchmark

Pretty early on in my internship, I discovered my “place” in the business. The reason that this small team needed to hire an intern for a summer. To fully understand my role in the business, its best to dissect the roles of each employee and examine the gaps.

Ross

We’ll start with the founders. Ross, Dan, and Bryan. While all three of these guys are directing the company, it has been my observation that Ross does most of the directing and big picture planning. Ross is a bit of an every-man. He writes code, maintains databases, takes sale’s calls, and keeps check on everyone else in the company.

Dan

Dan is the “Creative Director”. He has a degree in arts and design. He’s the guy who spends the most time with Photoshop, CSS, and working with clients to get the design they want. Of course, he also has a say in the mission of the company as a founder.

Bryan

Bryan’s official title is “Director of Technology”. He oversees the more technical aspects behind hosting, load balancing and recently, content delivery. He makes sure their client’s sites run smoothly and as efficiently as possible.

Jason

Jason is the Project Manager. He works closely with all clients through phone and email and relays pertinent information to the directors via our in house ticket system. Jason also acts as technical support.

Tom

Tom works as supplemental customer support and as a sales representative.

With each person’s duties out of the way, now let’s focus on where Punchmark currently stands as a business.

Punchmark’s IP is in their custom website building framework and the numerous applications and services that they offer. This is the hunk of code base that has undergone 5 revisions in the 7+ years they’ve been in business. It’s nearing perfection at this point allowing them to focus more time and resources on customer acquisition instead of building “the system”.

Punchmark is certainly entering the growth phase of business. However, they have a substantial list of tiny bugs and feature requests that are currently not worth their time to work on. Enter me. I get handed the tasks that would normally be handed to Bryan or Ross.

Experience

My 3 Biggest Contributions to Punchmark

As we approach the start of the 5th week of my internship at Punchmark, I’ll reveal a bit of the specifics behind what I’ve actually been working on.

  • SMS Notification System

Punchmark would like to allow their clients to opt-in to SMS notifications for their store’s website. This way clients (jewelry retailers and vendors) can receive instant text notifications when a product is sold, account changes are needed, etc. The progress on this project has mostly me to thank as there was very little ground work laid before I started on it.

The first steps were to incorporate the ability to reply to STOP and HELP messages and unsubscribe users in order to comply with FCC regulations. Our messaging API, Twilio sents a POST request to a specified URL where a PHP script that I’ve written parses the request and compiles a message and takes necessary database manipulation action before sending a request back to the Twilio API to send a message back to the user.

  • Testimonials API Streamlining

One of Punchmark’s newer features is the ability to congregate user reviews for a store from Yelp, Google+ Reviews, and Facebook Reviews. However, the code was hastily pasted together in one massive 1500+ line file. Then the same code was copied and tweaked slightly to another file to produce a preview version of these testimonials on the front page of the client’s site. I started working on testimonials because there was a fatal bug that caused results to fail because certain user’s profile pictures could not be retrieved.

I was tasked to debug this. I quickly took on the task of streamlining all of this code and needless requests. I separated the code into a PHP class, cached testimonial information (reviewer’s name, date posted, rating, review text, etc.) into a JSON file to be stored in the client’s folder on the server. If the file wasn’t too old the server would read from it when compiling testimonials to display. This cut down on page load time and also provided a failsafe for when the API failed.

  • Moths, Bugs, and API Privacy Changes. Oh My!

Unbeknownst to anyone on the team, Instagram changed their privacy policy regarding access to API access to user images on June 1st 2016. Right about noon on that fateful day all of our Instagram widgets failed to display data. I was worried I caused the problem as I was working on API code as it happened. I quickly assured myself and everyone else I had nothing to do with the failure and we brushed it off as an error on Instagram’s part, until a week and a half later.

I was told to figure out what was happening and discovered a forum post citing the change in privacy settings. Our new solution is to use Instagram’s new method for retrieving user images. This requires a bit of code rewriting but most annoyingly, it required authentication from the user. The guys are crafting an email to send to clients asking for authentication.

I’ll likely be the one writing this new code and getting it all to function like it did before Instagram decided to change the rules.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store

Experience

Finding Motivation and the Power of Choice

Charles Duhigg author of The Power of Habit is back with a new book to bring his discoveries about the psychology of productivity. In Smarter, Faster, Better Charles uses his extraordinary Pulitzer Prize winning storytelling to recount his research and studies with renowned psychologists and productive people. I have not read Smarter, Faster, Better but it’s already synced to my Kindle and is next on my list.

I wanted to discuss one portion of Charles’ new book that I previewed and listened to Freakonomics talk about on their podcast. That is the power of choice.

To paraphrase a portion of Charles’ book, a test was performed on several individuals. They participated in a simple guessing game. A computer would generate a number between 1 and 10 and the subject had to preemptively guess if the number was greater or less than 5. Simple enough. The game stimulated the part of the brain that is responsible for motivation and intrigue.

Then a second group played the same game only the computer would take turns making their decision for them. Their odds of winning were still the same. Participants were only out of control for a brief second and it really didn’t matter. However, their feeling of choice was diminished and their excitement and motivation to play the game decreased drastically as indicated by their brain function.

The takeaway is that choice has a huge impact on our productivity. If given a task and told how to complete it, generally we will be less productive and lose interest. However, if we are given a task and ask ourselves “Why am I doing this?”, and remind ourselves “I am choosing to do this. This is why. Here is my choice for how to proceed.” The marines call this a bias towards action. Recruits use a variation of this method when given orders or commands.

A lot of this thinking stems from the locus of control mindset. I’ve always held the mindset of an internal locus, but this internship blindsided me. I’ve applied this thinking to my work and noticed an instant increase in motivation, happiness, and appreciation for my work. My internal locus was being distorted by a daunting list of tasks that seemed more like chores than challenges. Applying and reapplying this thinking is going to be one of many keys to my success. I’m sure I’ll find more as I make my way through Charles’ book.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store

Experience

3 Things I Learned Working Full-Time Out of a Coffee Shop

Last week, the Punchmark team attended JCK Las Vegas to promote their services to big time jewelry retailers and vendors. This left me out of the office for about a week. Naturally, I moved into a local coffee shop for that time and set up my mobile office, grabbed a small black cup and a bagel before settling in for 9 hours.

Here are three things I learned from doing full-time work out of a coffee shop.

  • No Smooth Sailing

When working on a system as complex as web development infrastructure. Nothing goes smoothly. At first I noticed that I could not access the live server from my offsite location. I assumed it was because of whitelisted IP’s. I discovered that I could tunnel through the dev server to ssh to live but with my measly 3Mbps, the input lag was enough to slow work and train of thought considerably. The next day my supervisor added the coffee shop’s IP to the whitelist and I was back to using SFTP in my text editor like I was used to. However, a script I had written during development made enough invalid requests to block my IP from viewing any of our client’s sites. It was a DoS prevention technique that, again, shunted progress.

Not much I could have done about this. The system was not set up for offsite development from anywhere. Why should it be? It’s a huge security risk. However, debugging these issues, and communicating with my supervisor throughout the experience helped me to understand the complications behind the mobile developer.

  • Distractions are Everywhere

People chatting all around, rowdy kids dancing on tables (yes this happened), and of course, the endless abyss that is the internet at my disposal. These distractions are relentless in prying my eyes off the screen and my attention from the problem at hand.

Headphones, a determined attitude, and a steadfast resolve. The toolkit of the coffee shop developer.

  • Self-accountability Must Skyrocket

No bosses. No fellow employees. Everyone there is enjoying their afternoon or doing some light reading. Every excuse to stop working and go for a skate session or bust out my Kindle to finish that chapter of Ready Player One starts filling my head.

Staying on one task for several hours is not my most favourite thing to do. Is it anybody’s? Reminding myself to stay focused and let those thoughts pass without consideration is a skill. A skill that I got ample practice with this week.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store

Experience

3 Mindsets Gained from Working a 9-5 as a Developer

  • Build to Last

Bodge” is British slang best defined (by me) as, “to throw together hastily without worrying about long term consequences. Append “-ed” to the word and you’ve officially described every line of code I’ve ever written. Every project, assignment, or programming challenge I’ve ever encountered was solved by bodging together whatever I could throw at a problem and make stick. It worked fine. Assignments only had to run once to get an “A”. Most personal projects were similar “One and Done” solutions. Even websites built for clients while freelancing were out of my hands once I got paid. Only now, am I truly seeing the benefit of writing clean, modular, well-documented code.

  • Increased Confidence

Today I was reminded of a project that I’ve attempted in the past. Once, I was browsing Reddit, as I do, and stumbled upon a Python script that someone wrote. The script downloaded the top 10 images on /r/earthporn and overlayed those images with the top 10 quoted from /r/Shower then uploads them to a Flikr album. The result is a stunning picture of a mountain, sunset, or ocean with a laughable quote like “They need to make phones fully waterproof so we can start pushing people into pools again”. I had wanted to push these images to Google Photos so I could view them from my Chromecast on a continuous slideshow. I had given up in frustration months ago. Today, I realized that I could do it. After the work with API’s and general server scripting, I had the confidence to try again. Now I just need the free time.

  • Strategic Time Use

When nearly 12 hours of your day is taken by work, food preparation, and travel, you really prioritize what to do with your free time. For me, I get great value from skateboarding the city after work. It provides exercise, excitement, and entertainment while also exploring the city in the coolest way possible. Picking up fist-bumps from strangers as I push around the block in leather boots, rolled up jeans, and a button up shirt in 27-degree sunshine. Besides this guilty pleasure, I make a priority of writing daily. I do some freelance work writing for company blogs to earn some extra dough.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store

Experience

Me and the 40-Hour Work Week

I’m starting my 3rd week working as an intern at Punchmark. I’ve developed some opinions and reactions about how I feel about the experience so far. First, allow me to take you through my work day.

  • 07:00 – Alarm goes off.
  • 07:30ish – Get out of bed and shower.
  • 07:45ish – Dress, groom, breakfast, YouTube, blog.
  • 08:30 – Leave appartment
  • 08:50ish – Arrive at work. Make coffee. Stretch.
  • 09:00 – Eyes on screen. Coffee on desk. Bathroom break.
  • 13:00 – Lunch. Reddit.
  • 14:00 – Eyes on screen. Water on desk. Bathroom break.
  • 18:00 – Leave work.
  • 18:40 – Arrive at apartment. Free time.

I guess my reason for taking you through an accurate representation of a weekday, is to say that I spend the majority of my day ass plastered on chair and eyes glued to screen. The glamour of “the internship” vanishes quickly once you realise you have a 9-5 job just like all the drones of society you vowed you’d never become.

I’m learning that it takes variety in my work to keep me alive. Working for hours on a single project or weeks in the same chair doing about the same thing is not where I belong. Granted, this is what I signed up for. This is what “Full-Time Web Developer” means. I cannot complain. I can only note that I’ve learned something through this internship. Something valuable. Something that would have been a pain to learn after accepting a 3-year contract to another organization.

I still love what I’m doing at work. The first 3 hours each day are my most productive. Mondays are especially productive. It’s the dose that makes the poison. For me, that dose is a 40-hour work week of “Eyes on screen. Beverage on desk. Bathroom break”.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store

Experience

The Only Thing You Need to Learn is How to Learn

I wanted to write about how my experiences and learning from the classroom are helping me in my internship. I really wanted to. I’ve thought about it for days. I cannot.

Day one of this internship:

  • Sat down.
  • Read email.
  • Registered Twilio Application.
  • Wrote PHP script with GET and POST requests.
  • Made a looping MySQL UPDATE query.

That was before lunch.

My point is that I had never registered an API, written more than a line of PHP, or a single MySQL query before that day. I learned how to do these things so quickly because I was motivated and because learning is my specialty. School hadn’t prepared me for this… well… maybe the sitting and the reading email part.

Warning: RANT AHEAD

School did not teach me how to learn either. It gave me mounds of work that forced me to get better at managing my time. College courses have shown me where to look and what terms to use and I have found the resources and done the learning myself.

The most beneficial class for me was my first college computer science course, CSC 226: Software Design and Implementation. It was here that I learned my first object oriented “modern” programming language, Python. Before I had plenty of experience with block style programming in Scratch, I had dabbled in Racket but I hated how hard it was. Python struck a chord with me and the class taught me the basics. Google would teach me the rest.

After that course, I would place my CSC 236: Data Structures in the rank of most valuable. While the course was painfully slow going, I managed to strengthen my OOP and picked up a few useful algorithms and data structures.

After these two courses, however, the law of diminishing returns began to set in. I haven’t found the huge time and work commitment worth the value I’ve received from other 300 – 400 level courses from the Berea College Computer Science Department (Namely Electricity and Electronics, Computer Organization, and Computational Intelligence ).

I enter a course excited, curious, begging for more. The course is slow, I research and learn on my own time. Next, I’m bored because I learned this last week from a MIT lecture on YouTube in an afternoon, now I have to listen to the ramblings of a professor for two hours or else I’ll loose participation points.

What is most frustrating is the amount of “busy work” I am forced to do. Whether it’s expanding a lab report that could be written in 3 paragraphs to 3 pages, or writing in a class forum about how we “feel” about a news story or TED talk, this busy work is not valuable and it detracts from the time I have to devote to learning. These are the kinds of assignments that I get terrible grades on because I either don’t do them or give them little effort.

I realized that professors may interpret this as the assignment being to hard. The goal of an assignment is not to be difficult or “hard”. It should be focused, provide value, be challenging, rewarding, and a teaching experience.

On a side note: Deadlines should be strictly enforced and code should be graded more heavily on the basis that it works. This is the way the real world is. Sparing students in school is just a way to hurt them more once they graduate.

I’m done.

This was a very long and “ranty” post. It’s something that I’ve been stewing on for a while.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store.

Experience

4 Ways to Keep Your Team on Task

I’m going on my second week working at a Punchmark, a small web development company. It’s clear that this team knows how to get s*** done. Here are four ways to keep your team on track.

Communication

This is key. Communication with the entire team should always be a click away. Punchmark uses Skype for IMs, video calls, and sharing screenshots and files. The team has created three Skype groups for organization. One group is for developers, one for everyone, and one just for sharing what each person accomplished each day. Using Skype groups as channels for discussion keeps communication focused and searchable. Plus the ability to transfer files and make video calls is a huge bonus.

Ticket System

Punchmark has its own ticketing management system for logging, tracking, and archiving issues and feature requests. Maintaining an active ticket system is a great way to monitor progress as well as get measurable results.

Weekly Meetings

Once a week, the team meets to discuss “big picture” goals and progress. During this time anyone can bring up anything concerning the company or work for the team to discuss.

Checklists

I love Google Keep. I can create notes and checklists then share them with others. I use checklists for everything on the job. It keeps me on task by limiting my focus to a single item. When I finish the task, I get a sense of accomplishment by checking the item off. Checklists are not enforced by Punchmark but I find that I get value from having them and I am noticeably more productive.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store.

Experience

The Most Important Thing Punchmark Does

It’s easy to say that the most important thing that Punchmark does is build websites, but I’m not convinced.

Punchmark sells website packages and services to jewelers. They engineered a framework in PHP, MySQL, HTML/CSS, and JavaScript that allows them to build custom, modular, dynamic websites for their clients. Punchmark also has many tools and widgets available to clients that are targeted specifically for jewelers.

Punchmark is currently on their fifth iteration of their proprietary framework. The framework is the value behind Punchmark. It’s their product. It’s what is constantly being improved, fixed, and marketed. It’s what the founders spent 8+ years perfecting.

Punchmark’s revenue come from one-time payments starting at $3500 for a website designer package. They offer paid subscription services like their also proprietary SiteManager and email marketing solutions coming in at $30/mo and $80/mo, respectively.

The most important thing that Punchmark does now is acquire new customers. After 5 revisions of their framework, most of their code is solid and doesn’t need tons of extra work. New features are in the works, but that’s what they hired me for. Therefore, adding new features cannot be that mission critical. It’s what I hear Ross and Dan (two of Punchmark’s founders) talking about all the time. They are going to trade shows, calling and following up with interested potential customers, and marketing products to existing customers.

Punchmark currently has five employees (including the founders) and one intern. My first day Ross told me, “We are a small web design company, but we are expanding.” I believe him.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store.

Experience

3 Potential Road-Blocks to My Daily Success

description:

Earlier this week, I identified my learning objectives and goals for this summer internship. After a few days of work with these objectives and goals in mind, I’ve identified potential road-blocks to my success.

  • Frustration

I’m used to straightforward code, in a language I am familiar with, written completely by me. I likely will not have all three of those qualities on any project I work on this summer. When I code my own projects, I’m sloppy. I use whatever Stack Overflow copypasta gets the result I want. If it’s too hard, skip it. Again, I’ve had to adopt a different philosophy this week.

I know HOW to write good code, I just usually CHOOSE not to. I’ve become frustrated with myself for spending hours on trying to figure something out or perform what seems to be a simple task. However, I’m discovering techniques to alleviate this. I’ve narrowed my scope.

Instead of telling myself “I need to create an SMS script in PHP to reply to STOP and HELP messages”. I break down the task on paper. I make a checkbox on Google Keep with the first tiny step. Once completed, I check the task and write the next one down. This keeps me feeling accomplished and on task without feeling too overburdened.

  • Distractions

Let’s face it. I’m on the computer for 8/hrs a day. On the clock. With Reddit just a click away. I have to be deliberate with my time, use my lunch break wisely, take water/coffee breaks, etc. Getting distracted with non-work related activities is not only unprofessional and a sure way to get noticed (in a bad way) by the boss, but it’s time that takes away from my learning and achieving my goals.

  • Asking Questions

This has always been a tough thing for me to do. Call it shyness or insecurity, but when I need to ask someone something about MY work, I feel as if I’m being a burden on them. I also feel that I will be judged for asking something that may be trivial. This is how I felt my first few days on the job. Luckily, I discovered quickly who to ask about what issues. Today I was initiated into the Punchmark team’s communication channels which helped make asking questions less intrusive and easier for me. The team has also been very receptive of my questions and have shown appreciation for my work.

This first week was a huge culture and behavior shock. I believe we are off to a good start for a productive, enriching, and successful summer experience.

For daily vlogs, follow me @robhossboss on Beme available on Google Play and iOS App Store.