Site News: Blast from the Past – One Year Ago in PHP (10.15.2020)

Here's what was popular in the PHP community one year ago today:

Mezon Database CRUD Service Model Class (New)

Package:
Summary:
Model to perform CRUD operations using a database
Groups:
Author:
Description:
This package provides a model class to perform CRUD operations using a database...

Read more at https://www.phpclasses.org/package/11795-PHP-Model-to-perform-CRUD-operations-using-a-database.html

The Deadly Communication Sins Freelance Designers Commit

Alright, freelancers – it’s time to confess! How many of you are guilty of not communicating regularly enough with your clients? Maybe you’re running behind on your deadline, and you’re too embarrassed to let your client know in a timely manner. Or maybe the client has done something to upset you, and you refuse to reply to one or two of their emails.

The truth is, people with poor communication skills often don’t even know they have them. A designer can be technically excellent, but if they fail to communicate with their client, they will not continue to get work.

1. Resentfulness

Let’s face it – being a freelancer is a tough job. Sometimes your clients can aggravate you to the point where you want to punch them or worse. However, if you’re on a job, it’s still your responsibility to keep the client up to date on your progress. If you don’t, you’re essentially stooping down to whatever level of immaturity you think they’re guilty of.

Remember that you have to earn your client’s trust, and regular communication is often the quickest way to do that. Many clients would much rather work with a so-so freelancer who is reliable and consistent, than a brilliant freelancer who can’t be counted on to communicate regularly.

If you’re upset with your client for some reason, the best response is to request some sort of change in the terms of the project. Not getting paid enough? Ask the client if you can transition to a project or position that pays more.

Simply want to quit? It’s better to cut your losses early and find a new client rather than suffer through a horrible project that will leave you drained of time, resources, and energy.

Resentfulness

2. Making Them Think Too Much

Your client is paying you to think for them. Even if they don’t specifically put it in those terms, your goal as a freelancer should be to make the experience of working with you as painless and simple as possible.

For the majority of back-and-forth correspondence with your client, all they should have to do is say “yes” or “no.” People get confused when they have too many options, so don’t make the client pick or choose or decide anything that’s unnecessary.

They can – and will – always let you know if they have any feedback or additional comments. If it’s within your ability, and you can use your professional experience to simply make an executive decision, do it for them.

This includes things like scheduling meeting, sending reminders, taking notes, following up with members of the team, and anything else you think might make your client’s life easier. Presenting your client with a clear option to approve or deny allows them to maintain control of the project without having to worry about the details.

Talking with Tin Can Telephone

3. Under-Communicating

When you’re doing a job for a client that lasts longer than a week or so, it’s absolutely imperative that you keep them up to date on your progress. I’ve worked with many people over the years, when I emailed them with a status check, told me they hadn’t wanted to “bother” me with too many emails. Nonsense!

Over-communication is always, always, always better than under-communication. Your client should never have to check in with you to see where you are and how your work is coming along – that should be your job.

You can establish a rhythm of regular updates – an email every Tuesday and Thursday, a weekly update to a Google Doc, or check-in with someone you know reports to your client.

Of course, some clients may not want you to communicate with them so regularly (though I have yet to meet one who didn’t prefer it to weeks of silence). If that’s the case, they will let you know. The absolute worst that can happen if you communicate too much is that the client will simply ask you to cut back. That’s it.

They won’t yell at you or deduct from your fee – and if they do, they are a terrible client and should be fired immediately. Quality clients always appreciate your effort to keep them informed of your progress.

Under-Communicating

4. Not Being A Consultant

As a freelancer who works with many different clients, often in different sectors of an industry, you have an intimate knowledge of the best practices and successful initiatives of multiple clients.

Especially as you gain years of experience, you know what works and what doesn’t, and you are in a unique position to offer your expert opinion to any new client you work with. However, many designers ignore this golden opportunity, preferring to keep their ideas to themselves and just complete a project without any feedback.

Being a trusted advisor or consultant for your clients will open doors that you never even knew existed. Your clients will value you not only for your technical skills, but also for the valuable advice that helps them increase their profits or avoid costly mistakes.

Always back up your opinion with hard evidence and numbers whenever possible. It makes for a more compelling argument and reinforces for your client that they made a good decision in hiring you.

Not Being A Consultant

5. Being Uninspiring

For all you designers out there who made the switch to freelancing from working in an office, think back to when you first decided to become a freelancer. What, specifically, made you want to strike out on your own and never set foot in a cubicle again?

