> All in One 586: December 2019

Ads

Tuesday, December 31, 2019

A Recap of Frontend Development in 2019

I noted Trey Huffine’s 2018 version of this article in The Great Divide.

To put a point on this divide a bit more, consider this article by Trey Huffine, "A Recap of Frontend Development in 2018." It's very well done! It points to big moments this year, shows interesting data, and makes predictions about what we might see next year. But it's entirely based around the JavaScript ecosystem.

My point was (and still is) that front-end development is more than the JavaScript ecosystem. However, I certainly admit the movings-and-shakings of the JavaScript world is a big deal and probably generally more interesting to watch for most devs.

What happened this year outside of JavaScript land? Well it's weird. Things move slower, so it's harder to pin things — even to years — quite as easily. For example, there was plenty of talk and usage of prefers-reduced-motion in CSS, but we kinda "got" that in 2017. Lots of people have gotten excited about variable fonts this year, but that's also been years in the making. Subgrid recently dropped in Firefox, so I guess that's a 2019 thing, but we'll see slow adoption of it for years to come. For more of this exciting (but not necessarily brand new) stuff, check out Adam Argyle and Una Kravets Chrome Dev Summit 2019 presentation.

HTML is evolving at an even slower pace. Occasionally, something will feel new. I got excited about <dialog> this year, even though it first appeared in 2014, but the experts are saying we probably shouldn't use it. Elements like <details> are getting more exciting as Edge-goes-Chromium because they'll be getting more cross-browser support, but it's no picnic. There's just not much exciting to talk about in HTML, at least to me, aside from sort of philosophical approaches to it, like JAMstack.

The two most exciting HTML things to me: native lazy loading and no-jank fluid image loading.

But back to Trey’s post, the highlights are:

  • React is huge. jQuery isn’t falling.
  • Hooks was a huge release and change for React, and React is generally pushing fast on lots of big stuff.
  • TypeScript continues to grow.
  • Vue 3 is a long time coming and a bit controversial.
  • Svelte 3 is a small player but has lots of interest.
  • Angular 9 is almost here and has a strong base.
  • JavaScript itself continues to have yearly releases. ES2019 has nice stuff and ES2020 is even better.
  • Flutter is challenging React Native for cross-platform development, an impressive feat since there are so many more React devs than Dart devs.
  • JAMstack, PWAs, GraphQL, and CSS-in-JS are all growing in usage and developer sentiment.
  • VS Code is dominant.

Trey also picked out some really great blog posts and presentations from the year at the end, so don’t miss those!

If you dig predictions, then you might be interested in Sean Goresht's big one for 2020.

Direct Link to ArticlePermalink

The post A Recap of Frontend Development in 2019 appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2P7LtDr
via IFTTT

What We’re Reading, 2019

There are so, so, so (so) many things to read out there on the internet. So many, in fact, that it's difficult to keep up with everything.

But, hey, we've got your back! It's our job to surface the best of the best and share it with you right here. That's why it's a good idea to subscribe to this site and newsletter. Why subscribe to hundreds of sites when you can follow one, right?

Where do we find the links that we share? It truly runs the gamut, but we've decided to list our favorite sources.

Chris Coyier

  • Labnotes - Assaf Arkin's newsletter is great mishmash of timely, interesting, and funny tidbits with a developer twist.
  • Code with Veni is new just this year and consistently has great links from underrepresented coders
  • Codrops Collective always leaves me with like five open tabs
  • I get quite a few weekly newsletters entirely about front-end development, like Friday Frontend
  • WordPress Tavern does solid WordPress journalism.
  • Shoutout to Dave who had a strong year of bloggin'.
  • I love longtime classic blogs, like Waxy Waxy, Kottke, and Daring Fireball
  • DEV is blowing up and I end up reading many articles there each week. Meanwhile, it feels like Medium is slowing down significantly when it comes to developer-focused writing.
  • I obviously look at CodePen every day, which helps me keep an eye on what front-end developers are playing with.
  • I'd say the main value I get from Twitter is getting great links and thoughts that are a smidge beyond my regular reading. I'm in some community Slacks too, but find it far more conversational and less link-heavy.

Sarah Drasner

  • Scotch.io consistently has great stuff for pretty much every tech stack you can think of. They also do a great job of finding new authors.
  • Cassidy William's newsletter is short and sweet, and has coding puzzles in every issue.
  • I really love PonyFoo's quality and style. They mix it up and keep it interesting. The design is nice and unique as well!
  • I'm a Vue core team member and love to keep on top of what's going on in the community with the Vue Newsletter. It's curated by a team of really passionate educators and it shows — every newsletter is well curated.
  • I love Data Sketches so very much. It's a brilliant collaboration between Shirley Wu and Nadieh Bremer, and shows exceptional mastery of technical and illustrative skillsets to convey data. Worth a read for sure.
  • Like Chris, I love Codrops Collective. You can learn so much about UX animation there.
  • Speaking of animation, Val Head has a wonderful UI Animation Newsletter. She's kept it up for years, and it's rich with resources from the fanciful to the practical.
  • Rachel Andrew has been the editor-in-chief of Smashing Magazine for the past year or so, and the content has been wonderful. Smashing is constantly a source of great articles and information about front-end development and design.
  • I just saw Jared Palmer's Blog a week ago and I really enjoy the writing there. It's informative, interesting and humorous.
  • Our own Robin Rendle has a great newsletter all about typography. I don't know that much about type, so the poetic deep dives are lovely and informative. It's great for die-hard fans and newbies alike!

