What is the California Consumer Privacy Act?

by

In 2018, the California legislature passed the California Consumer Privacy Act (CCPA).  Set to go into effect in 2020, the CCPA arose out of a compromise between legislators, privacy advocates, and a California businessman who had proposed his own ballot measure.  How the CCPA came to be is a very interesting story – I encourage you to read more about it.  

What is the CCPA?

In a nutshell, the CCPA is a law that gives all California residents the right to access any data that companies collect about them, know how their data is used, and exercise control over whether and when their data is collected.  

Women in Computer Programming History

by

There has recently been much discussion about getting more women into computer programming roles – the case of the Google manifesto shows that what many us think of as outdated gender stereotypes about programmers are still alive and well in some circles.  However, it wasn’t always the case that computer programming was considered a ‘male’ field.  Early computer programming was dominated by women, and it was women who were seen as uniquely capable of being computer programmers.  Among early computer pioneers were many women who made important contributions to computer science and programming and invented many of the concepts & models we continue to use today.

Project Management Best Practices at Grio

by

At Grio, it has always been our philosophy that we don’t have a “one-size fits all” approach to project management. Different projects have different goals, so our process needs to be adaptable.  Some clients will come to us with existing processes that we can fit into, whereas other clients maybe be starting from scratch on their project with no processes in place and are looking to us for guidance.  Many clients are somewhere in the middle.

Mastering the Art of Client Communication

by

At some companies, designers and developers have little to no interaction with clients or customers. It’s not uncommon for the people working on a project to be walled off from clients by account managers or customer service. At Grio, every designer and developer is client facing, and everyone ends up doing some of the work that is traditionally done by an account manager, such as managing day to day contacts, relationship management, and responding to problems & issues.

The User Experience Team of One: A Research and Design Survival Guide

by

I’ve recently made it one of my goals to learn more about UX and design.  To that end, I read a book that was highly recommended by our Grio designers, The User Experience Team of One: A Research and Design Survival Guide, by Lean Buley. The book is written for people who are or want to be UX professionals, with a focus on those who either the only person in their company working on UX or who are in some way UX evangelists in their organizations.  Although the intended audience of the book is UX professionals, there were also number of tips and ideas that a company like Grio can find useful.  On many projects, especially when budgets and time are tight, Grio takes on the role of UX evangelist for our clients.

Zend DB Config.ini for Oracle DB options

by

Anyone who has worked much with the Zend framework much will be familiar with the framework’s reliance on config files. I recently worked on a project where I needed to set some database configurations in a Zend config file and it took me some time to figure out the correct syntax for them. 

Lessons Learned from My First HTML5 Video implementation

by

I recently had the opportunity to implement an HTML5 video for a client.  It was the first time I’d really worked with HTML5 video, and I ran into a few issues and quirks I thought I’d share for other developers who run into these issues.

 

1. HTML5 video with a fallback to Flash works really well.  The opposite doesn’t work as well. 

 

At first I started implementing my video in Flash with a fallback to HTML5 – not for any special reason, but only because a previous developer had implemented another of the client’s videos that way and I followed the pattern already set.  I soon discovered that although this works fine for a video that just plays in a fairly static page, it wasn’t ideal for the kind of video I was implementing, which required some custom controls and interactions with other elements on the page.  I first thought that the best way to handle this would be with a try / catch, but since my flash took a little bit of time to load, I would often get an exception when calling a flash function, even though the flash was ultimately playable.  The real crux of the problem was that in an HTML5 to Flash fallback implementation, the flash code doesn’t even exist as far as the browser is concerned unless HTML5 is not supported – in which case the <video> tags don’t exist.  The user can only ever interact with the HTML5 video or with the Flash – never with both.  If you implement it the opposite way, BOTH Flash and HTML5 video exist on the page, potentially leading to a situation where the user is interacting with both videos.  Once I found myself writing code to catch and prevent these weird interactions, I decided this was the wrong way to go.   The HTML5 to Flash fallback is the way this code is meant to be implemented, and leads to the cleanest implementation.