The Net Fishing Guy

At a beach south of Hilo I spent about 20 minutes watching this guy watch the water.

Bunched under his arm was a fishing net. He was standing on some rocks, staring into a pool. Leaning forward, ready to strike. Like a leopard.

Every minute or so he would stand up, loosening his stance. Readjust, stepping one or two feet to one side or another, angling.

I imagine that this was one of his usual spots. It’s hard to tell what exactly he was looking for. As he stood there, you could see in his stance that he was intent on accomplishing a single mission.

It went on like this. Standing at the ready, adjusting stance slightly, fiddling a little with the net, to make sure the weighted beads around its frill were hanging down and flat.

The tide was coming in.

I don’t know what his trigger was, but he saw his target through the chop and foam. Like a starburst his net, easily six feet across, cast wide for an instant before sinking to the bottom.

I watched him haul in the net, scooping nylon in voluminous bunches. A tangled snapper came in with one of the final pulls.

He hugged the net close as he walked across the jagged lava rocks to an orange five-gallon bucket he had perched on another rock, higher up away from the surf.

He fished his quarry out of the net, placed it in the bucket, put on the lid, bunched up his net, and tossed it over his shoulder. He waded through the rising tide, crossed through the beach. He put the bucket and his net in the back of his mini van, parked beneath some trees. And he drove off.

One cast, one fish. More anecdotal evidence that providence favors the patient and practiced.

How To Send A Haunted VC/Startup Newsletter

As you may or may not know, I have a newsletter I’ve been sending out since May 2016 on a roughly weekly basis. If you want to keep up with what I write at the day job and the most interesting links I find while procrastinating at my day job, consider subscribing: Rowley.Report.

Considering it’s Halloween and all, I figured I should share some of the tips and tricks I use to produce that content.

You have to understand that to produce something like that every week, an elaborate conjuring ritual is involved. Trick or treat?

  1. Start by arraying five beeswax candles in the shape of an upside down star on the floor. Light the candles.
  2. Fashion a miniature boat out of cocktail bar coasters and glue, and use one of the heavy metal pens they give you to sign your bill at the Rosewood as a mast.
  3. Print out the most recent leaked term sheet and fashion it into a sail, affixing it to the makeshift boat.
  4. Anoint the small boat with samples of billionaire founders’ blood, sweat, and tears.
  5. Place the boat in the middle of the inverted star on the floor.
  6. Burn and scatter the ashes of one of the last remaining hard copies of Georges Doriot’s Manufacturing class notes into and about the small boat.
  7. For safety, blow out the candles in your house and take your boat to the nearest body of water, ideally while riding a Bird or Lime scooter.
  8. Short-circuit one JUUL e-cigarette battery such that it begins to heat up, and place it in the boat.
  9. Also place a USB stick containing the weekly output of charts and all items, read and unread, from my RSS feedreader.
  10. Push the boat into the open water. If timed correctly, the short-circuiting JUUL battery will light the whole thing on fire, resulting in a kind of viking funeral effect. Like this: 🔥⛵
  11. Summon the Owl by hooting vigorously toward the blackness of the woods. Speak of phenomenal risk-adjusted returns with it, in tongues, until sunrise.
  12. Go home, and sleep.
  13. Kind of all in one fell swoop: Merge accumulated notes in iA Writer & Drafts 5 into a new document; edit markdown in iA Writer; in iA Writer, left-swipe with two fingers to reveal well-rendered and semantic HTML; copy; paste into new Mailchimp email campaign.
  14. Press send.
  15. Wait.

My Grandfather’s Ghost In The Watch

Earlier today, Apple announced a raft of new phones, which no doubt will excite a lot of people. Apple also announced a new version of its Apple Watch today—Series 4.

One of the watch’s new features is very near and dear to me: the conductive pads on the back which help the watch capture electrical activity and display it as an electrocardiograph.

Image credit: Apple

Back in the late 1950s, my grandfather, Donald Rowley, co-invented the gel electrode alongside fellow pathologist Seymour Glagov. From his 2013 obituary published by the University of Chicago’s news office:

At the time, there were no tools to monitor heartbeats over long periods; so they invented one. They worked with an undergraduate student at UChicago and a watch repairman to convert a spring-wound pocket watch into a portable pulse counter and built tiny electrical sensors that could be glued reliably to the chest—the first gel electrodes. The gadget later would be scaled up with help from the Elgin National Watch Co. and Illinois Bell Telephone.