Geoff Graham

  • W3C Cascading Style Sheets Feed - Getting news straight from the horse's mouth!
  • CSS {In Real Life} - Michelle Barker is has a pragmatic approach to CSS and does an excellent job explaining complex concepts in a way that's pretty easy to grok.
  • The History of the Web - This is probably the opposite of "late-breaking" news, but Jay Hoffman's newsletter tells yesteryear's stories of the web, which is great context for things we see evolving today.
  • CodePen Post Picks - CodePen is full of great minds sharing ideas and the team over there does an excellent job curating noteworthy posts.
  • RWD Weekly Newsletter - Justin Avery covers responsive design news (obviously) but also provides oodles of other front-end-related goodies.
  • The Work Behind the Work - This isn't front-end stuff but I like how this site documents the creative process behind famous works that we know and love.
  • Adactio - Jeremy Keith posts regularly and thoughtfully.
  • Bruce Lawson - He usually has a weekly link dump that I find useful for uncovering things that would otherwise slip under my radar.
  • Mozilla Hacks - I could just as easily link up to other browser news, but Mozilla seems to be innovating fast and I like seeing where they're headed.
  • Piccalilly Newsletter - Andy Bell collects awesome demos.

Robin Rendle

  • Ire Aredinokun’s blog Bits of Code is an endless treasure trove of information about front-end development best practices and each post makes me ooo and Alice with delight.
  • For type and design news I always keep an eye out for Typographica’s year in review, and this year’s edition is just as interesting as the others. They collect a ton of typeface reviews from the releases of the past 12 months and explore what makes each design tick.
  • Likewise, David Jonathan Ross’s Font of the Month Club is essential reading for designers. David gives provides a typeface that's a work in progress in each issue and then writes diligently about the process behind it. It’s always a wonder.
  • Tim Kadlec’s blog is a great source of info about accessibility, web performance and general front-end development news.
  • I’ve been reading a bunch of great newsletters lately and Chip Scanlan’s writing advice is one that certainly stands out from the crowd.
  • Adrian Roselli’s blog never fails to impress with a ton of deep-dives into some obscure front-end problem or issue I’ve never heard about before.

Where do you look to stay updated? Share your list of favorites with us!

The post What We’re Reading, 2019 appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2SHgzDZ
via IFTTT

Clear today!



With a high of F and a low of 19F. Currently, it's 23F and Clear outside.

Current wind speeds: 13 from the Southwest

Pollen: 0

Sunrise: December 31, 2019 at 08:10PM

Sunset: January 1, 2020 at 05:38AM

UV index: 0

Humidity: 60%

via https://ift.tt/2livfew

January 1, 2020 at 10:00AM

Tech’s biggest companies are worth ~$5T as 2019’s epic stock market run wraps

Look, this is the last post I’m writing in 2019 and I’m tired. But I can’t let the year close without taking stock of how well tech stocks did this year. It was bonkers.

So let’s mark the year’s conclusion with some notes for our future selves. Yes, we know that the Nasdaq has been setting new records and SaaS had a good year. But we need to dig in and get the numbers out so that we can look back and remember.

Let’s cap off this year the way it deserves to be remembered, as a kick-ass trip ’round the sun for your local, public technology company.

Keeping score

We’ll start with the indices that we care about:

  • The tech-heavy Nasdaq Composite rose 35% in 2019
  • The SaaS-heavy Bessemer Cloud Index rose 41% this year

Next, the highest-value U.S.-based technology companies:

  • Microsoft was up around 55% in 2019
  • Apple managed an 86% gain in the year
  • Not be left out, Facebook rose 57%
  • Amazon posted its own gain of 23% in 2019
  • Alphabet managed to grow by 29%, as well

Now let’s turn to some companies that we care about, even if they are smaller than the Big Five:

  • Salesforce? Up 19% this year
  • Adobe was up 46% in 2019, which was astounding
  • Intel picked up 28% in the year, making it no slouch
  • Even Oracle managed to gain 17% in 2019

And so on.

The technology industry’s epic run has been so strong that The Wall Street Journal noted this morning that, powered by tech companies, U.S. stocks “are poised for their best annual performance in six years.” The Journal highlighted the performance of Apple and Microsoft in particular for helping drive the boom. I wonder why.

How long will we live in the neighborhood of Nasdaq 9,000? How long can two tech companies be worth more than $1 trillion at the same time? How long can the biggest tech companies be worth a combined $4.93 trillion (I remember when $3 trillion for the Big Five was news, and I recall when the group reach a collective value of $4 trillion).1

But the worst trade in recent years has been the pessimists’ gambit. No matter what, stocks have kept going up, short-term hiccoughs and other missteps aside.

For nearly everyone, that is. While tech stocks in general did very well, some names that we all know did not. Let’s close on those reminders that a rising tide lifts only most boats.

2019 naughty list

Several of the most lackluster public tech companies were 2019 technology IPOs, interestingly enough. Who didn’t do well? Uber earns a spot on the naughty list for not only being underwater from its IPO price, but also from its final private valuations. And as you guessed, Lyft is down from its IPO price as well, which is not good.

Some 2019 IPOs did well in the middle of the year, but fell a little flat as the year came to a close. Pinterest, Beyond Meat and Zoom meet that criteria, for example. And some SaaS companies struggled, even if we think they will reach $1 billion in revenue in time.

But it was mostly a party. The public markets were good, and tech stocks were great. This helped create another 100+ unicorns in the year.

Such was 2019. On to 2020!

  1. In time, those numbers will look small. But sitting here on December 31, 2019, they appear huge and towering and, it must be said, somewhat perilously stacked.


from Amazon – TechCrunch https://ift.tt/2ZHdTI4
via IFTTT

A Use Case for a Parent Selector

Having a "parent selector" in CSS is mentioned regularly as something CSS could really use. I feel like I've had that thought plenty of times myself, but then when I ask my brain for a use case, I find it hard to think of one. Well, I just had one so I thought I'd document it here.

A classic parent/child:

<div class="parent">
  <div class="child"></div>
</div>

Say it makes a lot of sense for this parent to have hidden overflow and also for the child to use absolute positioning.

.parent {
   overflow: hidden;
   position: relative;
}

.child {
   position: absolute; 
}

