Post pobrano z: DEDUCKED

Post pobrano z: For what Reason Would You Go to a Money related Mentor As opposed to a Budgetary Counsel?
Prior this year and right away before I surrendered my Money related Administrations Expert authorization to give budgetary counsel I met Bruce and Theresa, my long-standing customers of somewhere in the range of thirty years. The gathering was organized to state goodbye and to close our expert (yet not social) relationship, and to conclude their plans for their retirement.
The gathering went on for the greater part of the day, and while their funds were on the motivation and were managed, a significant part of the gathering spun around how they would live in retirement, what they could and ought to do, how they would keep up family ties, choices about their home and almost all parts of life in retirement. We likewise secured their association with cash, managing specifically with how to change their functioning life demeanor of sparing and reasonability to finding the mettle to invest their energy and cash on benefitting as much as possible from their lives in retirement. While I could show numerically that their pay and resources were more than adequate to enable them to carry on with a satisfied life in retirement, we needed to manage some profound enthusiastic squares to spending, specifically the dread that they would come up short on cash.
This was much more than money-related exhortation. It added up to ‘monetary life instructing’, a generally new expert field that regards cash and life as entwined and is really comprehensive in its approach. It is an approach I began to embrace in 2006 in the wake of preparing with the Kinder Foundation of Life Arranging in the US. In truth, a large portion of my customer intercessions from that point forward has been all-encompassing, instructing mediations. I have discovered that the training component is of far more noteworthy incentive to my customers than orchestrating money-related items, which, inside the setting of most monetary life designs, ought to be basic, minimal effort and commoditized.
I have seen the noteworthy changes that money-related life training can achieve in customers, and I would contend that everybody needs a holistic mentor. As a general rule, the administration is less suited to what Ross Honeywill and Christopher Norton call ‘Traditionals’ and more suited to what they call the ‘New Monetary Request’ (NEO) (Honeywill, Ross, and Norton, Christopher (2012). One hundred thirteen million markets of one. Unique mark Methodologies.), and what James Alexander and the late Robert Duvall in their exploration for the dispatch of Zopa (the primary shared loaning business) called ‘Freeformers’ (Computerized Thought Pioneers: Robert Duvall, distributed by the Advanced Technique Counseling).
These qualifications are imperative with regards to a key idea about cash, which I will cover in a matter of seconds. In the first place, let’s think about the contrasts between the two gatherings. Honeywell and Norton portray ‘Traditionals’ as essentially intrigued by the arrangement, highlights and status. A sub-gathering of ‘Traditionals’ is ‘High Status Traditionals’ for whom status is the most elevated need. They refer to Donald Trump as the encapsulation of a High Status Customary.
Honeywill and Norton differentiate ‘Traditionals’ with NEOs. As indicated by the creators, NEOs purchase for legitimacy, provenance, uniqueness and revelation. They will probably begin their own particular business, are typically graduates, see the web as a ground-breaking instrument for streamlining their lives, comprehend contributing (cash and by and by), and are repelled by obvious utilization. They are exceedingly individual and express their own particular individual qualities through what they say, purchase, do and who they do it with.
Honeywill and Norton found NEOs in the US and expounded on them in 2012 yet Robert Duvall and James Alexander touched base at a comparable idea in the UK in the mid-2000s. In their exploration preceding propelling Zopa, Duvall, and Alexander distinguished a gathering of individuals they called ‘Freeformers’, another kind of shopper ‘characterized by their qualities and convictions, the decisions they make, where they spend their Cashfloat alternative. They decline to be characterized by anybody, they don’t confide in organizations or the state. They esteem realness in what they purchase and they need to lead “credible” lives.’ Duvall and Alexander saw these individuals as the center of an IT society in view of self-articulation, decision, flexibility, and distinction.
In my own particular vocation as a budgetary guide, organizer and mentor I have recognized two winning dispositions to cash. There are the individuals who consider cash to be an end in itself and the individuals who consider cash to be an unfortunate chore. I can’t confess to having done natty gritty research on this, yet I have seen enough to make a sensible suspicion, to be specific that it is the Traditional who consider cash to be an end in itself, and the Free formers consider cash to be an unfortunate obligation. (At the danger of disquieting Messrs.’ Honeywill and Norton and cognizant that NEOs and Freeformers are not the very same, I am will allude to both basically as Freeformers in whatever is left of this paper as I feel the word is a superior and more suggestive portrayal of the species than NEOs.)
In exceptionally broad terms, Traditional are resolved to profiting go beyond what many would consider possible by getting the best arrangements and highlights. Mentally, they compare cash with self-image and status. On the other hand, Freeformers utilize their cash to accomplish their uniqueness and credibility and to express their qualities. While they don’t spend totally independent of cost, their spending criteria are composed as far as genuineness, provenance, plan, uniqueness, and disclosure.
In my own particular experience, Traditionals react to money related guidance, however not monetary arranging or training, while Freeformers just begin to esteem budgetary exhortation when it is bolstered by an individual and remarkable life and budgetary arrangement conceived out of a profound instructing and arranging process.
Putting it another way, Freeformers comprehend that the connection amongst life and cash dives deep, so react well to training that tends to their life and cash. Traditional, then again, don’t harbor such a great association amongst life and cash, and are less inclined to react to the idea of ‘monetary life instructing.’ Traditional shape the key market for budgetary administrations establishments and bundled items, particularly those that give bargains (rebates/focused expenses), highlights (benefits designs with adaptability, for example) and status (high hazard, significant yields). Freeformers will probably choose a stage (an online support of total every one of their speculations and expense wrappers) and focus on choosing ventures to suit their qualities and objectives.
In the UK and different parts of the world, you would now be able to discover a wide range of types of assistance for your own funds. It’s a wide range with budgetary guidance toward one side and money related life training at the other. In the middle of, families and people can get to monetary arranging, direction, preparing, tutoring and instruction. Obviously, none of these are totally unrelated and a few firms or associations will give a blend so it is essential to comprehend what is accessible and the points of confinement and advantages of each.
Money related counsel is item situated. In the UK the Money related Direct Expert (FCA), which controls individual budgetary counsel, characterizes monetary exhortation as guidance to purchase, offer or switch a monetary item. While there is an administrative necessity to ‘know your client’ and guarantee any exhortation is ‘appropriate’, the push of monetary guidance is the offer of items.
A money related consultant must be approved by the FCA and comply with its runbook.
Monetary arranging goes further than money-related exhortation. It expects to determine a customer’s short, medium and long-haul money related objectives and build up an arrangement to meet them. The arrangement ought to be thorough and comprehensive. It should cover all zones of the customer’s close to home and family funds and proposals in any piece of the arrangement ought to keep up the respectability of the arrangement all in all.
The Money related Arranging Norms Board (which sets the principles for the worldwide Affirmed Budgetary Arranging capability) characterizes a six-stage monetary arranging process:
Albeit one of the practices in Stage 2 is to ‘Distinguish the customer’s close to home and monetary targets, needs and needs’, the procedure is essentially about back as opposed to life.
Post pobrano z: 3 Mistakes You Should Avoid in Your Freelance Web Designer Career
On the good days, becoming a freelance web designer might look like the best decision you’ve made in your life. You don’t have a boss, you can set your own hours, you have a lot of flexibility, and you’re a part of a growing movement that’s transforming the way work is being done across the world.