Perhaps you wanted to set your own hours or control the flow of your own income. But chances are that you also felt uninspired working for someone else. Your boss and co-workers simply showed up day after day and ground out work that had no passion or emotional drive whatsoever.

If you’re not challenging and inspiring your clients with each project you take on, you’re essentially doing the same thing you attempted to escape in your day job. Don’t just be an employee who shows up and gets paid. Send new ideas your clients’ way – be a constant source of inspiration. Challenge them to consider their own business in new ways.

Share your research with them and point out ways they can reach their customers that will make them stand out from their competition. Providing inspiration can be a form of consulting as well, and you can use both in tandem to guarantee your clients will be buzzing about you to anyone within earshot.

Being Uninspiring

6. Not Managing The Project

Even if you’re not an official project manager for your client, it’s still part of your job duties as a freelancer. Let me explain what I mean. Say a client needs you to finish a website design by next week, but still hasn’t provided you with the copy.

You’ve asked them repeatedly to send it over, but they simply keep forgetting. Frustrated, you continue to pester them and wait.

Eventually, the deadline comes and goes, and, predictably, your client is furious. You show them all the email correspondence you collected over the last several days, which may embarrass them and make them apologize for holding you responsible for their slip up.

The client-designer relationship may have been saved but the bottom line is: this scenario is avoidable far more often than many designers think.

Instead of simply waiting around for the client to get back to you with important data, you can often take the approach of simply going forward with your end anyway.

Send the client a quick, polite message explaining that you understand they’re busy, but since you know this deadline is important, you’re just going to go ahead and fill in the missing info yourself, contact someone else in the company who might be able to help you, or simply omit it and be ready to fill it in later when the client has more time.

It may seem presumptuous, but this technique works wonders in a lot of cases. As they say, it’s often easier to ask for forgiveness than permission, and clients love freelancers who take initiative and help them be more efficient. If something’s not right, the client can always ask you to fix it later, but that’s nearly always preferable to missing deadlines entirely.

Not Managing The Project

7. Not Asking for Feedback

Every freelancer should be constantly asking for feedback from as many clients as possible, whether past, present, or future.

Feedback is what allows you to adjust your approach to design, marketing, and self-promotion, and it is the key factor in growing your career to the heights you desire.

It allows you to incorporate new ideas you learn from others, improve something you weren’t aware you were doing wrong, and confidently raise your rates and narrow your client base when the time is right to do so.

Ask for and incorporate as much feedback as possible, from wherever you can get it. Client surveys sent through email, or collected through your website or blog are crucial, as well as simple questions throughout your entire experience with the client. Don’t forget to leave your ego and defensiveness at the door!

If you keep getting the same kinds of critiques in a particular area from many clients, that’s a good sign that you need to reevaluate your approach in that area. Lastly, regular feedback allows you to not only track your own progress and growth but also that of your clients.

Always be asking questions that determine your clients’ specific fears and challenges they have with their businesses, and incorporate their answers into your killer problem-solving strategy.

The post The Deadly Communication Sins Freelance Designers Commit appeared first on Speckyboy Design Magazine.

PHP 8.0 feature focus: <span>quality of life improvements</span>

Our last article looked at a new way to make null values nicer to work with. PHP 8.0 has a lot of such features that make everyday coding more fun, but there are too many of them to give them all their own articles. So today we’ll cover a grab bag of changes and improvements that aren’t web-shattering but should make working with PHP overall more pleasant. New string functions PHP has a huge array of string functions (sorry, too easy), from the very useful to the rather obscure.

Basic PHP Bulk Email Queue System (New)

Package:
Summary:
Queue messages in a database to be delivered later
Groups:
Author:
Description:
This package can be used to queue email messages in a database to be delivered later...

Read more at https://www.phpclasses.org/package/11838-PHP-Queue-messages-in-a-database-to-be-delivered-later.html

Community News: Latest PECL Releases (10.13.2020)