Now let's say there's one special circumstance where the child needs to be positioned outside the parent and still be visible. Hidden overflow is still a good default for the vast majority of situations, so it's best to leave that rule in place, but in this very specific situation, we need to override that overflow.

.special-child {
   position: absolute; 
   bottom: -20px; /* needs to be slightly outside parent */
}

/* Not real, but just to make a point */
.special-child:parent(.parent) {
   overflow: visible;
}

That selector above is fake but it's saying, "Select the parent of .special-child," which would allow that override as needed. Maybe it's like this:

.parent < .special-child {

}

...which is selecting the element on the left rather than the right. Who knows? Probably both of those are problematic somehow and the final syntax would be something else. Or maybe we'll never get it. I have no idea. Just documenting a real use case I had.

You might be thinking, "Why not just use another special class on the parent?" I would have, but the parent was being injected by a third-party library through an API that did not offer to add a class of my choosing on it. Ultimately, I did have to add the class to the parent by writing some custom JavaScript that queried the DOM to find the .special-child, find the parent, then add the class there.

Do y'all have some other use-cases for a parent selector?

The post A Use Case for a Parent Selector appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/37m7GDV
via IFTTT

Wufoo + Zapier

Wufoo has always been great with integrations. They have integrations with specific apps, like Campaign Monitor, Mailchimp, and Typekit, but they also integrate with Zapier, which is sort of like an integration inside an integration.

That's kinda meta, but the idea is actually pretty straightforward: Wufoo integrates with Zapier, which integrates with a gazillion (yes, I did the math) other apps. That opens up a whole world of possibilities for what you can do with a Wufoo form.

Some interesting ones:

  • Trigger an email to send to someone from Campaign Monitor or Mailchimp when they've submitted the form.
  • Collect submissions in a Google Sheet to build you own database of entries.
  • Automatically create a card in Trello once the form has been submitted.
  • Add the person who is submitting the form to a contact list in Salesforce.
  • Push notifications to Slack once someone completes the form.

Wufoo shared their own list of ideas. Let's sum them up here:

  • Wufoo + your customer relationship management (CRM) tool
  • Wufoo + your email tool
  • Wufoo + your file storage tool
  • Wufoo + your website-building tool
  • Wufoo + your project management tool
  • Wufoo + your calendar tool
  • Wufoo + your spreadsheet tool

That one about website-building tools is pretty sweet. This lets Wufoo hook up to something, say WordPress, so that you can do something like publish a new page for every submission. Think about that. You have one integration to send an email to the user when they submit the form and perhaps it contains a link to a personalized page. Voltron powers, unite!

The post Wufoo + Zapier appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2MLy9CT
via IFTTT

India’s richest man is ready to take on Amazon and Walmart’s Flipkart

As Amazon and Walmart-owned Flipkart spend billions to make a dent in India’s retail market and reel from recent regulatory hurdles, the two companies have stumbled upon a new challenge: Mukesh Ambani, Asia’s richest man.

Reliance Retail and Reliance Jio, two subsidiaries of Ambani’s Reliance Industries, said they have soft launched JioMart, their e-commerce venture, in parts of the state of Maharashtra — Mumbai, Kalyan and Thane.

The e-commerce venture, which is being marketed as “Desh Ki Nayi Dukaan” (Hindi for new store for the country), currently offers a catalog of 50,000 grocery items and promises “free and express delivery.”

In an email to users, the two aforementioned subsidiaries that are working together on the e-commerce venture, said they plan to expand the service to many parts of India in coming months. The joint venture has also urged Reliance Jio users to sign up to JioMart to access introductory offers. A Reliance spokesperson declined to share more.

The soft launch this week comes months after Ambani, who runs Reliance Industries — India’s largest industrial house — said that he wants to service tens of millions of retailers and store owners across the country.

If there is anyone in India who is positioned to compete with heavily-backed Amazon and Walmart, it’s him. Reliance Retail, which was founded in 2006, is the largest retailer in the country by revenue. It serves more than 3.5 million customers each week through its nearly 10,000 physical stores in more than 6,500 Indian cities and towns.

Reliance Jio is the largest telecom operator in India with more than 350 million subscribers. The 4G-only carrier, which launched commercial operations in the second half of 2016, disrupted the incumbent telecom operation in the country by offering bulk of data and voice calls at little to no charge for an extended period of time.

In a speech in January, Ambani, an ally of India’s Prime Minister Narendra Modi, invoked Mahatama Gandhi and said, like Gandhi, who led a movement against political colonization of India, “we have to collectively launch a new movement against data colonization. For India to succeed in this data-driven revolution, we will have to migrate the control and ownership of Indian data back to India – in other words, Indian wealth back to every Indian.”

Modi, whose government at the time had just announced regulatory challenges that would impact Amazon and Flipkart, was among the attendees.

E-commerce still accounts for just a fraction of total retail sales in India. India’s retail market is estimated to grow to $188 billion in next four years, up from about $79 billion last year, according to research firm Technopak Advisors.

In an interview earlier this year, Amit Agarwal, manager of Amazon India, said, “one thing to keep in mind is that e-commerce is a very, very small portion of total retail consumption in India, probably less than 3%.”

To make their businesses more appealing to Indians, both Amazon and Flipkart have expanded their offerings and entered new businesses. Both of the platforms are working on food retail, too. Amazon has bought stakes in a number of retailers in India, including in India’s second largest retail chain Future Retail’s Future Coupons, Indian supermarket chain More, and department store chain Shopper’s Stop.

Flipkart has invested in a number of logistic startups including ShadowFax and Ninjacart. Amazon India was also in talks with Ninjacart to acquire some stake in the Bangalore-based startup, people familiar with the matter said.

In recent quarters, Reliance Jio executives have aggressively reached out shop owners in many parts of India to showcase their point-of-sale machines and incentivize them to join JioMart, many merchants who have been approached said.

More to follow…



