NOVEMBER 9, 2018

GitHub just released GitHub Actions, to "automate your workflow from idea to production." Their slogan:

Focus on what matters: code

Here are some comments by Sarah Drasner on CSS-Tricks:

Previously, there were only few options here that could help with that. You could piece together other services, set them up, and integrate them with GitHub. You could also write post-commit hooks, which also help.

[...]

Actions are small bits of code that can be run off of various GitHub events, the most common of which is pushing to master. But it's not necessarily limited to that. They’re all directly integrated with GitHub, meaning you no longer need a middleware service or have to write a solution yourself. And they already have many options for you to choose from. For example, you can publish straight to npm and deploy to a variety of cloud services, (Azure, AWS, Google Cloud, Zeit... you name it) just to name a couple.

But actions are more than deploy and publish. That’s what’s so cool about them. They’re containers all the way down, so you could quite literally do pretty much anything — the possibilities are endless! You could use them to minify and concatenate CSS and JavaScript, send you information when people create issues in your repo, and more... the sky's the limit.

You also don’t need to configure/create the containers yourself, either. Actions let you point to someone else’s repo, an existing Dockerfile, or a path, and the action will behave accordingly. This is a whole new can of worms for open source possibilities, and ecosystems.

Curious about how this all works? Take a look at CSS-Tricks tutorials:

Visit GitHub Actions.

NOVEMBER 3, 2018

Here are some notes I took while reading GitHub's An Introduction to innersource white paper.

Organizations worldwide are incorporating open source methodologies into the way they build and ship their own software. […]

Many companies use the word “innersource” to describe how their engineering teams work together on code. Innersource is a development methodology where engineers build proprietary software using best practices.

[…]

[I]nnersource code helps your team discover, customize, and reuse existing internal projects. They can also establish and build on a shared set of documented processes to optimize the way your company deploys and uses software. This can lead to lower cost, greater flexibility, and an end to vendor lock-in.

[…]

Within an enterprise, individual developers can pursue their interests, share ideas on a level playing field, and more easily learn from their peers. However, innersource also requires a cultural shift. Your team’s culture will need to encourage knowledge sharing and welcome contributions from across your organization. […] For innersource projects, distributing control across a smaller group of participants frequently makes approvals and reviews more effective. Creating a small, cross-functional team of decision makers can also help teams stick to quality standards and gain executive support.
Adopting innersource practices is like starting an open source community within your organization. As with open source, transparent collaboration mobilizes a community’s collective knowledge and skills to create better software. An innersource community, in contrast, contains the knowledge, skills, and abilities of people and tools within a single enterprise.

Why do companies adopt it?

As businesses evolve and differentiate their products and services with software and data—or recognize software and data is their product or service—they quickly realize that traditional development methods and tooling don’t quite work. The slow, systematic practice of gathering requirements, holding meetings, and developing in silos is not in step with the pace of technology today—or even the pace of customer demands.
Innersource helps teams build software faster and work better together—resulting in higher-quality development and better documentation. It also can help companies become more efficient by:

  • Making it easy to find and reuse code on a broad scale, avoiding wasted resources and duplication
  • Driving rapid development, regardless of company size
  • Reducing silos and simplifying collaboration throughout the entire organization—inside and between teams and functions, as well as across teams and business lines
  • Increasing clarity between engineers and management, as well as anyone else who’s interested
  • Creating a culture of openness, a precursor to open source participation
  • Reinforcing the pride, growth, and job satisfaction felt by team members who help wherever there is a need

OCTOBER 31, 2018

React Google Charts is "A thin, typed, React wrapper over Google Charts Visualization and Charts API." View the source on GitHub.

OCTOBER 25, 2018

It is a safe bet that the highest-earning professions in the year 2050 will depend on automations and machines that have not been invented yet. —Kevin Kelly, The Inevitable

OCTOBER 18, 2018

Who said that making art was easy? Today, I'm glad to invite you to see the world from the perspective of an artist and creative that brings her craft everywhere she goes, might it be painting at her studio or teaching youngsters how to use digital tools to formalize their ideas.

Listen to artist, designer, and educator Jiyoo Jye on the struggles of making art and choosing your projects; education at an innovation school as a creative; when to share your work and the role of feedback; media consumption and technology; and her approach to simple living and daily routines.


