savvy-admin, Author at Savvy Otter https://www.savvyotter.com/author/savvy-admin/ We Code. We Create. We Innovate. Wed, 26 Feb 2020 14:03:24 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.6 https://www.savvyotter.com/wp-content/uploads/2021/05/cropped-Screen-Shot-2021-05-19-at-9.23.46-AM-32x32.png savvy-admin, Author at Savvy Otter https://www.savvyotter.com/author/savvy-admin/ 32 32 In 2020, Content is Still King… This is Why https://www.savvyotter.com/2020/02/26/in-2020-content-is-still-king-this-is-why/ Wed, 26 Feb 2020 13:58:53 +0000 https://www.savvyotter.com/?p=916 It is often said that content is king. While we typically aren’t one for a cliché, this modern proverb does have a point. In a sea of Websites, social media posts, and more – quality content is the standard for getting noticed online. This is why so many businesses across all markets are adopting a […]

The post In 2020, Content is Still King… This is Why appeared first on Savvy Otter.

]]>
It is often said that content is king. While we typically aren’t one for a cliché, this modern proverb does have a point. In a sea of Websites, social media posts, and more – quality content is the standard for getting noticed online. This is why so many businesses across all markets are adopting a content management system (CMS) In 2020.

A CMS is a scheme that facilitates the creation, maintenance, and spread of digital content. Some may wonder why they need a robust system in place to create and promote content on their company’s digital channels. We’re here to explain why:

It Saves Time, So it Saves Money
While writing, editing, repurposing, formatting, and promoting content may seem simple… Well, maybe it isn’t so simple! Content management takes considerable time and effort to implement effectively and efficiently. This is why so many company’s employ a CMS. Rather than spending your time curating your content, a CMS can help streamline the process and allow for you to focus on running your operation.

It Boosts SEO Efforts
Like many other companies online; your company probably puts a high value on SEO Performance. Content management is one of the top ways to boost your search engine relevance, as sites like Google and Bing tend to reward websites that offer quality content. The more you post online about the services or products you offer, the more likely your website will be discovered on the first page of search results!

If you want to learn more about content management, we recommend reaching out to a local software developer that you trust. Getting noticed online is more important now than ever. Quality content not only tells the story of your business, but also proves to viewers and search engines alike that you deserve recognition online!

 

The post In 2020, Content is Still King… This is Why appeared first on Savvy Otter.

]]>
Savvy Otter Named One of the Top Software Development Companies in Birmingham https://www.savvyotter.com/2019/08/29/savvy-otter-named-one-of-the-top-software-development-companies-in-birmingham/ Thu, 29 Aug 2019 16:26:00 +0000 https://www.savvyotter.com/?p=834 Savvy Otter is honored to be named one of the top software development companies in Birmingham by the Birmingham Business Journal. Companies are ranked by the number of their local employees within the metro area. Our team of experienced developers and industry leaders offers a variety of services including: web application development and support, content […]

The post Savvy Otter Named One of the Top Software Development Companies in Birmingham appeared first on Savvy Otter.

]]>
Savvy Otter is honored to be named one of the top software development companies in Birmingham by the Birmingham Business Journal. Companies are ranked by the number of their local employees within the metro area.

Our team of experienced developers and industry leaders offers a variety of services including: web application development and support, content management, secure portals, software integration, and much more.

We’re honored to be recognized among the top companies in the emerging tech market of Birmingham. To see the list in full, click here.

The post Savvy Otter Named One of the Top Software Development Companies in Birmingham appeared first on Savvy Otter.

]]>
Errors, like Thanos, are Inevitable (and Where to Track Them) https://www.savvyotter.com/2019/05/21/errors-like-thanos-are-inevitable-and-where-to-track-them/ Tue, 21 May 2019 16:21:17 +0000 https://www.savvyotter.com/?p=777 Here are some questions you should be able to ask and easily answer about errors that occur in your web application. What are the top errors that have occurred over a given period of time, like today, the last week or month? Similarly, what are the top web pages/screens where errors occur over a given […]

The post Errors, like Thanos, are Inevitable (and Where to Track Them) appeared first on Savvy Otter.

]]>
Here are some questions you should be able to ask and easily answer about errors that occur in your web application.

  • What are the top errors that have occurred over a given period of time, like today, the last week or month?
  • Similarly, what are the top web pages/screens where errors occur over a given period of time? And is it the same error occurring on the page or 10 different ones?
  • When did a particular error first occur?
  • What errors only first appeared or disappeared so far after the last application update?
  • How recently has a particular error occurred?
  • What browser are users using when an error occurs?
  • Who are the users that are affected by errors?
  • On what server are errors occurring most/least?
  • Do certain errors occur only on particular hosts?
  • What action was the user taking in the application when the error occurred?
  • Because error counts vary by application usage, how many errors occur per page view?
  • Etc.