from Amazon – TechCrunch https://ift.tt/2QByd9h
via IFTTT

Monday, December 30, 2019

Embedded Content in Markdown

Markdown supports HTML, so if you need to, say, embed a YouTube video, you can just copy and paste the embed code from them, drop it into a Markdown document, and you should be good to go. With YouTube specifically, there are other options. But in general, you don't need to do anything special to embed third-party media in Markdown.

You do need to do whatever is necessary for that particular service though. For example, on CodePen, you visit any particular Pen to get the embed code, click "Embed" in the footer, choose options, and ultimately get the embed code. On Twitter, you click a down arrow thingy and choose Embed Tweet, then get forwarded to some other website where you choose options and ultimately get the embed code. It's different on every service.

That's the spirit behind gatsby-remark-embedder from Michaël De Boey, which I recently saw. It spells this out:

Trying to embed well known services (like CodePen, CodeSandbox, Slides, SoundCloud, Spotify, Twitter or YouTube) into your Gatsby website can be hard, since you have to know how this needs to be done for all of these different services.

So what this plugin does is allows you to drop a URL to the thing you're trying to embed on its own line, and it's magically transformed into embed code. For example, you put a URL to a Pen like this:

https://codepen.io/Coderesting/pen/yLyaJMz

...and you get:

<iframe
  src="https://codepen.io/team/codepen/embed/preview/PNaGbb"
  style="width:100%; height:300px;"
></iframe>

...by the time the content makes its way to the DOM.

As an owner of CodePen, I can't help but to remind you that doing it this way means you can't take advantage of having a theme or making it editable. But hey, I get it.

What I think is a smidge funny is that... this is exactly what oEmbed is. The whole spirit of oEmbed is, "Put a URL to a thing on its own line and we'll try to make it into an embed for you." It's a clearly defined spec and there is a clear source of data of sites that support the feature.

But I suppose it's a failing of oEmbed that people either don't know about it or don't use it. Even Embedly seems kinda dead-ish?

The post Embedded Content in Markdown appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2MLmKTM
via IFTTT

Clear today!



With a high of F and a low of 13F. Currently, it's 12F and Clear outside.

Current wind speeds: 8 from the Southwest

Pollen: 0

Sunrise: December 30, 2019 at 08:10PM

Sunset: December 31, 2019 at 05:37AM

UV index: 0

Humidity: 73%

via https://ift.tt/2livfew

December 31, 2019 at 10:00AM

Gatsby and WordPress

Gatsby and WordPress is an interesting combo to watch. On one hand, it makes perfect sense. Gatsby can suck up data from anywhere, and with WordPress having a native REST API, it makes for a good pairing. Of course Gatsby has a first-class plugin for sourcing data from WordPress that even supports data from popular plugins like Advanced Custom Fields.

On the other hand, Gatsby is such a part of the JAMstack world that combining it with something as non-JAMstack-y as WordPress feels funny.

Here's some random thoughts and observations I have about this pairing.

  • Markus says this combination allowed him to "find joy again" in WordPress development.
  • A world in which you get to build a WordPress site but get to host it on Netlify, with all their fancy developer features (e.g. build previews), is certainly appealing.
  • Scott Bolinger has a five-minute tour of his own site, with the twist of some of the pages can be statically-built, and other parts dynamically loaded.
  • There is a GraphQL plugin for WordPress, which I suppose would be an alternate way to yank data in a Gatsby-friendly way. Jason Bahl, the wp-graphql guy, literally works for Gatsby now and has "Development sponsored by Gatsby" as the plugin's Twitter bio. It's unclear if this will be the default future way to integrate Gatsby and WordPress. I sort of suspect not, just because the REST API requires no additional plugin and the GraphQL plugin takes a little work to install. Anecdotally, just installing it and activating it triggers a fatal error on my site, so I'll need to work with my host on that at some point because I'd love to have it installed.
  • We see big tutorial series on the subject, like Tim Smith's How To Build a Blog with WordPress and Gatsby.js.
  • Getting a WordPress site on static hosting seems like a big opportunity that is barely being tapped. Gatsby is just an early player here and is focused on re-building your site the React way. But there are other tools like WP2Static that claim to export a static version of your WordPress site-as is then upload the output to a static host. Ashley Williams and Kristian Freeman get into that in this video (starting about 20 minutes in) and host the result on a Cloudflare Workers site.

The post Gatsby and WordPress appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2SFj8Gp
via IFTTT

A CSS Tribute to SVG

This demo from Jérémie Patonnier is incredible. Make sure to look at it in Firefox because some Chrome bug apparently prevents the entire thing from working.

The big idea is that the entire demo is one <rect> element. That's it. It is duplicated with <use> elements when needed, and each individual duplication is styled via CSS, which can control stuff like stroke, fill, x, y, etc.

Direct Link to ArticlePermalink

The post A CSS Tribute to SVG appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2OUGwNR
via IFTTT

In the shadow of Amazon and Microsoft, Seattle startups are having a moment

Venture capital investment exploded across a number of geographies in 2019 despite the constant threat of an economic downturn.

San Francisco, of course, remains the startup epicenter of the world, shutting out all other geographies when it comes to capital invested. Still, other regions continue to grow, raking in more capital this year than ever.

In Utah, a new hotbed for startups, companies like Weave, Divvy and MX Technology raised a collective $370 million from private market investors. In the Northeast, New York City experienced record-breaking deal volume with median deal sizes climbing steadily. Boston is closing out the decade with at least 10 deals larger than $100 million announced this year alone. And in the lovely Pacific Northwest, home to tech heavyweights Amazon and Microsoft, Seattle is experiencing an uptick in VC interest in what could be a sign the town is finally reaching its full potential.

Seattle startups raised a total of $3.5 billion in VC funding across roughly 375 deals this year, according to data collected by PitchBook. That’s up from $3 billion in 2018 across 346 deals and a meager $1.7 billion in 2017 across 348 deals. Much of Seattle’s recent growth can be attributed to a few fast-growing businesses.