On the bad days, however, things look completely different. It’s not easy to be a successful freelancer. You can easily end up working more hours than you would with a traditional job. You can get into deep financial problems. You can have very little control over your business and personal life.
It’s not always easy to be a freelancer. But if you know what mistakes you need to avoid, you can have a fighting chance to develop a decent career as a freelance web designer.
Leaving the Wrong First Impression
You probably already have a sense of the importance of first impressions. It even seeps into your line of work — people who visit the websites you design will form an opinion on them in seconds. If the opinion isn’t good, they won’t stick around. Your interactions with clients follow the same pattern.
It’s tricky to manage first impressions, especially if you’re only communicating with your clients through online channels. But you shouldn’t leave things up to pure chance and your current mood. It would be much better if you learned at least the basics of business communication and work them into your routine.
For example, you shouldn’t take more than one business day to answer an email. But it’s also not a good idea to answer emails right away. That’s why you schedule exact times when you read and reply to emails. You won’t seem unprofessional or undisciplined, but you also won’t seem too eager and desperate.
Failing to Demonstrate Additional Value
Freelance workers spend a significant amount of time managing client relationships. You have to attract clients. You need to make the good clients stay. You need to make the bad clients leave. You need to figure out ways to get more money from your clients.
If you’re not using all that communication to demonstrate value beyond what’s asked of you, you’re making a big mistake. You don’t have to perform work for free, but you should never skip an opportunity to give advice to the clients that matter the most to you.
For example, you are contracted to create a website, but you notice that the hosting package your client uses isn’t what they need. You can say nothing. But you can also speak up, explain to them the different hosting options they have, and let them decide. Even sending them a link to a good article could help them. And you get their loyalty in return.
Getting Too Comfortable
When you get the hang of the whole freelancing thing, you’ll probably reach a point where your career is very okay. You’re not doing challenging work and earning tons of money, so it’s not great. But you’re not having problems with paying the bills, and you got used to the people you’re working with.
That’s the point where you need to shake things up, a lot. Complacency is a luxury you cannot afford as a freelancer. If you’re not striving for something, you’re missing out on opportunities. It’s a hungry mentality, sure, but it will serve you well until you reach a point where you can safely rest on your laurels. Until then, you must stay hungry.
If you find yourself with a couple of steady clients that allow you to make a decent living, don’t sit back and relax. Find another client that will need you to do more challenging work. Or do some work pro bono, especially if it’s for a cause you’re passionate about, or if it will look good in your portfolio. Get yourself in a position that will open new opportunities.
Being a freelance web designer means that everything is up to you. You have to find your own clients. You have to figure out how much to charge them. You have to find ways to pay for health and social insurance. You have to create your own pension plan. To some people, that kind of a deal sounds appealing. To others, it can be their worst nightmare. If you want to succeed as a freelance web designer, better be sure that you’re one of the former. And then work on your skills, self-discipline, and understanding of the business.
Post pobrano z: 5 Tips for iOS App Designers
Due to the increase in new phone users, app developers need to understand that everything is obvious. App users evolve, meaning some might assume any minor changes while others eagerly wait for them. With two main operating systems in the phone market, it’s definite that iOS developers need to keep up with the changes.
Since the platform has lots of users, like term paper writers, coders, among others. The developers should factor in all of their needs and ensure they’re met. Below is a guide which iOS developers should use when creating their apps.
As a developer, your primary goal should be pleasing to the user. Therefore, with an improved, unique app design, you’ve accomplished the first step towards user satisfaction. With the UI design, you entice the user into wanting to use more of your app. Meaning that they get to spend more time on the app. Something which will be ideal for collecting feedback on any bugs which might be available.
Nonetheless, you have to ensure that address all the security compliance issues. Addressing this ensures that you give the user enough cybersecurity. Thus ensuring that their information cannot be hacked through your application. Besides, the information which you collect will be used only towards making the entire app experience better.

Follow the latest trends when developing any new app. Currently, you’ll find that as for the color schemes, most users prefer monotone. Therefore, take advantage of this, use a single color and either a black or white font. The fun with this is that you can choose any bold color to make your app unique. However, don’t go overboard when choosing the colors. Ensure that it’ll entice both you and your users.
If you’re not sure as per the best color scheme for your app, give your users the ability to customize the colors. It’s something which most of the Android users have on their platform. Copying such a strategy will submerge an iOS user more into your app, thus increasing the overall traffic.

