text:
'Click Interview' with Traversable Wormhole: 'I Love Music That Creates Thought Provocative Images'
Originally from New-York (USA), but living in Berlin (Germany), Adam Mitchell is known in the industrial- and EBM scene for his minimal-electro driven projects Adam-X and ADMX-71. Adam is also running Sonic Groove, which is a visionary dark-techno/body label releasing productions from artists such as Orphx, Rhys Fulber, Fixmer / McCarthy, Monolith, The Panacea, Blush Response ao. He is a renowned DJ, producer and event organizer (Tresor Club). For more than 10 years now he's also releasing music under the Traversable Wormhole moniker. This project is definitely more techno-driven, but always featuring a dark touch on top. After numerous EP's, Traversable Wormhole is now back with its first self-released full length album "Regions Of Time". The album is available on digital platforms and as a double vinyl edition. The work stands for the obscure side of techno music and is for sure worthy of examination.
Q: You set up Traversable Wormhole already a while ago, but you didn't really release new stuff under this moniker for a few years while you were more prolific with your other projects Adam-X & ADMX-71. Where was this break good for and what brought you back to Traversable Wormhole and this new production?
Adam: Traversable Wormhole is a very specific conceptual sound for me. I'm very much into creating soundtracks for space travel themes. For a while I felt I pushed the boundaries as far as I could go with the sound. So I needed to take time and space from the project until I could come up with new ideas. I was also busy with another formerly anonymous side-project titled The Secret Initiative, which ran consecutively at the same time as the Traversable Wormhole releases. This project was a bit more loose feeling and fun for me to make from Traversable Wormhole as it's taking old techno and EBM ideas and transforming them into the present day. I had way less restrictions recording this project and recorded 20 songs over the course of the last decade. So I had my hands full with other projects and lost focus on recording new Traversable Wormhole material.
Q: "Regions Of Time" is the first full length album so what incited you to achieve an album instead of new EP's and what is the album all about?
Adam: I created it more on instinctual feeling then anything else. I made two songs for a single, but then the ideas just kept flowing. I thought why not just go all the way on it as I know the fans of the project would love hearing a full length album way more then a single. It is also way more gratifying as an artist to record an album then a single. I wanted a new challenge and so I took it on.
Q: You always claimed this projects stands for the sci/fi side of techno music, but what do you really understand with this 'quote' and what does it reveal about your personal interest for science fiction, space and wormholes?
Adam: I love astronomy, star gazing and all things related to outer space. I also love science fiction movies & comics and that has a big influence on me too. I love the segment entitled "Jupiter & Beyond The Infinite" in the movie "Space Odyssey : 2001" where Dave is traveling through space and then entering into the rings of Jupiter. Traversable Wormhole songs can easily be my rendition of a soundtrack to that particular scene in the movie. Also I've always had a huge passion for techno that has a sci-fi futurism feeling to it. It invokes thoughts in me of outer worldly subjects and fantasies and I love music that creates thought provocative images.
Q: Tell us a bit more about the writing of this album? What have been the different stages you'd to go through? The equipment you used? And do you notice main differences in the composing process between Traversable Wormhole and your other projects?
Adam: I have been making music solely with Ableton and plug in synth's since 2005. I've done the hardware thing for the 15 years prior to this of releasing music. For me it's not about the tools you use it's how far you can expand your mind to create. I also love total control in every event happening in my songs. I'm a total perfectionist. I go deep into automation with several events often happening at once on a note with effects, filters etc. You cannot do with two hands and hardware. I'm limitless now where as when I worked with hardware I felt more constricted. With that being said when I tell other producers that I don't use any hardware many are quite in shock stating my music sounds like it's done on hardware. What I really love about using Ableton is I usually will create several different song sketches at first. Then I will bounce back and forth between the sketches so as I don't get bored of working on the same song for hours on end. It also helps me keep the flow of the album this way as I'm hearing several different songs in a day. I'm more in tune with the overall feel this way. This process of writing and recording is the same for all the projects I do.
Q: Whatever you want to call it, I experienced "Regions Of Time" as the dark side of techno music! It's filled with icy sound treatments and hostile atmospheres, but it all remains definitely techno- and danceable like. There clearly is a scene in Berlin for this kind of techno music. Tell us a bit more about it? Is it an important scene (clubs, artists, promoters etc)? Why is it that specific for Berlin?
Adam: What you experienced is my actual intention for the listener to feel. I want the listener to feel very heavy low, deep bass, the sonic boom per se in space travel. In technical terminology the sound of Traversable Wormhole is often 10-15 hertz lower in frequency then most other techno music. Most low bass in techno music is recorded in the 50 and higher Hertz range of low frequency. Traversable Wormhole is hitting much lower in the 38-45 Herz range. This creates a huge feeling on a sound system with great sub bass cabinets/speakers.
There is a scene globally for this kind of music. I've played many countries under this project. The Japanese especially love deeper, dark music as such. So I wouldn't say the sound is more enjoyed in Berlin then other places. It's quite universal in techno.
Q: How do you see this scene evolving and how do you see yourself evolving towards your next productions? What brings the future for Traversable Wormhole?
Adam: I've entered into 30 years in 2020 since my first record came out in 1990. One thing I've learned in this time is it's awfully hard to predict what comes next. I really have no idea what the next changes are to come in the music scene itself. Early in the 1990's when I began music styles were changing rapidly year to year. Changes are super slow in modern day times. There really hasn't been any significant changes in techno since the early part of the last decade with exception of some artists speeding the BPM's up plus 10.
As for my own productions it's also hard to say. I try not to think too far in the future because I'm already nearing 50 years old and have lived more then half a life. I prefer to live day to day and let my music take me instinctually to wherever it can without over thinking how I can evolve with it. I will always have an urge to push boundaries as long as I'm creating music. So you can expect more futurism forthcoming in the industrialized techno bubble I live in.
Since you're here …
… we have a small favour to ask. More people are reading Side-Line Magazine than ever but advertising revenues across the media are falling fast. Unlike many news organisations, we haven't put up a paywall – we want to keep our journalism as open as we can - and we refuse to add annoying advertising. So you can see why we need to ask for your help.
Side-Line's independent journalism takes a lot of time, money and hard work to produce. But we do it because we want to push the artists we like and who are equally fighting to survive.
If everyone who reads our reporting, who likes it, helps fund it, our future would be much more secure. For as little as 5 US$, you can support Side-Line Magazine – and it only takes a minute. Thank you.
The donations are safely powered by Paypal.


text:
Insomniac Games Reveal Cancelled Game: 1080 Pinball
Posted by Curtis H on March 29th, 2012 | 0 Comments | Tags: 1080 Pinball
With pages being switched over to Facebook's new Timeline layout Insomniac Games have updated their page with lots of concept art from a cancelled game that dates back to early 2007. The concept art for 1080 Pinball can be seen below.
In the comments section of the photo album on Facebook Insomniac Games makes it clear that there's no intention to return to this project. It's cool that we get to see the artwork though. I quite like the look of what appears to be the main character.

subset: commoncrawl


