Monthly Archiv: May, 2020

How to Choose Hardware for Your Design Business

The tools we use can go a long way towards determining whether we produce a quality end product. And they also play a huge role in helping us stay within a project’s budget and timeline.

So often, we tend to focus on the software side of things. That makes sense, as the right apps can help us produce stunning designs, layouts and special effects.

But hardware doesn’t seem to be the hot topic it once was. That’s a shame, because the components we choose are real difference-makers. Use the wrong setup and you can go out for a cup of coffee while your After Effects project renders. The right one may not even allow you a full sip before completing the task.

Today, we’re going to show a little love to the gadgets that make our design businesses go. We’re not going to go into specific model numbers, as these things change faster than a client changes their mind. Instead, we’ll focus on some general guidelines on how to make the best choices to suit your needs.

Consider the Form Factor for Work On-The-Go

We all see people working from far-flung locations with laptops and even the occasional tablet. Those devices offer the convenience of portability. But how appropriate are they for design and code?

Tablet Devices

It seems like a lot of software vendors see vast potential in tablets. Apps such as Photoshop have been made available with the added bonus of enabling users to draw with a stylus. Then there’s, Procreate, a design app built specifically for the iPad.

That being said, tablets often lack the processing power required to do intense graphical work. That’s not to say you can’t create some amazing art – just don’t expect apps to perform as well as they do on a more traditional machine. Then too, the apps themselves may not have all of the bells and whistles that you’d find on a laptop or desktop computer.

Meanwhile, coding on a tablet might be possible, but it’s unlikely to be an efficient way to do so. If you do attempt this feat, an external keyboard is a must-have accessory.

If you need extra horsepower, there are some high-end options worth considering. But, in general, a tablet probably works best as a secondary device for creative professionals.

What to look for: Choose a tablet that has a comfortable screen size, lots of internal storage and the ability to add more via a memory card. Also, verify that it’s capable of running the latest version of its mobile OS.

A person holding a tablet computer.

Laptop Computers

These days, laptops can be had at virtually every price point. But you get what you pay for.

The lower end of the spectrum may stick you with an outdated processor and rudimentary graphics. Plus, internal storage tends to be incredibly light. So, going this route would probably mean working in the cloud.

This doesn’t mean, however, that you have to spend thousands of dollars for good performance. Unless you really want the status that goes with top-notch industrial design (ahem, Apple) or enough power for a desktop replacement, a solid midrange model will do.

A middle-of-the-road processor from AMD or Intel should be enough to run most applications reasonably well. As for multicore options, the more cores you can afford – the better. But aim for at least four cores if you plan on doing even mildly intense graphic or coding work.

Mobile graphics tend to pale in comparison to their desktop counterparts, except at the very top end of the pricing spectrum. Still, it’s important to have a graphics chip or discrete card that provides 2D and 3D acceleration.

Portability and battery life are also key considerations. If you’re working on the road, you will probably want to avoid something that’s too heavy or can’t hold a charge for more than a handful of hours.

What to look for: Aim for a laptop that has enough processor and graphics muscle to run your preferred apps. Ideally, you’ll have enough solid-state storage to allow for fast boot times and the ability to install all of your necessary software. RAM is also important – especially if you’re multi-tasking. Go for at least 16GB.

A laptop computer.

Build a Better Workstation

Desktop devices are still the top choice for creative professionals working at home or in an office. While you lose portability, you gain tons of computing power. Not to mention the opportunity to rock a gigantic display and loads of storage.

Among the top considerations for your workstation:

Form Factor

Desktop devices usually fall into one of two form factors: All-in-one (AIO) or the more traditional mid or full-tower. Whichever you choose, the ability to perform future upgrades is vital.

Smaller devices may not allow you to, say, add an additional internal drive or swap out the graphics card for something bigger. At the very least, you should have easy access to exchange or expand RAM and any internal drives.

Needs inevitably change. So, think about the future before deciding on a workstation setup.

Display

How big is too big? The rule of thumb here is ensuring that you have enough space for your applications to fit comfortably on your screen. At the same time, you shouldn’t have to strain your eyes to read text at a comfortable distance or have to crane your neck.

With today’s creative applications requiring a lot of screen real estate for settings panels, etc., a size of at least 24-27 inches is ideal. Anything smaller than that could be a little too cramped. If you have the means to go bigger – go for it.

When it comes to resolution, 1080p (full HD) is the absolute minimum these days. 4k monitors are becoming more popular. However, the pixel density can be difficult to deal with at smaller screen sizes. And you’ll also need a solid graphics card to feed it high-quality video.