This simple device, no bigger than a deck of cards, accurately could record the electrical activity of the heart for more than 24 hours. It heralded the birth of ambulatory cardiology. Rowley and colleagues described their counter in a report to Science in 1959. They performed additional studies on 100 volunteers, showing enormous variation in daily heart rates.

They didn’t patent their invention because, as my grandfather put it, it was “simply not part of the academic culture.”

No longer a wind-up device made of watch parts, a descendent of my grandfather’s ticker-tracker lives on in watch form, which I think is pretty wild.

News’s Future Formats Favor Fortunate Incumbents

As a somewhat accidental member of the industry, I spend a fair bit of time thinking about media.

It’s for this reason I was so happy to come upon a two-part series from Tristan Ferne of the BBC’s research and development group.

Part 1 of the “Beyond 800 words” series, published back in September 2017, opens with the following:

The 800-word article is still the dominant form of online news from most publishers. This largely seems to be a legacy from printed newspapers and to a lesser extent this is true for online news video online too, with much of it still produced in traditional made-for-TV formats albeit shorter.

And in Part 1 Ferne identifies and briefly discusses a number of new formats like listicles, live blogs, and structured news.

Part 2, published last week, covers recent research work at the BBC around how Gen Z (18-26 year olds) wants to consume the news. The article discusses some of their methodology and research findings, and it presents examples of prototype news formats and interaction models that appealed to Gen Z audiences.

The thing about those formats – which include scrollable video, swipe to view reactions/polls, a section-by-section “choose your own format” model, and others – is that they are really nice, but also incredibly resource-intensive to produce at scale. For that modular format one, imagine having to:

  • Write a long version of the article
  • Write a short version of the article
  • Break each version into modular sections
  • Produce video for each section
  • Edit, view, and test the multiple formats to ensure they form a cohesive narrative
  • Ship the damned thing

That’s difficult for a small or medium-sized newsroom to do more than once a month. A dedicated team – bare minimum: a researcher, a writer, a video and sound editor, and an editor/production lead – could probably push something out once a week.

It’s all to say that if there’s a format race, it’s likely to be between bigger, well-resourced newsrooms. There’s definitely room for small newsrooms which are built around a novel format. Ferne references Circa as an example. But that’s a high stakes bet, because you’re wagering on both your ability to find and report on important and interesting stories and, moreover, that the fancy new format stays relevant among a fickle and increasingly fast-moving audience.

That’s going to be a tall order.

You can subscribe to my newsletter, the Rowley Report, at Rowley.Report.

Three Markdown Tools I’ve Known And Loved

There have been many programs that build upon Markdown’s principle of readability in pure-text formatting, and I wanted to share a couple of them here.

Since issue #2 of my newsletter, I’ve written almost everything in Markdown, the text-to-HTML conversion software originally written by John Gruber, the Daring Fireball himself.

It’s shockingly easy to use when you get the hang of its syntax. Fortunately, there are a number of “cheat sheets” available to help you get started if you’re not familiar with it. I personally prefer writing in Markdown (specifically MultiMarkdown) on a plaintext editor to writing in a WYSIWYG environment these days because it’s a little closer to the metal and gives me a lot of options for how I want to share my work.

Since the original release of Markdown, a lot of developers have built Markdown editors into their software to excellent effect. Since Markdown was originally built by and for writers, it’s no surprise that it’s used as the markup language of choice for Github pages, blog posts on Ghost and other blogging platforms, and other places where text is written and published on the web.

What I find most interesting about Markdown is the design philosophy. First and foremost, as Gruber says in the original spec:

“The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.”

There have been many other programs that build upon Markdown’s principle of readability in pure-text formatting, and I wanted to share a couple of them here. is a simple, web-based Markdown editor with a pane that renders your Markdown as formatted HTML in really-close-to-real-time. It’s a great site for playing around with Markdown for the first time.

(It’s kind of like Codepen for text.)

iA Writer

iA Writer, is a minimalist and un-opinionated Markdown editor for MacOS and iOS, and it’s been my Markdown editor of choice basically since it launched. I first used it on my first generation iPad with that amazing keyboard dock, and continued to use it as iA built the Mac app and built out the feature set.

