Categories
Blockchain Financial Services Software

6 blockchain podcasts to get you through quarantine

What better way to get through self-isolation than binge listen to a bunch of blockchain podcasts? For many across the world, quarantine orders are keeping people holed up in their homes — myself included. If anything, it’s giving us all a lot of time to take stock, slow down — and for me at least — catch up on the latest news and opinions from cryptoland.

One of the best ways I learn about blockchain and cryptocurrency is through podcasts. Getting a range of views can offer a valuable glimpse into this rapidly-evolving industry. It’s also a great source of inspiration. Podcasting is a great medium for several reasons, but especially because you can listen in and do something else. Here’s my curated list of essential blockchain (and blockchain adjacent) podcasts to keep you company. 

By the time the virus passes, you’ll hopefully come away with a fresh look at the blockchain sphere from these influential podcasters. While researching this piece, I chose current and active blockchain podcasts as of March 2020. I also picked those that are not overtly promotional and those that strive for clarity. For an industry that claims transparency as a core value, it often isn’t. It can also be difficult to weed through conflicts of interest, but these podcasts come close in my view. Fresh, critical takes are essential as the blockchain industry evolves and these come close in my view. 

If you have others to recommend, let us know in the comments below!

Blockchain podcasts

Blockchain won’t save the world

First on the list is a podcast hosted by Anthony Day, blockchain partner at IBM. This is a great podcast to listen to to get a better understanding of enterprise applications of the technology. Several of the episodes offer a lucid look at network design and digital transformation by way of blockchain. While Day focuses on private, permission blockchains — and especially IBM projects — he does remain fairly neutral and balanced.

One of the underlying themes is that blockchain technology may not be the best technology to apply to a specific business case, and the show has leaders from the industry on to ground the technical talk in real business cases.

On the Brink

I would be remiss to include a podcast on private blockchains and not on public ones as well. On the Brink centers on public blockchains — especially Bitcoin and the implications this technology will have on the world. Matt Walsh and Nic Carter of Castle Island Ventures talk about the philosophy and ethics of public blockchains. The duo interview founders and developers and delve into larger conversations on how public blockchains will shape the future.

Unchained

Laura Shin hosts the unchained podcast, one of the best-known blockchain podcasts out there. Every week, Shin interviews startup founders and blockchain thought leaders. She goes in-depth on topics ranging from blockchain governance to privacy, to larger discussions about blockchain innovation.

Unconfirmed

Like Unchained, Unconfirmed is also hosted by Laura Shin. Unconfirmed, though focuses on news headlines and updates from the blockchain sphere. It’s a great weekly roundup of breaking news and punditry.

The Breakdown 

Host Nathaniel Whittmore streams this daily recap of news and opinion. His themes range from decentralized finance into cryptocurrency and blockchain adjacent topics such as central bank digital currencies. It’s a good barometer for the sentiment in the crypto community and a great place to learn about new topics.

The Bad Crypto Podcast

If you’re more interested in cryptocurrencies, The Bad Crypto Podcast is an approachable show where hosts Joel Comm and Travis Wright chat about blockchain and blockchain adjacent topics. It’s great for beginners and they offer interesting takes on some of the latest news in crypto.

Related posts:

Categories
Entrepreneurship Software

Comparing the cost of internal hire to an outsourced team

Hiring internally or outsourcing your software project is on the minds of businesses everywhere. Now, as the world prepares for tighter budgets and narrow margins, weighing the costs and benefits of outsourced teams is ever more important. I’ve laid out a cost comparison for hiring a U.S.-based software developer versus a counterpart abroad. Long story short, it’s up to 63% cheaper to outsource a software developer compared to hiring one in-house in the United States. Taking all the costs of software development into account — not just salaries — the costs can get very expensive, very quickly.

The total cost of hiring an employee consists of many parts. In this article, I tried to display the most complete picture of the factors that affect the price of hiring an employee and in the end compare it with prices of outsourcing services using the example of Espeo Software. All the figures I use are related to the U.S. market.

In-house development vs. software development outsourcing

Table of contents:

  1. Best-paying cities for software developers
  2. How much does a software developer make?
  3. External recruiting agency
  4. Internal hiring team
  5. Extra costs of an internal hiring
  6. Costs after the developer accepts the offer
  7. Cost of hiring a bad developer
  8. Outsourcing costs example of Espeo Software
  9. Final thoughts on cost of In-House Development vs. Software Development Outsourcing
 