And hey! You can now listen on iTunes, Spotify, Overcast, and Stitcher!

OCTOBER 17, 2018

This year, the ACADIA conference is taking place at UNAM's Facultad de Arquitectura, Mexico City. As part of the Talk to a Wall workshop, Cristobal Valenzuela (@c_valenzuelab) talked about his work on RunwayML, ml5js, and a lot of what's going on at the moment on the field of artificial intelligence, machine learning, and deep learning.

Along his definition of artificial intelligence, "[The] simulation of intelligent behavior in computers," he shared the following quotes of some of the most relevant researchers of artificial intelligence over the last years.

Models for Thinking, Perception, Action.

—Patrick H. Winston, MIT

Many things can be AI, including simple programming. AI is the automation of thought.

—François Chollet, researcher and author of Keras

A field of study that gives computers the ability to learn without being explicitly programmed.

—Arthur Samuel, MIT. Samuel Checkers, 1957

If you're interested in artificial intelligence and machine learning, you should definitely follow @c_valenzuelab, @ml5js, and @runwayml.

OCTOBER 11, 2018

Autodesk AEC Generative Design Day in Barcelona. Kean Walmsley, Nono Martinez Alonso, Raquel Bascones Recio, & Safi Hage

Last week, I had a really good time at Generative Design Day, in Barcelona. I recently relocated from the US to Spain. This was a great opportunity to meet some Autodesk colleagues in person (among which were Raquel Bascones Recio, Kean Walmsley, Jacob Small, Paolo Serra, Safi Hage, and Reginald de Visscher); to talk about the next-generation AEC tools I'm working on at the Autodesk Generative Design team; and to meet some of our European customers.


You can head over to Kean Walmsley's blog to read more about the event — these are my highlights from his post:

[Autodesk] had invited our larger customers from all over Europe to come and hear about the use of generative design technologies in the AEC space, both present and future.

[...]

For those of you who aren’t familiar with The Living, they’re an architectural practice that Autodesk acquired back in 2014. [...] Over the last few years The Living has done pioneering work applying generative design in the AEC space. They’re the ones responsible for the generative design of the A320 Bionic Partition (admittedly more of an engineering project), the generative space planning of Autodesk Toronto’s new office in the MaRS district based on employee data, and the generative layout of the AU 2017 Exhibit Hall to maximize buzz and access. Oh, and the generative urban planning tool that Van Wijnen are now using, of course.

[...]

Raquel Báscones Recio was our master of ceremonies, introducing the subject of the event and its various speakers. She also put in a great deal of work to make the event happen, in the first place. Jacob Small is a legend on the Dynamo forum. He works in our support team in Boston and gave a presentation on Dynamo.

[...]

People seemed to respond well to the vision for generative design, and I had some really good discussions with a few attendees who were particularly motivated by the position my team is taking on this: there’s a huge opportunity to create designs based on data.


Next week: ACADIA 2018, Mexico City.

SEPTEMBER 28, 2018

Every requirement is an opportunity for delight, even the ugly ones. Sometimes the creative treatment of these warts are the most enjoyable parts of a design.

—Frank Chimero, The Shape of Design

SEPTEMBER 26, 2018

Lobe is a web-based visual programming language to create and deploy machine learning models, founded in 2015 by Mike Matas, Adam Menges, and Markus Beissinger "to make deep learning accessible to everyone," recently acquired by Microsoft.

Lobe is an easy-to-use visual tool that lets you build custom deep learning models, quickly train them, and ship them directly in your app without writing code.

I saw a live demo at SmartGeometry earlier this year and I can't wait to play with it once its deployed on Microsoft's servers.