These are impossible to answer if you’re not tracking errors at all (obviously). If you own or manage such an application, one of the best things you can do is start tracking errors, or possibly start a rewrite because the vendors that write such applications tend to have impossibly buggy code. I don’t know why that goes hand-in-hand exactly but I’ve a theory or two. If you’re logging errors to a log file somewhere on your server, good news – the questions are now only nearly impossible to answer. Supposing you’ve captured all the data you’ll need, you’ll need to aggregate it somehow and that’ll take some work.

What you ultimately need is to track errors in a database. I know, I know… some errors might be that the database server is not available and so even attempting to store error information in a database might itself generate an error. Don’t let that hold you up. If it’s a concern, then you can mitigate that. The value here is being able to answer the questions above for the 99.99% of the errors that won’t prevent the errors from getting into that error tracking database. You’ll know about that 0.01% of errors in other ways or you’re not doing application monitoring correctly.

Five years ago I put together the database structure below to help Pixsys Technologies get better visibility into their application errors. Not only that, we started sharing the “errors per page view” metric with management/owners. Thus started the process of managing that metric and holding ourselves accountable. And today, I cannot feel comfortable building an application without having this error tracking structure in place. Below is what that database structure looks like.

Sample Error Tracking Database Structure

 

Tables:

  • Exception Signature – Captures the “fingerprint” of an error. Necessary because many error descriptions are artificially unique because they reference something like a particular value causing the error. We want there to be one entry in this table for something like a Primary Key violation on table Employee, not one entry for each value that violates the constraint. Scrubbing error messages to generate the “fingerprint” is the magic here and is likely where you’ll spend 90% of your time setting this up.
  • Exception – Captures the occurrence of the error described in the Exception Signature table.
  • Exception Web Context – Captures information particular to the user of a web application like their IP address (be careful of GDPR concerns), the URL, referrer, session ID, querystring and form data being sent to the web page, and so on.
  • Exception Web Context User Agent – The user agent tells us about the browser and OS in use at the time. We keep each unique user agent value in this table to avoid duplication.
  • Exception Web Context Url – The web address of the page the user was on when the error occurred. We keep each unique URL value in this table to avoid duplication.
  • Client – A table to allow us to track errors that occur across various clients. It is sometimes useful to know only client X sees a particular error.

Closing Thoughts

Feel free to copy as much or as little as you want from this database structure. This is sort of like “how to make a PB&J sandwich” in terms of intellectual property. Nothing proprietary other than just having this in place. That said, I don’t always have a lot of time to code some days. But there are cases where I have an hour or 45 minutes between meetings with the evil marketing folks about my blog assignments, and I can easily go to this database and find the best way to make that hour count.

The post Errors, like Thanos, are Inevitable (and Where to Track Them) appeared first on Savvy Otter.

]]>
Client Spotlight: Landscape Workshop https://www.savvyotter.com/2019/04/24/client-spotlight-landscape-workshop/ Wed, 24 Apr 2019 15:59:35 +0000 https://www.savvyotter.com/?p=713 Landscape Workshop (LW) is a full-service grounds management company that provides professional service and expert landscape maintenance for outdoor commercial spaces. As one of the largest landscaping companies in the United States, LW’s footprint spans the Southeast with over 600 employees throughout their nine branch locations. Landscape Workshop’s Challenge: LW needed a better way to […]

The post Client Spotlight: Landscape Workshop appeared first on Savvy Otter.

]]>
Landscape Workshop (LW) is a full-service grounds management company that provides professional service and expert landscape maintenance for outdoor commercial spaces. As one of the largest landscaping companies in the United States, LW’s footprint spans the Southeast with over 600 employees throughout their nine branch locations.

Landscape Workshop’s Challenge:

LW needed a better way to perform and manage their performance review process.  The previous process was managed by their Human Resources department and involved using spreadsheets to track the scheduling and creation of the reviews, as well as their status in the performance review process.  The process was time-consuming and relied heavily on emailing and printing paper applications. Additionally, information from the reviews that needed to be entered into their payroll system, such as pay raises, had to be done manually.

Project goals include:

  • Reduce the time spent filling out forms
  • Improve tracking of review status
  • Capture data and add basic reporting
  • Integrate with / inform their payroll software, ADP

LW researched “off the shelf” performance review software but found that they were often too expensive and failed to accommodate their unique needs.  They needed a solution that fit their budget and that could be in place by their next review period.

They chose to partner with Savvy Otter due to our:

  • Proven expertise in designing and implementing complex web applications
  • Adequate bandwidth to handle a project with a serious timeline
  • Experience integrating with Enterprise systems
  • Consultative style of service and demonstrated business acumen

Savvy Otter Solution: 

Savvy Otter created an integrated custom platform to automate and improve the Landscape Workshop performance review experience.  The application catered to the unique needs of four different internal user groups: Administrators, HR Managers, Supervisors and Employees.  Due to the sensitive nature of the content, it was important to maintain confidentiality between team members and a proper chain of custody.