Other considerations are refresh rates and response time (not terribly important unless you’re working with a lot of fast-moving images), connectivity (HDMI or DisplayPort) and an adjustable stand. There are plenty of other goodies to be had, but the basics are of most importance.

A desktop computer monitor.

Graphics Card

Speaking of graphics, this is an area where you don’t want to skimp. Professional-grade apps are relying more on graphics cards than ever. Look for a card that will work with your favorite apps and provide acceleration. Photoshop, for example, publishes some GPU guidelines that are worth a look before you buy.

While onboard graphics are indeed getting better, they still don’t hold a candle when compared to discrete cards. Therefore, it’s often worth the investment in a mid-to-high range card.

Processor

Many of the preferred apps that graphic and web designers utilize are multi-threaded. Having a processor that is optimized for these sorts of tasks is a must. Thankfully, most recent models from AMD and Intel have this capability.

This especially comes into play when doing intensive work like editing large media files or compiling code. The more threads your processor can handle, the quicker things get done (to a point).

Avoid the bargain bin if at all possible, as spending just a bit more can really improve performance. It may also be wise to avoid the very top-of-the-line options, as it is unlikely to be worth the cost. Instead, opt for a processor that occupies the sweet spot in the middle.

Storage

Sure, it’s quite common to store your files in the cloud, but it’s not always ideal for home-based freelancers. Internal storage is still vital to system performance and convenience. Plus, this is an area where you can get a lot of bang for your buck.

For faster boot times and the ability to quickly launch your apps, a solid-state (SSD) drive with at least 1TB of capacity is recommended. Anything less and you might find yourself in a crunch for free space later on.

For local file storage, old-school mechanical drives are still a good choice. Buy a terabyte or two more capacity than you think you’ll need. This should serve you well both now and a few years from now.

Memory

RAM plays a critical role for designers. It’s what allows us to have 20 tabs open in our browser – in addition to all of our resource-hogging creative apps.

Having too little will hinder your ability to multitask. Therefore, it’s important to stock your system with enough to handle your daily workload (and then some).

As with laptops, your workstation should have at least 16GB of memory. Doubling up to 32GB is even better for those who want even snappier performance.

Multiple monitors on a desktop.

Final Thoughts

The hardware needs of designers aren’t the same as the same as that of the typical consumer. When it comes to laptop and desktop devices, most off-the-shelf systems aren’t going to get it done.

Instead, each major component should be carefully considered. After all, they do have an impact on our daily work.

The good news is that, in most cases, you don’t have to blow out your budget. Solid performance and future upgradability can usually be found for a reasonable price.

The key is in not splurging on high-end components the moment they hit the market. Instead, look for midrange options or maybe let that expensive part age for a few months before making your move. The price will likely have been slashed over that time.

And, if you’re not sure where to start, look at reviews from a variety of sources. That will give you a better idea of what to expect when it comes to both cost and performance.

Happy shopping!

The post How to Choose Hardware for Your Design Business appeared first on Speckyboy Design Magazine.

PHP Internals News: Episode 53: Constructor Property Promotion

PHP Internals News: Episode 53: Constructor Property Promotion

In this episode of "PHP Internals News" I chat with Nikita Popov (Twitter, GitHub, Website) about the Constructor Property Promotion RFC.

The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news

Transcript

Derick Rethans 0:16

Hi, I'm Derick. And this is PHP internals news, a weekly podcast dedicated to demystifying the development of the PHP language. This is Episode 53. Today I'm talking with Nikita Popov about a few RFCs that he's made in the last few weeks. Let's start with the constructor property promotion RFC.

Nikita Popov 0:36

Hello Nikita, would you please introduce yourself? Hi, Derick. I am Nikita and I am doing PHP internals work at JetBrains and the constructor promotion, constructor property promotion RFC is the result of some discussion about how we can improve object ergonomics in PHP.

Derick Rethans 0:56

Object economics. It's something that I spoke with Larry Garfield about two episodes ago, where we discuss Larry's proposal or overview of what can be improved with object ergonomics in PHP. And I think we mentioned that you just landed this RFC that we're now talking about. What is the part of the object ergonomics proposal that this RFC is trying to solve?

Nikita Popov 1:20

I mean, the basic problem we have right now is that it's a bit more inconvenient than it really should be to use simple value objects in PHP. And there is two sides to that problem. One is on the side of writing the class declaration, and the other part is on the side of instantiating the object. This RFC tries to make the class declaration simpler, and shorter, and less redundant.

Derick Rethans 1:50

At the moment, how would a typical class instantiation constructor look like?

Nikita Popov 1:55