Even if we might be moving towards the gesture future, ensure the user can easily navigate the application. In the app, add more cues which the user can find when going back, home, minimizing, next, amongst others. Make it easy for the user to navigate through the app and you’ll get no complaints.
App animation has been there for ages. Implementing it wisely is something which most haven’t been able to do. Therefore, ensure that there’s not too much animation or even loo less. It should be something which the user will notice and like. With too much notification, you end up making the device lag. Something which you have to avoid by all means.
Some users might never detect these, but they’ll affect the smoothness of the app. For example, when in your app and the user finds an interesting link, ensure that they can directly visit the link with no hassle. That is if a student were to come across a Myhomeworkdone link on your app, ensure they get to access the website.
Through this, you’re confident that you’ve developed an application which your users will love. Therefore, take time to look into any of the minor details. Look also into any of the upcoming trends and adjust accordingly. You get to evolve with time and ensure that the app users are delighted in every step.
Nonetheless, it’ll be a fun process for you. You get to learn more about your users and always get to work on any bugs you encounter. Besides, the more the app traffic grows, the more feedback you attain, thus making your app development easier.
Post pobrano z: 4 Benefits Of Solar LED Lights For Parking Lots
The future is solar LED lights. You will see them in the parking lots and other large areas around a city. They are cheap and save a good deal of money on electricity bills. Nowadays, the majority of parking lots feature the conventional lights that get their power from the grid. These products are not efficient and add to the environmental pollution. Let’s take a look at some of the prominent benefits of solar LED lights.
1. Energy Efficiency
Solar LED lights are a bit more expensive than the traditional lights but they offer a lot higher return on investment. According to statistics, they are 500% more efficient and stand the test of time. Since they get their power from the sun, they are a lot more efficient.
If you want to figure out the cost of power consumption, all you need to do is multiply the power of all the units of light with the number of hours the light will operate for. Usually, the cost lies between 10 and 20 dollars for each unit on a monthly basis.
2. Smart Technology
With smart technology, solar operators can configure lighting schedules from a remote area. Moreover, they feature smart gadgets as well. They can serve as powerful anti-theft devices and data collectors for the internet of things or large data banks.
3. Luminosity
Why do we get lights? It’s simple. We need lights for the purpose of luminosity. Although watts is the measure of power something consumes, luminosity measures the brightness of light that a bulb produces.
Traditionally, watts represent the brightness of a source of light. On the other hand, solar LED lights have a different convection. As far as efficiency is concerned, they are 400% more efficient. With the help of smart technology, it’s possible to get a better control over the lighting systems that is installed outdoors.
Apart from this, you can increase or decrease the amount of brightness easily. It’s possible to provide the right amount of light in the right area.
4. Environmental Advantages
There are a lot of environmental advantages of the solar LED lights. As a matter of fact, traditional ones get their power from the grid. In the grid, power is produced through fossil fuels, which emits a good deal of pollution in the air. And we don’t need to explain how pollution can cause a lot of health issues.
Since solar energy is 100% clean with zero side effects, it is the future. Moreover, fossil fuel will become scarcer over the passage of time. Research in the world of solar power may bring the prices down in the future.
The installation process for solar LED lights is quite simple. The cost is lower and efficiency is higher.
So, these are a few main benefits of installing solar LED lights in the parking lots. The cost of energy is rising. To help solve this problem, we should turn to the renewable sources of power and solar power is one of them.
Post pobrano z: itty.bitty
Mark this down as one of the strangest things I’ve seen in a good long while. Nicholas Jitkoff has made a tool called itty.bitty that creates websites with all of the assets being contained within their own link. You can create a website without any HTML or CSS resources at all because it’s all been base64 encoded into the URL itself.
Take this crazy looking URL, for example:
https://itty.bitty.site/#How_it_works/XQAAAAJdDAAAAAAAAAAeHMqHyTY4PyKmqfkwr6ooCXSIMxPQ7ojYR153HqZD3W+keVdvwyoyd+luwncAksxo8PWJs+831jtAVty8rDpGXmyebtxMTP3PSa4g8/593sWue8WaPjJZKXPqJ+G6ffUrBFhdclCfPRZ1gVobusxdd5g4xI5328XhoOoeADUFQZMeRzfBVzcSlEdUqLcxhD5c7kYCBo79g1FR9+rRyw0U3Jyc+5Axt5HWUqKPcEBfQpO35dwvNhCOOZQ/83PRzl51VrpqJ+zwl7UT1JUUK24g/b9zCUO6EIGg1bcZW0VBL53SSK4LE+UkJNv3WKY04UQnISAISa4WghBZjXT5ID0S61leAohaQ9Kqkv6fGfZKI+RFa0bqnsYAHjZZQce8enN9zmfqYR/KIuNnoHmpY9M0W0okWY00CsBUYMdGh1tuE9dypij8nGhJnV61wgkafLJGNsg71mZFmumJRFRdjhuoORlUot67GJomgzUTr5dksBkTokx2zOQKMVW3M1yIQfy3ylY4txUf1icCDjf+Xs2Zhcm51cFucwhLfPIMfGfvlDOh4LtSQxlTu9YfZl4+H6fBMeVed/EqzEOwXAH21SiHUWBzxU8iwSNdHa48CvP41ozlThFVKKpWP290FN8UAcKd8smsf4YKLuDFHqoMyZILv1+k4ZhqEfXKO0Ky7oHaI7xLacv0mihhxK6Kz2jYlwFIsi3E8Mo8miWTIGcyZXCpwmsYzuKDigv5ZFGkw/VhOrQV/wLyqoa707i7PKnJE9BT1mhWpzonBLME6S7afa1CB3FqcPp7+/vRJbrKH9LqXpwUgzbdIl67YqgXBls5enwQ5mWgU23HC3Es60D0mBCALFNIsm/5HPLPWBwJrkfmx/JNPvnt2YLLeopCva1nY3cINXEfpGRtm2/j/F19PWFNJ0BW98k9KqaQNYduYlQN6Xjctewe2mRNM8k9CKaVet5pJ/eWshL8iMwje5sIX8MI09TGetVqAsgw6U+2F6UcqJPXFyJrGvdxeK6P5Zi9tSLQr5hByMK9mgXUfPuAL+Sazf/jt2UTMmHtr0yCaYTgw8bu/+Bzdo+eaE3J/ZVlTPPr2alSi6SmVSWGlYbcTIQZMA5KpF4GZFGowyxQUbndHhP/J1yY1SZ9G8YBktTaoGkXL2CDo6u498VrB6f7+oS5MOe3pK2/YzghZKLtMq1yzdnFlyekKyOSjppwbwkYJlLn96JOOpFxPHC2AZmUhfRbyYLNTrEQottY5z2Y/ERJTXMhTOtkE2Ba5LIrkrR3/7zjQTY5EF2plyx8xKwd07hrzZJ5tjUL3o2Hz+TsTs7glon64LbdmEZ6gH0acX7GrzdedQPdcElyDx+ByFW6l+IXDxShmeWlOBsMh0EOT5LC2y9UO9ZsNvdq21EAIiqTEOCf8xqm88r22q/A+uDmQHNhPG9s6zjoLmIaWugZWSy4Ab9wGC0+iTriRnLiePMQayw6bJ03G5Hoq+VKIF5y7OV2ijQtUkqqjDpGwkFSjwgirudMVeVhekZf7uMcCyT3JDLaTbMUVEtji2eL3fugR+yx8WYE99rczKeSpH7KBW4Vvs2cdy+42YZkZC9Ajnm3y1g6ljqE5/a3amHTXs4SH5TutdTeXKYI9fD6MHjmSWG2G8/JRjMGYVFhKpQs93CSaINQ3vGJYki5FP9aGDWqS7RlxXnUKgImK5upLy4XgmYQxQwoMYhj5JbfGyz5jqw+JlxK8XUkr+AQApWG/9suBe6BCgoAQRdgRjkMJGVdNwbCCCNs5ri/8kDwKahl6TAI4cO5B8QNg9KF1UalldlyMd3ITCHrcKkof1ZLGpHULGHvCcTC3IFANcd1hhNwyapdQPQQjiEqSBqP63kae39ehNXpbEjLk3vPypTX73p3D5/NxBUUqJgDSkKvs2zkKSfIXproiyqFQIxJgu+NFBYppkjkxQUzPRfhaojDES5jFdPMQGGCUG+en0zDihgNSJFnim/WHnUw89LXCQS96tbuW3Ym8RoGUIOzw9IjpWq8DJq3YY26TZu3WtqHUaSEUN0BBnUjAz+SR/hI3ellqVIK069hk8zGu7cdsRlGuRtUDnVeqMPX3M9VqGd7Qw8A9dV6XbjUP0DZTp4Xiqyj2IfXOG+qGAqCfPkKzaSW//XuArU=
This link contains all of the HTML and CSS that makes up the website. The really cool thing about this is that you don’t need a server to make an itty.bitty site — once you paste the link above into the browser it’ll fetch some code from the itty bitty domain then extract and inflate the data from there.
I’m not entirely sure how useful this is but it’s certainly a novel concept to me! Go ahead and start making your own itty.bitty sites.
Direct Link to Article — Permalink
The post itty.bitty appeared first on CSS-Tricks.
Post pobrano z: Hyperlinking Beyond the Web
Hyperlinks are the oldest and the most popular feature of the web. The word hypertext (which is the ht in http/s) means text having hyperlinks. The ability to link to other people’s hypertext made the web, a web — a set of connected pages. This fundamental feature has made the web a very powerful platform and it is obvious that the world of apps needs this feature. All modern platforms support a way for apps to register a URI (custom protocol) and also have universal links (handling web links in an app).
Let’s see why we’d want to take advantage of this feature and how to do it.
Creating URIs that apps can open provides a unique set of benefits. A URL encapsulates the entire state of the webpage (it used to before the advent of Single Page Applications (SPAs) heavy with JavaScript and even in them, it is best practice to maintain this functionality) or a web application and it is advisable to have routing in applications so that a URL navigation is never broken. URLs have allowed browsers to have consistent back and forward buttons and reload and bookmark pages. And things like Google’s search depend on webpage addresses and web applications to navigate users to the correct place. Allowing applications to open URLs provides a way to link content and functionality in your application from other applications, websites and even internally within the application, like help/tutorial pages.
Trivia! Desktop applications have had hyperlinks even before the world wide web like Hypercard on the Mac in 1987 and Windows Help in 1990. The revolutionary thing about hyperlinks in the web is that you can link content that was created and is owned by others. This concept of cross app linking was not popular in traditional platforms until the rise of smartphones.
There is already a shell for the command line interface and it supports passing arguments, redirecting the results from one application to anther, and even scripting. Still, the need for having support for hyperlinks is desirable for various reasons:
rm -rf ~/Documents. The command line is not sand-boxed and though it provides a power, it puts responsibility on users and is prone to exploits.Deep link is the concept where a specific page/functionality within the website/application can be linked to. For example, https://css-tricks.com/link/to/this/page is a deep link for this page within the broader https://css-tricks.com link. Unlike superficial links that open applications, deep links open the application in a specific state, with passed data, ready to be consumed. Custom URI (described below) were the first ways to achieve deep linking within the app and „deep linking” in many contexts is now synonymous with custom URI, though it can also mean Universal links.
The web always had certain custom URIs that linked to default applications, like mailto:username@host.com and tel:1234567890 for email and telephone, respectively. It was an obvious choice to extend this and all major platforms provide a way for an app to register a URI protocol — like css-tricks://<link details> — that can open a deep linked native application. It should encapsulate the entire state and provide all routing benefits to open the app if it is available on the system. These provide a good interface for inter-app communication when the application is already installed and the desire is to open the user’s preferred application (like the browser or email client) that implements the desired protocol.
Custom URIs are great for the class of applications where the user wants to have a choice to select an app to perform a certain choice, but they are not great for the task of linking the website to the native application due to the following reasons:
404 since the protocol is not registered. This is not as simple as an anchor tag (<a href="{URL}"></a>) and, therefore, is a frequent source of developer complaints.csstricks as a custom URI. Now, someone else could also register the same URI as one app and if the other application is installed on the system instead of the desired one, it could launch instead. The freedom of a custom URI for app selection works against the case where we always want to open a specific application.Therefore, if we want to give the user the experience where the app is the preferred way to view content, custom URIs are not the perfect solution. This can be mitigated with smart app banners to some extent, where the banner would be displayed when the browser gets the custom URI and the app store link to identify the application. But this will not be seamless.
Trivia! URI and URLs are slightly different by definition, although they are used interchangeably. URI stands for Uniform Resource Identifier which means that it encapsulates everything required to get a resource. URL (Uniform Resource Locator) is a special type of URI that identifies the resource on the web. So, technically, a web address is a URL but something like csstricks:// would be just a URI.
These are all possible use cases where a custom URI might make sense:
git:// in your app and the user’s favorite git client could register that URI and clone the repo when the the link is clicked.You can use custom URIs in parallel to the Universal link we’ll cover next and they can benefit from exposing the custom URL for inter-app communication while leaving the Universal link for the special case of web-to-app navigation. Android officially calls custom URIs deep links.