Convoy, the digital freight network that connects truckers with shippers, closed a $400 million round last month bringing its valuation to $2.75 billion. The deal was remarkable for a number of reasons. Firstly, it was the largest venture round for a Seattle-based company in a decade, PitchBook claims. And it pushed Convoy to the top of the list of the most valuable companies in the city, surpassing OfferUp, which raised a sizable Series D in 2018 at a $1.4 billion valuation.

Convoy has managed to attract a slew of high-profile investors, including Amazon’s Jeff Bezos, Salesforce CEO Marc Benioff and even U2’s Bono and the Edge. Since it was founded in 2015, the business has raised a total of more than $668 million.

Remitly, another Seattle-headquartered business, has helped bolster Seattle’s startup ecosystem. The fintech company focused on international money transfer raised a $135 million Series E led by Generation Investment Management, and $85 million in debt from Barclays, Bridge Bank, Goldman Sachs and Silicon Valley Bank earlier this year. Owl Rock Capital, Princeville Global,  Prudential Financial, Schroder & Co Bank AG and Top Tier Capital Partners, and previous investors DN Capital, Naspers’ PayU and Stripes Group also participated in the equity round, which valued Remitly at nearly $1 billion.

Up-and-coming startups, including co-working space provider The Riveter, real estate business Modus and same-day delivery service Dolly, have recently attracted investment too.

A number of other factors have contributed to Seattle’s long-awaited rise in venture activity. Top-performing companies like Stripe, Airbnb and Dropbox have established engineering offices in Seattle, as has Uber, Twitter, Facebook, Disney and many others. This, of course, has attracted copious engineers, a key ingredient to building a successful tech hub. Plus, the pipeline of engineers provided by the nearby University of Washington (shout-out to my alma mater) means there’s no shortage of brainiacs.

There’s long been plenty of smart people in Seattle, mostly working at Microsoft and Amazon, however. The issue has been a shortage of entrepreneurs, or those willing to exit a well-paying gig in favor of a risky venture. Fortunately for Seattle venture capitalists, new efforts have been made to entice corporate workers to the startup universe. Pioneer Square Labs, which I profiled earlier this year, is a prime example of this movement. On a mission to champion Seattle’s unique entrepreneurial DNA, Pioneer Square Labs cropped up in 2015 to create, launch and fund technology companies headquartered in the Pacific Northwest.

Boundless CEO Xiao Wang at TechCrunch Disrupt 2017

Operating under the startup studio model, PSL’s team of former founders and venture capitalists, including Rover and Mighty AI founder Greg Gottesman, collaborate to craft and incubate startup ideas, then recruit a founding CEO from their network of entrepreneurs to lead the business. Seattle is home to two of the most valuable businesses in the world, but it has not created as many founders as anticipated. PSL hopes that by removing some of the risk, it can encourage prospective founders, like Boundless CEO Xiao Wang, a former senior product manager at Amazon, to build.

“The studio model lends itself really well to people who are 99% there, thinking ‘damn, I want to start a company,’ ” PSL co-founder Ben Gilbert said in March. “These are people that are incredible entrepreneurs but if not for the studio as a catalyst, they may not have [left].”

Boundless is one of several successful PSL spin-outs. The business, which helps families navigate the convoluted green card process, raised a $7.8 million Series A led by Foundry Group earlier this year, with participation from existing investors Trilogy Equity Partners, PSL, Two Sigma Ventures and Founders’ Co-Op.

Years-old institutional funds like Seattle’s Madrona Venture Group have done their part to bolster the Seattle startup community too. Madrona raised a $100 million Acceleration Fund earlier this year, and although it plans to look beyond its backyard for its newest deals, the firm continues to be one of the largest supporters of Pacific Northwest upstarts. Founded in 1995, Madrona’s portfolio includes Amazon, Mighty AI, UiPath, Branch and more.

Voyager Capital, another Seattle-based VC, also raised another $100 million this year to invest in the PNW. Maveron, a venture capital fund co-founded by Starbucks mastermind Howard Schultz, closed on another $180 million to invest in early-stage consumer startups in May. And new efforts like Flying Fish Partners have been busy deploying capital to promising local companies.

There’s a lot more to say about all this. Like the growing role of deep-pocketed angel investors in Seattle have in expanding the startup ecosystem, or the non-local investors, like Silicon Valley’s best, who’ve funneled cash into Seattle’s talent. In short, Seattle deal activity is finally climbing thanks to top talent, new accelerator models and several refueled venture funds. Now we wait to see how the Seattle startup community leverages this growth period and what startups emerge on top.



from Amazon – TechCrunch https://ift.tt/2QaZjFq
via IFTTT

While other tech giants fund housing initiatives, Amazon is opening a homeless shelter — inside its HQ

As big tech gets bigger, industry leaders have begun making more noise about helping homeless populations, particularly in those regions where high salaries have driven up the cost of living to heights not seen before. Last January, for example, Facebook and Chan Zuckerberg Initiative, among other participants, formed a group called the Partnership for the Bay’s Future that said it was going to commit hundreds of millions of dollars to expand affordable housing and strengthen “low-income tenant protections” in the five main counties in and around San Francisco. Microsoft meanwhile made a similar pledge in January of last year, promising $500 million to increase housing options in Seattle where low- and middle-income workers are being priced out of Seattle and its surrounding suburbs.

Amazon has made similar pledges in the past, with CEO Jeff Bezos pledging $2 billion to combat homelessness and to fund a network of “Montessori-inspired preschools in underserved communities,” as he said in a statement posted on Twitter at the time, in September 2018.

Now, however, Amazon is taking an approach that immediately raises the bar for its rivals in tech: it’s opening up a space in its Seattle headquarters to a homeless shelter, one that’s expected to become the largest family shelter in the state of Washington.

