Outdoor Photography is a Great COVID-19 Pastime

Outdoor Photography is a Great COVID-19 Pastime

https://ift.tt/2Z71n62

If you are looking for something fun and challenging to do during the COVID-19 sheltering orders, try your hand at some outdoor photography. Every yard, neighborhood, or residential area has plenty of subjects to model for your camera. Songbirds, small animals like rabbits and squirrels, and even bigger game such as white-tailed deer can be caught on digital images throughout the country.

It doesn’t necessarily take professional camera equipment to catch images of wildlife. Close-ups can be captured around the house with a little time and patience. All you need is a decent digital 35mm camera ideally with some telephoto capabilities. This would be a great way to get started.

Scan your yard by spying out windows to see where birds and animals seem to gather. A great way to congregate birds is to set up a feeder or a couple of them in different places. Proximity to trees, shrubs, or such will give birds an extra sense of safety. It’s the same with small game if there are high grass areas, heavy shrubbery or bushes to hide in. Watch these areas for animal activity.

If you have a back porch, patio, or outdoor yard sitting area, post yourself a good seat for an observation post. Have a set of good binoculars to help you spot lofty birds or animals lurking around the yard. You have to remain quiet and develop a strong sense of patience to collect some good photo shots.

Don’t be disappointed if all of your shots do not turn out every time. Often birds move so fast or flutter around that wing motion or normal movement causes blurring. If your camera has an automatic focus setting, try that to see the quality of shots you get. Once you advance in your skills, you can try manual settings. If you are a total novice to photography get a basic book on the subject or look up related topics on the net. Soon you’ll be capturing some neat shots of all your subjects.

When reviewing your photo results, look at them with a critical eye. If you like the photo, forget the critics. This is a fun hobby for yourself or to share photos with family and friends. Look at the photo backgrounds. Did you catch a neighbor photo-bombing you or some other clutter in the background that is out of place? Next time, be aware of what’s beyond your subject.

These are the skills that you can practice over time. Remember, outdoor photography is meant to be fun during otherwise trying times.

The post Outdoor Photography is a Great COVID-19 Pastime appeared first on AllOutdoor.com.

guns

via All Outdoor https://ift.tt/2yaNKUu

May 13, 2020 at 09:23AM

Eloquent Double Entry Accounting with a focus on IFRS Compliant Reporting

Eloquent Double Entry Accounting with a focus on IFRS Compliant Reporting

https://ift.tt/2zvBLFw

Eloquent Double Entry Accounting with a focus on IFRS Compliant Reporting

Eloquent IFRS is a package by Edward Mungai that provides “double-entry accounting with a focus on International Financial Reporting Standards (IFRS) compliant reporting.”

According to the documentation’s introduction, this package can help you generate compliant reports:

The Eloquent IFRS package gives any Laravel application or Lumen API the ability to generate a comprehensive set of financial reports by providing an embedded double-entry bookkeeping system.

The Accounting objects are created with a consistent and fluent interface, allowing seamless integration with the Business objects of the parent application.

Here’s a high-level example from the readme, which demonstrates some of the models:

use IFRS\Models\Account; use IFRS\models\LineItem; $bankAccount = new Account([ 'name' => "Sales Account", 'account_type' => Account::BANK, ])->save(); // Intermediate save does not record the transaction in the Ledger $cashSale = new CashSale([ 'account_id' => $bankAccount->id, 'date' => Carbon::now(), 'narration' => "Example Cash Sale", ])->save(); // This posts the Transaction to the Ledger $cashSaleLineItem = new LineItem([ 'vat_id' => $outputVat->id, 'account_id' => $revenueAccount->id, 'vat_account_id' => $salesVatAccount->id, 'description' => "Example Cash Sale Line Item", 'quantity' => 1, 'amount' => 100, ])->save(); $cashSale->addLineItem($cashSaleLineItem); $cashSale->post(); 

Here’s an example of an income report (profit and loss):