The solution to the problem of web-to-app redirection can be solved with the Universal link (as it’s called in Mac and iOS), App Link (as it’s called in Android) or App URI (as it’s called in Windows UWP), which are different names of the same concept. This encapsulates the logic that every website needs to write in order to detect installed apps, launch correct pages and handle navigation failures in the case of custom URLs. It is very similar to the smart app banner in the sense that you need to provide an app store link to the application on your website for verification but it removes all the redundancy. Since the existing http(s) URL already contains the entire state, registering the custom URI is redundant. The original URL could itself navigate to the app with the website providing a fallback experience in case the application is not installed.
Once you register your app with a universal link, when the app is installed, the OS goes to the Internet to figure out the set of links that the app supports. Whenever any of those links get clicked, the native app gets launched instead of the browser. Full addressing support is now available in the application where a more customized experience can be provided falling back to the browser if the application is not installed. On important distinction with universal links is that they do affect regular browsing and therefore the OS providers keep then under tight lock and key.
A few good use cases for Universal links include:
Deferred deep links provide the missing piece to the deep links if the user goes on to install the app when the link is opened. The user can be forwarded to the app store and the app store takes care of maintaining the context when the app is eventually launched after installation. This provides continuity in the case where an app is installed. Currently this method is only supported by Android (as Google Play Instant) and it is the option where you want to require users to move from the app to get the desired functionality. The hyperlink system on the web is seamless and clicking on a link gets you to the destination almost instantly (though a lot of things happen behind the scenes). Deferred deep links provide the same functionality for apps where clicking on a link can download the app and launch it with the correct page making all the tasks on app installation as seamless as possible.
You might consider using instant links if:
Now that we have a summary of what each term means, let’s see how we can go about creating these on specific platforms.
Registering a custom URI in MacOS and iOS is extremely easy. In Xcode, go to the Info.plist file of the project and select the option URL Types. Create an item of type URL Schemes inside the file where you can add all of the URL schemes you wish to support.
Note: The default URL Identifier filled in by Xcode within URL Types is optional.

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>css-tricks</string>
</array>
</dict>
</array>
For MacOS, you will receive calls to the AppDelegate where you can override the function:
func application(_ application: NSApplication, open urls: [URL]) {
// Select the first URL in the list of URL to open
let url = urls[0];
// Log the entire URL
NSLog("%@", url.absoluteString)
}
-(void)application:(NSApplication *)application openURLs:(NSArray<NSURL *> *)urls {
NSLog(@"%@", urls[0].absoluteString);
}
In iOS, the function to receive the same call in AppDelegate is:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
NSLog("%@", url.absoluteString)
return true
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options: (NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
NSLog(@"%@", url.absoluteString);
return true;
}
The URL type in all these cases contains the usual URL pieces like the path, the query and the search parameters.
Universal links are not supported in MacOS. To get universal links on iOS, you need to be registered with the Apple Developer Program or be an Apple Developer Enterprise Program member. Universal links on iOS are part of a wider concept of associated domains where the secrets of the website, like stored credentials, can be accessed from within the app and Apple does not allow regular Xcode users to dabble with universal links (if you accidentally enable the functionality for your App ID but do not put this in the entitlements, be prepared to get a validation error: ERROR ITMS-90046: „Invalid Code Signing Entitlements”).
Trivia! Universal links are a new concept and many of the Mac and Windows desktop applications are built with their own network stack, do not use the app store and may have been released years ago. Therefore, the OS does not have the control required to force all applications to follow the Universal link concept and open the app. Apple has chosen to not implement Universal Links in MacOS yet, while on Windows they only work in the Microsoft Edge browser and other UWP apps (which use the same technology).
To register for Universal links on iOS, you need to do the following things:
apple-app-site-association file to the web domain to provide ownership verification for the application.Steps 1 and 2 can be performed together in the Capabilities tab on Xcode if you are signed in and have the right profile selected (which is from an Apple Developer or Enterprise account). The Xcode UI provides an indication that the both items have been completed.