Business Insider reported the news earlier today, and it says the space will be able to accommodate 275 people each night and that it will offer individual, private rooms for families who are allowed to bring pets. It will also feature an industrial kitchen that’s expected to produce 600,000 meals per year.

The space is scheduled to open in the first quarter of the new year, and is part of a partnership Amazon has enjoyed for years with a nonprofit called Mary’s Place that has been operating a shelter out of a Travelodge hotel on Amazon’s campus since 2016. The new space, which BI says will have enough beds and blankets for 400 families each year, isn’t just owned by Amazon but the company has offered to pay for the nonprofit’s utilities, maintenance, and security for the next 10 years or as long as Mary’s Place needs it.

BI notes that the shelter will make a mere dent in Seattle’s homeless population, which includes 12,500 people in King County, where Seattle is located, but it’s still notable, not least because of the company’s willingness to house the shelter in its own headquarters.

It’s a move that no other tech company of which we’re aware has taken. The decision also underscores other cities’ equivocation over where their own, growing homeless populations should receive support. In just one memorable instance, after San Francisco Mayor London Breed last March floated an idea of turning a parking lot along the city’s Embarcadero into a center that would provide health and housing services and stays for up to 200 of the city’s 7,000-plus homeless residents, neighboring residents launched a campaign to squash the proposal. It was later passed anyway.

Vox noted in report about Microsoft’s $500 million pledge last year that many of these corporate efforts tend to elicit two types of reactions: admiration for the companies’ efforts — or frustration over the publicity these initiatives receive. After all, it’s hard to forget that Amazon paid no federal tax in the U.S. in 2018 on more than $11 billion in profit before taxes. The company also threatened in 2018 to stop construction in Seattle if the city passed a tax on major businesses that would have raised money for affordable housing.

Whether Amazon — one of the most valuable companies in the world, with a current $915 billion market cap — is doing its fair share is certainly worthy of exploring in an ongoing way.

Still, a homeless shelter at the heart of the company is worth acknowledging — and perhaps emulating — too.

“It’s not one entity that’s going to solve this,” Marty Hartman, the executive director of Mary’s Place, tells BI. “It’s not on corporations. It’s not on congregations. It’s not on government. It’s not on foundations. It’s all of us working together.”

Pictured above: A view of the new Mary’s Place Family Center from the street, courtesy of Amazon.



from Amazon – TechCrunch https://ift.tt/37qTTfn
via IFTTT

One Way to Break Users Out of the Habit of Reloading Too Much

Page reloads are a thing. Sometimes we refresh a page when we think it’s unresponsive, or believe that new content is available. Sometimes we’re just mad at the dang site and rage-refresh to let it know we’re displeased.

Wouldn’t be nice to know when a user refreshes the page? Not just that, but how many times? That data can help us trigger some sort of behavior after a certain number of reloads.

A sports site is a good example. If I want to check the score of a game that’s in progress but the scores aren't live-updated, then I might find myself refreshing a bunch.

Our goal is to break users out of that habit. We’ll use our page-refresh-counting powers to let folks know that refreshes are unnecessary, thanks to real-time score updates. And if they reload more than three times? We’ll kick ‘em out of their session. That’ll show them.

Here’s a simple demo of that concept.

Let’s re-create it together. But before we get going, there are few questions we need to answer before we start coding:

  • How can we persist the number of times user reloaded the site? We need a place to keep the number of times user reloaded the site (reloadCount), this place needs to persist that value between the reloads — localStorage sounds like a good solution.
  • How do we detect if user reloaded the site or just came back after few hours? If we store the reloadCount in localStorage it will persist the value between the reloads, but it will keep that value until we remove programmatically or clear the browser storage. It means that if we come back after few hours the site will still remember last reloadCount and may perform logout after first refresh without warning. We want to avoid that and allow user to reload the site two times each time the user comes back after some period of time. That last sentence holds the answer to the question. We need to store the time when the user left the site and then when the site loads again check when that happened. If that time period wasn’t long enough, we activate the reload counting logic.
  • How do we know when the user leaves the site? To store that time, we use beforeunload window event and store that value in localStorage.

OK, now that we have the answers, let’s dive into the code.

Step 1: We’ve gotta store the last reload time

We will store the time of last reload using a beforeunload window event. We need two things: (1) an event listener that will listen to the event and fire the appropriate method, and (2) our beforeUnloadHandler method.

First, let’s create a function called initializeReloadCount that will set our event listener using the addEventListener method on the window object.

function initializeReloadCount() {
  window.addEventListener("beforeunload", beforeUnloadHandler)
}

Then we create a second method that will be fired before we leave the site. This method will save the time the refresh happens in localStorage.

function beforeUnloadHandler() {
  localStorage.setItem("lastUnloadAt", Math.floor(Date.now() / 1000))
  window.removeEventListener("beforeunload", beforeUnloadHandler);
}

Step 2: We need a way to handle and store the reload count

Now that we have the time when the site was last closed, we can proceed and implement logic that’s responsible for detecting and counting how many times the site was reloaded. We need a variable to hold our reloadCount and tell us how many times user reloaded the site.

let reloadCount = null

Then, in our initializeReloadCount function, we need to do two things:

  1. Check if we already have a reloadCount value stored in our localStorage, and if so, get that value and save it in our reloadCount. If the value doesn’t exist, it means that the user loaded the site for the first time (or at least did not reload it). In that case, we set the reloadCount to zero and save that value to localStorage.
  2. Detect if the site was reloaded or the user came back to the site after longer period of time. This is the place where we need our lastUnloadAt value. To detect if the site was actually reloaded, we need to compare the time when the site gets loaded (the current time) with the lastUnloadAt value. If those two happened within, say, five seconds (which is totally arbitrary), that means the user reloaded the site and we should run reload count logic. If the time period between those two events is longer, we reset the reloadCount value.

With that, let’s create a new function called checkReload and keep that logic there.