Latest PECL Releases:

  • rar 4.1.0
    - Merge changes made to unrar up to version 5.5.6.

    • Support PHP 7.2, PHP 7.3 and PHP 7.4.
    • Update to unrar 5.9.4
    • Fix bug #76592: streaming unpacking of uncompressed files incomplete
  • timezonedb 2020.2
    Updated to version 2020.2 (2020b)
  • xhprof 2.2.2
    - Fix PECL installation #48
  • gRPC 1.33.0RC1
    - gRPC Core 1.33.0 update - Timeval class constructor now accepts a double value
  • protobuf 3.13.0.1
    GA release.
  • igbinary 3.1.6
    * Fix build failure with older C standard (e.g. building on CentOS 6). * Otherwise, identical to 3.1.6RC1.
  • runkit7 4.0.0a2
    - Fix build failure in PECL releases due to missing files in the 4.0.0a1 archive. - Properly reference count references to file names in php 8.0 when copying functions
  • rdkafka 4.0.4
    BREAKING CHANGE: Since version 4.0, the client no longer polls for network events at shutdown (during object destructor). This behaviour didn't give enough control to the user in case of server issue, and could cause the script to hang while terminating.

    Starting from 4.0, programs MUST call flush() before shutting down, otherwise some messages and callbacks may be lost.

    Bugfixes

    • Fix crash during shurtdown (#367, @nick-zh, @sofire)

    Enhancements

    • Improved CI (@Steveb-p, @arnaud-lb)

    Documentation

    • Improved doc (@nick-zh, @Steveb-p)
  • componere 3.1.2
    - Fix #25 Segfault with OpCache and abstract classes - Fix #26 Error: Class 0x01 not found" if Definition( 'MyDerived', 'MyClass' ) - Fix #29 Protected and Private properties not working as expected - Fix #30 Can NOT addProperty in extending class - Compatibility with PHP 8
  • runkit7 4.0.0a1
    - Remove `runkit7_import()`. This had known crashes/segfaults in php 7.3+ that have not been straightforward to fix (after multiple attempts) due to changes to PHP's internals and changes to late static binding, and offered an incomplete set of functionality. (e.g. could not override properties)

    This was also not integrated with runkit7's tracking of manipulated methods/functions/properties.

    • Drop support for php 7.1. Security support for php 7.1 from php-src ended in December 2019 and runkit7 requires a lot of work to verify that changes or new features work correctly with the internals of php in all PHP versions.
    • Remove disabled code, constants, and ini settings related to the sandbox feature. Runkit7 has never supported sandboxes or runkit_lint due to changes to internals in php7 making it impractical.
    • Remove runkit7_object_id() - PHP 7.2 adds spl_object_id() to do the same thing.
    • Fix build failure in php 8.0-dev - this extension's support for php 8 is still incomplete and experimental.
    • Add parameter default constant names to reflection (php 8 only).
  • igbinary 3.1.6RC1
    * Fix igbinary_serialize incorrectly deduplicating arrays/objects/references when they were garbage collected/freed during serialization.
  • redis 5.3.2RC1
    phpredis 5.3.2RC1

    This release containse some bugfixes and small improvements.

    You can find a detailed list of changes in Changelog.md and package.xml

    • Sponsors ~ Audiomack - https://audiomack.com ~ BlueHost - https://bluehost.com ~ Redis Cache Pro for WordPress - https://wprediscache.com ~ Avtandil Kikabidze - https://github.com/akalongman

    • Fix cluster segfault when dealing with NULL multi bulk replies in RedisCluster [950e8de8] (Michael Grunder, Alex Offshore)
    • Fix xReadGroup() must return message id [500916a4] (Pavlo Yatsukhnenko)
    • Fix memory leak in rediscluster session handler [b2cffffc] (Pavlo Yatsukhnenko)
    • Fix XInfo() returns false if the stream is empty [5719c9f7, 566fdeeb] (Pavlo Yatsukhnenko, Michael Grunder)
    • Relax requirements on set's expire argument [36458071] (Michael Grunder)
    • Refactor redis_sock_check_liveness [c5950644] (Pavlo Yatsukhnenko)
    • PHP8 compatibility [a7662da7, f4a30cb2, 17848791] (Pavlo Yatsukhnenko, Remi Collet)
    • Update documentation [c9ed151d, 398c99d9] (Ali Alwash, Gregoire Pineau)
    • Add Redis::OPT_NULL_MULTIBULK_AS_NULL setting to treat NULL multi bulk replies as NULL instead of []. [950e8de8] (Michael Grunder, Alex Offshore)
    • Allow to specify stream context for rediscluster session handler [a8daaff8, 4fbe7df7] (Pavlo Yatsukhnenko)
    • Add new parameter to RedisCluster to specify stream ssl/tls context. [f771ea16] (Pavlo Yatsukhnenko)
    • Add new parameter to RedisSentinel to specify auth information [81c502ae] (Pavlo Yatsukhnenko)
Powered by Gewgley