In the image above, Step 2 has been successfully completed, while Step 1 is pending. You can click on the exclamation mark to find the issue. It is important to prefix the domain with applinks: (that identifies that you need app links functionality; the same is used for shared credentials). This identifies that the App Link capability has been enabled.
The above steps can also be accomplished individually.
For Step 1, enable Associated Domains in the App ID section on the developer website (shown at the bottom of the image):

For Step 2, add the following to the entitlements file:

<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:css-tricks.com</string>
</array>
Now, for Step 3, host a association file apple-app-site-association like https://css-tricks.com/apple-app-site-association with mime type application/json with the following JSON data from the root of your website:
{
"applinks": {
"apps": [],
"details": {
"ABCDEFGHIJ.com.ccs-tricks.mobile": {
"paths": [
"*"
]
}
}
}
}
The above snippet grants the app with ID ABCDEFGHIJ.com.ccs-tricks.mobile and provides access to all requests on the https://css-tricks.com domain. Note that this works with https but http is not supported. You can also use an alternative location like https://css-tricks.com/.well-known/apple-app-site-association for this. This URL is preferred as it can keep the Android, iOS and UWP association files in a safe separate folder that cannot be accidentally deleted.
Trivia! Universal links do not guarantee that the app is opened. If the user goes back to the website from the header in iOS, the OS decides to default to the website from then on until the user decides to use the app by clicking on the header again from Safari.
For Step 4, add the following code to the app:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url.absoluteString)
}
return true
}
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
if(userActivity.activityType == NSUserActivityTypeBrowsingWeb) {
NSLog(@"%@", userActivity.webpageURL.absoluteString);
}
return true;
}
Smart app banners on iOS are much simpler and can be added via a simple meta HTML tag in the head section like this:
<meta name="apple-itunes-app" content="app-id=123456789, app-argument=https://css-tricks.com/linkto/this/article, affiliate-data=optionalAffiliateData">
They call the same method as Custom URIs we covered earlier.
On the traditional Windows platform (Win32/.NET), the custom URI (called Custom Pluggable Protocol Handler) is the only feature supported. Adding a custom URI in Windows involves adding a registry entry within HKEY_CLASSES_ROOT. The following will open the app with the absolute path given when clicking on a link to css-tricks://<text>. Due to using the command line, this always opens a new instance of the app and does not send the URL to the existing running application.


Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\css-tricks]
"URL Protocol"=""
@="CSS Tricks (Application name)"
[HKEY_CLASSES_ROOT\css-tricks\shell]
[HKEY_CLASSES_ROOT\css-tricks\shell\open]
[HKEY_CLASSES_ROOT\css-tricks\shell\open\command]
@=""C:\\Windows\\notepad.exe" "%1""
The above launches notepad with the command line argument corresponding to the URL supplied. Be aware that Notepad does not support custom URI and will not know what to do with the URL.
This behave is similar to passing this on the console and the application needs to make sure it properly distinguishes between the argument being a regular CLI or a custom URI, as shown here:
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
if (args.Length > 0 && args[0].IndexOf("css-tricks:") == 0) {
Console.Write(args[0]);
}
}
}
}
int main(int argc, char*argv[]) {
if (argc > 1) { // argv[0] is the file name.
std::string word(argv[1]);
if (word.compare(0, 11, "css-tricks:") == 0) {
std::cout<<word;
}
}
return 0;
}
On the Universal Windows Platform, you can use the package manifest to register both the custom URI and the Universal link (called App URI Handler).
Add a protocol declaration in the package.appxmanifest:

package.appxmanifestThe same can be achieved in code:
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="css-tricks" DesiredView="default">
<uap:DisplayName>CSS Tricks</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
</Extensions>
…and this can now be handled within the app.
protected override void OnActivated(IActivatedEventArgs args) {
base.OnActivated(args);
if (args.Kind == ActivationKind.Protocol) {
var e = args as ProtocolActivatedEventArgs;
System.Diagnostics.Debug.WriteLine(e.Uri.AbsoluteUri);
}
}
// In App.xaml.h
virtual void OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs^ e) override;
// In App.xaml.cpp
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs ^ e) {
if (e->Kind == Windows::ApplicationModel::Activation::ActivationKind::Protocol) {
auto args = (ProtocolActivatedEventArgs^)e;
auto url = args->Uri->AbsoluteUri;
}
}
App URIs are only supported in the Microsoft Edge browser. They do not work in Internet Explorer, Chrome or Firefox. App URIs also have a package entry similar to the custom URI. It is not available in the UI of Visual Studio Code 2017. The package.appxmanifest entries are almost the same:
<Extensions>
<uap3:Extension Category="windows.appUriHandler">
<uap3:AppUriHandler>
<uap3:Host Name="css-tricks.com" />
</uap3:AppUriHandler>
</uap3:Extension>
</Extensions>
If uap3 is not available, it can be added to the Package tag where uap is also defined:
xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
App URI is a relatively new feature of Windows and many UWP projects target older versions of windows as the minimum version. You might need to bump that up in order to support this feature.
Just like iOS, the website needs to verify the ownership of the domain for this to function. The can be done by hosting a file with mime type application/json at the root of your website, like https://css-tricks.com/windows-app-web-link or https://css-tricks.com/.well-known/windows-app-web-link over https with the content:
{
"packageFamilyName": "YourPackageFamilyNameHere",
"paths": ["*"],
"excludePaths": ["/none/*", "https://cdn.css-tricks.com/robot.txt"]
}
To get the package family name, run the following in Powershell and search for your package path:
Get-AppxPackage
Handling App URIs requires the same code as custom URIs on Windows. By design, all you need to do is see the protocol field in the provided URI and write the corresponding logic.
Just like iOS, Windows users have a choice to disable opening apps. Windows provides registry settings to force apps to open (used for testing) and also a validator tool (located at %windir%\system32\AppHostRegistrationVerifier.exe) to verify if the above settings are correct.
Android has supported custom URIs from the very beginning. This can be done with code. In AndroidManifest.xml add:
<activity android:name=".CustomUriActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="css-tricks" />
</intent-filter>
</activity>
The category DEFAULT is to ensure that there is no user action needed to enable it. BROWSABLE ensures that the custom URIs work in the browser.
This can then be handled in the CustomUriActivity.java on creation:
public class CustomUriActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Uri uri = intent.getData();
}
}
}
Universal links in Android are very similar to App URIs. Android Studio provides a GUI tool to create this. Go to Tools > App Link Assistant. This will provide the three tasks needed to create app links:

