I am a reporter for the Wall Street Journal, based in London, where I cover finance. I specialize in data reporting, in which I use data analysis and computer coding to find and report enterprise pieces. I mostly program in Python, R and Node.js.
Previously, I was a data reporter at the Miami Herald where I worked on breaking investigations and long-term projects. I covered gun violence, Mar-a-Lago and elections among other topics.
Have a tip or something you think I should be investigating? Get in touch. I'm reachable at email@example.com or at my cell +44(0)7917 315917 where I am on Signal. If you are worried about security, instructions for different methods in which to contact me securely can be found here.
Travelex Ransomware Attack
After a U.K. currency exchange company was the victim of a ransomware attack, a colleague and I started digging into its business, finding outages to its systems were also affecting banks and that other companies shared the same vulnerability used in the Travelex attack.
I was also able to obtain access to the ransomware code that hit Travelex and safely deploy it, opening up a communication platform to the hackers. Confirming some information from that conversation, colleagues and I reported that Travelex paid a ransom worth $2.3 million.
What started with a question of how someone with previously little political engagement came to be photographed with prominent politicans, including President Trump, morphed into a breaking investigation that touched on who gets access to the president, potential campaign finance violations and national security concerns. The story took new turns when a Chinese national was arrested for trespassing at Mar-a-Lago, saying she was trying to attend an event promoted by Cindy Yang, the South Florida massage parlor entrepreneur who also ran a business selling access to President Trump and his family.
This was an enterprise project on school-age children 18 and younger killed by guns in the year since the Parkland shooting in Florida. It was a collaboration between the Miami Herald and The Trace, a nonprofit news organization. I cleaned, fact-checked and analyzed data from the nonprofit Gun Violence Archive, which compiles data from news reports. As part of the fact-checking process, I wanted to request police reports in real time. To do that, I built a script to automatically email public records requests to hundreds of police agencies across the country. The data were used in just about every story, including one I co-reported about gun violence in Florida.
In order to provide election results without having to pay for an expensive dataset that spanned outside of Florida, I found text files published by the state. A single file contained four different datasets, all with a different number of columns. After spending weeks creating a system, I served up results. As we headed into a statewide recount due to contested races, I tracked changes in votes. Because of that collection, the Herald was the first to document how the county north of us tallied fewer votes than prior, becoming a point of scrutiny. After, a colleague and I broke down what went wrong and possible fixes for 2020.