Right now, if we take simple examples from the RFC, we have a class Point, which has three properties, x, y, and Zed. And each of those has a float type. And that's really all the class is. Ideally, this is all we would have to write. But of course, to make this object actually usable, we also have to provide a constructor. And the constructor is going to repeat that. Yes, we want to accept three floating point numbers x, y, and Zed as parameters. And then in the body, we have to again repeat that, okay, each of those parameters needs to be assigned to a property. So we have to write this x equals x, this y equals y, this z equals z. I think for the Point class this is still not a particularly large burden. Because we have like only three properties. The names are nice and short. The types are really short. We don't have to write a lot of code, but if you have larger classes with more properties, with more constructor arguments, with larger and more descriptive names, and also larger and more descriptive type names, then this makes up for quite a bit of boilerplate code.

Derick Rethans 3:16

Because you're pretty much having the properties' names in there three times.

Nikita Popov 3:20

Four times even. One is the property name and the declaration, one in the parameter, and then you have to the assignment has to repeat it twice.

Derick Rethans 3:30

You're repeating the property names four times, and the types twice.

Nikita Popov 3:34

Right.

Truncated by Planet PHP, read more at the original (another 19135 bytes)

Tor PHP Script Obfuscation

Package:
Tor PHP Script Obfuscation
Summary:
Process PHP code to make it hard to understand
Groups:
Code Generation, Language, Parsers, PHP 5
Author:
Max Stemplevski
Description:
This class can process PHP code to make it hard to understand...

Read more at https://www.phpclasses.org/package/11647-PHP-Process-PHP-code-to-make-it-hard-to-understand.html#2020-05-13-23:51:04

PHP 7.3.18 Released

The PHP development team announces the immediate availability of PHP 7.3.18 This is a security release which also contains several bug fixes.All PHP 7.3 users are encouraged to upgrade to this version.For source downloads of PHP 7.3.18 please visit our downloads page, Windows source and binaries can be found on windows.php.net/download/. The list of changes is recorded in the ChangeLog.

PHP 7.2.31 Released

The PHP development team announces the immediate availability of PHP 7.2.31. This is a security release.All PHP 7.2 users are encouraged to upgrade to this version.For source downloads of PHP 7.2.31 please visit our downloads page, Windows source and binaries can be found on windows.php.net/download/. The list of changes is recorded in the ChangeLog.

PHP 7.4.6 Released!

The PHP development team announces the immediate availability of PHP 7.4.6. This is a security release which also contains several bug fixes.All PHP 7.4 users are encouraged to upgrade to this version.For source downloads of PHP 7.4.6 please visit our downloads page, Windows source and binaries can be found on windows.php.net/download/. The list of changes is recorded in the ChangeLog.

Simple PHP Multithreading

Package:
Simple PHP Multithreading
Summary:
Create threads that run multiple tasks in parallel
Groups:
Language, PHP 5
Author:
Mahesh S
Description:
This package can create threads that run multiple tasks in parallel...

Read more at https://www.phpclasses.org/package/11646-PHP-Create-threads-that-run-multiple-tasks-in-parallel.html#2020-05-13-13:25:54

DDD and your database