function checkReload() {
  if (localStorage.getItem("reloadCount")) {
    reloadCount = parseInt(localStorage.getItem("reloadCount"))
  } else {
    reloadCount = 0
    localStorage.setItem("reloadCount", reloadCount)
  }
  if (
    Math.floor(Date.now() / 1000) - localStorage.getItem("lastUnloadAt") <
    5
  ) {
    onReloadDetected()
  } else {
    reloadCount = 0;
    localStorage.setItem("reloadCount", reloadCount)
  }
}

The last function we need in this step is a method responsible for what happens when we confirm that the user reloaded the site. We call that function onReloadDetected, and inside it, we increment the value of reloadCount. If the user refreshed the site third time, we drop the bomb and call our logout logic.

function onReloadDetected() {
  reloadCount = reloadCount + 1
  localStorage.setItem("reloadCount", reloadCount)
  if (reloadCount === 3) {
    logout()
  }
}

Step 3: “Dear user, why you didn’t listen?!”

In this step, we implement the logic responsible for the situation when the user reloads the site to the point of breaching our three-limit threshold, despite our clear warnings to stop doing it.

When that happens, we call our API to log the user out, then we clean up all properties related to the reload count logic. That will allow the user to come back and have a clean account of reloads. We can also redirect the user somewhere useful, like the login screen. (But wouldn’t it be funny to send them here instead?)

function logout(params) {
  // logout API call
  resetReloadCount()
}

function resetReloadCount() {
  window.removeEventListener("beforeunload", beforeUnloadHandler)
  localStorage.removeItem("lastUnloadAt")
  localStorage.removeItem("reloadCount");
}

Bonus: Let’s re-Vue it!

Now that we have the logic implemented, let’s see how can move that logic to a Vue site based on this example:

First, we need to move all of our variables into our component’s data, which is where all reactive props live.