One of my favorite features of iA Writer is its syntax highlighting. Unlike with a code editor, iA Writer lets users highlights English words based on the part of speech they represent. So, if I’m working on a sentence that’s lexically dense, I’m able to visualize its bits and pieces to ensure that I’m not veering too deeply into run-on territory.

It also features easy integration with Dropbox and iCloud Drive, full-screen editing, metadata support by way of MultiMarkdown, a range of export modes, easy image/file embedding, and custom document templating for PDF exports, a feature near and dear to my heart.

There are other Markdown-driven editors out there, including Ulysses and Scrivener, which are geared toward toward users who want more software-based assistance with project management and organizational structure. I’ve tried Ulysses and quite liked it, but I still prefer iA Writer’s somewhat hands-off approach.

At time of writing, iA Writer is still my tool of choice for writing my weekly-ish newsletter. It’s one of the best pieces of software I use and can’t recommend it highly enough.


Marp is an open source, cross-platform editor for making presentations using Markdown. It utilizes Github-flavored Markdown’s syntax and a simple text editor with more traditional syntax editing and so-called “directives” for how Marp’s rendering engine treats pagination and aspect ratios. To that end, using Marp, you can set aspect ratios for standard paper sizes in A and B 0-8, as well as other popular aspect ratios.

For now, the software is still in a pre-release beta, and it lacks some of the features of more fully-developed Markdown presentation apps like Deckset or the Remark.js library, but it’ll be interesting to see where the project goes.

Closing thoughts

I am a big, big fan of Markdown, and since it’s become the default plain-text input syntax for extremely popular websites like Github, reddit, Hacker News, StackExchange and others, it seems to have cemented itself as the default standard on the web.

However, like anything that isn’t purely WYSIWYG, Markdown still feels like a thing for programmers, power-users and professionals. This reputation, to me, feels somewhat undeserved because, again, it’s really freaking easy to pick up.

So, if you’ve never tried writing in plain text like this, give a Markdown editor a spin. There are literally hundreds of great options out there.

Autogenerating Currency Conversion Formulas In Google Sheets Using GOOGLEFINANCE(CONCATENATE())

I forgot where I heard this, but on some or another podcast it was declared that “Microsoft Excel is the gateway drug to programming.” And I’m coming to believe this more and more.

I’m someone with more than a passing interest in programming who simultaneously lacks any serious proficiency with writing code. Irony of ironies, right? Also, I’m now in this weird liminal space between being really good at manipulating data in a spreadsheet-type environment and seeing the possibility of what I can do with a real programming language while still sorely lacking in the practical know-how to get a lot of things done.

And that’s why I’m still tied to using Excel and Google Sheets for a lot of my data analysis work. Both are fine tools, albeit with their own quirks and limitations. Although Excel is good for the kind of work I do, which typically involves big CSVs that Google Sheets kind of chokes on, I strongly prefer Google Sheets for its more expressive functions and easy connectivity to outside data stores, including Google’s own services.

It’s for this reason that I’m going to be covering the subject of creating abstract, auto-generating formulas in Google Sheets only. Also, I’m like 90% sure one can’t use CONCATENATE() in Excel for the use case I’m presenting here, but I’d love to be proven wrong.

The challenge

Part of my job is to analyze venture capital data, and oftentimes the scope of my analysis expands beyond US borders. Accordingly, I often have to deal multiple currencies, which can be a pain.

So imagine a column containing data for an arbitrarily large number of VC deals priced in an arbitrary number of different international currencies. (For the sake of this example, let’s assume these are all fairly recent deals, so historically accurate currency conversion figures aren’t important.)

Remembering that our dataset can be arbitrarily large, what’s the easiest way to convert those foreign currencies into USD so we can make comparisons on equal terms?

An example dataset

Below, to avoid using proprietary data, I fabricated an array of 20 sample deals using a random number generator and multiplying its output by different scalars depending on the round type. The size of deals do not necessarily correspond to any real-world averages and are here for demonstration purposes only.

Also, I picked 20 rows because it’s small enough to fit in a screenshot. For a sample size of 20 rows, it’s still easy to do all the conversions by hand sorting, but the ideal solution would scale to sheets with hundreds or thousands of rows and a huge combination of currency conversions. This is why we’re going to emphasize abstraction here.