1. Best-paying cities for software developers

Salaries for software developers vary regionally in the U.S. and the highest-paid places center around Silicon Valley in California. Many of the largest employers have headquarters there and recruit developers from across the country and the world. This, of course, inflates the cost to recruit nationally.

American newspaper U.S. News and World Report listed the top cities for software developers by average annual salary for 2018. San Francisco, California comes out on top with Seattle, Washington close behind. The national average salary for software developers is around $103,000 annually.

 

2. How much does a software developer make?

If we break this down further, Americans work an average of around 1,800 hours per year according to a Pew analysis of Labor Department data. That puts hourly rates for software developers in the United States at $71 an hour. For a senior development role, that increases to $81 an hour.

This initially sounded a bit low to me so I decided to double-check the figures I found. I asked our U.S. Director, Andrew Phipps, about his opinion. He estimates that the hourly rate for a senior developer especially with specific and in-demand qualifications such as blockchain development skills should be at least $150 and as much as $225 per hour. What the Pew data fails to show is the cost of  specialist knowledge that’s scarce in the U.S. A more realistic annual salary is upwards of $270,000.

These labor costs can quickly get ahead of you as the competitive market dictates the price to hire internally. Salaries alone are not the only costs, however. Sourcing and recruiting also factor in.

 

3. External recruiting agency

If you have a small company with fewer than 40 people on board it makes more sense to use the services of external recruiting agencies. They usually take between 15-30% success fee of an employee’s annual pay. Let’s take the average 20%.

Let’s make further calculations.

  • Software engineer — 130,000 / 100 x 20% = $26,000
  • Senior software engineer — 148,000 / 100 x 20% = $29,600
  • Specialist senior developer — 271,650 / 100 x 20% = $54,330
 

4. Internal hiring team

If you want to avoid an external recruitment agency, you can hire in-house recruiters instead. The average salary of the HR specialist with all bonuses and commissions is around $70,000 per year.

The mean number of job placements per recruiter is 40. The median number of placements per recruiter is 20. Let’s use 30 placements per year for our calculations.

However, the cost of the time stays the same. The average acceptance rate  for candidate offers is 89%. 30 / 100 * 89% = 26.7

Let’s keep our model simple and say that the HR specialist is busy only with recruiting. So the cost of the time spent on one hire = $70,000 / 26.7 = $2,621. The average cost of publishing the post on job boards is $400.

You should remember that it will be visible for 3-4 months. If you total the cost of time plus the cost to place an add on a job board, it adds up to $3,000 per placement.

 

5. Extra costs of internal hiring

In a Harris survey by Glassdoor, the employer branding cost varied by company size, averaging $129,000. It grows exponentially by company size. Companies with fewer than 500 employees spent $6,300, Companies with 500-3499 spent $81,400 and those with more than 3500 employees spent a whopping $335,900 on average to hire internal teams.

Recruiting technology costs:

In addition to time and salary per HR specialist, they also need to use tools to work and track their results. Here are some of the more common tools HR teams use and how those costs add up. 

  • Video interviewing tools like HireVue and SparkHire. + $3,000 / year
  • Coding assessment tools like Codility and HackerRank. + $6,000 / year
  • Blind hiring software like GapJumpers. + $1800 / year
  • Background check services software like Checkr. + $348 / year
  • Applicant Tracking Systems (ATS) like Workable. + $4,000 / year

Remember that your HR specialists also need to be hired, onboarded, and trained. They also use office space and supplies.

 

6. Costs after the developer accepts the offer

According to a benchmark report from SHRM, the minimum cost of training is an average cost-per-hire of $4,125. But the cost of onboarding a new worker also includes some other factors, such as:

The hours managers spend onboarding new workers plus productivity loss minus the average cost: $10,000 per employee

  • Paper, printing, and office supplies: between $922 and $1,106 per year
  • Training: $1,252 per employee on average per year
  • Tools and software: $1,200-100k on average
  • New office equipment: about $1800 per developer
  • Office space: $6,000 per person per year
Cost of onboarding a new Software developer

Together with the developer’s salary:

  • Software engineer – 130,000 + 19,245 = $149,245
  • Senior software engineer – 148,000 + 19,245 = $167,245
  • Realistic senior developer – 271,650 + 19,245 = $290,895
 