export default {
  data() {
    return {
      reloadCount: 0,
      warningMessages: [...]
    }
  },

Then we move all our functions to methods.

// ...
  methods: {
    beforeUnloadHandler() {...},
    checkReload() {...},
    logout() {...},
    onReloadDetected() {...},
    resetReloadCount() {...},
    initializeReloadCount() {...}
  }
// ...

Since we are using Vue and its reactivity system, we can drop all direct DOM manipulations (e.g. document.getElementById("app").innerHTML) and depend on our warningMessages data property. To display the proper warning message we need to add a computed property that will re-calculate each time our reloadCount is changed so that we can return a string from our warningMessages.

computed: {
  warningMessage() {
    return this.warningMessages[this.reloadCount];
  }
},

Then we can access our computed property directly in the component’s template.

<template>
  <div id="app">
    <p></p>
  </div>
</template>

Last thing we need to do is find a proper place to activate the reload prevention logic. Vue comes with component lifecycle hooks that are exactly what we need, specifically the created hook. Let’s drop that in.

// ...
  created() {
    this.initializeReloadCount();
  },
// ...

Nice.

Wrapping up

And there it is, the logic that checks and counts how many times a page has been refreshed. I hope you enjoyed the ride and you find this solution useful or at least inspiring to do something better. 🙂

The post One Way to Break Users Out of the Habit of Reloading Too Much appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2ZBPbbJ
via IFTTT

Making Room for Variation

Say you have a design system and you're having a moment where it doesn't have what you need. You need to diverge and create something new. Yesenia Perez-Cruz categorizes these moments from essentially ooops to niiice:

There are three kinds of deviations that come up in a design
system:

  • Unintentional divergence typically happens when designers can’t find the information they’re looking for. They may not know that a certain solution exists within a system, so they create their own style. Clear, easy-to-find documentation and usage guidelines can help your team avoid unintentional variation.
  • Intentional but unnecessary divergence usually results from designers not wanting to feel constrained by the system, or believing they have a better solution. Making sure your team knows how to push back on and contribute to the system can help mitigate this kind of variation.
  • Intentional, meaningful divergence is the goal of an expressive design system. In this case, the divergence is meaningful because it solves a very specific user problem that no existing pattern solves.

We want to enable intentional, meaningful variation.

This is an excerpt from her book Expressive Design Systems on A Book Apart, the same publishers as the incredible iconic book Practical SVG.

And while we're linking up books about design systems, check out Andrew Couldwell's Laying the Foundations.

System design is not a scary thing — this book aims to dispel that myth. It covers what design systems are, why they are important, and how to get stakeholder buy-in to create one. It introduces you to a simple model, and two very different approaches to creating a design system. What's unique about this book is its focus on the importance of brand in design systems and creating documentation.

Direct Link to ArticlePermalink

The post Making Room for Variation appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2rE1oQN
via IFTTT

Sunday, December 29, 2019

New Year's Eve

"Off-by-one errors" isn't the easiest theme to build a party around, but I've seen worse.

from xkcd.com https://xkcd.com/2248/
via IFTTT

Clear/Wind today!



With a high of F and a low of 15F. Currently, it's 20F and Clear/Wind outside.

Current wind speeds: 21 from the Northwest

Pollen: 0

Sunrise: December 29, 2019 at 08:10PM

Sunset: December 30, 2019 at 05:36AM

UV index: 0

Humidity: 56%

via https://ift.tt/2livfew

December 30, 2019 at 10:00AM

What it means to be a front-end developer in 2020 (and beyond)

I wrote a piece for Layout, the blog of my hosting sponsor Flywheel.

Stick around in this field for a while, and you'll see these libraries, languages, build processes, and heck, even entire philosophies on how best to build websites come and go like a slow tide.​​

You might witness some old-timer waving their fist from time to time, yelling that we should learn from the mistakes of the past. You could also witness some particularly boisterous youth waving their fists just as high, pronouncing the past an irrelevant context and no longer a useful talking point.

​​They’re both right, probably. As long as nobody is being nasty, it’s all part of the flow.

I've spent this whole year thinking about how I think the term front-end developer is still pretty meaningful, despite the divide in focus. The widening of the role just brings about more opportunity.

Direct Link to ArticlePermalink

The post What it means to be a front-end developer in 2020 (and beyond) appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2Zwsk1s
via IFTTT

Saturday, December 28, 2019

Snow Showers/Wind Early today!



With a high of F and a low of 17F. Currently, it's 22F and Snow Shower/Wind outside.

Current wind speeds: 25 from the Northwest

Pollen: 0

Sunrise: December 28, 2019 at 08:10PM

Sunset: December 29, 2019 at 05:36AM

UV index: 0

Humidity: 88%

via https://ift.tt/2livfew

December 29, 2019 at 10:00AM

Friday, December 27, 2019

Snow Showers Late today!



With a high of F and a low of 27F. Currently, it's 30F and Fog outside.

Current wind speeds: 13 from the Southeast

Pollen: 0

Sunrise: December 27, 2019 at 08:09PM

Sunset: December 28, 2019 at 05:35AM

UV index: 0

Humidity: 97%

via https://ift.tt/2livfew

December 28, 2019 at 10:00AM

So Many Color Links

There's been a run of tools, articles, and resources about color lately. Please allow me to close a few tabs by rounding them up here for your enjoyment.

Curated colors in context

Happy Hues demonstrates a bunch of color palettes in the context of the site itself. That's a nice way to do it, because choosing nice colors isn't enough — it's all about context. It can go bad, as the Refactoring UI blog demonstrates.

Dynamic, Date-Based Color with JavaScript, HSL, and CSS Variables

Rob Weychert shows off how he created date-based color schemes (so that every single day of the past 30 years would have a unique color scheme, each day looking slightly different than the day before).

Calculating Color: Dynamic Color Theming with Pure CSS.

Una Kravets creates color themes just with CSS. No JavaScript. No CSS preprocessing. Just Custom Properties, HSL colors, and some calc() in Calculating Color: Dynamic Color Theming with Pure CSS.

Color Tools

We've tweeted about color tools a lot. We've even threaded them up from time-to-time.

Visualizing Every Pantone Color of the Year

Adam Fuhrer took 20 years of top Pantone colors and matched them with wonderful photos. I love that the photos link to the personal sites of the actual photographers. It weirdly reminds me that you can browse Dribbble by color.

A Handy Sass-Powered Tool for Making Balanced Color Palettes

Stephanie Eckles blogged about using Sass to do math on colors to calculate and graph their luminance, saturation, and lightness, which can give you a by-the-numbers look to see if your color scheme is cohesive or not.

Leonardo

Leonardo is an interactive color palette tool that helps interpolate colors and generate variations based on contrast ratio.

Color Puns

Nice.

The post So Many Color Links appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/364hjXs
via IFTTT

How Many Websites Should We Build?

Someone emailed me:

What approach to building a site should I take?

  1. Build a single responsive website
  2. Build a site on a single domain, but detect mobile, and render a separate mobile site
  3. Build a separate mobile site on a subdomain

It's funny how quickly huge industry-defining conversations fade from view. This was probably the biggest question in web design and development1 this past decade, and we came up with an answer: It's #1, you should build a responsive website. Any other answer and you're building multiple websites and the pain from that comes from essentially doubling the workload, splitting teams, communication problems across those teams, inconsistencies across the sites, and an iceberg of other pain points this industry has struggled with for ages.

But, the web is a big place.

This emailer specifically mentioned imdb.com as their example. IMDB is an absolutely massive site with a large team (they are owned by Amazon) and lots of money flying around. If the IMDB team decides they would be better off building multiple websites, well that's their business. They've got the resources to do whatever the hell they want.

The post How Many Websites Should We Build? appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2MzMDFP
via IFTTT

7 Uses for CSS Custom Properties

I find all seven of these quite clever and useful.

I particularly like using custom properties when you can sneak a variation into a place where you'd normally have to re-declare a whole big chunk of code.

.some-element {
  background-color: hsla(
    var(--h, 120),
    var(--s, 50),
    var(--l, 50),
    var(--a, 1)
  );
}

.some-element.darker {
  --l: 20;
}

Nice.

Direct Link to ArticlePermalink

The post 7 Uses for CSS Custom Properties appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/356K6KE
via IFTTT

Thursday, December 26, 2019

Weird Hill

I'm compromising by picking a weird hill to lie on.

from xkcd.com https://xkcd.com/2247/
via IFTTT

Partly Cloudy today!



With a high of F and a low of 23F. Currently, it's 24F and Fair outside.

Current wind speeds: 5 from the Southeast

Pollen: 0

Sunrise: December 26, 2019 at 08:09PM

Sunset: December 27, 2019 at 05:34AM

UV index: 0

Humidity: 99%

via https://ift.tt/2livfew

December 27, 2019 at 10:00AM

Why do we use .html instead of .htm?

Interesting question from Andy:

The most likely answer from the thread: DOS was a massive operating system for PCs for a long time and it had a three-character limit on file extensions.

Interesting that the first book on HTML covers this specifically:

Where my mind went was server software. I know that web servers automatically do different things with different file types. In a test on my own server (set up to serve a WordPress site), I put some files at the root that all contain the exact same content: <h1>Cool</h1>

  • file.text = file is rendered as plain text in browser (Content-Type: text/plain)
  • file.html = file renders as HTML in browser (Content-Type: text/html)
  • file.htm = file renders as HTML in browser (Content-Type: text/html)
  • file.fart = file is downloaded by browser (Content-Type: application/octet-stream)

You can write code to serve files with whatever content types you want, but in lieu of that, file extensions do matter because they affect how default web servers choose to serve file type headers.

The post Why do we use .html instead of .htm? appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2ETw0AN
via IFTTT

Mostly Clear today!

With a high of F and a low of 15F. Currently, it's 14F and Clear outside. Current wind speeds: 13 from the Southwest Pollen: 0 S...