Here’s what we’ve got to work with…

Screenshot 2017-03-23 14.07.14

(Yes, the numbers are hideous. Deal with it.)

Here, we have sample deals from five different countries: the USA, Canada, the UK, France, and Germany. (I intentionally picked two countries that use the same currency for reasons that will become apparent later)

Converting foreign currencies to USD, some methods of varying efficiency

We have several choices for how we want to make the conversions of foreign currencies to USD. Here, I’ll share three ways, with each successive option being more abstract and scalable than the last. A list of top books will be helpful for you to become a consistently profitable trader.

To remind ourselves of what we want to convert our currencies into here, we’ll add a “Target Currency” column and set all values in that column to USD. And we’ll also add a “Conversion Rate” column where we’ll set our conversion ratio. (This column isn’t absolutely necessary, strictly speaking, but it keeps things organized and clear from a visual perspective.)

Screenshot 2017-03-23 14.22.16

Brute force

Let’s say you’re a masochist with a fetish for tedium and frustration. This is the method for you.

Remember, I said “masochist” and not “primitive cave dweller” here, so I’m going to run on the assumption that, being an enlightened user of spreadsheeting tools, you understand how to sort columns.

So we start by sorting the “Base Currency” column to make things at least somewhat easier to deal with… Note how all the base currencies are now grouped.

Screenshot 2017-03-23 15.09.54

Now for the brute force part. We search Google for each conversion pair (“CAD USD,” “EUR USD,” etc.), copy and paste the ratio into our spreadsheet, and manually fill down.

Brute Force Conversion Table Making

For this small sample set, it took me almost exactly a minute to build a conversion column using brute force. But this is only for a small handful of currency pairs. If I was dealing with dozens of pairs, this would have been a much bigger task.

Enter The Joys of GOOGLEFINANCE()

Like I may have mentioned earlier, one of the nice parts about Google Sheets is that it gives users direct access to some of Google’s services directly through a series of bespoke functions.

For example, the GOOGLETRANSLATE() function lets users translate strings in spreadsheets from one language to another using the Google Translate engine. In conjunction with DETECTLANGUAGE(), one can generate some interesting formulas.

But here we’re going to talk about the joys of the GOOGLEFINANCE() function.

There’s standard syntax for pulling current and historical stock market prices:

GOOGLEFINANCE(ticker, [attribute], [start_date], [num_days|end_date], [interval])

So, if I wanted to find the closing price of Apple on March 7, 2014, I’d write the formula like this,


And Google automatically returns that information and builds a table to display it.

It turns out that the GOOGLEFINANCE() function also lets you find the current conversion rate between two currencies. (Unfortunately, at time of writing, it doesn’t let you find historical conversion rates.)

Here’s that syntax:


Using the official, three-character currency codes, we’d convert Canadian Dollars to USD using this function:


Now, for our table of VC deals we want to convert into USD, we could hard-code the currencies we want to convert into our formulas by group.

Here are the other hard-coded formulae:


Google Finance will return the current conversion rate and embed it as a number in the spreadsheet.