With the new software in place, Landscape Workshop have significantly reduced the time needed to complete their performance reviews so they can get back to helping their customers and growing their business. The application’s reporting features have provided valuable metrics and insights that are vital to LW’s growth and support their comm

itment to continuous improvement. The security features of the software ensure confidential and sensitive information is protected.

The Outcome:

Savvy Otter delivered the software to Landscape Workshop on time and on budget.  All objectives were met and both management, as well as rank-and-file employees, are thrilled with the improved experience. Today, LW owns a one-of-a-kind software package designed just for them. Tomorrow, they own their competition!

The post Client Spotlight: Landscape Workshop appeared first on Savvy Otter.

]]>
The Importance of Clean Code https://www.savvyotter.com/2019/02/27/the-importance-of-clean-code/ https://www.savvyotter.com/2019/02/27/the-importance-of-clean-code/#respond Wed, 27 Feb 2019 22:06:38 +0000 https://www.savvyotter.com/?p=693 We Swim in Clean Code is something of a slogan you’ll see upon visiting our website. I don’t remember the exact genesis – there were lots of ideas floating around when we were creating the site content, and, honestly, being Savvy Otter, the phrase was probably a gimmie from the start. But the thing is, […]

The post The Importance of Clean Code appeared first on Savvy Otter.

]]>
We Swim in Clean Code is something of a slogan you’ll see upon visiting our website. I don’t remember the exact genesis – there were lots of ideas floating around when we were creating the site content, and, honestly, being Savvy Otter, the phrase was probably a gimmie from the start. But the thing is, it’s not just marketing text. Definitely not.

Spend any time in these halls and you’ll come to realize we believe in the art of software construction, doing it right, but while not getting into an endless (and wasteful) cycle of perfectionism. That said, one of the tenets at the center of this belief is that code is written once, yet is read 10,000 times. Ok, I’m exaggerating a little, but not much. The consequence of that reality is that code needs to be easy to read and understand by ALL who have the fortune or misfortune of seeing it. Put another way, code should be optimized for reading and understandability and, perhaps counter to what some might think, NOT for keystroke speed / shortest time to finish line. Here’s a few points about the characteristics of clean / unclean code.

Unclean Code is

  • Hard to understand. It slows everyone down. The mental effort understanding it takes away from the task at hand – usually trying to track down some bug (as you’ll see below), but also hurts you when trying to make improvements / changes. Successful projects require predictable outcomes and an important part of that equation is efficiency. People, for some reason (you know the ones – those with pesky expectations and all that), would rather pay developers for productive work and get unhappy when progress is slower than expected. Slogging through unclean code is 100% a contributing factor.
  • A place where bugs hide. I’ll likely make a post on a later date about the value of code inspections, so I won’t spoil that, but I will say that it’s often impossible to spot bugs in unclean code. The converse is that it is super super easy to spot them in clean code. The number of times someone asked me to build software with lots of bugs is so astonishingly low even a unsavvy otter could count that high. That number is 0.000000 – with 6 decimal places.

Clean Code is

  • Spoiler – Easy to understand. The intent is clear. You can read this code and quickly do the mental task of making sure it does the thing it’s supposed to do. You feel safe to concentrate on your task and can worry less about breaking things as you go. You’re probably 37 times faster than you’d otherwise be. Your projects don’t get bogged down. Clients are happy and handing out high fives like banks handout lollipops – or they used to. By the way, if you want to make fast friends – I’m a sucker for a Charms Pop. And yes I slipped in a dad joke there. Guilty.
  • If I’m being 100% intellectually honest, the other benefits really follow from “easy to understand”.  So… Clean Code is also
    • Less forgiving of bugs. Bugs can’t hide in code that is easy to understand. When someone reads that code many common bugs are trivial to spot.
    • Easier to modify without breaking it. We’ve seen companies and individual struggle with this. They go to fix / change something and in the process create 10 problems along the way. When this becomes a pattern code quality can be a factor. The code is not clean.
    • Faster. Literature points to clean code executing up to 89% faster than unclean code. Ha ha. No. That would be amazing though if true. By faster, I mean teams can work faster in a code-base that is clean. Faster teams – faster projects – kept timelines – better outcomes.

I cannot say enough about clean code and why it’s so vital, but the tyrannical marketing person who’s holding a gun to my head to finally commit this post is already itching for my next assignment, so… luckily people write books on this subject and have done the topic better justice – in my 20 years writing software, I’ve read more than a few and some of those I’ve read multiple times. If you’re interested in learning more, consider looking at these.

Code Complete – click here to purchase 

 

Clean Code – click here to purchase

 

 

The post The Importance of Clean Code appeared first on Savvy Otter.

]]>
https://www.savvyotter.com/2019/02/27/the-importance-of-clean-code/feed/ 0