7. Cost of hiring a bad developer

 Taking into account all the costs above, you may still choose someone who’s not a good fit for your team. I’ll get right to the point. The total cost of “bad hire” is upwards of $480,000 according to devskiller.com

Assuming a bad hire’s 8-week tenure:

  • Cost of hiring (recruitment, onboarding) $39,486.50
  • Compensation (cost to employer) $23,311.48
  • Cost of maintenance (office, office supplies) $1,218.46
  • Productivity loss $23,311.39
  • Disruption $398,043.46
 

8. Outsourcing costs example of Espeo Software

You pay 60$ per hour on a time and material model

 

  • It’s the same rate for junior, mid and senior.
  • The more developers you take, the less you pay.
  • Usually, it takes less than two weeks to start the project.
  • You have the flexibility to change the number of developers the project needs.
  • If you don’t like how an exact developer is working, we replace him or her at no cost
  • If the dev who worked on your project is leaving our team, we replace him with no costs
  • You don’t need to care about extra costs, like equipment, tools, training etc.
  • We provide agile project managers.

Let’s calculate the annual salary.

$60 x 1,811 hours = $108,660 

  • ($108,660 / $149,245 x 100) – 100 = 28% cheaper than hiring software engineers in the U.S.
  • ($108,660 / $167,245 x 100) – 100 = 36% cheaper than hiring  senior software engineers in the U.S.
  • ($108,660 / $290,895 x 100) – 100 = 63% cheaper than hiring a realistic senior developer in the U.S.
 

9. Final thoughts on the cost of in-house development vs. software development outsourcing

With all the costs involved in hiring in-house software developers, this model may not be right for every company. As we enter a period of uncertainty, having fixed costs such as in house developers is a risk many CEOs are not willing to take on. Outsourcing meanwhile, offers a more cost-effective way to create and launch your software development project. 

Carefully consider all the costs involved before you hire in-house and weigh the benefits of software outsourcing. I hope my calculations shine some light on the world of software development and make a case for why you should think about hiring an external team.

See also:

Categories
Software Technology

Top causes of system downtime and how devops prepare to avert a crisis

These last few weeks have been a challenge for devops teams everywhere. For months everyone watched as the novel Covid-19 coronavirus swept across the world. Governments have called for people to stay home to help stop the spread of the disease. Nobody knew exactly how it would affect business and our everyday lives. Hardly anyone expected a novel virus that has forced us into isolation and many of our routine activities online. This sudden surge in traffic puts a lot of strain on systems and exposes major weaknesses that otherwise would go unnoticed. Ensuring that your systems are ready for unforeseeable events is an essential part of your devops strategy.

From daily meetings to your kids’ school lessons to virtual museum visits traffic is up across the board. Keeping these services up and running effectively is now more important than ever. Perhaps the biggest surge in use is in video conferencing services, remote collaboration tools, streaming services and online payments. Having a plan in place for what to do when a surge in traffic threatens to crash the site is vital to prevent downtime and service disruptions. 

Top causes of system downtime and how devops prepare to avert a crisis

Table of contents:

  1. Reasons of rapid increase in traffic
  2. Latest examples of system downtime
  3. System downtime – what could possibly go wrong?
  4. System downtime – all too common mistakes
  5. Final thoughts on how to avert a system downtime crisis
 

1. Reasons of rapid increase in traffic

As many companies scrambled to figure out how to go fully remote in the face of orders to isolate, many daily activities moved to the network. Some examples include: 

1. Meetings — both for work and personal

Video conferencing and messenger services replace face-to-face meetings.

2. Grocery shopping and eating out

We’re ordering more groceries online and arranging food delivery through couriers.

3. Payments

In Poland, for example, payment providers have increased the no-pin transaction limit to the Polish zloty equivalent of $25.00 to gain 80% of overall payments without touching a pinpad or banknotes. This is very hygienic but threatens to overload the payment system. A lot of shopping has moved to e-commerce sites, straining capacity.

4. Daily news

Demand for the latest updates has increased readership on news sites.

5. Streaming videos

Cinema closures have driven demand for streaming services.

6. Outings

We’re visiting museums and galleries virtually.

7. School

Lessons are going ahead in many parts of the world via e-learning platforms.