The introduction of Domain-Driven Design (DDD) to a larger audience has led to a few really damaging ideas among developers, like this one (maybe it's more a sentiment than an idea):

Data is bad, behavior is good. The domain model is great, the database awful.

(We're not even discussing CRUD in this article, which apparently is the worst of the worst.)

By now many of us feel ashamed of using an ORM alongside a "DDD domain model", putting some mapping configuration in it, doing things inside your entities (or do you call them aggregates?) just to make them easily serializable to the database.

Infrastructure code in your entities

We want our domain model to be pure objects, have only "domain concerns", leading us to reinvent assertion libraries just because "those are in /vendor". We think that mapping configuration is infrastructure code, whether you use annotations or write your mapping code yourself.

In a previous article (Is all code in vendor infrastructure code?) I've shared my definition of infrastructure code and we discussed a more practical definition as well: infrastructure code is code that is not sufficiently isolated to test it with a unit test. Let's use this definition for domain models that are prepared for persistence - that are "ORM-ready" so to speak. In order to know if we have properly separated infrastructure code from domain code, we only have to check if we can exercise the model's behavior in a unit test. Let's show Michael Feather's definition of a unit test once more:

A test is not a unit test if:

  • It talks to the database
  • It communicates across the network
  • It touches the file system
  • It can't run at the same time as any of your other unit tests
  • You have to do special things to your environment (such as editing config files) to run it.

So to test a domain model's behavior with a unit test it shouldn't need an actual database, a network connection, a file system, etc. No "special setup" should be required. You should be able to instantiate the object and call a method on it, just like that.

Entities should be testable in isolation

Let's look at some common cases where people might be worried that they have infrastructure code in their domain model. What about this code:

/**
 * @Entity
 * @Table(name="todo_items")
 */
final class ToDoItem
{
    /**
     * @Id
     * @Column(type="integer")
     * @GeneratedValue
     */
    private int $id;

    /**
     * @Column(type="string")
     */
    private string $description;

    public function __construct()
    {
    }

    public function setDescription(string $description): void
    {
        $this->description = $description;
    }

    // ...
}

Is it true, does this code pass the test? It does: you can run this code without a database, etc. without external dependencies. You can run this code without preparing the context in a special way. In a unit test you can just do this:

$toDoItem = new ToDoItem();
$toDoItem->setDescription('The description');

// ...

So none of this code is infrastructure code, although those annotations are definitely meant to support persistence and you could say this class has "infrastructure concerns".

What about the following example, which has hand-written mapping code in it?

final class ToDoItem
{
    private int $id;

    private string $description;

    public function __construct()
    {
    }

    public function setDescription(string $description): void
    {
        $this->description = $description;
    }

    public function getState(): array
    {
        return [
            'id' => $this->id,
            'description' => $this->description
        ];
    }

    public static function fromState(array $state): self
    {
        $instance = new self();
        $instance->id = (int)$state['id'];
        $instance->description = (int)$state['description'];

        return $instance;
    }

    public static function getTableName(): string
    {
        return 'todo_items';
    }

    // ...
}

It's not a great model. But again, you can just create an instance of this class, call any method on it, and make some assertions. There are no external dependencies, or special setup needed. So far we haven't seen any example of infrastructure code, even though we saw table names, column names, and column types.

Testing

Truncated by Planet PHP, read more at the original (another 5581 bytes)

How to Handle Losing Your Motivation as a Designer

Sometimes, you just don’t want to do your work. It can be such a hassle to get up, start up the computer, fire up the software, and do what needs to be done.

You feel tired and bored, having lost sight of why you chose a career in design in the first place, and you find yourself wondering whether you should just give it all up and become a dental hygienist.

It can be really demoralizing to lose your motivation part of the way through a project, but what do you do if you absolutely have to get something done regardless of how you feel about it?

I’m going to tell you about a technique you can use when you’re feeling burnt out and you simply can’t bear to think about taking one more step to complete that big, hairy project staring you in the face.

Riding the Rollercoaster

Emotions are not permanent. Sometimes you’re exuberantly happy, and other times you’re depressed enough to cry. This is normal – it means you’re human and not a robot. Most people realize that their current emotional state won’t last forever.

However, most of us seem to conveniently forget that fact when there’s a pile of work that needs to be done, and it isn’t going to do itself. It doesn’t matter if the work is for a client or boss, or just for ourselves.

We can usually find a way to get our work done when there’s a paycheck involved, but sometimes even that isn’t motivation enough to press on.

Procrastination is a problem that affects us all, but for some people, it can be more devastating than usual. Believe it or not, people have lost their jobs, homes, and families because they couldn’t bring themselves out of the trap of procrastination.

Procrastination usually occurs when the emotional side of our brains – the side that loves to laze in front of the television and eat ice cream – overtakes the rational side of our brains.

rollercoaster representing the career of a designer

The rational side no longer has control, and the emotional side is now telling us that there’s nothing more important than catching up on our favorite show or finishing that new video game we just bought.

If this sounds painfully familiar, I have some news for you. First of all, you should realize that procrastination, despite being an annoyance and a major waste of time, is perfectly normal.

Really. You’re not some lazy freak of nature if you procrastinate now and then. There’s no real cure for procrastination, and to be honest, as a creative person, you probably wouldn’t want the cure even if there was one.

Why? Because procrastination is a major source of distraction, and distraction is what allows you to be creative in the first place.

Think about it. If your life was merely a series of tasks from your to-do list, which you did flawlessly all the time, where would you find the time to be creative?

And what are you usually doing when you’re at your most creative? Are you getting things done productively, like a good little automaton? Or are you goofing off – staring into space, doodling aimlessly, thinking about crazy, abstract things that have nothing to do with the task at hand? If you’re anything like me, the answer is almost always the latter.

The problem comes when your procrastination lasts longer than the period it’s required to be useful. If you find yourself avoiding your work for no other reason than you’re just not motivated to do it, there are a few things you can do to get yourself back on track and complete the work that needs to be completed.

First of all, it’s important to understand the nature of human emotion. Don’t worry – this isn’t some esoteric psychology lesson.

It’s actually quite simple: there’s no way you can maintain the same level of enthusiasm for the entire duration of a long-term project. It’s just not possible. Your brain will eventually run out of energy, and you’ll find yourself exhausted and demotivated.

This is normal. And like procrastination, there’s nothing you can do about it. What you can do, however, is something that many people refuse to do: accept that it’s normal and that you can’t do anything about it.

woman working computer

Once you accept that something is inevitable, you’ll be much better prepared to deal with it when it happens.

If you’ve ever lost a loved one to a long illness, you’ll probably recall how, after a certain period, they will begin to make preparations for their own passing. They’ll update their will, and set everything in order for the day when they’ll no longer be around. There’s nothing they can do to stop what’s coming, but they can accept it and make things go that much smoother.

And if a terminally ill person can accept their own mortality, you can certainly accept that you’ll have to continue working regardless of how you feel about it at any given time.

In order to continue working on a project once you’re past that stage of initial enthusiasm, you have to prepare yourself ahead of time to deal with your fluctuating emotions.

It’s important to realize that you won’t always be at the same level of excitement, and that that’s perfectly okay. That way, when you lose steam halfway through, you’ll have a system in place to deal with it and you won’t be completely lost and frustrated.

A lot of people say things like, “it’s not the destination that matters, but the journey.” After you get through wanting to punch those people in the face, take a moment and really think about what they’re saying. If you’re too focused on your goal, you won’t even notice when your enthusiasm runs out and you’re no longer able to rely on it for motivation.

Set Realistic Expectations

Many times, we lose motivation to work on a project because we just aren’t seeing the results we thought we would in the allotted time period.

If you took on a few freelancing jobs in hopes of saving up enough money to take that trip around the world you’ve been wanting to take, or even to just pay some of your bills that have been piling up, and you haven’t gotten as many clients as you hoped you would, you can easily become discouraged.

If no amount of marketing or niching down your target client base has been showing results, perhaps it’s time to reevaluate the amount of time you’ve given yourself to reach your goals.

Are you expecting to double your income through freelancing within six months? If so, you might want to sit down, because I have some bad news for you. Building a successful freelance career takes time – time that you might not have given yourself in the beginning.

Use your “downtime” of minimal motivation to reassess your goals and create a more realistic scenario. When you’re feeling defeated, it can be much easier to accept that your goals will take you longer than you thought.

Why? Because you give your brain hope that they can eventually be reached, rather than thinking that everything is doomed and you’ll never be successful.

Doomed If You Do, Doomed If You Don’t

If you’ve been successful at completing projects before, you might recall that, though you can laugh and joke about it all now, you probably experienced feelings of doubt and anxiety about the success of your project.

Doubt is one of the biggest killers of motivation, because it robs you of the confidence needed to complete any task.

Even if you’ve planned your goals carefully and rationally, and you haven’t miscalculated anything in terms of time or effort required, if you feel you’re still not getting the results you were hoping for, you can start to lose your enthusiasm.

You may feel as though you’ll never reach your goals… until you do reach them. Then, you become totally confident again and nothing can stop you. Right?

am I good enough quote notepad book handwritten

Well, sometimes. I don’t know about you, but even when I’ve been successful with a project, I’ll still get a nagging feeling that I just haven’t done enough to secure my success. If you experience anxiety about succeeding, you can feel as if you’re a fraud, hiding behind a curtain of false confidence like the Wizard of Oz.

The good thing about these feelings is that they’re usually temporary. Most people have them, and they’ll eventually go away after a while. If you began your project for the right reasons, those reasons will always guide you through the wilderness, and you’ll eventually meet back up with your confidence.

Creative people are natural-born risk-takers. Everything we do – from finding freelance clients to generating valuable work those clients will love – involves a risk of some sort.

Even if the only risk is you feeling demotivated or unenthusiastic from time to time, it can still prove too much for you to handle. But imagine how our lives would be if nothing involved any kind of risk. If everything you touched turned to gold and you could never fail, ever.

The post How to Handle Losing Your Motivation as a Designer appeared first on Speckyboy Design Magazine.

Simple PHP Multithreading

Package:
Simple PHP Multithreading
Summary:
Create threads that run multiple tasks in parallel
Groups:
Language, PHP 5
Author:
Mahesh S
Description:
This package can create threads that run multiple tasks in parallel...

Read more at https://www.phpclasses.org/package/11646-PHP-Create-threads-that-run-multiple-tasks-in-parallel.html#2020-05-12-11:22:54
Powered by Gewgley