Below is a screenshot of our Google Sheet with an escaped version of the formula next to the conversion rate. (Note what’s in the formula bar for the selected USD -> CAD conversion.

Screenshot 2017-03-23 16.57.13

And, once we’ve hardcoded all the formulas, all one would have to do is drag the corner of the cells down to fill in the rest of the table with the appropriate values.

Just like the original “brute force method” this is all well and good if the number of currency pairs is small, there are few rows, and any re-sorting of the rows will be on a whole-sheet basis.

Now, on to the fun part…

Dynamically generating currency conversion formulae using GOOGLEFINANCE(CONCATENATE())

Alright, so we start with the general form of a currency conversion rate query in Google Sheets, the same as what was previously listed.


Now, let’s look at our table and its columns.

  • Column C: “Base Currency”
  • Column D: “Target Currency”

Hmmm… seems familiar… If only there was a way to join those elements into a formula.

Enter Google Sheets’s CONCATENATE() function, which is similar to its cousin CONCAT(), except for the important fact that it lets you concatenate an arbitrary number of elements.

Importantly, in Google Sheets, the output of the CONCATENATE() function is not simply treated as a string. Its output is usable inside another function.

So, to start, let’s concatenate cells D2 and E2 using the following formula:


And as we can see, the result is “CADUSD” which is is the required pairing of source and target currencies we need in our formula.

Screenshot 2017-03-23 17.17.35

Now that we’ve proven we can build our one part of our formula using CONCATENATE(), let’s see if we can build the rest of it.

Typing in the following formula produces outputs what we need to give to GOOGLEFINANCE()…


So, now we can bring it all together…


Before showing the nice gif of how it all “just works,” give me one second to explain how one formula will be able to generate a conversion ratio for all of the currencies in our set.

The D2 and E2 cell references are relative, which means that as I drag the equation down the sheet it will still pull from the cells in the two adjacent columns, but will take the value from each row. So that same equation, if applied to, say, row 3, would read from D3 and E3. From row 4, it would pull from D4 and E4, and so on down the sheet.

So, here’s the moment you’ve been waiting for…

At this point, it’s just a matter of multiplying the “Deal Amount” column by the “Conversion Ratio” column to generate the “Converted Amount.”

Screenshot 2017-03-23 17.54.39

And there you have it…

Next Steps

One of the features of this kind of query with GOOGLEFINANCE() is that it dynamically updates as new currency exchange rate data becomes available. This can be viewed as either a bug or a feature, depending on your particular needs.

In the event you don’t want these numbers to change, simply copy the contents of the columns that update dynamically and paste those cells in “as values”. (In Google Sheets, goto Edit -> Paste Special -> Paste Values Only [⌘ + Shift + V].) As this suggests, it just pastes in the alphanumeric values of the cells, and strips out the formula data.

In the event that you still want to edit the formulas, which in variably you will, my suggestion is to duplicate the tab so you have one dynamic, editable version, and the static version you can work off of in later analysis.

That’s All, Folks!


This has been a somewhat protracted way of saying that a little bit of abstraction makes for a time-saving and viscerally satisfying (at least from my perspective) data analysis experience.

CONCATENATE() can be used outside or inside other functions in Google Sheets to build flexible, extensible auto-generating formulas in your spreadsheets, and I’m very much looking forward to a exploring how else it can be applied in the work that I do.

This is also my first time offering up one of these tutorials, so if you liked it and want me to make more of these, please let me know! Future topics I want to cover include pivot tables, demonstrating a superior alternative to VLOOKUP() and INDEX(MATCH()), and a couple of others.

One Year Ago, I Graduated From College

One year ago, almost to the date, I finally managed to graduate from UChicago with general honors.

I did “the scenic route” through college, taking a long break after three years to work on a startup, only to come back and finish on relatively short notice.

It was worth it to go back and finish, and I’m happy I took the time off in the middle. Even though taking that time off involved a lot of struggling, and ultimately resulted in failure of the project, I maintain it was the best thing for me to do at the time. I’d do like 95% of it all over again.

In general, the last year has been good. I’ve built a platform for myself through my weekly(-ish) newsletter, and gained credibility by writing for Mattermark and now Crunchbase.

The most rewarding thing, though, has been my continued work with the Python Software Foundation. It’s an incredible organization consisting of phenomenally smart and kind people, and I have the privilege of working with some great people, including one of my oldest friends, in making Startup Row happen.

I’ve also found the thing I want to do with the next couple decades of my life, which is to find and invest in interesting startups. And anything I can do to accelerate myself toward that end will be pursued.

In general, it’s been a pretty good 365-ish days.

I’ve learned a lot in the past year, and I’m still figuring out how I want to articulate it. Stay tuned for more.

Also, as petty as it sounds, it still feels good to stick it to my high school guidance counsellor who thought applying to so-called tier-three schools was “a bit of a reach” for me.

Opportunity in Two Flavors

One night this week I met up with one of my best friends. I don’t get to see him that often, but that’s alright. It’s one of those friendships that picks up right where it left off, even if it’s been weeks or months.

He’s had a lot of opportunities, and so have I. This friend of mine is a bit older than me, and, accordingly, has moved farther on in his career. He’s one of these people with a solid job and, like, three side projects, all of which are doing phenomenally well. If he wasn’t so down to earth, it’d be all too easy to resent the guy’s success.

Somehow, we got to talking about opportunities in the meta sense, and I realized his definition of opportunity and my definition of opportunity are quite different. And, now that I’ve had a cumulative fourteen hours on airplanes without internet this week to reconcile these two differing definitions, I think I’ve been won over by his. Continue reading “Opportunity in Two Flavors”

Snapchat, By Some Numbers

Snap Inc., maker of the Snapchat app and face-mounted camera glasses called Spectacles, filed its S-1 with the SEC this past week, the first major step toward going public.

I thought it’d be interesting to compare Snap Inc. to Facebook, considering that Snap CEO Evan Spiegel’s IPO roadshow message is that his company is “The next Facebook,” according to coverage in the Wall Street Journal.

I spent some time digging through Snap’s S-1 filing and found some interesting tidbits:

  • Snap aims to raise $3 billion in its IPO at a $25 billion valuation, up just slightly from the $20 billion valuation it reached in its $1.8 billion “extended” Series F round closed in May 2016 (and reported on here in the 4th edition of this newsletter)
  • Snapchat currently boasts 158 million daily active users. (For reference: the company reported 110 million DAUs in December 2015.)
  • These DAUs are currently creating 2.5 billion “Snaps” per day.
  • 60% of these users use the chat service every day.
  • DAUs check Snapchat more than 18 times per day.
  • Snapchat users spend an average of 25-30 minutes each day.

I found some comparative figures from this article published in ZDNet in February 2012, on the day Facebook filed its S-1.

  • Facebook had 483 million daily active users during the month of December 2011. (Roughly 3x Snapchat.)
  • In that same month, Facebook users uploaded 250 million photos daily to FB. There were an average of 2.7 billion likes and comments made during the 3-month period ending December 31, 2011. (Roughly 1/10th of the photos uploaded but a comparable number of aggregate interactions to Snapchat at time of IPO filing.)
  • Facebook users spent an aggregate of 9.7 billion minutes per day on the desktop site, which works out to about 12-13 minutes per day for each of FB’s then 845 million monthly active users. This also does not count time spent on the mobile app. (To compare: FB users spent slightly less time than Snapchat users on a per-day basis.)

Oh, and Facebook was also profitable and had comparatively more valuable assets and cash on hand at time of its IPO filing.

One of the metrics I find most interesting is to compare the per-user value of Snapchat compared to other platforms and services. I arrive at these figures by dividing the number of Daily Active Users by the then-current (or desired) valuation of the platform. (I’d prefer to use MAUs, but, tellingly, Snap Inc didn’t disclose MAU statistics in its S-1 filing.)

Per user values (DAU/valuation) are as follows:

  • Snapchat: $25 billion valuation / 158 million DAU = ~$158 per DAU
  • Facebook: $103 billion at IPO / 483 million DAU reported in S-1 = $213.25
  • Twitter: $14.2 billion at $26 IPO price / 100 million DAU = $142
  • Line: $7 billion IPO price on July 14, 2016 / 220 million DAU in 2016 = $31.81
  • WhatsApp: $16 billion at time of acquisition by FB / 324 million DAU (72% of 450 MAU, via Sequoia Capital) = $49.38
  • Instagram: $1 billion acquisition by Facebook in April 2012 / 1.38 million DAU in April 2012 (That’s via data from ComScore, but data from AppData suggested that Instagram had only 860,000 DAU at acquisition) = $724.63 per user at 1.38M DAU

It’s interesting to look at these figures, because it might hint at how Snap values and intends to position itself going forward. Whatever signal can be divined from Snap’s per-user-value figures points toward the company’s intention to aggregate attention and data in the same way as Facebook and Twitter did, rather than provide a simple service like Line and WhatsApp. In other words, the per-user value Snap Inc aims to show its investors is in the same ballpark as other massive social platforms of previous generations.

As a platform, Snapchat is compelling for a number of reasons, including its unique augmented reality components, an innovative user experience design paradigm and, importantly, a strangle hold on users’ attention by way of its ephemeral messaging and video play-back features. Whether Snap Inc is able to capitalize on its strengths and deliver on its potential value as a platform is still uncertain.

However, I remain skeptical that Snap Inc will be the next Facebook. I doubt Snap will attain Facebook’s scale or scope, and I’m not the first to point out that Snap’s current price feels a bit expensive.

We’ll see what happens.