Whenever you have a rush of traffic in a short amount of time, it tests whether or not the developers who designed the platforms did their jobs well. If a system crashes under the strain of increased traffic, chances are there wasn’t enough planning and foresight in development.

 

2. Latest examples of system downtime

How do millions of people sitting at home affect the use of network services? One local example happened to an online news portal which announced at first that all schools in Poznań will be closed for two weeks due to quarantine. As the news broke, it ended with website unavailability because resources were too low and the company was unable to react quickly. It was only handling over 13,000 users at the same time — in a city with half a million people. Should it be a barrier for your business?

Another more dramatic case happened last week as the stock trading application Robinhood failed due to a surge in traffic. This failure prevented users from accessing their accounts and selling their stocks as prices fell, leaving many with huge losses. The loss of user trust and credibility — not to mention the drastic losses for users themselves is immense. Here are just a few other scenarios that can happen. 

 

3. System downtime – what could possibly go wrong?

1. An increased number of visits can kill the server

Literally, when the resources of a single machine are running out you can talk about unavailable content. Shared hosting is definitely not a solution here. The best would be to use a cloud service provider such as Amazon Web Services, Microsoft Azure or Google Cloud Platform which has enough resources for a devops team to scale up if needed. Alternatively, you can use a powerful dedicated server in a well-known data center.

2. Poorly designed databases may not withstand a sudden increase in data

Let’s say that the number of orders in the store has increased and with each subsequent order the database responds more slowly.

3. Poorly written code needs a lot of computing power for simple tasks

With increased traffic, costs can rise disproportionately to profits. To avoid this, write tests during development and carry out stress tests before going to production. 

4. Self-hosting instead of using the cloud

Many companies and publishers keep resources on their own. Nowadays, the cloud offers the flexibility to respond to urgent needs. In this model you only pay for what you use, you can start the next server at any time and quench it when the traffic drops. It’s also possible to automate this process. So why not use it?

5. Saving on infrastructure can lead to system failure.

Work on small, cheap resources cannot defend themselves in such a situation. Suppose someone is hosting a website on his own and has a small reserve on bandwidth. Increasing bandwidth is not possible overnight. Instead, use a cloud provider or a data center. 

 

4. System downtime – all too common mistakes

1. No support when the website is on fire

It’s common that companies order a website or e-commerce shop and later just let it run without any devops support. When increased traffic occurs, no one is able to help. At Espeo we offer support for our software in the production environment to not leave you alone in such a case.

2. Old technologies make the product inaccessible

An example would be one of the Polish e-learning platforms that still uses Adobe Flash extensions. Browsers no longer officially support these and the end of life is happening later this year. Now as the schools have been closed, it turned out that using the service exceeds the skills of most young users.

3. Weak security

Today, the standard is to use the HTTPS protocol (using SSL certificates). It provides a secure connection between the user and the provider. No implementation of encrypted transmission may result in users’ rejection. Especially when we deal with payments and providing personal data needed for the order.

On the other hand, sometimes websites are vulnerable to attacks because the code is written using open source solutions that are not updated on time. At Espeo we are putting a lot of effort to keep systems updated. Our services among others consist of scanning of running resources, servers monitoring so we can prevent attacks and keep software stable.

4. “Tests are not needed” sentiment

Many software houses cave to pressure from clients eager to rush a program to production. But it’s a huge mistake to think that you don’t need to test software. Simulating an outage is far easier and cheaper to test for than a system outage. It takes some long-term planning and upfront costs, but it’s much more cost-effective to test for these crises. At Espeo our quality assurance specialists test each project. Depending on the scope our devops team can handle a lot of different tests to prevent problems in the future.

5. Bad architecture

“A Single instance will deal with everything” is a bad concept. Keeping everything in one place will fail sooner or later. The key is to multiply resources and keep the database and website apart from each other. At Espeo advise clients to set environment with load balancers, take advantage of scalability and master-slave database replication.

 

5. Final thoughts on how to avert a system downtime crisis

Long story short, be prepared! Assume the worst scenario and prepare a solution for it before it happens. In Espeo during the development process for our clients, we put a lot of effort to use our experience to design solutions right the first time. 