use IFRS\Reports\IncomeStatement; $incomeStatement = new IncomeStatement( "2020-01-01", // Report start date "2020-12-31", // Report end date )->getSections();// Fetch balances from the ledger and store them internally /** * this function is only for demonstration and * debugging use and should never be called in production */ dd($incomeStatement->toString()); Example Company Income Statement For the Period: Jan 01 2020 to Dec 31 2020 Operating Revenues Operating Revenue 200 (100 cash sales + 100 credit sales) Operating Expenses Operating Expense 100 (cash purchase) --------------- Operations Gross Profit 100 Non Operating Revenues Non Operating Revenue 0 --------------- Total Revenue 100 Non Operating Expenses Direct Expense 0 Overhead Expense 0 Other Expense 0 --------------- Total Expenses 0 --------------- Net Profit 100 =============== 

All of the above examples come from the project readme, and is only a sample of what the package provides. The details of the package (and IFRS reporting) are quite intricate, and you should consult the full documentation.

I find this package unique because it’s created by a “finance guy turned developer.” It’s fantastic to see professionals in other industries turn to Laravel to develop ideas.

You can learn more about this package, get full installation instructions, and view the source code on GitHub at ekmungai/eloquent-ifrs.

Filed in: News

programming

via Laravel News https://ift.tt/14pzU0d

May 13, 2020 at 09:31AM

Automatic Code refactor and error detection with laravel-microscope

Automatic Code refactor and error detection with laravel-microscope

https://ift.tt/362PkbG

Find Bugs Before They Bite

Flatten your entire project’s code by a single artisan command

So, Give your eyes a rest, this will check it for you.

widgetize_header

Built with ❤️ for lazy laravel developers 😉

Latest Version on Packagist Build Status Quality Score Daily Downloads Total Downloads Software License

Key things to know:

  • It is create to be smarter than phpstorm and other IDEs in finding errors.
  • It is created to understand laravel run-time and magic.
  • It does not show you stupid false errors, all the errors are really errors.
  • If you have written a lot of tests for your app, you may not need this.
  • It can refactor your code, by applying early returns automatically.

⬇️ Installation

You can install the package via composer:

composer require imanghafoori/laravel-microscope --dev

💎 Usage

You can run:

🔹 php artisan check:events

🔹 php artisan check:gates

🔹 php artisan check:views

🔹 php artisan check:routes

🔹 php artisan check:psr4

🔹 php artisan check:imports

🔹 php artisan check:stringy_classes

🔹 php artisan check:dd

🔹 php artisan check:early_returns

🔹 php artisan check:compact

🔹 php artisan check:all

📖 What the Commands do?

Lets start with:

php artisan check:early_returns

This will scan all your Psr-4 loaded classes and flattens your functions ans loops by applting the early return rule. For example:

forearch ($products as $product) {  if ($someCond) {  // A lot of code 1  // A lot of code 1  // A lot of code 1  // A lot of code 1  // A lot of code 1  if ($someOtherCond) {  // A lot more code 2  // A lot more code 2  // A lot more code 2  // A lot more code 2   // A lot more code 2  //  } // <--- closes second if  } // <--- closes first if } 

Will be discovered and converted into:

forearch ($products as $product) {  if (! $someCond) {  continue;  }    // A lot of code 1  // A lot of code 1  // A lot of code 1  // A lot of code 1  // A lot of code 1   if (! $someOtherCond) {  continue;  }    // A lot more code 2  // A lot more code 2  // A lot more code 2  // A lot more code 2   // A lot more code 2 } 

The same thing will apply for functions and methods, but with return

if ($var1) {  if ($var2 > 2) {  echo 'Hey Man';  } }  // will be converted into: if ($var1 && $var2 > 2) {  echo 'Hey Man'; } 
  • It also supports the ruby like if():/endif; syntax;
if ($var1):  if ($var2 > 2):  echo 'Hey Man';  endif; endif;

Although this type of refactor is totally safe and is guaranteed to do the same thing as before, but anyway be careful to commit everything before trying this feature, in case of a weird bug or something.


For example consider:

Event::listen(MyEvent::class, '\App\Listeners\MyListener@myMethod');

1 – It checks the \App\Listeners\MyListener class path to be valid.

2 – It checks the myMethod to exist on the MyListener class

3 – It checks the myMethod to have the right type-hint (if any) in its signature, for example:

public function myMethod(OtherEvent $e) // <---- notice type-hint here {  // }

This is a valid but wrong type-hint, and will be reported to you. Very cool, isn’t it ??!

  • Note that it does not matter how you are setting your event listener,

1- in the EventServiceProvider,

2- By Event::listen facade,

3- By Subscriber class… or any other way. The error would be found. 🙂


It checks the validity of all the gates you have defined, making sure that they refer to a valid class and method.

It also checks for the policy definitions to be valid.

Gate::policy(User::class, 'UserPolicy@someMethod'); Gate::define('someAbility', 'UserGate@someMethod');

1 – It checks the User class path to be valid.

2 – It checks the UserPolicy class path to be valid.

3 – It checks the someMethod to exist.


  • It checks for all the psr4 autoloads defined in the composer.json file and goes through all the classes to have the right namespace, according to PSR-4 standard.
  • It automatically corrects namespaces (according to PSR-4 rules)

php artisan check:imports
  • It checks all the imports (use statements) to be valid.
  • It can understand the laravel aliased classes so use Request; would be valid.

  • It checks that your routes refer to valid controller classes and methods.
  • It checks the all the controller methods to have valid type-hints.
  • It scans for route(), redirect()->route(), \Redirect::route() to refer to valid routes.
  • It will report the public methods of controllers, which have no routes pointing to them. In other words dead controllers are detected.

php artisan check:compact
  • In php 7.3 if you “compact” a non-existent variable you will get an error, so this command checks the entire project for wrong compact() calls and reports to you, which parameters should be removed.

  • It scans your code and find the view() and View::make() and reports if they refer to wrong files.
  • It scans your blade files for @include() and @extends() and reports if they refer to wrong files.

Also, it can detect unused variables which are passed into your view from the controller line this: view('hello', [...]); For that you must open up the page in the browser and then visit the log file to see a message like this:

local.INFO: Laravel Microscope: The view file: welcome.index-1 at App\Http\Controllers\HomeController@index has some unused variables passed to it: local.INFO: array ('$var1' , '$var2'); 

Remember some variables are passed into your view from a view composer and not the controller. Those variables are also taken into consideration when detecting unused variables.


and more features will be added soon. 😉

Credits

License

The MIT License (MIT). Please see License File for more information.


🙋 Contributing

If you find an issue, or have a better way to do something, feel free to open an issue , or a pull request. If you use laravel-microscope in your open source project, create a pull request to provide it’s url as a sample application in the README.md file.

❗ Security

If you discover any security related issues, please email imanghafoori1@gmail.com instead of using the issue tracker.

⭐ Your Stars Make Us Do More ⭐

As always if you found this package useful , and you want to encourage us to maintain and work on it. Just press the star button to declare your willing.

Stargazers: https://github.com/imanghafoori1/microscope/stargazers

More from the author:

Laravel HeyMan

💎 It allows us to write expressive code to authorize, validate and authenticate.


Laravel Terminator

💎 A minimal yet powerful package to give you the opportunity to refactor your controllers.


Laravel AnyPass

💎 It allows you to login with any password in the local environment only.


Eloquent Relativity

💎 It allows you to decouple your eloquent models to reach a modular structure


🍌 Reward me a banana 🍌

Send me as much as a banana costs in your region:

  • DogeCoin: DJEZr6GJ4Vx37LGF3zSng711AFZzmJTouN
  • LiteCoin: ltc1q82gnjkend684c5hvprg95fnja0ktjdfrhcu4c4
  • BitCoin: bc1q53dys3jkv0h4vhl88yqhqzyujvk35x8wad7uf9
  • Ripple: rJwrb2v1TR6rAHRWwcYvNZxjDN2bYpYXhZ
  • Etherium: 0xa4898246820bbC8f677A97C2B73e6DBB9510151e

Todo:

  • Detect Bad code
  • Facadize static method calls
  • Detect return keyword in eloquent relations
  • Detect wrong action() calls
  • Enhance blocky code detection
  • Fullly decouple the error logger
  • Detect return abort();
A man will never fail, unless he stops trying. Albert einstein 

programming

via Laravel News Links https://laravel-news.com/links

May 12, 2020 at 09:45PM

Eloquent Double Entry Accounting

Eloquent Double Entry Accounting

https://ift.tt/3dgyUPg

Eloquent IFRS

Build Status Test Coverage Maintainability PHP 7.2 License: MIT

This Package enables any Laravel application to generate International Financial Reporting Standards compatible Financial Statements by providing a fully featured and configurable Double Entry accounting subsystem.

The package supports multiple Entities (Companies), Account Categorization, Transaction assignment, Start of Year Opening Balances and accounting for VAT Transactions. Transactions are also protected against tampering via direct database changes ensuring the integrity of the Ledger.

The motivation for this package can be found in detail on my blog post here

Table of contents

  1. Installation
  2. Configuration
  3. Usage
  4. Getting involved
  5. Contributing
  6. Roadmap
  7. License
  8. References

Installation

Use composer to Install the package into your laravel or lumen application. Laravel IFRS requires PHP version 7.2 and Laravel or Lumen version 5.0 and above.

For production

composer require "ekmungai/eloquent-ifrs" composer install --no-dev

Then run migrations to create the database tables.

For development

Clone this repo, and then run Composer in local repo root to pull in dependencies.

git clone git@github.com/ekmungai/eloquent-ifrs eloquent-ifrs cd eloquent-ifrs composer update

To run the tests:

cd eloquent-ifrs vendor/bin/phpunit

Configuration

The package installs with the default settings as regards the names of Accounts/Transactions Types, Report Titles and Section names as well as Accounts Codes. To adjust these settings use the Laravel artisan publish command to install the ifrs configuration to your application’s config folder where you can edit it.

php artisan vendor:publish

Usage

Full documentation for this package can be found here.

This simple example covers the four scenarios to demonstrate the use of the package. First, a description of a Cash Sale to a customer, then a Credit Sale (Invoice) to a client, then a Cash Purchase for an operations expense and finally a Credit Purchase (Bill) from a Supplier for a non operations purpose (Asset Purchase).

First we’ll setup the Company (Reporting Entity) and required Accounts to record the Transactions. (Assuming that a registered User already exists):

use IFRS\Models\Entity; use IFRS\Models\Currency;  //Entities require a reporting currency $currency = new Currency([  "name" => "Euro",  "currency_code" => "EUR" )->save();  $entity = new Entity([  "name" => "Example Company",  "currency_id" => $currency ])->save(); 

We also need the VAT Rates that apply to the Entity:

use IFRS\Models\Vat;  $outputVat = new Vat([  'name' => "Standard Output Vat",  'code' => "O",  'rate' => 20, ])->save();  $outputVat = new Vat([  'name' => "Standard Input Vat",  'code' => "I",  'rate' => 10, ])->save();  $outputVat = new Vat([  'name' => "Zero Vat",  'code' => "Z",  'rate' => 0, ])->save();

Now we’ll set up some Accounts:

use IFRS\Models\Account;  $bankAccount = new Account([  'name' => "Sales Account",  'account_type' => Account::BANK, ])->save();  $revenueAccount = new Account([  'name' => "Bank Account",  'account_type' => Account::OPERATING_REVENUE, ])->save();  $clientAccount = new Account([  'name' => "Example Client Account",  'account_type' => Account::RECEIVABLE, ])->save();  $supplierAccount = new Account([  'name' => "Example Supplier Account",  'account_type' => Account::PAYABLE, ])->save();  $opexAccount = new Account([  'name' => "Operations Expense Account",  'account_type' => Account::OPERATING_EXPENSE, ])->save();  $assetAccount = new Account([  'name' => "Office Equipment Account",  'account_type' => Account::NON_CURRENT_ASSET, ])->save();  $salesVatAccount = new Account([  'name' => "Sales VAT Account",  'account_type' => Account::CONTROL_ACCOUNT, ])->save();  $purchasesVatAccount = new Account([  'name' => "Input VAT Account",  'account_type' => Account::CONTROL_ACCOUNT, ])->save();

Now that all Accounts are prepared, we can create the first Transaction, a Cash Sale:

use IFRS\Transactions\CashSale;  $cashSale = new CashSale([  'account_id' => $bankAccount->id,  'date' => Carbon::now(),  'narration' => "Example Cash Sale", ])->save(); // Intermediate save does not record the transaction in the Ledger

So far the Transaction has only one side of the double entry, so we create a Line Item for the other side:

use IFRS\models\LineItem;  $cashSaleLineItem = new LineItem([  'vat_id' => $outputVat->id,  'account_id' => $revenueAccount->id,  'vat_account_id' => $salesVatAccount->id,  'description' => "Example Cash Sale Line Item",  'quantity' => 1,  'amount' => 100, ])->save();  $cashSale->addLineItem($cashSaleLineItem); $cashSale->post(); // This posts the Transaction to the Ledger 

The rest of the transactions:

use IFRS\Transactions\ClientInvoice;  $clientInvoice = new ClientInvoice([  'account_id' => $clientAccount->id,  'date' => Carbon::now(),  'narration' => "Example Credit Sale", ])->save();  $clientInvoiceLineItem = new LineItem([  'vat_id' => $outputVat->id,  'account_id' => $revenueAccount->id,  'vat_account_id' => $salesVatAccount->id,  'description' => "Example Credit Sale Line Item",  'quantity' => 2,  'amount' => 50, ])->save();  $clientInvoice->addLineItem($clientInvoiceLineItem);  //Transaction save may be skipped as post() saves the Transaction automatically $clientInvoice->post();  use IFRS\Transactions\CashPurchase;  $cashPurchase = new CashPurchase([  'account_id' => $clientAccount->id,  'date' => Carbon::now(),  'narration' => "Example Cash Purchase", ])->save();  $cashPurchaseLineItem = new LineItem([  'vat_id' => $inputVat->id,  'account_id' => $opexAccount->id,  'vat_account_id' => $purchaseVatAccount->id,  'description' => "Example Cash Purchase Line Item",  'quantity' => 4,  'amount' => 25, ])->save();  $cashPurchase->addLineItem($cashPurchaseLineItem)->post();  use IFRS\Transactions\SupplierBill;  $supplierBill = new SupplierBill([  'account_id' => $supplierAccount->id,  'date' => Carbon::now(),  'narration' => "Example Credit Purchase", ])->save();  $supplierBillLineItem = new LineItem([  'vat_id' => $inputVat->id,  'account_id' => $assetAccount->id,  'vat_account_id' => $purchaseVatAccount->id,  'description' => "Example Credit Purchase Line Item",  'quantity' => 4,  'amount' => 25, ])->save();  $supplierBill->addLineItem($supplierBillLineItem)->post();  use IFRS\Transactions\ClientReceipt;  $clientReceipt = new ClientReceipt([  'account_id' => $clientAccount->id,  'date' => Carbon::now(),  'narration' => "Example Client Payment", ])->save();  $clientReceiptLineItem = new LineItem([  'vat_id' => $zeroVat->id,  'account_id' => $bankAccount->id,  'vat_account_id' => $purchaseVatAccount->id,  'description' => "Part payment for Client Invoice",  'quantity' => 1,  'amount' => 50, ])->save();  $clientReceipt->addLineItem($clientReceiptLineItem)->post();

We can assign the receipt to partially clear the Invoice above:

use IFRS\Models\Assignment;  echo $clientInvoice->clearedAmount(); //0: Currently the Invoice has not been cleared at all echo $clientReceipt->balance(); //50: The Receipt has not been assigned to clear any transaction  $assignment = new Assignment([  'transaction_id' => $clientReceipt->id,  'cleared_id' => $clientInvoice->id,  'cleared_type'=> $clientInvoice->getClearedType(),  'amount' => 50, ])->save();  echo $clientInvoice->clearedAmount(); //50 echo $clientReceipt->balance(); //0: The Receipt has been assigned fully to the Invoice 

We have now some Transactions in the Ledger, so lets generate some reports. First though, Reports require a reporting period:

use IFRS\Models\ReportingPeriod;  $period = new ReportingPeriod([  'period_count' => 1,  'year' => 2020, ])->save(); 

The Income Statement (Profit and Loss):

use IFRS\Reports\IncomeStatement;  $incomeStatement = new IncomeStatement(  "2020-01-01", // Report start date  "2020-12-31", // Report end date )->getSections();// Fetch balances from the ledger and store them internally  /** * this function is only for demonstration and * debugging use and should never be called in production */ dd($incomeStatement->toString());  Example Company Income Statement For the Period: Jan 01 2020 to Dec 31 2020  Operating Revenues  Operating Revenue 200 (100 cash sales + 100 credit sales)  Operating Expenses  Operating Expense 100 (cash purchase)  --------------- Operations Gross Profit 100  Non Operating Revenues  Non Operating Revenue 0  --------------- Total Revenue 100  Non Operating Expenses  Direct Expense 0  Overhead Expense 0  Other Expense 0  --------------- Total Expenses 0  --------------- Net Profit 100  =============== 

The Balance Sheet:

use IFRS\Reports\BalanceSheet;  $balanceSheet = new BalanceSheet(  "2020-12-31" // Report end date )->getSections();  /** * again to emphasize, this function is only for demonstration and * debugging use and should never be called in production */ dd($balanceSheet->toString());  Example Company Balance Sheet As at: Dec 31 2020  Assets  Non Current Asset 120 (asset purchase)  Receivables 70 (100 credit sale + 20 VAT - 50 client receipt)  Bank 50 (120 cash sale - 120 cash purchase + 50 client receipt)  --------------- Total Assets 240  Liabilities  Control Account 20 (VAT: 20 cash sale + 20 credit sale - 10 cash purchase - 10 credit purchase)  Payable 120 (100 credit purchase + 20 VAT)  --------------- Total Liabilities 140   --------------- Net Assets 100  ===============  Equity  Income Statement 100  --------------- Total Equity 100  =============== 

While the Income Statement and Balance Sheet are the ultimate goal for end year (IFRS) reporting, the package also provides intermediate period reports including Account Statement, which shows a chronological listing of all Transactions posted to an account ending with the current balance for the account; and Account Schedule, which is similar to an Account Statement with the difference that rather than list all Transactions that constitute the ending balance the report only shows the outstanding (Uncleared) Transactions.

In the above example:

use IFRS\Reports\AccountStatement; use IFRS\Reports\AccountSchedule;  $statement = new AccountStatement($clientAccount)->getTransactions();  dd($statement->transactions);  array:2[  ["transaction" => ClientInvoice, "debit" => 120, "credit" => 0, "balance" => 120],  ["transaction" => ClientReceipt, "debit" => 0, "credit" => 50, "balance" => 70] ]  $schedule = new AccountSchedule($clientAccount, $currency)->getTransactions();  dd($schedule->transactions);  array:1[  ["transaction" => ClientInvoice, "amount" => 120, "cleared" => 50, "balance" => 70], ] 

Getting Involved

I am acutely aware that as a professionally trained Accountant I may have used some conventions, definitions and styles that while seemingly obvious to me, might not be so clear to another developer. I would therefore welcome and greatly appreciate any feedback on the ease of use of the package so I can make it more useful to as many people as possible.

Contributing

  1. Fork it (https://github.com/ekmungai/eloquent-ifrs/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Write tests for the feature
  4. Commit your changes (git commit -am 'Add some fooBar')
  5. Push to the branch (git push origin feature/fooBar)
  6. Create a new Pull Request

Roadmap

  • Complete Documentation
  • Add Multicurrency support
  • Add Receivables(Debtors)/Payables(Creditors) Aging Balances analysis Report
  • Add Cashflow Statement
  • Add Changes in Equity Statement

License

This software is distributed for free under the MIT License

References

This package is heavily influenced by chippyash/simple-accounts-3 and scottlaurent/accounting.

programming

via Laravel News Links https://ift.tt/2dvygAJ

May 12, 2020 at 09:45PM

Air Force Museum Drone Tour

Air Force Museum Drone Tour

https://ift.tt/2Wq0tjk

Air Force Museum Drone Tour

Link

If you’re going to take a tour of Ohio’s National Museum of the U.S. Air Force, it might as well be from the air, right? Well thanks to NURK FPV, we can take a first-person drone flight through the museum’s awesome collection of aviation marvels without having to leave our homes.

fun

via The Awesomer https://theawesomer.com

May 12, 2020 at 07:15PM

How to Turn Your Handwriting Into a Font

How to Turn Your Handwriting Into a Font

https://ift.tt/2TfFGgL

practice-handwriting

Add a personal touch to your digital projects by turning your handwriting into a custom font. It’s a lot easier than you might think thanks to a web app called Calligraphr. And there are plenty of creative uses for you to explore.

In this article, we’ll show you how to make your handwriting a font with Calligraphr for free. You can add letter variants for a natural style, adjust the alignment and spacing, and even export the end product as a standard font format. And it only takes ten minutes.

What Is Calligraphr

Calligraphr process infographic to turn handwriting into font

Formerly MyScriptFont, Calligraphr is a free web app that lets you scan your handwriting to create a custom font. It’s easy to use and offers loads of features that help you get your font just right.

Export your custom font as TTF or OTF formats to use it with Windows or macOS computers. You might want to use your custom font to add a personal touch to invitations, design calligraphic artwork, or to write a webcomic.

Calligraphr offers the following features to help perfect your font:

  • Choose the exact character sets you want to include in your font, including accented letters, symbols, and numbers.
  • Upload variants for each letter to create a random authenticity to your handwriting.
  • Edit individual characters after uploading to darken the lines, adjust the size, and tweak the alignment.
  • Save fonts in the browser so you can return to keep editing them over multiple sessions.

Calligraphr Pro Subscription

Calligraphr Pro upgrade prices

You can use Calligraphr to create and export a custom handwriting font for free. But a Pro subscription unlocks extra features to help you make your handwriting into the best font possible.

Calligraphr Pro costs $8/month, although you can get a 50 percent discount if you pay for six months at once. With a Pro subscription, Calligraphr lets you work on more than one font at a time, up to a maximum of 12. It also lets you add up to 480 characters to each font.

You can also add more than two variants for each character, up to a maximum of 15. A variant is an alternate version of a particular letter or number. The finished font uses different variants at random to make your font look more natural.

Randomized letter demonstration on Calligraphr website

Another major upgrade that comes with a Pro subscription is the ability to add ligatures to your font. In case you aren’t familiar with common typography terms, a ligature is a line that connects two letters in joined handwriting.

Do I Need Calligraphr Pro to Make a Custom Font?

Calligraphr Pro offers great benefits to font creation, but you can turn your handwriting into a perfectly good font without paying for anything.

The main downside to using Calligraphr for free is that your font is limited to 75 characters. That’s enough space for upper and lower case letters, every number, and common punctuation marks, but not much else.

You’re also limited to two variants per character. However, this still adds enough randomization to your font to make it more natural than most.

Finally, you can’t add ligatures with Calligraphr Free. But if you don’t join your handwriting up anyway, it won’t make a difference.

Ligrature demonstration from Calligraphr website

How to Use Calligraphr to Turn Your Handwriting Into a Font

To get started, head to the Calligraphr website and click the Get Started For Free button to create an account. There’s no need to upgrade to a Pro account unless you want more than two variants or ligatures.

After signing up and logging in, click the Start App button to load the Calligraphr web app. Then follow the steps below to turn your handwriting into a font.

Step 1. Create a Font Template

First you need to create a template for your custom font. This is essentially a grid of boxes with one box for each character you want to include in your font. After creating the template and printing it out you need to handwrite each letter into the boxes. Then scan it back into your computer to create the font.

Calligraphr gives you a huge amount of control over the template, letting you choose exactly which characters you do and don’t want to include in your font. With a free account, you can have up to 75 characters in a single font.

Click the Templates button in the top-left corner to create a new template, then choose the characters you want from the sidebar. We suggest you add Minimal English and Minimal Numbers, which brings you up to 70 characters.

Calligraphr custom font template creation page

Click a character you don’t want to and Delete it from the template. Then add more character sets from the sidebar. If you signed up for a Pro account and want to include ligatures, select it from the Miscellaneous section.

Step 2. Print and Complete Your Template

After adding all the characters you want in your font, click the Download Template button. Choose a file name and format for the template.

Adjust the slider to change the size of the template cells. These are the boxes you need to write your letters in. If you have particularly large or small handwriting, you might want to adjust the size accordingly. You also might want to make the boxes bigger if you plan to create a calligraphic font. Otherwise, leave it as the default.

Calligraphr template PDF

Finally, choose if you want helplines and background characters. We recommend adding helplines to make sure you write each letter in the same place at the same size. However, it might mean you need to erase them manually after scanning your template. We don’t recommend background characters because they make it harder to create a unique style.

When you’re happy, click Download to save your template, then print it out.

Now use a black pen to fill out the template, drawing a single character into each box. A felt tip pen is better than a ballpoint, but either should be fine so long as you make sure each line is clearly drawn.

Completed handwriting font template

Step 3. Upload and Edit Your Handwriten Font

After completing the font template, scan it or take a clear photo, then save that file to your computer. In the Calligraphr web app, click My Fonts followed by Upload Template. Select the picture of your font template, then wait for Calligraphr to process it.

After the processing is complete, Calligraphr shows an overview of each character in your custom font. You can delete characters from this page, but we suggest you see if you can fix mistakes from the edit page rather than deleting anything.

Choose to Add Characters to Your Font to finish the upload.

Calligraphr font import page

Click a character and select Edit Character to make adjustments. You can draw new lines using various brush shapes and sizes or click the Erase button to clean up the scan. Make sure you edit each of your characters for the best custom font.

You should also use the Adjust Baseline/Size menu to ensure each character is the same height and size as all the others. This screen shows your selected character in a row with the rest of the font. Use the arrows to adjust the baseline or size for better consistency.

Baseline and Size adjustments for custom font

Step 4. Build and Export Your Custom Font

After editing each of your characters, click the Back button and choose to Build Font to turn your handwriting into a font.

If you chose to add variants—which you can do by uploading multiple font templates one after another—enable the option to Randomize Characters. That way your font doesn’t use the same variants too often.

Click Build and wait for Calligraphr to finish turning your handwriting into a font. When it’s complete, make sure it looks good in the preview, then download the TTF or OTF file.

Build Font window to create custom handwriting font

Open the font file on your computer and follow the prompts to Install it. After this, it should be available in all your apps. You can also install fonts on your iPhone or iPad.

Get More Free Fonts to Add to Your Collection

Now you know how to make your handwriting a custom font. Use it to personalize everything from wedding invitations to business cards. But don’t feel you need to use it for everything.

Calligraphr lets you create as many custom fonts as you like, so you could repeat the steps above for multiple different handwriting styles. If you don’t have that much creativity in you, take a look at the best free font websites to use other people’s fonts instead.

Read the full article: How to Turn Your Handwriting Into a Font

non critical

via MakeUseOf.com https://ift.tt/1AUAxdL

May 12, 2020 at 04:16PM

iFixit takes a look inside Apple’s Magic Keyboard

iFixit takes a look inside Apple’s Magic Keyboard

https://ift.tt/3dFHx6f

Apple’s Magic Keyboard works so well that it blurs the line between iPads and full-blown Macs. Now, iFixit has taken a closer look at what’s inside its keys as well as its sturdy, elegant trackpad, which we called one of Magic Keyboard’s biggest selling points in our review. Apparently, the trackpad uses a lever system with just one button at the center. That means you’re clicking that one button wherever you press on the trackpad, whether it’s the corners, the edges or the center of the structure.

Unfortunately, iFixit has yet to dismantle the whole keyboard due to social distancing rules — the trackpad was the only part of the device its team could take apart easily. They used X-ray to scan the inside of the keyboard, though, and found scissor (instead of butterfly) switches. It also has large metal plates where your palms typically rest likely to prevent bending and serve as weights to stabilize the device when attached to an iPad.

The Magic Keyboard will set you back $299 (11-inch) or $349 (12.9-inch) and comes as a case that attaches to an iPad Pro. It’s definitely going to cost you, so getting a look at what’s inside could help you decide whether it’s worth it.

geeky,Tech,Database

via Engadget http://www.engadget.com

May 12, 2020 at 12:00AM

Database schema for Laravel Spark

Database schema for Laravel Spark

https://ift.tt/2LhM82c

Visualize Laravel Spark (SaaS boilerplate) database entity relationships as a neat diagram.

programming

via Laravel News Links https://ift.tt/2dvygAJ

May 11, 2020 at 09:09PM

How Cranes Build Themselves

How Cranes Build Themselves

https://ift.tt/2LlLros

How Cranes Build Themselves

Link

Art of Engineering explains how the tall construction cranes used to build skyscrapers are able to increase their own height. The process, known as “climbing” a tower crane requires precision and patience, and can be incredibly dangerous if not done properly.

fun

via The Awesomer https://theawesomer.com

May 11, 2020 at 04:15PM