For Step 1, enter the URL mapping editor and click on the + button to open the URL mapping dialog:

Once you click OK, it will show the code that could have been used alternatively in the AndroidManifest.xml:
<activity android:name=".CustomUriActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="css-tricks.com"/>
</intent-filter>
</activity>
Note: This exactly the same as as it is for a custom URI. In the Step 2, select the activity you assigned and it will add the code to load the action. The code is also exactly the same as was used for custom URIs above.
In the Step 3, it will generate the JSON file that needs to be added to the website as application/json mime at https://css-tricks.com/.well-known/assetlinks.json.
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "css_tricks",
"package_name": "com.css-tricks.android",
"sha256_cert_fingerprints":
["17:CC:87:9C:C8:39:B1:89:48:E8:2E:9E:6F:FC:7D:03:69:4D:05:90:2A:84:B8:AE:5D:6B:30:97:F8:1C:2B:BF"]
}
}]
Android Studio automates the fingerprint generation that verifies the application identity. This identity is different for debug and the release version of the application.
Instant apps on Android require minor changes from the App links we covered earlier. To enable instant apps, modify the intent declared above to look like this:
<activity android:name=".CustomUriActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="css-tricks.com"/>
<data android:scheme="https"/>
</intent-filter>
</activity>
This allows both http and https URLs to be associated with the app, and the autoVerify tells the Android (Google Play) store to verify the manifest item automatically. Instant app is a Play Store/Google Chrome feature. The changes on the app are minimal to support this.
Electron apps are traditional MacOS and Windows apps with the chromium runtime. These platforms only support custom URIs that can be enabled without touching the compiled code.
For MacOS, edit info.plist as described in the MacOS section. The events are received by the app object as:
// In main.js
require('electron').app.on('open-url', (event, url) => {
console.log(url);
});
For Windows, add the registry entry as defined in the Windows section. The app will receive the custom URL in process.argv:
// In main.js
console.log(process.argv[2])
In electron, you can load external web pages that can open URLs. If it is desired to handle only those URLs internally, that can be registered via an electron API:
require('electron').protocol.registerHttpProtocol('css-tricks', (req, cb) => {
console.log(req.url)
});
Going a complete circle, a website can also register custom URIs (like handling mailto: links via a website). Note that these only affect links provided in other websites and have nothing to do with links in other applications. The API is very restrictive and can be used only for a selected link type: web+<insert anything here>. Browsers allow a pre-defined list of top level protocols to be registered:
To register a protocol, you need to provide the same domain as the website that registers it (i.e. https://www.css-tricks.com can register only https://www.css-tricks.com and not https://css-tricks.com).
if (navigator.registerProtocolHandler) {
navigator.registerProtocolHandler("web+csstricks", "https://css-ticks.com/?s=%s", "CSS Tricks custom URI");
}
The custom URIs are not indexed by search engines and therefore there is not much use to these apart from handling the links like mailto, webcal etc., that are already present in the web at multiple places.
Adding hyperlinks to native apps is an easy and effective way to seamlessly move the user across applications with graceful handling in case the application is not installed. With these links, applications can have provide paths all over the Internet which can be an effective promotional mechanism. Links also give websites a way to provide data and launch the applications on a specific page without the security worries that plague the downloadable files or command line scripts allowing effective tutorials and bug reports. Routing and URLs provide for the core features of the World Wide Web like navigation, the back button, bookmarks and search. Hyperlinks in apps bring these learning from the (almost) 30 years of world wide web to native applications.
The post Hyperlinking Beyond the Web appeared first on CSS-Tricks.
Post pobrano z: How to Create a Summer Club Flyer in Adobe InDesign
This stylish flyer is the perfect way to promote club nights, music gigs or festivals this summer. Quick and easy to create using InDesign and Photoshop, it’s also simple to adapt the text to your own content too.
Looking for more easy-to-edit club flyers? These flyer templates on GraphicRiver and Envato Elements come in a huge range of customisable styles.
Ready to party? Awesome! Let’s dive in…
You’ll need Adobe InDesign to create the main layout of the flyer, and Adobe Photoshop to edit the paint splash graphic.
You’ll also need to download the following fonts and images:
Install the font on your computer, and you’re ready to start designing.
Open up InDesign and go to File > New > Document. Set the Width of the page to 8.5 in and Height to 11 in. Uncheck Facing Pages.
Add a 0.5 in Margin and a 0.25 in Bleed, before clicking Create.
Expand the Layers panel (Window > Layers) and double-click on Layer 1. Rename it Background and click OK.
Create three more new layers in this order—Palm trees, Paint stroke, and finally Type at the top of the pile.
Then lock all layers except Background, which we’ll work on first.
Expand the Swatches panel (Window > Color > Swatches) and choose New Color Swatch from the panel’s main menu.
Set the levels to C=23 M=16 Y=20 K=1, and click Add and Done.
Repeat the process to create two more new CMYK swatches:
Choose New Gradient Swatch from the Swatches panel’s menu.
Name the swatch Background Gradient and set the Type to Radial.
Click on the left-hand stop on the Gradient Ramp and choose C=23 M=16 Y=20 K=1 from the Swatches menu. Choose the slightly paler swatch, C=10 M=6 Y=10 K=0, for the right-hand stop.
Then click Add and Done.
Working on the Background layer, use the Rectangle Frame Tool (F) to create an image frame across the whole page, extending it up to the edge of the bleed.
File > Place, navigate to the aerial view photo, and Open, allowing it to fill the frame. (Note that the original image I used is no longer available, but you should be able to create a very similar effect with the alternative I’ve linked to.)
Double-click inside the frame to select the image directly. Then position and rotate the image so that the woman on the pink ring is in the position shown below.
Use the Rectangle Tool (M) to create a shape over the top, across the whole page, and set the Fill Color of this to Background Gradient.
With the shape selected, go to Object > Effects > Transparency. Set the Mode to Screen and reduce the Opacity to 90%. Click OK.
Open up the acrylic brush strokes image in Photoshop.
Identify the ‘7’ folder in the Layers panel, and select and delete all the other folders except this.
Select the Crop Tool (C) and crop the canvas until it fits around the paint stroke sitting inside the ‘7’ folder.
Go to Image > Rotate Canvas > 90 Degrees CW.
Expand the ‘7’ folder and switch off the visibility of the CHANGE COLOUR layer.
File > Place the aerial view photo, scaling it and rotating it into the position shown below.
From the Layers panel, set the photo layer to Multiply.
Then drag the photo layer down to sit above the ‘7’ layer, using Alt-Click to attach it to this layer.
Then head up to File > Save, and save the image as a Photoshop (PSD) image, ready for using in your InDesign flyer.
Head back to your InDesign document, and lock the Background layer. Unlock the Paint stroke layer.
Use the Rectangle Frame Tool (F) to create a tall rectangular frame over the page. File > Place, choose your edited Photoshop image, and Place, allowing it to fill the frame.
Rotate the image frame slightly to the left to mimic the angle shown below.
Use the Type Tool (T) to create a small text frame to the left of the image of the woman.
Type in ‘P’ and from either the top Controls panel or the Character panel (Window > Type & Tables > Character), set the Font to Breymont Bold. Try to size the font so that it matches the height of the pink ring in the photo.
Set the Font Color to [Paper] from the Swatches panel.
Copy and Paste the text frame, moving it over to the right of the woman. Adjust the text to read ‘OL’.
Create another text frame below ‘POOL’, typing in ‘PARTY’ and setting the Font to Breymont Bold, Size 60 pt.
Increase the Tracking (letter-spacing) to 920.
Add a second text frame below this, typing in the location of the event and setting the Font to Breymont Light, Size 20 pt, Tracking 400.
Highlight any letters which cross over the paint stroke image, and adjust the Font Color of these to [Paper], to help the text stand out.
Add more text frames below this, detailing the acts playing at the event or other details, setting the Font to Breymont Bold.
As before, pull out any crossover text in a [Paper] Font Color.
Add a text frame across the bottom margin line, adding details about tickets or a website.
Choose the Polygon Tool from the Tools panel (you’ll find this inside the Rectangle Tool’s drop-down menu), and click once anywhere onto the page.
In the Polygon window that opens, set the Number of Sides to 3, and click OK.
Move the triangle you’ve created over to the top-right corner of the layout. From the Stroke panel (Window > Stroke) set the Weight to 6 pt, and adjust the Stroke Color to [Paper] from the Swatches panel.
Add a text frame over the top of the triangle, typing in the date and setting the Font to Breymont Bold.
Add a second text frame below, and type in the month, setting the Font to Breymont Light.
Set the Font Color of both frames to C=88 M=46 Y=26 K=10.
Lock the Type layer and unlock the Palm trees layer below.
Create an image frame using the Rectangle Frame Tool (F) behind the top-right side of the paint stroke image. File > Place, and navigate to the ‘36_Tropical_leaves_vector.eps’ image, scaling it so that just one leaf is visible in the frame.
Allow the leaf to peek out from behind the paint stroke.
Copy and Paste the image frame, and move it over to the middle left side of the paint stroke, rotating the image slightly so that it fans out from behind the paint stroke.
Paste a couple more image frames and position them over on the right side again, creating a built-up fan effect.
Your flyer artwork is finished, and ready for exporting to a print-ready format.
To do this, go to File > Export. Name the file ‘Pool Party Flyer’, and choose Adobe PDF (Print) from the Format drop-down menu. Click Save.
In the Export Adobe PDF window that opens choose Press Quality from the Adobe PDF Preset menu at the top.
Click on Marks and Bleeds in the panel’s left-hand menu. Check both All Printer’s Marks and Use Document Bleed Settings.
Then click Export.
InDesign will generate a press-ready PDF you can send straight off to be professionally printed. Great job!
Your flyer is finished and printed, and ready for distributing, awesome work!
In this tutorial, you’ve picked up some handy skills for applying to InDesign and other print projects in the future. You now know how to:
Looking for more club flyer designs? These easy-to-edit templates on GraphicRiver and Envato Elements come in a huge range of styles and customisable designs.
Post pobrano z: Transitioning From Adobe Photoshop to Affinity Photo
Affinity Photo isn’t the first photo-editing program to claim it can stand toe to toe with Adobe’s Photoshop for a fraction of the price, but it may be the first to actually back up that claim with pure, uncompromising photo-editing power!
And with a one-time fee of $50 USD, it can be much more financially appealing than Photoshop’s $10 USD monthly subscription.
Today, I will be comparing and contrasting the basic functions of each program, focusing on the fundamental tools that you would use day to day.
So come take a look at Affinity Photo from the perspective of a long-time advanced Photoshop user!
The first thing you may notice is that Photoshop’s and Affinity Photo’s interfaces are very similar. That’s great for anyone looking to possibly make a switch from one to the other, like me!
Just like in Photoshop, Affinity Photo allows you to arrange your different modules however you want, with one exception: you can’t move your Tools module in Affinity Photo.
Affinity Photo makes up for it in a big way, however, by letting you customize and arrange the individual tools themselves! Something Photoshop has never allowed you to do, this is a big win for Affinity Photo in my book.
Go to View > Customize Tools to mix and match your own Tools panel. You can even choose how many columns you’d prefer!
This also means you can almost exactly replicate the Photoshop Tool setup in Affinity Photo. I personally have my Photoshop workspace set up in a very specific way, and after 10 years of using Photoshop I am very used to its tool setup, but I was able to mimic my workspace almost exactly in Affinity Photo! That makes the transition much smoother.
I’d like to note that I usually have the top Toolbar in Affinity Photo hidden, which you can do by going to and unchecking View > Show Toolbar. However, I turned it back on for the sake of this article.
Do note that you can also customize the toolbar, which is very handy!
Creating a new document is very similar and equally straightforward in both programs. Both programs open with a New Document prompt, but will also allow you to create a new document by going to File > New.
One of my favorite features of Affinity Photo is how it keeps an image’s original aspect ratio by default when enlarging or shrinking an image using the Move Tool.
When transforming an image in Photoshop, you would select the Move Tool, click on one of the image’s anchor points, hold down Shift, and then drag to either enlarge or shrink the image.
If you don’t hold down Shift then the original ratio of the image will not be preserved, leaving the image stretched or squished, which I find you usually don’t want to happen.
In Affinity Photo, it’s exactly the same, except you hold Shift when you don’t want to preserve the image’s original aspect ratio. It’s a very small but very smart change!
Affinity Photo has these things called „personas”. You can access them by going to File > Personas and then choosing a persona, or alternatively you can change the persona by clicking the different persona buttons in the top-left corner of the Toolbar.
Each persona serves a different function, almost like some of the more in-depth filters in Photoshop. While there are five personas in total, including the default Photo persona, I am going to be focusing on the Liquify persona as Photoshop also has a liquify function that I use very often.
In Photoshop, to access the Liquify feature, you would go to Filter > Liquify to open the Liquify panel, which opens in a new window.
In Affinity Photo, you go to File > Personas > Liquify, or click the second button in the top toolbar, which will enter Affinity Photo’s liquify user interface. You have a lot of the same options and functions as you do in Photoshop.
All of Affinity Photo’s personas activate a new user interface, almost like opening a different program altogether. This makes things a bit more organized and user-friendly; however, Affinity Photo is noticeably slower while in the Liquify persona.
In fact, I do want to note that Affinity Photo is all around slower than Photoshop.
Affinity Photo’s and Photoshop’s Layers panels are almost identical. You have your Opacity and Layer Modes on top and the various layer effects, masks, and a Create New Layer button, or Add New Pixel Layer in Affinity Photo, in the bottom-right of the Layers panel.
You can hide layers in Affinity Photo by hitting the checkmark on the right, similar to hitting the eye icon to the left of layers in Photoshop, and you can arrange the layers by dragging and dropping, just like Photoshop.
You can clip a layer into another layer in Affinity Photo, but it’s a bit trickier than Photoshop. You have to drag and drop a layer into another layer—there’s no button or a key like holding Alt in Photoshop, and it can be very finicky.
You can collapse clipped images for a cleaner-looking Layers panel, though. This means creating fewer groups, which is a nice feature.
One more disadvantage is that when you double-click on layers in Affinity Photo, no Layer Style panel opens like in Photoshop, leading me to believe there is no Blend If function in Affinity Photo, which is something I use often.
One thing Affinity Photo does a bit differently is that every new image brought into a document is automatically a Smart Object. While Photoshop does this if you drag and drop a new image into a document, in Affinity Photo all images are smart objects by default.
Just like in Photoshop, you can Right Click > Rasterize any smart object to rasterize the layer.
Do note that in Affinity Photo, smart object layers and regular rasterized layers look the same. When you rasterize a layer in Affinity Photo, it will crop any part of the image that is not inside the canvas, something Photoshop doesn’t do.
Affinity Photo’s and Photoshop’s layer mask features are virtually the same. You can add a layer mask to any layer by hitting the Add Layer Mask (called Mask Layer in Affinity Photo) button at the bottom of the Layers panel.
Affinity Photo has an exact equivalent to Photoshop’s Lasso Tool called the Free Hand Selection Tool, as well as the various „shape” marquee tools that go by the same names in both programs: Elliptical Marquee Tool, Rectangular Marquee Tool, etc.
From what I can tell, Affinity Photo does not have an exact replica of the Magnetic Lasso Tool. And while it doesn’t technically have the Polygonal Lasso Tool, instead what you do is hold Shift while using the Free Hand Selection Tool to get the same polygonal effect.
While both programs have a Refine Edge, and they are somewhat similar, this is where Affinity Photo differs from Photoshop and lacks a bit for me.
To use the refine edge feature in Photoshop, you’d make your selection and click Select and Mask to open up Photoshop’s Refine Edge interface. The options are very straightforward and include Edge Detection with a Smart Radius option, which I find to be a key feature in extracting hair, fur, and cloth.
In Affinity Photo, the process is similar. You make your selection and click Refine in the selection tool’s toolbar. The refine options are a bit less clear in what they do, and the tool seems to lack any kind of edge detection options. It does, however, have both the Smooth and Feather options, which are two of the main settings you would use.
I was very happy to learn that the Pen Tool in Affinity Photo is almost identical to the Pen Tool in Photoshop! It functions exactly the same, which also means you could use a Photoshop Pen Tool tutorial to learn how to use the tool in either program.
Affinity Photo offers all the same bells and whistles as Photoshop does when it comes to its brushes—including a well-sorted array of default brushes.
Affinity Photo has Opacity, Flow, and Hardness settings, as well as a very impressive Stabilizer option, leading me to believe that digital painters would get along very well in Affinity Photo.
While it comes with a high variety of default brushes, Affinity Photo also lets you import brushes just like Photoshop. One of the main questions I’m sure a lot of people have is: „But can I import my current Photoshop brushes? Do I have to find all new brushes?”
I am happy to say yes, you can use Photoshop brushes in Affinity Photo! That’s a big plus for someone considering transitioning.
I personally use a graphics tablet, and so do many of you out there, so I was curious how well it would play with Affinity Photo. This is where Affinity Photo really surprised me as I found the Brush Tool to be not only smoother but with a higher level of pressure sensitivity!
Hit the Force Pressure button in the Brush Tool’s toolbar to turn on pen pressure.
Affinity Photo has a total of 11 filter types available, located under the Filter menu just like in Photoshop. While this is fewer than Photoshop’s 18 total filter groups, Affinity Photo makes sure to give you the filters you really need.
Affinity Photo offers an impressive array of adjustment layers—a few more than Photoshop offers, in fact. Affinity Photo has all the favorites such as Curves, Gradient Map, and Color Balance, and it also brings some new adjustments to the table, with my favorite being the Split Toning adjustment!
One of the personas mentioned before is the Exporting Persona, which is a whole interface dedicated to exporting your images. However, I prefer to just go to File > Export, just as you would in Photoshop.
You can export an image to Photoshop from Affinity Photo by exporting the Affinity Photo file as a PSD.
All layers will be preserved, with the exception of adjustment layers. Adjustment layers will be exported, but I find they almost never convert well, even if Photoshop has a similar adjustment layer option.
It’s the same with opening a Photoshop file in Affinity Photo, which you can do by dragging and dropping a PSD into Affinity Photo—everything but the adjustment layers will work completely normally.
Affinity Photo proves itself to be just as capable a piece of photo-editing software as Adobe Photoshop, in my opinion! And while Photoshop still beats it in some areas, there are things I believe Affinity Photo actually does better.
Pros:
Cons:
Pros:
Cons:
Ultimately, I recommend Affinity Photo to beginner and upper intermediate Photoshop users who may be looking to save money but don’t want to sacrifice power or who are simply frustrated or overwhelmed with Photoshop’s unintuitive user interface.
I would also recommend Affinity Photo to anyone new to photo editing who has yet to dig their teeth into any single photo-editing software.
I’m personally excited to get to know Affinity Photo even more and continue to discover all it has to offer! You can join me by checking out some of our other Affinity Photo tutorials!