The biggest part of preparing for a crisis is to make sure you have all the necessary features in place to respond quickly. As the coronavirus has shown us, these very unexpected events can have a huge impact on business and on the software we rely on every day. Making sure it can handle a rapid increase in traffic — and then quickly go back to normal will save you time, money, and reputation.

Want to learn more about devops and testing services? Drop us a line and we’ll get back to you shortly.

See also:

Categories
Blockchain Entrepreneurship Other Software

How blockchain is bringing gamification to every industry

Distributed ledger technology is not the most user friendly or easy to grasp. Blockchain gamification is one way to bridge this user gap. The gaming sector has plenty in store to enrich other industries on how to keep customers engaged. According to a recent study by Newzoo, the global gaming industry has over two billion gamers and is worth about $150 billion. Video game income has even surpassed other forms of entertainment, like movies and music, according to the study. The most famous pieces of art can create sales in millions of units and can sustain numerous concurrent users. 

Various industries are embracing gamification or the use of gaming and game design techniques to engage their users better. Marketing departments are now using gamification in their marketing activities to reduce customer churn. Instead of just providing coupons, renewable points, and discounts, businesses are now spicing up their marketing campaigns using cutting-edge technologies to realize engaging risk and reward mechanisms. Starbucks, for instance, has introduced a loyalty program that enables customers to receive better rewards the more they spend. Besides, the company has also deployed multiple tech-based strategies over the years, like mobile apps, QR codes, and segmented reality to engage their customers. 

The blockchain tech power to offer secure record-keeping and enable transactions through cryptocurrencies makes it suitable for such applications. Different services are already establishing new channels to exploit the potential of blockchain-based solutions and possibilities of gamification. Form of gamification may vary. Projects like Sandblock, for instance, use smart contracts to facilitate their loyalty program campaigns. The digital and decentralized games such as CryptoKitties also demonstrate how crypto tokens can represent ownership of digital assets effectively. These use cases also demonstrate how blockchain has brought back fairness and trust in the gaming industry. In this article, we shall see how blockchain tech is bringing the elements of gamification  not only to typical gaming space, but basically to every sector through loyalty programs, digital ownership, and trustworthy and fair practices.  

Loyalty programs for e-commerce

Critics often complain that loyalty programs concentrate on just maximizing profits for businesses. Participants are incentivized inadequately for their participation by loyalty points campaigns that contain biased rules. Though it is acceptable for a business only to carry out sustainable loyalty programs, they are still supposed to offer customers with satisfactory reward rates. 

The problems begin with outlining business objectives, considering that loyalty campaigns can create many benefits. The marketers then continue with designing the reward system, the composition of reward and producing incentives good enough to cause behavior change but mean to the point that they grind down margins. Besides, there are puzzles of customer psychology to consider, which can make two incentives of equal value stir different levels of consumption.  

Using blockchain for business that needs relevant loyalty programs can eliminate such unfair dealings through the transparency it delivers. Smart contracts can be applied to monitor the mechanisms of these campaigns. Through the openness of smart contracts, it is possible to notice if firms are providing irrational terms and conditions. On the other hand in case of public blockchain space, some unprincipled members may also attempt to participate and abuse the system. Determined scammers can also alter poorly designed gaming rules, and therefore, having transparent records shows the participants who are trying to misbehave clearly. 

Launching a successful blockchain loyalty program starts with the objectives of the campaign. Marketers can only engineer the right strategies and evaluate whether they are running their campaigns well only if they have set clear goals. In other words, true benefits of blockchain come to truly valuable and well planned loyalty programs.

The use of digital currencies and blockchain-based feature will give clients more flexibility with their loyalty points. Many loyalty programs restrict these points for specific purposes and redemption with their respective businesses. Contrary, cryptocurrencies are mutually interchangeable and can be transacted with other tokens or fiat money. If companies are not willing to create a universal digital loyalty token with other businesses, then they can settle on the use of interchangeable tokens. A study by Kaleido Insights shows that the interchangeability of these digital reward tokens is beneficial to both the companies running loyalty programs and the participants.  

The treatment of blockchain-based digital tokens as currency makes them far more flexible and interchangeable compared to loyalty points. Participants can easily exchange such a digital token with other cryptocurrencies or fiat money. That means real financial rewards. Such flexibility gives customers more choice on how they should use rewards, increasing the value of the loyalty campaign, and encouraging customers to shop more from the brand. Digital reward tokens can go even be used for such digital transactions as buying other products and paying for services from other companies because cryptocurrencies have value beyond the brand that issued them. The eventual result is a loyalty coin economy, which, when used more, increases in value. 