You can see a few examples at Lobe.ai. (They're looking for people to join their team.)


Watch this video to see examples of things people have built using Lobe and how to build your own custom deep learning models.

SEPTEMBER 25, 2018

From png to jpg.

mogrify -format jpg *.png

From jpg to png.

mogrify -format png *.jpg

SEPTEMBER 23, 2018

The Processing Foundation recently announced the second Processing Community Day event, which will be happening on Jan 19, 2019, at University of California, Los Angeles (UCLA):

[A]n inclusive event that will bring together people of all ages to celebrate and explore art, code, and activism. The day-long event features four themed-tracks — Accessibility, Disability, and Care, Radical Pedagogy, Under the Silicon, the Beach!, and Epic Play!. Each themed track contains lightning talks and sessions presented by conference guests we invite through an open call.

In addition to a full day of programming, we want to make space for anyone to share ideas and projects with the community. We will set up Show & Tell Stations, a Processing Community Cafe, and a Community Open Mic Session for participants to sign-up on the day of the event. The program will wrap up with an after party consists of performances, food, and drinks.

You can get a good picture of the purpose of this event (and the people making it possible) by reading Taeyoon Choi's afterthoughts of 2017's event at MIT Media Lab, and here is a YouTube Playlist with all of 2017's talks (including the ones by Andrés Colubri, Jose Luis García del Castillo y López, Dan Shiffman's Coding Train, Cristóbal Valenzuela and Cassie Tarakajian

Early bird tickets are available here. Go get yours!

SEPTEMBER 21, 2018

Olver Reichenstein on iA Writer 5.1:

The all new Tags and x-callback-urls are so hip they’ll take you to funky town.

Here is how tags started. We decided to add smart folders to iA Writer for Mac. Just before wrapping that task up, someone on the iA Writer design chat said:

Great, now I’m going to use tags with smart folders and get organized.

I'm super excited about this new feature. I found myself organizing my writing in various different ways with iA Writer—including prefixing file names with hashtags to group drafts by topic. Definitely, this is going to be a game changer.

These are my highlights from this release:

  • Write #tags to group files (See tags working)
  • All hashtags are shown in Organizer and Go menu (and can be hidden from Preview and PDFs)
  • Added authenticated x-callback-url commands to read and write files
  • Dark appearance (will adapt to the system's light and dark appearance with the incoming macOS Mojave)
  • HTML tags are dimmed in Editor

SEPTEMBER 16, 2018

Last August, the simple gesture of a stranger boosted my mood on my way to work. I've been living in Cambridge, Massachusetts for three years now, and the time for me to move onto new things has come—I'm going to miss this place.

Here is a little story on how paying attention to the slightest, subtle differences of your day-to-day can add meaning to your life.

SEPTEMBER 4, 2018

Researcher Nathan Melenbrink on his research on simple robots, teaching, his efforts to bring news neutrality to the internet, liking new things, acquiring taste, and much more.

AUGUST 28, 2018

In TypeScript, as in other languages, Array.map allows you to apply a function to each of the items on a list or array. You can either pass an existing function which will take each of the items as its input parameter (say, the existing Math.sqrt function, or one that you define).

let list = [0, 1, 2, 3]; // [0, 1, 2, 3]
list.map(Math.sqrt); // [ 0, 1, 1.414.., 1.732.. ]

Or you can also define a lambda function on-the-go.

let list = [0, 1, 2, 3]; // [0, 1, 2, 3]
list.map((value, key, all) => {
  list[key] = value * 2;
}); // [ 0, 2, 4, 6]

AUGUST 19, 2018

There is a nifty way to specify the way in which you want each of the pages (or Laravel routes) of your site to be indexed by search engines. In my case, I looked Robots meta tag and X-Robots-Tag HTTP header specifications to learn more about what was possible.

In short, you might tell Google a specific route or page has "no restrictions for indexing or serving" by setting the X-Robots-Tag HTTP header to all or, on the contrary, tell it to stop indexing (or saving cached versions of a page) with the noindex value.

In Laravel, the guys at Spatie made it really easy. Just install their spatie/laravel-robots-middleware composer package on your Laravel app with:

composer require spatie/laravel-robots-middleware

Let's see a few examples on how to use this.

Allow every single page to be indexed and served

Create a new middleware in your application.

// app/Http/Middleware/MyRobotsMiddleware.php

<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Spatie\RobotsMiddleware\RobotsMiddleware;

class MyRobotsMiddleware extends RobotsMiddleware
{
    /**
     * @return string|bool
     */
    protected function shouldIndex(Request $request)
    {
        return 'all';
    }
}

And then register your new in the middleware stack.

// app/Http/Kernel.php

class Kernel extends HttpKernel
{
    protected $middleware = [
        // ...
        \App\Http\Middleware\MyRobotsMiddleware::class,
    ];

    // ...
}

Forbid every single from being indexed, cached, and served

// app/Http/Middleware/BlockAllRobotsMiddleware.php

<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Spatie\RobotsMiddleware\RobotsMiddleware;

class BlockAllRobotsMiddleware extends RobotsMiddleware
{
    /**
     * @return string|bool
     */
    protected function shouldIndex(Request $request)
    {
        return 'noindex';
    }
}

Conditional robots middleware

Probably, the most interesting application of this middleware is to embed more intelligent logic to avoid indexing specific pages, but letting Google (and other search engines) crawl the pages you want to expose in search engines.

We could send a noindex header for our admin pages only, for instance.

// app/Http/Middleware/SelectiveRobotsMiddleware.php

<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Spatie\RobotsMiddleware\RobotsMiddleware;

class SelectiveRobotsMiddleware extends RobotsMiddleware
{
    protected function shouldIndex(Request $request) : string
    {
        if ($request->segment(1) === 'admin') {
            return 'noindex';
        }
        return 'all';
    }
}

Remember that you need to add all of your new middlewares to the app/Http/Kernel.php file in order for them to be called before each request. This method can be handing to block search indexing with noindex or to customize the way search engines are allow to process your pages. Here are other directives you can use in the x-robots-tag HTTP header and what they mean.

  • all - There are no restrictions for indexing or serving. Note: this directive is the default value and has no effect if explicitly listed.
  • noindex - Do not show this page in search results and do not show a "Cached" link in search results.
  • nofollow - Do not follow the links on this page
  • none - Equivalent to noindex, nofollow
  • noarchive - Do not show a "Cached" link in search results.
  • nosnippet - Do not show a text snippet or video preview in the search results for this page. A static thumbnail (if available) will still be visible.
  • notranslate - Do not offer translation of this page in search results.
  • noimageindex - Do not index images on this page.
  • unavailable_after: [RFC-850 date/time] - Do not show this page in search results after the specified date/time. The date/time must be specified in the RFC 850 format.

Thanks!

I hope you found this useful. Feel free to ping me at @nonoesp or join the mailing list. Here are some other Laravel posts and code-related posts.

AUGUST 18, 2018

Oramata iOS Icon

oramata (visions in Greek) is an iOS app developed by Panagiotis Michalatos to apply customizable effects to a live video stream on your iPhone, iPad, or iPod touch. The real time effects feel smooth as they are applied to your device's video stream, straight from your camera. You can get it for $2.99 on the App Store.


Oramata iPhone Screenshots
Screenshots of oramata for iPhone.

Get oramata on the App Store.

AUGUST 15, 2018

Host Nono Martínez Alonso gives a brief overview of what's new and what's coming to Getting Simple over the next months.

This month's interview features Ian Keough — The Father of Dynamo — who shares insights on working remotely full time, getting started with a startup, the flow state, and a lot more. (Listen to the episode here.)

New interviews are already underway, listen to this mini-episode and discover who will be on The Getting Simple Podcast in September, October, and November.

If you want to keep tuned, join my mailing list, and you'll receive (very few) emails when new content and episodes are out.


Thanks for listening!


If you enjoy the show, the best way to support it is by rating it on Apple Podcasts, or by becoming a Patreon to support it financially. Share this episode on Twitter or Facebook.


AUGUST 1, 2018

Ian Keough (@ikeough) is the founder of Hypar. He writes code from his garage to automate the generation of the built environment to help stakeholders make better decisions faster. Trained as a fine artist and architect—and known as The Father of Dynamo—Ian believes efficiency breeds quality and automation yields better, higher-quality products. This episode uncovers the Ian Keough beyond Dynamo—including his life habits, tactics to get into the flow state and avoid distractions, his new adventure to disrupt the architecture, engineering, and construction industry, and a lot more.

JULY 31, 2018

ViveTrack is a DynamoBIM package that allows real-time reading of HTC Vive spatial tracking data, developed by Jose Luis García del Castillo y López (@garciadelcast) at the Generative Design Group at Autodesk.

Want to see older publications? Visit the archive.

Listen to my Podcast.