text:
The Apple iPhone 13 may offer game-changing satellite communications
Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/vlT1hk06IdU/iphone13-satellite-communications
But will we get to use it?
Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/vlT1hk06IdU/iphone13-satellite-communications
But will we get to use it?
Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/QTaJZMjLcLQ/eerie-yet-stunning-3d-compositions-huleeb
Eerie yet Stunning 3D Compositions by Huleeb
Huleeb is a freelance digital artist based in Montreal, Canada creating daily renders in Blender with the use of various image manipulation softwares. Huleeb's work is simply stunning with an eerie mood and impeccable compositions. We selected a few samples for you to get inspired. Huleeb also takes on client work.
For more information make sure to check out Huleeb on:
Original Source: https://smashingmagazine.com/2021/08/public-private-multi-monorepo-php-projects/
To make the development experience faster, I moved all the PHP packages required by my projects to a monorepo. When each package is hosted on its own repo (the "multirepo" approach), it'd need be developed and tested on its own, and then published to Packagist before I could install it on other packages via Composer. With the monorepo, because all packages are hosted together, these can be developed, tested, versioned and released at the same time.
The monorepo hosting my PHP packages is public, accessible to anyone on GitHub. Git repos cannot grant different access to different assets, it's all either public or private. As I plan to release a PRO WordPress plugin, I want its packages to be kept private, meaning they can't be added to the public monorepo.
The solution I found is to use a "multi-monorepo" approach, comprising two monorepos: one public and one private, with the private monorepo embedding the public one as a Git submodule, allowing it to access its files. The public monorepo can be considered the "upstream", and the private monorepo the "downstream".
As my kept iterating on my code, the repo set-up I needed to use at each stage of my project also needed to be upgraded. Hence, I didn't arrive at the multi-monorepo approach on day 1, but it was a process that spanned several years and took its fair amount of effort, going from a single repo, to multiple repos, to the monorepo, to finally the multi-monorepo.
In this article I will describe how I set-up my multi-monorepo using the Monorepo builder, which works for PHP projects based on Composer.
Reusing Code In The Multi-Monorepo
The public monorepo leoloso/PoP is where I keep all my PHP projects.
This monorepo contains workflow generate_plugins.yml, which generates multiple WordPress plugins for distribution when creating a new release on GitHub:
The workflow configuration is not hard-coded within the YAML but injected via PHP code:
– id: output_data
run: |
echo "::set-output name=plugin_config_entries::$(vendor/bin/monorepo-builder plugin-config-entries-json)"
And the configuration is provided via a custom PHP class:
class PluginDataSource
public function getPluginConfigEntries(): array
return [
// GraphQL API for WordPress
'path' => 'layers/GraphQLAPIForWP/plugins/graphql-api-for-wp',
'zip_file' => 'graphql-api.zip',
'main_file' => 'graphql-api.php',
'dist_repo_organization' => 'GraphQLAPI',
'dist_repo_name' => 'graphql-api-for-wp-dist',
// GraphQL API – Extension Demo
'path' => 'layers/GraphQLAPIForWP/plugins/extension-demo',
'zip_file' => 'graphql-api-extension-demo.zip',
'main_file' => 'graphql-api-extension-demo.php',
'dist_repo_organization' => 'GraphQLAPI',
'dist_repo_name' => 'extension-demo-dist',
Generating multiple WordPress plugins all together, and configuring the workflow via PHP, has reduced the amount of time needed managing the project. The workflow currently handles two plugins (the GraphQL API and its extension demo), but it could handle 200 without additional effort on my side.
It is this set-up that I want to reuse for my private monorepo leoloso/GraphQLAPI-PRO, so that the PRO plugins can also be generated without effort.
The code to reuse will comprise:
The GitHub Actions workflows to generate the WordPress plugins (including scoping, downgrading from PHP 8.0 to 7.1 and uploading to the releases page).
The custom PHP services to configure the workflows.
The private monorepo can then generate the PRO WordPress plugins, simply by triggering the workflows from the public monorepo, and overriding their configuration in PHP.
Linking Monorepos Via Git Submodules
To embed the public repo within the private one we use Git submodules:
git submodule add <public repo URL>
I embedded the public repo under subfolder submodules of the private monorepo, allowing me to add more upstream monorepos in the future if needed. In GitHub, the folder displays the submodule's specific commit, and clicking on it will take me to that commit on leoloso/PoP:
Since it contains submodules, to clone the private repo we must provide the –recursive option:
git clone –recursive <private repo URL>
Reusing The GitHub Actions Workflows
GitHub Actions only loads workflows from under .github/workflows. Because the public workflows in the downstream monorepo are are under submodules/PoP/.github/workflows, these must be duplicated into the expected location.
In order to keep the upstream workflows as the single source of truth, we can limit ourselves to copying the files to downstream under .github/workflows, but never edit them there. If there is any change to be done, it must be done in the upstream monorepo, and then copied over.
As a side note, notice how this means that the multi-monorepo leaks: the upstream monorepo is not fully autonomous, and will need to be adapted to suit the downstream monorepo.
In my first iteration to copy the workflows, I created a simple Composer script:
"scripts": {
"copy-workflows": [
"php -r "copy('submodules/PoP/.github/workflows/generate_plugins.yml', '.github/workflows/generate_plugins.yml');"",
"php -r "copy('submodules/PoP/.github/workflows/split_monorepo.yaml', '.github/workflows/split_monorepo.yaml');""
Then, after editing the workflows in the upstream monorepo, I would copy them to downstream by executing:
composer copy-workflows
But then I realized that just copying the workflows is not enough: they must also be modified in the process. This is so because checking out the downstream monorepo requires option –recurse-submodules, as to also checkout the submodules.
In GitHub Actions, the checkout for downstream is done like this:
– uses: actions/checkout@v2
submodules: recursive
So checking out the downstream repo needs input submodules: recursive, but the upstream one does not, and they both use the same source file.
The solution I found is to provide the value for input submodules via an environment variable CHECKOUT_SUBMODULES, which is by default empty for the upstream repo:
– uses: actions/checkout@v2
submodules: ${{ env.CHECKOUT_SUBMODULES }}
Then, when copying the workflows from upstream to downstream, the value of CHECKOUT_SUBMODULES is replaced with "recursive":
CHECKOUT_SUBMODULES: "recursive"
When modifying the workflow, it's a good idea to use a regex, so that it works for different formats in the source file (such as CHECKOUT_SUBMODULES: "" or CHECKOUT_SUBMODULES:" or CHECKOUT_SUBMODULES:) as to not create bugs from this kind of assumed-to-be-harmless changes.
Then, the copy-workflows Composer script seen above is not good enough to handle this complexity.
In my next iteration, I created a PHP command CopyUpstreamMonorepoFilesCommand, to be executed via the Monorepo builder:
vendor/bin/monorepo-builder copy-upstream-monorepo-files
This command uses a custom service FileCopierSystem to copy all files from a source folder to the indicated destination, while optionally replacing their contents:
namespace PoPGraphQLAPIPROExtensionsSymplifyMonorepoBuilderSmartFile;
use NetteUtilsStrings;
use SymplifySmartFileSystemFinderSmartFinder;
use SymplifySmartFileSystemSmartFileSystem;
final class FileCopierSystem
public function __construct(
private SmartFileSystem $smartFileSystem,
private SmartFinder $smartFinder,
) {
* @param array $patternReplacements a regex pattern to search, and its replacement
public function copyFilesFromFolder(
string $fromFolder,
string $toFolder,
array $patternReplacements = []
): void {
$smartFileInfos = $this->smartFinder->find([$fromFolder], '*');
foreach ($smartFileInfos as $smartFileInfo) {
$fromFile = $smartFileInfo->getRealPath();
$fileContent = $this->smartFileSystem->readFile($fromFile);
foreach ($patternReplacements as $pattern => $replacement) {
$fileContent = Strings::replace($fileContent, $pattern, $replacement);
$toFile = $toFolder . substr($fromFile, strlen($fromFolder));
$this->smartFileSystem->dumpFile($toFile, $fileContent);
When invoking this method to copy all workflows downstream, I also replace the value of CHECKOUT_SUBMODULES:
* Copy all workflows to `.github/`, and convert:
* into:
* `CHECKOUT_SUBMODULES: "recursive"`
$regexReplacements = [
'#CHECKOUT_SUBMODULES:(s+".*")?#' => 'CHECKOUT_SUBMODULES: "recursive"',
(new FileCopierSystem())->copyFilesFromFolder(
Workflow generate_plugins.yml needs an additional replacement. When the WordPress plugin is generated, its code is downgraded from PHP 8.0 to 7.1 by invoking script ci/downgrade/downgrade_code.sh:
– name: Downgrade code for production (to PHP 7.1)
run: ci/downgrade/downgrade_code.sh "${{ matrix.pluginConfig.rector_downgrade_config }}" "" "${{ matrix.pluginConfig.path }}" "${{ matrix.pluginConfig.additional_rector_configs }}"
In the downstream monorepo, this file will be located under submodules/PoP/ci/downgrade/downgrade_code.sh. Then, we have the downstream workflow point to the right path with this replacement:
$regexReplacements = [
// …
'#(ci/downgrade/downgrade_code.sh)#' => 'submodules/PoP/$1',
Configuring Packages In Monorepo Builder
File monorepo-builder.php — placed at the root of the monorepo — holds the configuration for the Monorepo builder. In it we must indicate where the packages (and plugins, clients, or anything else) are located:
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
use SymplifyMonorepoBuilderValueObjectOption;
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::PACKAGE_DIRECTORIES, [
__DIR__ . '/packages',
__DIR__ . '/plugins',
The private monorepo must have access to all code: its own packages, plus those from the public monorepo. Then, it must define all packages from both monorepos in the config file. The ones from the public monorepo are located under "/submodules/PoP":
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::PACKAGE_DIRECTORIES, [
// public code
__DIR__ . '/submodules/PoP/packages',
__DIR__ . '/submodules/PoP/plugins',
// private code
__DIR__ . '/packages',
__DIR__ . '/plugins',
__DIR__ . '/clients',
As it can be seen, the configuration for upstream and downstream are pretty much the same, with the difference that the downstream one will:
Change the path to the public packages.
Add the private packages.
Then, it makes sense to rewrite the configuration using object-oriented programming, so that we make code DRY (don't repeat yourself) by having a PHP class in the public repo be extended in the private repo.
Recreating The Configuration Via OOP
Let's refactor the configuration. In the public repo, file monorepo-builder.php will simply reference a new class ContainerConfigurationService where all action will happen:
use PoPPoPConfigSymplifyMonorepoBuilderConfiguratorsContainerConfigurationService;
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurationService = new ContainerConfigurationService(
The __DIR__ param points to the root of the monorepo. It will be needed to obtain the full path to the package directories.
Class ContainerConfigurationService is now in charge of producing the configuration:
namespace PoPPoPConfigSymplifyMonorepoBuilderConfigurators;
use PoPPoPConfigSymplifyMonorepoBuilderDataSourcesPackageOrganizationDataSource;
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
use SymplifyMonorepoBuilderValueObjectOption;
class ContainerConfigurationService
public function __construct(
protected ContainerConfigurator $containerConfigurator,
protected string $rootDirectory,
) {
public function configureContainer(): void
$parameters = $this->containerConfigurator->parameters();
if ($packageOrganizationConfig = $this->getPackageOrganizationDataSource($this->rootDirectory)) {
protected function getPackageOrganizationDataSource(): ?PackageOrganizationDataSource
return new PackageOrganizationDataSource($this->rootDirectory);
The configuration can be split across several classes. In this case, ContainerConfigurationService retrieves the package configuration through class PackageOrganizationDataSource, which has this implementation:
namespace PoPPoPConfigSymplifyMonorepoBuilderDataSources;
class PackageOrganizationDataSource
public function __construct(protected string $rootDir)
public function getPackageDirectories(): array
return array_map(
fn (string $packagePath) => $this->rootDir . '/' . $packagePath,
public function getRelativePackagePaths(): array
return [
Overriding The Configuration In The Downstream Monorepo
Now that the configuration in the public monorepo is setup via OOP, we can extend it to suit the needs of the private monorepo.
In order to allow the private monorepo to autoload the PHP code from the public monorepo, we must first configure the downstream composer.json to reference the source code from the upstream, which is under path submodules/PoP/src:
"autoload": {
"psr-4": {
"PoP\GraphQLAPIPRO\": "src",
"PoP\PoP\": "submodules/PoP/src"
Below is file monorepo-builder.php for the private monorepo. Notice that the referenced class ContainerConfigurationService in the upstream repo belongs to the PoPPoP namespace, but now it switched to the PoPGraphQLAPIPRO namespace. This class must receive the additional input $upstreamRelativeRootPath (with value "submodules/PoP") as to recreate the full path to the public packages:
use PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderConfiguratorsContainerConfigurationService;
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurationService = new ContainerConfigurationService(
The downstream class ContainerConfigurationService overrides which PackageOrganizationDataSource class is used in the configuration:
namespace PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderConfigurators;
use PoPPoPConfigSymplifyMonorepoBuilderConfiguratorsContainerConfigurationService as UpstreamContainerConfigurationService;
use PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderDataSourcesPackageOrganizationDataSource;
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
class ContainerConfigurationService extends UpstreamContainerConfigurationService
public function __construct(
ContainerConfigurator $containerConfigurator,
string $rootDirectory,
protected string $upstreamRelativeRootPath
) {
protected function getPackageOrganizationDataSource(): ?PackageOrganizationDataSource
return new PackageOrganizationDataSource(
Finally, downstream class PackageOrganizationDataSource contains the full path to both public and private packages:
namespace PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderDataSources;
use PoPPoPConfigSymplifyMonorepoBuilderDataSourcesPackageOrganizationDataSource as UpstreamPackageOrganizationDataSource;
class PackageOrganizationDataSource extends UpstreamPackageOrganizationDataSource
public function __construct(
string $rootDir,
protected string $upstreamRelativeRootPath
) {
public function getRelativePackagePaths(): array
return array_merge(
// Public packages – Prepend them with "submodules/PoP/"
fn ($upstreamPackagePath) => $this->upstreamRelativeRootPath . '/' . $upstreamPackagePath,
// Private packages
Injecting The Configuration From PHP Into GitHub Actions
Monorepo builder offers command packages-json, which we can use to inject the package paths into the GitHub Actions workflow:
– id: output_data
name: Calculate matrix for packages
run: |
echo "::set-output name=matrix::$(vendor/bin/monorepo-builder packages-json)"
matrix: ${{ steps.output_data.outputs.matrix }}
This command produces a stringified JSON. In the workflow it must be converted to a JSON object via fromJson:
needs: provide_data
package: ${{ fromJson(needs.provide_data.outputs.matrix) }}
Unfortunately, command packages-json outputs the package names but not their paths, which works when all packages are under the same folder (such as packages/). It doesn't work in our case, since public and private packages are located in different folders.
Fortunately, the Monorepo builder can be extended with custom PHP services. So I created a custom command package-entries-json (via class PackageEntriesJsonCommand) which does output the path to the package.
The workflow was then updated with the new command:
run: |
echo "::set-output name=matrix::$(vendor/bin/monorepo-builder package-entries-json)"
Executed on the public monorepo, it produces the following packages (among many others):
"name": "graphql-api-for-wp",
"path": "layers/GraphQLAPIForWP/plugins/graphql-api-for-wp"
"name": "extension-demo",
"path": "layers/GraphQLAPIForWP/plugins/extension-demo"
"name": "access-control",
"path": "layers/Engine/packages/access-control"
"name": "api",
"path": "layers/API/packages/api"
"name": "api-clients",
"path": "layers/API/packages/api-clients"
Executed on the private monorepo, it produces the following entries (among many others):
"name": "graphql-api-for-wp",
"path": "submodules/PoP/layers/GraphQLAPIForWP/plugins/graphql-api-for-wp"
"name": "extension-demo",
"path": "submodules/PoP/layers/GraphQLAPIForWP/plugins/extension-demo"
"name": "access-control",
"path": "submodules/PoP/layers/Engine/packages/access-control"
"name": "api",
"path": "submodules/PoP/layers/API/packages/api"
"name": "api-clients",
"path": "submodules/PoP/layers/API/packages/api-clients"
"name": "graphql-api-pro",
"path": "layers/GraphQLAPIForWP/plugins/graphql-api-pro"
"name": "convert-case-directives",
"path": "layers/Schema/packages/convert-case-directives"
"name": "export-directive",
"path": "layers/GraphQLByPoP/packages/export-directive"
As it can be appreciated, it works well: the configuration for the downstream monorepo contains both public and private packages, and the paths to the public ones were prepended with "submodules/PoP".
Skipping Public Packages In The Downstream Monorepo
So far, the downstream monorepo has included both public and private packages in its configuration. However, not every command needs to be executed on the public packages.
Take static analysis, for instance. The public monorepo already executes PHPStan on all public packages via workflow phpstan.yml, as shown in this run. If the downstream monorepo runs once again PHPStan on the public packages, it is a waste of computing time. Then, the phpstan.yml workflow needs to run on the private packages only.
That means that depending on the command to execute in the downstream repo, we may want to either include both public and private packages, or only private ones.
To add public packages or not on the downstream configuration, we adapt downstream class PackageOrganizationDataSource to check this condition via input $includeUpstreamPackages:
namespace PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderDataSources;
use PoPPoPConfigSymplifyMonorepoBuilderDataSourcesPackageOrganizationDataSource as UpstreamPackageOrganizationDataSource;
class PackageOrganizationDataSource extends UpstreamPackageOrganizationDataSource
public function __construct(
string $rootDir,
protected string $upstreamRelativeRootPath,
protected bool $includeUpstreamPackages
) {
public function getRelativePackagePaths(): array
return array_merge(
// Add the public packages?
$this->includeUpstreamPackages ?
// Public packages – Prepend them with "submodules/PoP/"
fn ($upstreamPackagePath) => $this->upstreamRelativeRootPath . '/' . $upstreamPackagePath,
) : [],
// Private packages
Next, we need to provide value $includeUpstreamPackages as either true or false depending on the command to execute.
We can do this by replacing config file monorepo-builder.php with two other config files: monorepo-builder-with-upstream-packages.php (which passes $includeUpstreamPackages => true) and monorepo-builder-without-upstream-packages.php (which passes $includeUpstreamPackages => false):
// File monorepo-builder-without-upstream-packages.php
use PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderConfiguratorsContainerConfigurationService;
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurationService = new ContainerConfigurationService(
false, // This is $includeUpstreamPackages
We then update ContainerConfigurationService to receive parameter $includeUpstreamPackages and pass it along to PackageOrganizationDataSource:
namespace PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderConfigurators;
use PoPPoPConfigSymplifyMonorepoBuilderConfiguratorsContainerConfigurationService as UpstreamContainerConfigurationService;
use PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderDataSourcesPackageOrganizationDataSource;
use SymfonyComponentDependencyInjectionLoaderConfiguratorContainerConfigurator;
class ContainerConfigurationService extends UpstreamContainerConfigurationService
public function __construct(
ContainerConfigurator $containerConfigurator,
string $rootDirectory,
protected string $upstreamRelativeRootPath,
protected bool $includeUpstreamPackages,
) {
protected function getPackageOrganizationDataSource(): ?PackageOrganizationDataSource
return new PackageOrganizationDataSource(
Next, we should invoke the monorepo-builder with either config file, by providing the –config option:
– id: output_data
name: Calculate matrix for packages
run: |
echo "::set-output name=matrix::$(vendor/bin/monorepo-builder package-entries-json –config=monorepo-builder-without-upstream-packages.php)"
However, as we saw earlier on, we want to keep the GitHub Actions workflows in the upstream monorepo as the single source of truth, and they clearly do not need these changes.
The solution I found to this issue is to provide a –config option in the upstream repo always, with each command getting its own config file, such as the validate command receiving the validate.php config file:
– name: Run validation
run: vendor/bin/monorepo-builder validate –config=config/monorepo-builder/validate.php
Now, there are no config files in the upstream monorepo, since it doesn't need them. But it will not break, because the Monorepo builder checks if the config file exists and, if it does not, it loads the default config file instead. So we will either override the config, or nothing happens.
The downstream repo does provide the config files for each command, specifying if to add the upstream packages or not:
Btw, as a side note, this is another example of how the multi-monorepo leaks.
// File config/monorepo-builder/validate.php
return require_once __DIR__ . '/monorepo-builder-with-upstream-packages.php';
Overriding The Configuration
We are almost done. By now the downstream monorepo can override the configuration from the upstream monorepo. So all that's left to do is to provide the new configuration.
In class PluginDataSource I override the configuration of which WordPress plugins must be generated, providing the PRO ones instead:
namespace PoPGraphQLAPIPROConfigSymplifyMonorepoBuilderDataSources;
use PoPPoPConfigSymplifyMonorepoBuilderDataSourcesPluginDataSource as UpstreamPluginDataSource;
class PluginDataSource extends UpstreamPluginDataSource
public function getPluginConfigEntries(): array
return [
// GraphQL API PRO
'path' => 'layers/GraphQLAPIForWP/plugins/graphql-api-pro',
'zip_file' => 'graphql-api-pro.zip',
'main_file' => 'graphql-api-pro.php',
'dist_repo_organization' => 'GraphQLAPI-PRO',
'dist_repo_name' => 'graphql-api-pro-dist',
// GraphQL API Extensions
// Google Translate
'path' => 'layers/GraphQLAPIForWP/plugins/google-translate',
'zip_file' => 'graphql-api-google-translate.zip',
'main_file' => 'graphql-api-google-translate.php',
'dist_repo_organization' => 'GraphQLAPI-PRO',
'dist_repo_name' => 'graphql-api-google-translate-dist',
// Events Manager
'path' => 'layers/GraphQLAPIForWP/plugins/events-manager',
'zip_file' => 'graphql-api-events-manager.zip',
'main_file' => 'graphql-api-events-manager.php',
'dist_repo_organization' => 'GraphQLAPI-PRO',
'dist_repo_name' => 'graphql-api-events-manager-dist',
Creating a new release on GitHub will trigger the generate_plugins.yml workflow and generate the PRO plugins on my private monorepo:
Tadaaaaaaaa! ?
As always, there is no "best" solution, only solutions that may work better depending on the context. The multi-monorepo approach is not suitable to every kind of project or team. I believe the biggest beneficiaries are plugin creators who release public plugins to be upgraded to their PRO versions, and agencies customizing plugins for their clients.
In my case, I'm quite happy with this approach. It takes a bit of time and effort to get right, but it's a one-off investment. Once the set-up is over, I can just focus on building my PRO plugins, and the time savings concerning project management can be huge.
Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/gdp4T-XCJHo/mazda-wankel-logo
What do you see?
Original Source: https://www.webdesignerdepot.com/2021/08/20-best-new-sites-august-2021/
Often, when designing a website or branding, it is easy to get wrapped up in the details–typography, graphics, color, the grid–and lose the bigger picture. Of course, these things are vitally important, but they are building blocks that go together to form a greater whole.
A good website creates an impression; it tells a story. And all the various elements involved, from copy to hero image to type choices, combine to create that story. Telling a story can mean taking a user through a linear narrative of how a company or a product came about, using a narrative to make a point, or simply creating an environment or experience that shows the user what a brand is all about.
We have selected examples of different kinds of storytelling for this month's collection–we've even included an actual story. Enjoy!
Black Dog
Black Dog is a rather beautiful picture book project showcasing the developer's WebGL skills.
Right to Breathe
Right to Breathe highlights the dangers of passive smoking in a way that is engaging and intriguing.
Creative agency Superglow focuses on clients in the music industry, and their particular aesthetic is clearly demonstrated in their portfolio site.
Instabase is an enterprise productivity platform for complex data. Not the most glamorous product to sell, but this site does a good job of engaging the user through good layout and colorful graphics.
Bake Inc.
Bake Inc.'s corporate site makes good use of diagonals to break up content and to provide a sense of energy to the flow. Plus it features some fairly mouth-watering photographs.
Julia Johnson
This portfolio site for photographer, director, and creative director Julia Johnson, is simple but with very nice details, such as the color backgrounds for image loading.
Pitchfork Music Festival
While yellow text on a multi-color background doesn't sound like a great idea, it works on this site for Pitchfork Music Festival.
Little Yawn Collective
Some sweet illustrations and a soothing color scheme set the mood for Little Yawn Collective, which offers natural sleep solutions for children.
Production company Pine takes a bold approach, showing the work with very little text beyond contact information.
Bloomers describes itself as a knowledge consultancy offering branding and strategy. To illustrate its philosophy of connecting past and present, it has gone for Victoriana.
Fox Computers
With its slightly muted palette and a very businesslike feel, this site for web agency Fox Computers gives the impression of competent and safe, without being boring.
Forest Gum
Forest Gum makes natural chewing gum — from tree sap instead of plastic. There are lots of greens and bubblegum pink here and a bold, irregular display type for a modern, young feel.
Although Felt online — a collaborative mapping tool – is currently in private beta, this promotional site does a good job of creating interest while doubling as a recruitment notice/job advert.
Help Dad
Help Dad is a micro-site from Oatly, aimed at UK customers. In terms of visual design, it adheres to the same style as all of Oatly's sites. However, what stands out here is the quality of the content, tailored for the UK market.
Epicurrence, the 4-day not-conference for creatives, is back for 2021, and this time it's at Outer Banks, NC. The site keeps the content simple and to the point, livened up by illustration.
With some great photography and a soft color palette, this site for Marram boutique hotel manages to create an impression of soft, almost golden, light and calm.
Re-Forme makes recyclable and biodegradable food packaging. The site is in a style used a lot by companies whose focus is sustainability – simple illustration, strong colors, color transitions, and large type. There's a nice little arrow detail in their logo.
Miti Navi
You could be forgiven for thinking Miti Navi has been included because we want one of their sailing boats to "test." After seeing how they are presented here, who wouldn't?
Under Armour
Sportswear brand Under Armour has just updated its website. Visually the difference isn't startling, but the usability and navigation have been improved.
The Longest Road Out
The Longest Road Out site promotes a travel map and journal based on its creators' own road trip around Britain and Ireland (plus the outlying islands). The site is charming.
p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}
The post 20 Best New Sites, August 2021 first appeared on Webdesigner Depot.
Original Source: http://feedproxy.google.com/~r/1stwebdesigner/~3/cjSQ86iDx3Q/
Original Source: https://smashingmagazine.com/2021/08/automate-documentation-workflow-for-developers/
To get the most out of this tutorial, you should be familiar with: Git, GitHub and Linux and the command line.
Why Should You Care About High-Quality Documentation?
Many teams struggle with writing documentation. When you go to check a framework, the documentation will often be out of date or unclear. This can lead to internal frustration when a team member tries to add a feature, but they don't understand how the current feature works because of poor documentation. This can lead to unproductive hours on the job.
Poor documentation also compromises a good customer experience. According to Jeff Lawson, author of Ask Your Developer and founder of Twilio, if you are selling an API as a product, documentation is the ultimate advertisement for technical stakeholders. IBM did a study on the importance of documentation, and 90% of respondents admitted that they made their purchasing decisions based on the quality of a product's documentation.
Writing good documentation is important for the developer and customer experiences.
If Documentation Is So Important, Then Why Do Engineering Teams Deprioritize It?
Writing documentation can break developers out of the "flow". Documentation often lives outside of the main code base, and it is cumbersome to find and update. Putting it in an Excel spreadsheet or a proprietary CMS is not uncommon.
Automating documentation and improving documentation workflow fixes this.
Automating Documentation From a High Level
What does automating documentation mean? It means adopting common software development practices. When you automate documentation, you are:
writing your documentation in Markdown;
using a continuous integration and continuous deployment (CI/CD) pipeline to run tasks such as correcting errors and deploying updates (in this tutorial, we are going to highlight GitHub Actions);
implementing tools like Vale to enforce a style guide and to correct common grammatical mistakes.
The Style Guides
Before you use tools such as Vale and GitHub Actions to automate the style guide, let's take a moment to define what exactly is a style guide.
You know that feeling when you are writing documentation and something seems a little off? Your explanations don't fit the rest of the documentation, but you can't quite describe why they're wrong. The writing explains the concept, but it doesn't seem to fit.
When you get this feeling, your voice and tone might be off. Refining the voice and tone is a way to make writing sound cohesive even if you are developing documentation that has been edited by the QA, engineering, and product teams. Below is an example style guide from the city bus application TAPP, taken from the book Strategic Writing for UX by Torrey Podmajersky.
TAPP is a transit application (for buses and trains). The header of the table announces TAPP's values as a company, being efficient, trustworthy, and accessible. The left side of the table lists the different parts covered by the style guide: concepts, vocabulary, verbosity, grammar, and punctuation.
Together, these make a style guide. The header introduces the values, and the left side of the table shows the different components that you would find in any written material: vocabulary, grammar, and punctuation. The beauty of this style guide is that engineers and copywriters will clearly know what capitalization to use and which punctuation to use in order to promote Tapp's brand identity.
Technical Writing Style Guide
Not all style guides come in tables. Microsoft has a whole website that serves as a comprehensive guide, covering everything from acronyms to bias-free communication to chatbots. Microsoft of course isn't the only company that has a style guide. Google has one, too.
The Trouble With Style Guides
Style guides are a great starting point for companies that are serious about documentation. They solve a lot of the confusion that developers might have about how exactly to write about a major feature that they are pushing out.
The problem with style guides is that they add friction to the writing process. Many writers, including me, don't bother to stop writing and look at the style guide every time they have a question. Sometimes, a style guide is cumbersome and too difficult to reference — for instance, the Microsoft Style Guide is over a thousand pages long!
Linters and CI/CD for Documentation
If you are a programmer, then you are probably familiar with linters. Linters are an ideal way to enforce coding standards on your team. The same is true with documentation. When you create a linter, you are setting a benchmark of quality for your documentation. In this tutorial, we are going to use the Vale linter.
Using some sort of documentation automation alongside a linter is common. When we say automation in this context, we're referring to the continuous integration and continuous deployment (CI/CD) workflow. CI automates the building and testing of documentation. CD automates the release of code.
You can use many different types of apps to implement a CI/CD workflow. In this tutorial, we are going to use GitHub Actions to run our documentation linter. GitHub Actions run CI directly in a GitHub repository, so there is no need to use a third-party application, such as CircleCI or Travis.
Finally, GitHub Actions are event-driven, which means they are triggered when something happens, such as when someone writes a pull request or an issue. In our example, a GitHub action will occur when someone pushes changes to their main branch.
GitHub Actions
First, create a GitHub repository. Then, locally, create a folder and cd into it.
mkdir automated-docs
cd automated-docs
Once you are in the folder, initialize the directory for Git.
git init
Once you have initialized the repository, proceed to create a workflow directory to your folder.
mkdir .github/ && cd .github/ && mkdir workflows/ && cd workflows/
Workflows are where we will store all of our GitHub actions. Once you've created a workflows folder, make a new workflow. We are going to name this workflow vale.yml.
touch vale.yml
Vale.yml is a YAML file. In this workflow file, we will include actions and jobs.
Now, open vale.yml in your favorite text editor.
nano vale.yml
Copy and paste the following into vale.yml, and let's go over the context and syntax.
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
# Triggers the workflow on push or pull request events but only for the main branch
branches: [ main ]
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
# This workflow contains a single job called "build"
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
– uses: actions/checkout@v2
# Runs a single command using the runners shell
– name: Run a one-line script
run: echo Hello, world!
# Runs a set of commands using the runners shell
– name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
This is the name, or what we are calling our workflow. It is a string.
This controls the workflow and the triggers.
This is where we set up and control our actions. We select the environment where our actions will run — it is usually a good bet to go with Ubuntu. And this is where we will add our actions.
GitHub has a guide on all of the other workflow syntax and variables, in case you're curious.
In this section, we have:
learned what GitHub actions are,
created our first GitHub workflow,
identified the most important parts of a GitHub workflow YAML file.
Next, we are going to customize our GitHub workflow to use Vale.
Set Up Vale in GitHub Actions File
Once we've copied the base workflow file, it is time to customize it, so that we can start using Vale actions. The first thing to do is change the name of the YAML file to Docs-Linting.
# This is a basic workflow to help you get started with Actions.
name: Docs-Linting
Next, we want to run the Vale test once someone has pushed their changes to the main branch on GitHub. We don't want the test to run when someone creates a pull request, so we'll delete that part of the YAML file.
# Triggers the workflow on push or pull request events but only for the main branch
branches: [ main ]
The jobs section is the main part of the workflow file, and it is responsible for running the GitHub actions.
runs-on: ubuntu-latest
– name: Checkout
uses: actions/checkout@master
These actions are going to run on the latest version of Ubuntu. The Checkout action checks out the repository in order for the GitHub workflow to access it.
Now it is time to add a Vale action to our GitHub workflow.
– name: Vale
uses: email@example.com
debug: true
styles: |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
We have named our action Vale. The uses variable shows which version of Vale we're going to implement — ideally, we should use the most recent version. In the with variable, we set debug to true.
The styles section gives us the option to add a style guide to Vale. In this example, we are going to use write-good and Microsoft's official style guide. Keep in mind that we can use other style guides as well.
The final part of this GitHub action is env. In order to run this GitHub action, we need to include a secret token.
This is what the result should look like:
# This is a basic workflow to help you get started with Actions.
name: Docs-Linting
# Controls when the action will run.
# Triggers the workflow on push or pull request events but only for the main branch
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
runs-on: ubuntu-latest
– name: Checkout
uses: actions/checkout@master
– name: Vale
uses: firstname.lastname@example.com
debug: true
styles: |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
Once you've finished making changes, save the file, commit to Git, and push your changes to GitHub.
git add .github/workflows/vale.yml
git commit -m "Added github repo to project"
git push -u origin main
To recap, in this section, we have:
triggered the action to occur when we push new code to the main branch;
added a Vale action, setting debug to true and identifying style guides;
added a GitHub token;
committed changes and pushed to GitHub.
In the next section, we are going to create a Vale configuration file.
Setting Up Vale Configuration File
Go to the root of your project's directory, and then touch .vale.ini. Open .vale.ini in a text editor. Copy and paste the following into .vale.ini:
StylesPath = .github/styles
MinAlertLevel = warning
Markdown = markdown
BasedOnStyles = write-good, Microsoft
StylesPath = .github/styles
The StylesPath gives the path of the Vale styles.
MinAlertLevel = warning
The minimum alert level shows the scale of severity in alerts. The options are suggestion, warning, and error.
Markdown = markdown sets the format as Markdown.
The configuration BasedOnStyles = write-good, Microsoft will run write-good and the Microsoft style guide on all Markdown files ending with .md.
This set-up is the bare minimum. If you are interested in learning more about configuring Vale, head over to the documentation.
When you are finished making changes, save the file, and commit and push to GitHub.
git add .vale.ini
git commit -m "Added Vale config file"
git push -u origin main
In this part, we've learned the internals of a Vale configuration file. Now it's time to create sample documentation.
Creating Documentation and Triggering the Vale GitHub Actions
Now it is time to see Vale and GitHub Actions in action! We are going to create a Markdown file and fill it with text. And we are going to get our text from DeLorean Ipsum.
Go to the root of your project, and then touch getting-started.md. Once you've created the getting-started file, go to DeLorean Ipsum and create some dummy text for your documentation. Then, return to your text editor and paste the text in getting-started-md.
# Getting Started Guide
I can't play. It's my dad. They're late. My experiment worked. They're all exactly twenty-five minutes slow. Marty, this may seem a little foreward, but I was wondering if you would ask me to the Enchantment Under The Sea Dance on Saturday. Well, they're your parents, you must know them. What are their common interests, what do they like to do together?
Okay. Are you okay? Whoa, wait, Doc. What, well you mean like a date? I don't wanna see you in here again.
No, Biff, you leave her alone. Jesus, George, it's a wonder I was ever born. Hey, hey, keep rolling, keep rolling there. No, no, no, no, this sucker's electrical. But I need a nuclear reaction to generate the one point twenty-one gigawatts of electricity that I need. I swiped it from the old lady's liquor cabinet. You know Marty, you look so familiar, do I know your mother?
Save the file, commit it, and push it to GitHub.
git add getting-started.md
git commit -m "first draft"
git push -u origin main
Once you've pushed the changes, head over to GitHub where your repository is located. Go to the Actions tab.
You will see all of your workflows on the left side. We have only one, named Docs-Linting, the same name we put in the vale.yml file.
When we push the documentation to GitHub, we will trigger the action.
If the action has run without any problems, we will get a green checkmark.
Click on "Added docs" to get a full report.
You will see that we got 11 warnings. Let's deal with the "weasel word" warning. Go back to the text editor, open getting-started.md, and delete the word "exactly".
# Getting Started Guide
I can't play. It's my dad. They're late. My experiment worked. They're all twenty-five minutes slow. Marty, this may seem a little foreward, but I was wondering if you would ask me to the Enchantment Under The Sea Dance on Saturday. Well, they're your parents, you must know them. What are their common interests, what do they like to do together?
Okay. Are you okay? Whoa, wait, Doc. What, well you mean like a date? I don't wanna see you in here again.
No, Biff, you leave her alone. Jesus, George, it's a wonder I was ever born. Hey, hey, keep rolling, keep rolling there. No, no, no, no, this sucker's electrical. But I need a nuclear reaction to generate the one point twenty-one gigawatts of electricity that I need. I swiped it from the old lady's liquor cabinet. You know Marty, you look so familiar, do I know your mother?
Save the changes, commit it to Git, and push the new version of the file to GitHub. It should trigger the GitHub action.
If we click on "Deleted the weasel word", we will see that we have only 10 warnings now, and the "weasel word" warning is gone. Hooray!
We are finished, and we've covered a lot of ground. In this section, we have:
added documentation to our Vale GitHub Actions repository,
triggered the Vale GitHub action,
corrected an error produced by Vale and pushed the change back to GitHub.
In a world that is increasingly going remote, prioritizing good documentation and good documentation workflow is important. You first have to define what "good" is by creating a style guide. Once you've figured out the rules of your documentation, then it's time to automate.
Documentation should be treated like your code base: a living body of work that is constantly being iterated and becoming a bit better than the last time you updated it.
Original Source: https://www.hongkiat.com/blog/facebook-business-page-tips/
Your Facebook fan page is more powerful than you think. It can help boost revenue and brand awareness which can solidify your standing in the market. If you are selling your services, digital or…
Visit hongkiat.com for full content.
Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/iFXEFLLyDsI/draw-with-trackpad
This promises hours of fun.
Original Source: http://feedproxy.google.com/~r/tympanus/~3/7DmigBq5OzM/
Inspirational Website of the Week: Kookslams Hard Seltzer
A very fresh design with great summer vibes and lots of fun details. Our pick this week!
Get inspired
This content is sponsored via Syndicate Ads
Seamless creation from concept to production with Editor X
Create dynamic and powerful web experiences with responsive CSS combined with smooth drag & drop.
Check it out
Smooth and simple page transitions with the shared element transition API
Learn how to use shared element transitions in this article by Jake Archibald.
Check it out
CSS accent-color
Learn how to bring your brand color to built-in HTML form inputs with one line of code.
Check it out
Breaking the web forward
A sobering article by Peter-Paul Koch on the current lamentable state of browsers and the web where "[c]omplex systems and arrogant priests rule".
Read it
Practical Uses of CSS Math Functions: calc, clamp, min, max
Review the four best supported CSS math functions, and see how they can be used in both practical and unexpected ways, such as within gradients and color functions and in combination with CSS custom properties. By Stephanie Eckles.
Read it
Building a Cool Front End Thing Generator
John Polacek shows how building a tool that can generate some cool front-end magic can help you learn something new, develop your skills and maybe even get you a little notoriety.
Read it
A guide to designing accessible, WCAG-compliant focus indicators
A helpful reference aimed at both designers who want to learn about accessibility considerations for designing focus indicators, as well as developers who want to implement them. By Sara Soueidan.
Read it
Why lab and field data can be different (and what to do about it)
Learn why tools that monitor Core Web Vitals metrics may report different numbers, and how to interpret those differences. By Philip Walton.
Read it
Responsive CSS Food Truck
An amazing demo by Adam Kuhn!
Check it out
Star Rating: An SVG Solution
An exploration of how to implement a star rating with SVG that includes half a star.
Read it
GSAP + React, First Steps & Handy Techniques
Get started using GSAP in React to build fast, powerful JavaScript animations that work everywhere.
Read it
Improving responsiveness in text inputs
Nolan Lawson explains how to make slow inputs faster.
Read it
Introducing MIDIVal: the easiest way to interact with MIDI in your browser
Kacper Kula introduces MIDIVal, a platform-agnostic library for all your MIDI needs.
Read it
Akari 1A • Pure CSS • repeating-radial-gradient
Aris Acoba made this beautiful demo using some cool gradients.
Check it out
Building a switch component
A foundational overview by Adam Argyle of how to build a responsive and accessible switch component.
Read it
Sentence Forms (not Mad Libs)
Adrian Roselli dives into sentence forms, or narrative forms and writes about their challenges.
Check it out
HTML is Not a Programming Language?
Alvaro Montoro shows that the three main arguments used for claiming that HTML is not a programming language are flawed or incorrect.
Read it
CSS Pencil
Very nice CSS only work by Kass.
Check it out
MSI – The Match Maker
Supercool web game design: match with a similar player and test your skills in a series of mini games.
Check it out
CSS Drummer
An animated CSS drummer made by Deren.
Check it out
CSS Grid tooling in DevTools
Changhao Han shows how to use CSS Grid tooling in DevTools to better understand what CSS code is doing.
Read it
From Our Blog
Create an Abstract Image Slideshow with OGL, GLSL, and GSAP
Learn how to create a WebGL-powered image slideshow animated using a single value.
Read it
The post Collective #675 appeared first on Codrops.


text:
Hall of Fame
CGB Hall of Fame: (2) Cal/Duke 1993 vs (5) Cal/USC 2003
Jason Kidd knocking off Duke or a 3OT win vs USC
CGB Hall of Fame: (1) Missy Franklin vs (3) Justin Forsett
Gold Medalist swimmer challenged by NFL running back.
CGB Hall of Fame: (2) Desean Jackson vs (5) Mary T. Meagher
An all time great challenged by an underdog swimmer.
CGB Hall of Fame: (1) Jahvid Best vs (3) Nnamdi Asomugha
Two former football stars battle to earn a spot in the final four.
CGB Hall of Fame: (2) Cal/Duke 1993 vs (3) Cal/Oregon 2007
The Bears knocking off the defending national champions vs. a big time road win.
CGB HoF: (1) 2009 Big Game vs (5) Cal/USC 2003
Taking down Andrew Luck and co. battles the mighty upset of the Trojans in '03
CGB Hall of Fame (3) Nnamdi vs (7) Daymeion
Two dominant corners battle it out for a chance to move on to the next round.
CGB Hall of Fame: (1) Jahvid Best vs (5) Scott Chong
Cal football great takes on blogger legend in the second round of CGB Hall of Fame.
CGB Hall of Fame: (1)Ron Rivera vs (5)Mary T Meagher
Former football star takes on Olympic champion
CGB Hall of Fame: (2) Desean Jackson vs (3) Brittany Boyd
An all time wbb great challenges the wizard of returns.
CGB Hall of Fame: (2) Cal/Duke 1993 vs (7) Cal/Furd Wbb
Upending the national champion vs dethroning Stanfurd
CGB HoF: (3) Cal/Oregon 2007 v (6) Cal/Baylor 2011
The greatest comeback in program history takes on a huge road win.
CGB Hall of Fame (4) Cal/Oregon 1993 vs (5) Cal/USC 2003
The greatest Cal comeback takes on one of the greatest Cal upsets.
CGB Hall of Fame: (1) 2009 Big Game vs (8) Cal/UCLA 1990
Beating Stanfurd in 09' takes on the end of the losing streak to the Bruins.
CGB HoF: (2) Jared Goff vs (7) Conan 'Suppy' Liu
The man the myth the legend Jared Goff takes on esports legend Conan Liu
CGB Hall of Fame: (3) Justin Forsett vs (6) Keenan Allen
Two NFL studs and Cal football alum take each other on in round 1 of CGB Hall of Fame.
CGB Hall of Fame: (1) Missy Franklin vs (8) Bryce Treggs
Olympian Missy Franklin battles future NFL star Bryce Treggs
CGB Hall of Fame: (4) Pete Cutino vs (5) Lamond Murray
Swim coach Pete Cutino takes on basketball great Lamond Murray.
CGB HOF: (2) C.J. Anderson vs (7) Daymeion Hughes
A lockdown corner and a superbowl winning running back battle it out in round 1 of CGB Hall of Fame.
CGB Hall of Fame: (3) Nnamdi Asomugha vs (6) Kate Scott
Former Mic Man takes on the all pro corner back in CGB Hall of Fame.
CGB Hall of Fame: (4) Steve Birnbaum vs (5) Scott Chong
Cal soccer legend Steve Birnbaum takes on CGB blogger Scott Chong in round 1 of CGB Hall of Fame.
CGB Hall of Fame: (1) Jahvid Best vs (8) Anthony Ervin
Two Cal greats, one from the gridiron, the other from the pool square off in round 1.
CGB HOF: (2) DeSean Jackson vs. (7) Milica Vukadinovic
The Wizard of Returns takes on Lady Magic. Who advances?
CGB HOF: (3)Brittany Boyd vs. (6)Kevin Parker
One of the best WBB stars ever takes on a constant on the football coach staffer and a true inspiration.
CGB Hall of Fame - (4)Justin Cobbs vs (5) Mary T Meagher
All basketball everything Justin Cobbs takes on Madame Butterfly Mary Meagher
CGB Hall of Fame: Ron Rivera vs. Syd'Quan Thompson
Two Cal football stars face off in the first round of the Golden Blogs Hall of Fame!
Presenting the 2016 Golden Blogs HoF Bracket!
Who made the cut and who's going all the way?
It's time for the CGB HoF Nominations!
Who do you think should make up the Class of 2016 for the CGB Hall of Fame?
Introducing the CGB Hall of Fame Class of 2015!
CGB is pleased to present the 2015 Class of the California Golden Blogs Hall of Fame!


text:
Recreationists Support Offshore Wind Energy Development
From boat enthusiasts to anglers, researchers at the University of New Hampshire have found surprisingly widespread support for offshore wind energy development (OWD) among outdoor recreationists.
Also unanticipated was the strong support across the entire political spectrum, from liberals to moderates and conservatives, with respondents seeing OWD as a positive impact upon their recreation experience.
"These findings are unique because most previous studies show that recreationists tend to oppose energy development on or near public lands and protected areas," said Michael Ferguson, assistant professor of recreation management and policy. "But most of the respondents in our research embraced the idea of offshore wind development. Besides the benefits of renewable energy, they saw it as a benefit to the entire community and region, creating tourism opportunities, and enhancing their own recreation experiences."
In the study, recently published in the Journal of Great Lakes Research, the researchers from UNH and Pennsylvania State University examined more closely factors influencing water-based recreationists' perceptions towards OWD in general on Lake Erie. As part of the study, respondents were asked questions about recreation frequency, OWD support and opposition, political orientation, and perceptions towards climate change. Of the 242 respondents, nearly one-half identified as boaters, with the remaining evenly split between beach users and anglers and all were largely repeat day trip visitors. The results of this study suggested significantly high levels of support for OWD among the water-based outdoor recreationists at Lake Erie across the political spectrum.
"Offshore wind energy development has been slow to develop in the United States for various social, ecological, and political reasons," said Ferguson. "But our findings suggest that recreationists may be open to it and supportive of it."
Some examples cited for support include unique recreation and tourism attractions like boat tours to OWD sites, better fishing opportunities especially in areas that lack natural structures that would attract more fish (like rocks and reefs), and more job opportunities for everything from construction to tourism related businesses like rentals and restaurants.


text:
Top Items:
Kate Rose / YouTube Blog:
Announcing YouTube Analytics - the next generation in Insight — Video can transcend language and cultural barriers. It can showcase real human moments all across the globe, even the silly ones. Take the video of the talking twin babies. That video was shot in Brooklyn …
CNET News, VatorNews, 9to5Google, Marketing Pilgrim and The Next Web
David Kravets / Threat Level:
Researcher's Video Shows Secret Software on Millions of Phones Logging Everything — The Android developer who raised the ire of a mobile-phone monitoring company last week is on the attack again, producing a video of how the Carrier IQ software secretly installed on millions of mobile phones reports …
GigaOM, Technologizer, DSLreports, The Register, blog.chron.com, IntoMobile, The Lounge, John Graham-Cumming and The Apple Core Blog
Eddie Kessler / The Official Google Blog:
The next stage in our redesign — Six months ago we started rolling out a new look and feel for Search, News, Maps, Translate, Gmail and a bunch of other products. Our goal was to create a beautifully simple and intuitive user experience across Google. — We're now ready for the next stage …
Ethan Smith / Wall Street Journal:
Spotify to Offer Apps, Open Platform to Developers — Spotify AB will begin offering Facebook-style apps that add various features and functions to its popular online-music service, according to people in the music industry, a move that could differentiate the company amid growing competition …
CNET News, Digits, The Register, Betabeat, Business Insider, Engadget, FierceMobileContent, GigaOM, Gizmodo UK, hypebot, The Verge, Pocket-lint, thinq_, Electronista, Electricpig.co.uk, ArcticStartup Posts and Company Town
Path Blog:
Introducing Path 2, the Smart Journal — Over the last year, you have told us about the ways you've been recording and sharing your lives on Path — things like summer road trips and high school graduations, a baby's first words, and hundreds of sunsets. You also used Path in ways we could have never imagined.
parislemon, parislemon, WebProNews, @howardlindzon, @mhendric, @stevecheney, @shervin, Edward Aten and SplatF
Alexia Tsotsis / TechCrunch:
Path's Second Iteration Is Less Photosharing And More Everything Sharing
Path's Second Iteration Is Less Photosharing And More Everything Sharing
The Verge, IntoMobile, ITProPortal, L.A. Times Tech Blog and @hunterwalk
Mike Isaac / Gadget Lab:
One Year Later, Path 'Personal Network' App Still Brings the Love
One Year Later, Path 'Personal Network' App Still Brings the Love
CNET News, Google+, Bits, Technologizer, Digits, AllThingsD, GigaOM, @adnys, @mathewi, Forbes, @semil and Social Markets, Thanks:mj_isaac
James Kendrick / ZDNet:
Impending crisis for Microsoft: Office tablet pricing — Summary: If Microsoft is readying a version of Office for the iPad, it better be prepared for the ripple effect in its other business. — ZDNet reported yesterday that Microsoft is getting a version of Office ready for the iPad.
Matt Hickey / The Daily:
Microsoft plans to get its Office software suite on the iPad
Microsoft plans to get its Office software suite on the iPad
Phones Review, GottaBeMobile, MacStories, WinBeta, Softpedia News, Gadget Lab, SocialTimes.com, O'Grady's PowerPage, FT Tech Hub, 9to5Mac, eWeek, ITProPortal, The Register, Computerworld, Neowin.net and @sameerpatel, Thanks:daily
Chris Ziegler / The Verge:
FCC report slams AT&T's proposal to buy T-Mobile: the highlights — Although AT&T has withdrawn its application to buy T-Mobile USA for $39 billion while it regroups and evaluates its options, the FCC isn't letting it go without a spanking: the Commission and its staff have released …
Arik Hesseldahl / AllThingsD:
Whitman: HP Decision on webOS Coming Within Two Weeks — Hewlett-Packard CEO Meg Whitman just gave an interview to Le Figaro, a French newspaper, saying that a decision on what to do with HP's webOS software will come within the next two weeks. — Here's the key quote, courtesy of Google Translate:
The Verge, BGR, 9to5Mac, paidContent, Computerworld, Between the Lines Blog, CNET News, The Next Web, SlashGear, Softpedia News and PhoneArena
Kunal / Sammy Hub:
Samsung unveils Cortex-A15 2GHz Exynos 5250 SoC — Samsung has just unveiled a new System-on-chip (SoC) for future mobile devices. It's the Exynos 5250 that boasts two Cortex-A15 chips clocked at 2GHz. The dual-core Exynos 5250 is created using a 32nm-low power HKMG process and is said to double …
Inquirer, Gizmodo, Engadget, Techie Buzz, netbooknews.com, IntoMobile, Gizmodo UK, Android Life, The Verge, Android and Me, MobileSyrup.com, SmartKeitai, Android Phone Fans, MobileBurn.com and Pocket-lint, Thanks:kunalgangar
Liz Gannes / AllThingsD:
The Apologies of Zuckerberg: A Retrospective — At this point, Facebook CEO Mark Zuckerberg's pattern on privacy is clear. Launch new stuff that pushes the boundaries of what people consider comfortable. Apologize and assure users that they control their information, but rarely pull back entirely …
Digital Media Wire, BetaNews, New York Times, TechSpot, Telegraph, Mashable!, TechCrunch, GigaOM, SlashGear, Inquirer, The Register, memeburn, PC Pro, PC Advisor, CNET News and ITProPortal
Robin Wauters / TechCrunch:
Adobe Acquires Efficient Frontier To Boost Its Digital Marketing Solutions — Adobe this morning announced its acquisition of Efficient Frontier, a digital marketing company, without disclosing the financial terms of the deal. — Adobe says the acquisition of the company will enable …
Leena Rao / TechCrunch:
Salesforce Debuts The New Radian6-Powered Social Marketing And Monitoring Cloud — Radian6, which was acquired by Salesforce for $326 million earlier this year, has offered some of the world's largest brands a web-based social media monitoring platform. Brands like Dell, GE, Southwest Airlines …
ReadWriteWeb, VatorNews, Between the Lines Blog, eWeek, VentureBeat, AllThingsD, MediaPost and Business Insider
Brian Bergstein / Technology Review:
Mark Pincus on What Makes Zynga Hum: Short Attention Spans — A booming business in virtual goods adds up to huge profits for the online gaming company. — Online games company Zynga is planning to raise $1 billion by selling a small portion of its shares in an IPO that is expected to occur before the end of the year.
Matt Rosoff / Business Insider:
Steve Jobs Was Right: Google IS Turning Into Microsoft — Last spring as Larry Page was preparing to retake the helm at Google, he asked Steve Jobs for advice. — Jobs told him to focus on fewer things and do them really well. — Jobs later recounted the conversation to his biographer Walter Isaacson.
parislemon, more at Mediagazer »
Todd Bishop / GeekWire:
Paul Allen calls for 'open science' and wider sharing of data — Microsoft co-founder Paul Allen makes the case for broader sharing of scientific data — an "open science" model - in a newly published opinion piece (subscription required) in the Wall Street Journal, drawing from the experiences …
Wall Street Journal
Brian Heater / Engadget:
Sonos software updates bring Android tablet support, Slacker and Spotify upgrades — Wireless music streaming kingpins Sonos rolled out a number of software updates tonight, including System Software 3.6, which brings added controls to Sonos Wireless HiFi, integration with Slacker …
TechCrunch, GottaBeMobile, The Verge, Business Insider, IntoMobile, CNET News, The Next Web, Electronista and Gizmodo
Graham Cluley / Naked Security:
United Nations hacked - email addresses and passwords leaked — Passwords and login details belonging to the United Nations have been published on the internet by a hacking group who believe that the UN is guilty of corruption. — The TeaMp0isoN hacking gang has leaked over one hundred usernames …
PC Magazine, Gizmodo, The Register, thinq_, BBC, Gizmodo UK, SlashGear, ITProPortal, Inquirer and Pastebin
Jack Purcher / Patently Apple:
It's War: Former SGI Surprises Apple with another Patent Infringement Lawsuit — Late last week, Apple filed two separate patent infringement lawsuits against Graphic Properties Holdings Inc. (GPH), formerly known as Silicon Graphics. One was filed in San Francisco and the other in Oakland …
Matt Rosoff / Business Insider:
The First Yahoo Bids Are Coming In, And They Look Pretty Low — At least two private equity groups placed bids on Yahoo today, and both bids valued the company at more than $20 billion. — A consortium led by Silver Lake bid $16.60 per share for a minority stake, according to Bloomberg.
Bloomberg, Seattle Times, CNET News, The Tech Trade, Inquirer, Hillicon Valley, Deadline.com, AllThingsD and Wall Street Journal
Dan Rayburn / StreamingMediaBlog.com:
Amazon Says It Has 20,000 CDN Customers; But What Does That Really Mean? — On Tuesday, Amazon announced via their AWS blog that the company now has 20,000 active customers for their CloudFront CDN service. In addition, Amazon believes that their 20,000 customers would make Amazon CloudFront …
Between the Lines Blog and Amazon Web Services Blog, Thanks:danrayburn
Nate Anderson / Ars Technica:
US judge orders hundreds of sites "de-indexed" from Google, Facebook — After a series of one-sided hearings, luxury goods maker Chanel has won recent court orders against hundreds of websites trafficking in counterfeit luxury goods. A federal judge in Nevada has agreed that Chanel can seize …
Techdirt, The Register, SlashGear, Inquirer, TechEye, Softpedia News and ReadWriteWeb, Thanks:chadcat
Andy Greenberg / The Firewall:
How Cisco Spinoff Agari Aims To Finally Kill Phishing — As head of security technologies at the startup Ironport in 2007, Patrick Peterson was once so obsessed with tracking a group of drug-hawking spammers that he spent day and night in front of a computer, following leads and ignoring …
CNET News, Softpedia News, Neowin.net, gHacks Technology News and Agari, Thanks:forbestech
Declan McCullagh / CNET News:
Internet sales tax fight returns to Congress — eBay is preparing to amplify its attack on a proposed law that would usher in sales taxes on Internet shopping, CNET has learned. — The online auctioneer plans to tell a congressional panel considering the legislation tomorrow that the measure …
TechFlash and Amazon.com


text:
- Access exclusive content
- Connect with peers
- Share your expertise
- Find support resources
Is there a way to custom config when you get notified on license usage? I would like to custom set when to notify regarding remaining available seats instead of the default config. Can I make the change directly on the DB?
Click Accept as Solution to acknowledge that the answer to your question has been provided.
The button appears next to the replies on topics you've started. The member who gave the solution and all future visitors to this topic will appreciate it!
These simple actions take just seconds of your time, but go a long way in showing appreciation for community members and the LIVEcommunity as a whole!
The LIVEcommunity thanks you for your participation!


text:
Pursuing Excellence
Casey Beidel and Brian Sheng-Kai Li are the recipients of the 2024 Pyne Prize, the highest general distinction for undergraduates.
Advancing Scholarly Knowledge
Pasquale Toscano, José de Jesús Montaño López, Geneva Smith, and Ryan Unger are Jacobus Fellows, the top honor for graduate students.
University News
View All News
Eisgruber, municipal officials discuss University support of shared community interests
University President Christopher L. Eisgruber met Feb. 26 with the Princeton Mayor and Council. The University announced last month that it plans to contribute more than $50 million over five years to the municipality and local organizations.
At Alumni Day, Princeton honors computer scientist Fei-Fei Li and ornithologist John Fitzpatrick
The 109th Alumni Day program demonstrated the impact of Princeton's "audacious bets" on talent and potential.
DOJ designates Mayer to serve as first chief science and technology adviser and chief AI officer
Jonathan Mayer teaches in the School of Public and International Affairs (SPIA) and the Department of Computer Science at Princeton. He is a resident faculty member at the University's Center for Information Technology Policy (CITP).
Exceptional Faculty
Princeton faculty members are all exceptional scholars in their disciplines who are expected to teach as well as engage in research. Faculty work closely with undergraduates in the supervision of junior year independent work and senior theses.
Princeton In the News
Through the Venture Forward campaign, Princeton is making audacious bets on talent and potential that will have a transformative impact on the future of humanity.


text:
Expats moving to Cyprus will need to spend some time getting to grips with the country's property market and the options available to them. Choosing the right type of home in the right part of the country will directly affect the quality of an expat's experience in Cyprus.
The general trend in recent years has been for foreign investors and expats moving to Cyprus to buy property rather than to rent on the island. This has influenced the property market, causing prices to soar with increased demand.
The process of renting and buying accommodation in the 'Turkish North' and 'Greek South' of Cyprus is largely the same; with one major difference being that in the south, properties tend to be newer, fancier, more expensive and easier for foreign nationals to purchase.
Types of accommodation in Cyprus
Expats moving to Cyprus will find plenty of housing options, including furnished or unfurnished apartments, villas and traditional rural stone houses. The standard of accommodation in Cyprus is generally excellent, as a lot of the property on the island is fairly new. Air conditioning and heating are common, and most houses in Cyprus have either a shared or private pool.
Furnished vs unfurnished
Rented apartments in Cyprus are usually furnished, while houses are unfurnished. Shipping furniture to Cyprus is a viable option (especially from within the EU), but reasonably priced furniture is easily found around the island.
Villas are spacious, multi-roomed Mediterranean-style homes. They feature lush gardens and often come with a pool. They usually consist of one or two storeys.
Cheaper than villas, apartments are frequently found in seaside areas, with their elevated position allowing for great ocean views from the upper floors. Though they offer less space than freestanding houses, they are also much easier to maintain.
Traditional stone houses
Towards the centre of the island, in its more rural areas, traditional stone houses can be found. These are often somewhat dilapidated when purchased but are cheap, full of character and make for a fantastic home makeover project.
Finding accommodation in Cyprus
Expats looking to rent accommodation in Cyprus will find that online property portals are often the best place to start. Newspaper advertisements can also be great sources of information, and estate agents can be helpful, but will charge a fee.
Looking for accommodation in the low season can be a good strategy – not only will there be more options for short-term accommodation to stay at while house hunting, but expats may be able to negotiate a longer stay at a good rate.
Renting accommodation in Cyprus
Making an application
Potential tenants will need to apply via an estate agent, if one is involved, or directly to the landlord. Expats may need to submit documents such as their passport, visa and proof of income.
Leases can either be short term, lasting six months or less, or long-term, 12 months. Some leases may be renewable, but expats should discuss this with the landlord before signing. The termination of a lease is usually a difficult process that requires a month or two's notice. A landlord can terminate a lease if rent has not been paid or if the landlord intends to demolish or use the property for family or themselves.
Before moving in, tenants are required to pay a deposit equal to one month's rent upfront. If the property is returned in good condition at the end of the lease, the deposit should be returned to tenants in full. In case the tenant has damaged the house in any way, the amount for repairs and cleaning will be subtracted from the deposit.
Expats will usually be responsible for their own utility bills. These can be quite costly and should be factored into the housing budget.
Buying property in Cyprus
Buying property in Cyprus is a popular option for foreign investors and expats, whether retirees or those on long-term employment contracts looking to settle on the island. Some expats feel that it works out far cheaper, in the long run, to buy property in Cyprus than to rent, and that housing costs are still cheaper than in most Western and Northern European states.
Expats should, however, bear in mind that due to historical disputes over administration and land, a massive increase in development on the island, and the concomitant explosion of the property market, there comes a risk of scams and property fraud. Expats should be sure that they have the real title deeds to the property that they are interested in prior to purchase.
For EU nationals, buying property in Cyprus is a relatively straightforward process, and non-EU nationals can buy up to around one acre of land or one house or apartment with relative ease.
In order to borrow money to buy a residence, expats can contact any commercial bank to discuss loan terms. Usually, a deposit of 30 percent of the sale is required, with the remaining 70 percent of the cost being covered by the bank. We advise expats to do all their dealings in property through a verified and trustworthy lawyer.
Further reading
►For more information about getting established on the island, see Banking, Money and Taxes in Cyprus
Are you an expat living in Cyprus?
Expat Arrivals is looking for locals to contribute to this guide, and answer forum questions from others planning their move to Cyprus. Please contact us if you'd like to contribute.
Expat Health Insurance
Cigna Global Health Insurance. 20% off premiums booked before 31st March
Medical insurance specifically designed for expats. With Cigna, you won't have to rely on foreign public health care systems, which may not meet your needs. Cigna allows you to speak to a doctor on demand, for consultations or instant advice, wherever you are in the world. They also offer full cancer care across all levels of cover, and settle the cost of treatments directly with the provider.
Moving Internationally?
International Movers. Get Quotes. Compare Prices.
Sirelo has a network of more than 500 international removal companies that can move your furniture and possessions to your new home. By filling in a form, you'll get up to 5 quotes from recommended movers. This service is free of charge and will help you select an international moving company that suits your needs and budget.
Get your free no-obligation quotes from select removal companies now!


text:
Just days short of releasing their much-anticipated second album, Plato's Dream Machine are busy putting the final touches to this weekend's live performances to mark the official launch. A couple of weeks back, I met with the band for a chat about their latest work. Naturally, the album's marked departure from Għera's introspection towards a more upbeat, optimistic outlook took up most of the conversation but, on a lighter note, I also asked them for a few little-known facts about the band. Here they are, along with some of PDM's music - including the two tracks released off the Ġuf album so far - to put you in the mood for this coming weekend's launch concerts.
Very, very few people know (until now, that is!) that the music video for Temenza does not feature band member Samwel Grima and Justin Galea only appears for a brief moment. Apparently, Samwel was in Australia at the time and Justin could only pop in for a short time due to other commitments, so the band brought in Jeffrey Zerafa and Chris Mallia from Cable35 to stand in for them.
Yes, we know it's no secret that Żiżża is the common factor linking Plato's Dream Machine and Brodu, but he isn't their only connection, for both bands actually rehearse in the same studio in Marsa. "You might say we've literally been living in Brodu's shadow all this time", quipped PDM bassist Samwel Grima. We're inclined to believe there must be some inside joke tied to this, if Żiżża's raucous laughter in response to this is taken into consideration.
Introspection, emotion, spirituality, romance - all of these have found their way into Plato's Dream Machine's songs and even inspired most of them, but there's one thing that has consistently fuelled the band's energy and stamina that has yet to figure in one of their songs, and that's ginger beer! "We always make sure we have our ginger beer whenever we meet to rehearse!"
Yes, we know there are three people in the picture, but in the beginning, Plato's Dream Machine started out as a duo, namely Robert Farrugia Flores and il-Fre, with Ryan Abela joining them shortly after on drums. The formation kept growing with the arrival of (in no particular order) Roberta, Francesca, Andrew, Brian, Justin, Francesco, Daniel, (enter your name here if we haven't mentioned you....sorry!) and pretty soon it took on the guise of a music collective rather than just any old band. A few more line-up changes and a tangential musical shift later led to the PDM we know and love today!
The Għera album consolidated PDM's position as one of the foremost contemporary bands singing in the Maltese language, alongside the likes of Brikkuni, Brodu and Xtruppaw, but back when the band started out they used to sing in English. The song Fabbrika fuq l-Għolja, off their 2010 self-titled EP, was their first Maltese language recording and proved to be a major turning point for the band.
One last thing, and this is no secret - Plato's Dream Machine will be performing live at Teatru MITP in Valletta on Saturday 8 and Sunday 9 April to launch their second album Ġuf. Click here for more information and don't leave it too late as very few tickets are still available!


text:
How do you know you're in the home of an artist? Look around. Are there an abundance of primary colors and geometric shapes? Are the doors fashioned from vintage school bus parts? Is the house a giant dome in Tasmania?
So is the case with this dome house by artist couple Penny and John Smith, who together designed and made it in 1974 and had what was probably an adventurous life tinkering on it.
It's worth taking a peek inside for just how much they did in so little space. It has three bedrooms and approximately a jillion skylights, and it appears "futuristic" in that it looks like what people guessed the future may look like a long time ago. One can't help but wonder what the dome could've been had they built it 10 years later.
To this writer, a dome home says more "chill vacation house for a week in the summer" and less "place you live year-round." But for what it's worth, this dome is also a strange, off-kilter expression of love that you don't see every day, so there's that. It's also well on its way to being a permaculture compound, if that's your thing: there's a greenhouse (also a dome), a shed (dome), and our favorite — a workshop/studio (not a dome).
If you are considering making the lifestyle choice to become a dome-dweller, you might be bummed to find that this one just sold at auction, but these guys make prefab domes.
They'll probably ship to you, and you won't have to move to Tasmania.
This article was featured in the InsideHook newsletter. Sign up now.


text:
Our story
About Maria's Pizza
in Cape Coral...
Maria's Pizzeria and Italian Restaurant Founder, Giovanni Giordano (1931-2012), was born and raised in Naples, Italy.
Maria's Pizzeria and Italian Restaurant Founder, Giovanni Giordano (1931-2012), was born and raised in Naples, Italy.
Need the perfect space for your special event? Your search is over.
Good food is an essential part of any event - let us do the catering and make it
one to remember.
Don't feel like cooking today? We got you covered - order now!
OrderEnsure you never miss out.
Make an online reservation.
100%. Everything we tried was great! This will be a regular stop for us. The only disappointment was the cannoli. It wasn't bad. Just not outstanding like the rest of the menu.
I've been here a few times and every time it's been delicious! The rolls they give you are AMAZING! My favorites are the mussels in garlic snd oil and the shrimp parm! Can't wait to come back!
Family deal was spot on great deal. Fed 4 and then some. Tough to find a deal like this these days. Kudos to you all!! Take a look at this pizza. Well placed pepperoni says it all... these people take pride in their work and it shows. See you again soon!!
Such a cute italian restaurant! I had the ravioli a la maria and it was probably the best pasta I've had. The Alfredo sauce was to die for. My son LOVED the angel hair with meat sauce and meatballs. I wish we were staying in town longer and could go back a couple more times! Excellent :)
Love Maria's pizzeria. I always get their white pizza well done- and it's delicious. Their Caprese salad appetizer is wonderful as well. I'm a vegetarian and so is my fiancé so we eat a lot (A LOT) of pizza. I'd hands down vote for this business as having the best pizza in the cape.


text:
These small, soft growths hanging (literally) out on your neck or underarms are no fun, but harmless. But what causes skin tags in the first place?
There's no way around it: Skin tags are just not cute. More often than not, they elicit thoughts of other growths like warts, weird moles, and even mysterious-looking pimples. But despite their rep, skin tags are really NBD—not to mention, super common. In fact, up to 46 percent of Americans have skin tags, according to the National Institute of Health (NIH). Okay, so they're more common than you might have thought, but odds are you're still unsure what causes skin tags exactly. Ahead, top experts explain exactly what skin tags are, what causes them, and how you can safely and effectively get rid of them (warning this is not the time to DIY).
What are skin tags?
"Skin tags are painless, small, soft growths that can be pink, brownish, or skin-colored," says Gretchen Frieling, M.D., a triple board-certified dermatopathologist in the Boston area. The tags themselves contain blood vessels and collagen and are covered by skin, adds dermatologist Deanne Mraz Robinson, M.D., president and co-founder of Modern Dermatology in Westport, Connecticut. They pose no health risk, though they can become irritated, leading to redness, itching, and bleeding, notes Dr. Robinson. (More on what to do if that happens later.)
What causes skin tags?
The short answer: It's unclear. The long answer: There's no singular cause, though experts agree genetics definitely play a role.
Constant skin-on-skin friction can also cause skin tags, which is why they often crop up in areas of the body where the skin is creased or folded, such as the armpits, groin, under the breasts, eyelids, says Dr. Frieling. But this doesn't mean they don't occur in other areas; skin tags on the neck and chest are also common, she points out.
Many women may also develop them during pregnancy as a result of heightened estrogen levels, says Dr. Robinson. In fact, a small study found that about 20 percent of women experience dermatologic changes during pregnancy, of which around 12 percent were skin tags, specifically. One thought is that increased estrogen levels lead to larger blood vessels, which can then become trapped within thicker pieces of skin, although other hormonal changes may also contribute, according to research. (Related: Weird Pregnancy Side Effects That Are Actually Normal)
Are skin tags cancerous?
Skin tags themselves are benign, but they can start to become annoying if they're repeatedly getting caught on something like a razor or piece of jewelry, explains Dr. Robinson. Not to mention, some people may be bothered simply by their appearance, she adds.
So, if you're concerned about cancerous skin tags, don't be: "Skin tags aren't harmful and don't increase your risk of getting skin cancer," says Dr. Frieling.
That being said, "sometimes skin cancers can be written off as skin tags," says Dr. Robinson. "Your best bet is to always have any kind of new or evolving growth or mark looked at by your dermatologist." (Speaking of which, here's exactly how often you should have a skin exam.)
How can you remove skin tags?
Skin tags are more of a cosmetic nuisance than a real medical issue, but if one is bothering you, see your dermatologist to discussing having that bad boy removed.
If you do want to get rid of a skin tag, experts emphasize that you should not—we repeat do not—attempt to take matters into your own hands. At-home remedies using coconut oil, apple cider vinegar, or even tying off a skin tag with dental floss are all over the internet, but none of these are effective and can be dangerous, says Dr. Frieling. There's a risk of excess bleeding because skin tags contain blood vessels, adds Dr. Robinson.
The good news is your dermatologist can easily and safely take off a skin tag in several different ways. Smaller skin tags can be frozen off with liquid nitrogen as part of a procedure called cryotherapy (no, not the full-body cryotherapy tanks that supposedly help with muscle recovery).
Larger skin tags, on the other hand, are usually surgically cut off or removed via electric surgery (burning the tag with high-frequency electrical energy), says Dr. Frieling. Removing larger skin tags may also require some numbing cream or local anesthesia and potentially stitches, she adds. Your dermatologist will help decide which method is right for you based on the size of the skin tag and where it's located, though, generally speaking, "all of these procedures come with very low risks of complications and no recovery time," says Dr. Frieling.


text:
I was reading about Protonmail's system and I couldn't find an anwser to something. In PGP communication is encrypted using assymetric cryptography: public and private keys. If you want to send something securely to a recipient you use they public key of the recipient.
To my understanding: in nowadays internet systems to gain the public key of someone usually you (or the client software) looks for the public key from a keyserver. If so this system prone to MITM attacks, in other words it is a single point of failure.
Am I correct that this is the way public keys are distributed usually? Through a central publicly available server? I know TLS/SSL during keyexchange can prevent the attack, but that PKI system also has it's centralized aspects so, I am asking disregarding that.


text:
A Oaxacan spot is taking over shuttered burger restaurant Flame, and it looks like the place might be affiliated with Ballard phenom La Carta de Oaxaca. Rumors to that effect have been percolating for the past few months.
What is apparent at this point: the place will be called Mezcaleria Oaxaca. The ownership, according to the liquor license application, is the generic-sounding Seattle Investment Network, Inc., which is listed on La Carta de Oaxaca's Facebook page.
Back in February, Flame moved two doors down, sharing a space with Elliott Bay Pizza Co. A Carta de Oaxaca offshoot, or even a separate concept offering mole negro and other fare in the same league as the perpetually packed original, would be a huge score for the neighborhood.
· Oaxacan Restaurant Moving into Flame Space [Queen Anne View]
Flame [Photo: Robert S/Yelp]