Besides, blockchain gamification boosts the outcomes of loyalty programs and minimizes expenses including lowering of the transaction costs. With blockchain technology, a business can provide loyalty campaigns that are transparent and trusted by participants. The transparency brought by blockchain solutions is essential in loyalty programs. 

Blockchain technology will also bring a more streamlined experience in loyalty campaigns. When businesses carry out over one loyalty campaign, it can be challenging to manage both the company and the clients. Lack of a streamlined client loyalty campaign causes missed opportunities, wasted points, and frustration. 

Decentralized systems

Forbes explored the possibility of using a blockchain-based method using a single cryptocurrency, like bitcoin, across several brands or businesses. This decentralized finance method makes the loyalty campaign easier to run and track, saving time, and adding more value to the participants. 

A decentralized network will further ensure that participants enjoy more flexibility and choice, which inspires them to spend more. The method is best suited for bigger businesses, multinationals (such as the Banana Republic, Gap, and Old Navy), or businesses that are willing to partner with those from a complementing sector (like an airline firm, and a hotel chain).

A decentralized approach represents the future and present of digital transformation to some customer loyalty campaigns. For instance, Singapore Airlines and Delta Airlines have launched a blockchain loyalty campaign, substituting their air miles with digital tokens that used for retail purposes.    

Digital ownership through blockchain gamification

Rewards from certain games and gamified campaigns create virtual assets. For video games, for example, items can be acquired by successfully finishing assignments or by conquering rivals. These digital items can be made accessible to a participant or tied to particular accounts. Nevertheless, “ownership” is determined mostly by developers’ rules. 

Because virtual items carry some form of utility in the games, most people are willing to pay for these items. The value of digital items is around $15 billion. Trading of these items has become a significant activity for many developers. Most of them forbid the exchange of virtual items for cryptocurrencies as they term it as a violation of their terms of service. 

Gamification features and blockchain technology are the main ingredients for marketplaces for the trading of virtual assets. This way, blockchain can enable virtual ownership.

Solutions that act as secure markets for trading digital items can enhance the virtual item industry and connect it with other sectors. Blockchain solutions can boost the market capitalization of this industry. 

Blockchain is redefining the ownership of virtual items and transform them into a kind of financial rewards for users. The technology is a means of creating distinctive identifiers for virtual items market. Developers and publishers hardly offer tools that would permit the safe and secure trade of virtual items in their marketplaces. These platforms employ blockchain and smart contracts that allow gamers to trade among themselves safely. 

Trustworthy and fair mechanisms

Gamification is all about engaging customers through new rules, risks, and reward systems. Unluckily, centralized authorities tend to come up with rules that are only beneficial to them. Blockchain technology compels businesses to design and follow the set rules and create equitable risk and reward mechanisms. Decentralized derivatives are some examples of this. CloseCross, one of Espeo’s clients is part of this trend. The use of cryptocurrencies even allows for gifts, like those from loyalty programs, to carry more financial utility for users. The concept of digital ownership also brings more value to customers’ rewards. Users can be confident that through such methods, all parties will benefit from gamified campaigns. 

According to a PwC survey, almost 70% of customers pull out from loyalty programs when it asks for personal details. This is logical, especially with the increasing cases of online identity theft. Blockchain can reduce such risks. Since anonymity is one of the primary features of digital currencies, participants might not have to provide their personal information. Or, if the need arises, blockchain can keep their details more secure.

Blockchain records are fully transparent and trackable, making it even hard for the execution of unauthorized transactions. The PwC study further established that more than 72% of loyalty campaigns are victims of scams and counterfeit sales to acquire loyalty points for purchases they never made. Using blockchain technology to customer loyalty campaigns would enable brands to track loyalty points in real-time and deliver incentives to their clients more effectively. 

Conclusion 

Blockchain gamification in other industries is possible with applications designed to borrow aspects behind the success of the gaming industry. With blockchain technology, other areas can exploit the winning traits of the gaming sector. As blockchain technology continues to disrupt every element of business and daily life, gamification is ripe to follow suit. Carrying out faster, smarter, and more flexible loyalty campaigns can create and retain happy customers. 

Related posts: