By Julia Jacobs via NYT Arts https://ift.tt/pAFic7o
Featured post
INTERVIEW WITH frankie(n)
https://whatsmusic.de/frankien-interview-creating-the-singer-songwriter-genre-standing-against-racism-and-a-memorable-open-mic-episode/
Tuesday, May 16, 2023
Show HN: Capillaries: Distributed data processing with Go and Cassandra https://ift.tt/J9RM4ET
Show HN: Capillaries: Distributed data processing with Go and Cassandra I started thinking about this approach after working on a large-scale project for a major financial company where our group developed a distributed in-house data processing solution. On a regular basis, it ingested a few gigabytes of financial data and, within a tight SLA time limit, produced a lot of enriched/aggregated/validated data for a number of customers. Sometimes, source data had errors, so operators with domain knowledge had to verify data validity at some checkpoints, immediately make corrections, and re-run parts of the workflow manually. The solution involved complex web service orchestration, custom database and was very demanding on the infrastructure availability. Capillaries is a built from scratch, open-source Go solution that does just that: ingests data and applies user-defined transforms - Go one-liner expressions, Python formulas, joins, aggregations, denormalization - using Cassandra for intermediate data storage and RabbitMQ for task scheduling. End users just have to provide: - source data in CSV files; - Capillaries script (JSON file) that defines the workflow and the transforms; - Python code that performs complex calculations (only if needed). The whole data processing pipeline can be split into separate runs that can be started independently and re-run by the user if needed. The goal is to build a platform that is tolerant to database and processing node failures, and allows users to focus on data transform logic and data quality control. “Getting started” Docker-based demo calculates ARK funds performance, using EOD holdings and transactions data acquired from public sources. There are also integration tests that use non-financial data. There is a test deploy tool that uses Openstack API for provisioning in the cloud. https://capillaries.io May 16, 2023 at 12:13AM
Show HN: Legend-State 1.0 – The fastest React state library https://ift.tt/bsIkmVf
Show HN: Legend-State 1.0 – The fastest React state library After almost a year of development and iterating, we just released Legend-State 1.0. It's the fastest React state library and is very easy to use, based on Observables (Signals) with fine-grained reactivity and built-in persistence. I'd love to know what you think, and I'm also happy to answer any general JavaScript performance questions if you want since I've gone very deep into optimizing . https://ift.tt/VKH1QbT https://ift.tt/dkO5qFu May 15, 2023 at 11:06PM
In ‘Succession,’ Democracy Goes Up in Smoke
By James Poniewozik via NYT Arts https://ift.tt/5k6wWf1
‘A Bit Spooky’: The New Shark Species With Bright, White Eyes
By Lauren McCarthy via NYT Science https://ift.tt/ATkDbtI
Monday, May 15, 2023
Meet ‘Chonkosaurus,’ the Thick Snapping Turtle Stealing Hearts
By Eduardo Medina via NYT U.S. https://ift.tt/4MFITqO
In Blow to Junta, Thai Voters Overwhelmingly Back Opposition Parties
By Sui-Lee Wee and Muktita Suhartono via NYT World https://ift.tt/zesT84v
12 Million People Are Under a Heat Advisory in the Pacific Northwest
By McKenna Oxenden and Chris Cameron via NYT U.S. https://ift.tt/UeQKqvz
Show HN: Terminal Notifications for Long Processes over Slack and Discord -Nudge https://ift.tt/80MRt6r
Show HN: Terminal Notifications for Long Processes over Slack and Discord -Nudge Hi HN! Nudge is an effortless notifier for long-running terminal commands. No prompt needed, you can set it up to automatically notify you for completion of commands running over X minutes over Mac, Slack, and Discord. It can even notify you of commands running over ssh without installing it on the remote host. I built it to notify me of long, monolithic builds at my workplace. Check out Nudge Notifier at NudgeNotifier.com https://ift.tt/ryMTUp0 May 14, 2023 at 06:21PM
Show HN: Online and CLI Tool to backup password protected data with QR codes https://ift.tt/dKNCrAp
Show HN: Online and CLI Tool to backup password protected data with QR codes https://ift.tt/r9ZfMmG May 14, 2023 at 06:17PM
Sunday, May 14, 2023
North Carolina Governor Vetoes Abortion Ban but Faces Override
By Kate Kelly via NYT U.S. https://ift.tt/VpkUNlq
It’s a Toddler’s Party. How About a $75,000 Budget?
By Molly Creeden via NYT Style https://ift.tt/7k6yeO5
Trump’s Lesson for the Media and Ron DeSantis
By Ross Douthat via NYT Opinion https://ift.tt/pj1QSP0
Welcome to the Era of Very Earnest Parenting
By Caitlin Moscatello via NYT Style https://ift.tt/WV2Omvo
First Came the Sports Betting Boom. Now Comes the Backlash.
By Eric Lipton and Kevin Draper via NYT Sports https://ift.tt/i4cZEe2
Can My New Boyfriend Stop My Ex From Visiting Our Dog?
By Kwame Anthony Appiah via NYT Magazine https://ift.tt/0M2Eckd
Before Dylan, There Was Connie Converse. Then She Vanished.
By Howard Fishman via NYT New York https://ift.tt/SvoFkl1
Saturday, May 13, 2023
The Pandemic Threat That Hasn’t Gone Away
By Zeynep Tufekci via NYT Opinion https://ift.tt/bK78se4
This Man Is Not Meghan Markle
By Callie Holtermann via NYT Style https://ift.tt/2VO8o9e
Show HN: A game about guessing which YT video is the most popular https://ift.tt/JRhbiPg
Show HN: A game about guessing which YT video is the most popular https://ift.tt/57ozURI May 13, 2023 at 01:06AM
My Mother, the Stranger
By Caitlin McCormick via NYT Style https://ift.tt/oOVrSb8
The ‘Devil Bird’ Lands in New York, With More Likely to Come
By James Crugnale via NYT Science https://ift.tt/wt3aK7M
How Deep-Diving Sharks Stay Warm Will Take Your Breath Away
By Darren Incorvaia via NYT Science https://ift.tt/SarxTZg
Friday, May 12, 2023
New York City Starts Busing Migrants North. Counties Are Fighting It.
By Dana Rubinstein and Christopher Maag via NYT New York https://ift.tt/oK9M6Ft
Suspect in Natalee Holloway’s Aruba Disappearance to Be Extradited to U.S.
By Mike Ives via NYT World https://ift.tt/4um6HBQ
George Santos Is Charged With Fraud and Lying in 13-Count Indictment
By Grace Ashford and Michael Gold via NYT New York https://ift.tt/wQdfki8
F.D.A. Eases Ban on Blood Donations From Gay and Bisexual Men
By Christina Jewett via NYT Health https://ift.tt/tZLTO17
CNN Chairman Defends Decision to Host Trump Town Hall
By Michael M. Grynbaum and Benjamin Mullin via NYT Business https://ift.tt/C0zQdKD
The Manufactured Panic Over Biden’s Age
By Charles M. Blow via NYT Opinion https://ift.tt/QG2bp1H
CNN’s Trump Forum Was a Combative Preview of Political Coverage to Come
By Michael M. Grynbaum via NYT Business https://ift.tt/svoktpw
Thursday, May 11, 2023
My Boyfriend Wants a Prenup. Can I Say No?
By Philip Galanes via NYT Style https://ift.tt/aHfVDbN
Wednesday, May 10, 2023
Show HN: Askhn.ai – generate answers based on expertise on HN https://ift.tt/yYRfp2d
Show HN: Askhn.ai – generate answers based on expertise on HN https://askhn.ai/ May 10, 2023 at 11:10AM
Show HN: Awesome OpenAI Whisper List https://ift.tt/SY2aXqQ
Show HN: Awesome OpenAI Whisper List https://ift.tt/peSKGVH May 10, 2023 at 11:14AM
Too Many Older Men Are Still Screened for Prostate Cancer https://t.co/g3YXnlnJ3C
Too Many Older Men Are Still Screened for Prostate Cancer https://t.co/g3YXnlnJ3C
— frankie nash (@frankienash54) May 10, 2023
from Twitter https://twitter.com/frankienash54
May 10, 2023 at 10:45AM
via frankienash54
Show HN: Novika – a free-form, moldable, interpreted programming language https://t.co/6dWLgPoUM1 https://t.co/ApUoEiaPdb
Show HN: Novika – a free-form, moldable, interpreted programming language https://t.co/6dWLgPoUM1 https://t.co/ApUoEiaPdb
— frankie nash (@frankienash54) May 10, 2023
from Twitter https://twitter.com/frankienash54
May 10, 2023 at 06:55AM
via frankienash54
Show HN: A clock app developed based on flutter https://ift.tt/7YJSlkf
Show HN: A clock app developed based on flutter https://ift.tt/wjc6lmx May 10, 2023 at 04:00AM
Show HN: Build progressively enhanced reactive HTML apps using Go and Alpine.js https://ift.tt/7vAwY4m
Show HN: Build progressively enhanced reactive HTML apps using Go and Alpine.js Fir leverages Golang’s standard library html/template package and a bit of alpinejs to allow building reactive UIs. You start with plain old html and use alpinejs to enhance it to bring no-page-reload interactivity to web apps. The Fir toolkit is designed for Go developers with moderate html/css & js skills who want to progressively build reactive web apps without mastering complex web frameworks. It includes a Go library and an Alpine.js plugin. How it works ? On receiving user-interactions the fir server re-renders html templates and sends it over the wire where the fir client library selectively updates the changed areas. When a user event is received by a Fir route, an array of html templates are rendered on the server and returned as an array of DOM events to the browser. The DOM events are consumed by the alpinejs plugin and dispatched within the DOM where listeners attached to elements can use the event to update the DOM. See the demo and quickstart here: https://ift.tt/0vldz4K https://ift.tt/0vldz4K May 10, 2023 at 12:03AM
Tuesday, May 9, 2023
Ukraine War Coverage Earns Pulitzers for The A.P. and The Times
By Katie Robertson via NYT Business https://ift.tt/RwAOXY2
Too Many Older Men Are Still Screened for Prostate Cancer
By Paula Span via NYT Health https://ift.tt/p7uVLjY
Show HN: Novika – a free-form, moldable, interpreted programming language https://ift.tt/TSdtqhf
Show HN: Novika – a free-form, moldable, interpreted programming language https://ift.tt/wBqZ7k9 May 8, 2023 at 11:34PM
After Coronation, U.K. Awaits a Wider Changing of the Guard
By Mark Landler via NYT World https://ift.tt/qkxoj8g
I Asked ChatGPT to Be My Stylist
By Emma Grillo via NYT Style https://ift.tt/tN7i5fr
Monday, May 8, 2023
An End to Pandemic Restrictions Could Bring Thousands to the Border
By Miriam Jordan and Michael D. Shear via NYT U.S. https://ift.tt/NhyniGW
Show HN: Free tool to convert Google Docs to Markdown https://ift.tt/isjv97W
Show HN: Free tool to convert Google Docs to Markdown https://ift.tt/q31tQ7Y May 7, 2023 at 08:34PM
Dozens of Shots
By the staff of The Morning via NYT Briefing https://ift.tt/bw6cMtn
For One Perpetual Bridesmaid, a Match ‘So Worth the Wait’
By Tammy LaGorce via NYT Style https://ift.tt/Q6Gf4CB
Show HN: AI Poetry Contest https://ift.tt/3uznvO8
Show HN: AI Poetry Contest Hi HN! Me and my buddy made this in a weekend as an experiment in 1. building something quickly and putting it out there and 2. using AI in an interesting way; in this case a poetry judge. Our “judge” isn’t perfect, but the hope is that at least it’s a relatively fair system that everyone can be sure evaluates their work. Anyway, we wanted to see what the lovely people of HN think of it. Some background on the idea; I like poetry and thought it would be cool if there was a big competition with a large financial incentive that scales with the number of participants. Using AI as a judge allows us to handle any number of submissions in a consistent and fair way. It also opens up the competition to poetry written in other languages, although for now we’re only promoting in the US. Happy to answer any questions! Also any feedback is much appreciated, thanks! https://ift.tt/CJl5vy6 May 7, 2023 at 11:21PM
Secrets of a Healthy Breakfast
By Rachel Rabkin Peachman and Bobbi Lin for The New York Times via NYT Well https://ift.tt/rGMayVn
Sunday, May 7, 2023
Tori Bowie, World Champion Sprinter, Is Dead at 32
By Daniel E. Slotnik via NYT Sports https://ift.tt/xpJQ1v0
Show HN: Git Hooting https://ift.tt/oqkNrH1
Show HN: Git Hooting 00's called, they want their RSS feeds back. I was looking at my growing Github gist collection when a sudden urge to blog and make a name for myself "by not programming" struck. Part way into implementing my oh so special static website generator it occurred to me that, quite frankly, Github gists is a pretty decent publishing platform. I mean, it gives you reasonably extended markdown with previews, heck I could even write in org-mode, has comments, follower - followee relationship, extended search with filters, check out locally and push your edits. Did someone say "edit button"? Thus the idea behind https://git.ht was born: collect gists into RSS feeds and force everyone, kicking and screaming, into the good old days when Google Reader was king. Well, it's a bit more than that now. But basically, you create a gist or grab an old one, name its main file `hoot.md` or `hoot.org` if org-mode is your poison, make it public and voila. These "hoots" make it into your RSS feed and will get permalinks with social graph metatags, so you get nice previews when you share them on Twitter and such. To take it for a spin: - pick a subdomain e.g. foo.git.ht, - navigate you browser there, - login with Github. I still consider it alpha, but it should work. Report any issues as you would normally on Github https://ift.tt/U7EPKmZ . Thank you https://git.ht May 7, 2023 at 12:29AM
A Banana Peel Has Made Me Question My Marriage. Who’s Right?
By Kwame Anthony Appiah via NYT Magazine https://ift.tt/w4fMmbK
The Prince With No Throne
By Alyson Krueger via NYT Style https://ift.tt/YETcd0a
A King Who Actually Likes the Arts
By Alex Marshall via NYT Arts https://ift.tt/WSNvF3b
Saturday, May 6, 2023
Why Should Charles III Be King?
By Tanya Gold via NYT U.S. https://ift.tt/XJYH1xS
Get Ready to See More of the Northern Lights
By April Rubin via NYT Science https://ift.tt/HwVZD8m
Living and Breathing on the Front Line of a Toxic Chemical Zone
By Eric Lipton via NYT U.S. https://ift.tt/gFP4xpl
Show HN: Telegram Bot for Surf Conditions https://ift.tt/JEPZzHt
Show HN: Telegram Bot for Surf Conditions I got tired of checking different weather apps every time my surf group wanted to go out. This bot shares the current conditions whenever you message /conditions to the group! https://ift.tt/x4KXbkL May 5, 2023 at 09:01PM
Doing Whatever It Takes on Debt
By Paul Krugman via NYT Opinion https://ift.tt/tekUYb1
Friday, May 5, 2023
Show HN: Hypertune – Visual, functional, statically-typed configuration language https://ift.tt/GrBfwaE
Show HN: Hypertune – Visual, functional, statically-typed configuration language Hey HN! I'm Miraan, the founder at Hypertune, and I'm excited to be posting this on HN. Hypertune lets you make your code configurable to let teammates like PMs and marketers quickly change feature flags, in-app copy, pricing plans, etc. It's like a CMS but instead of only letting you set static content, you can insert arbitrary logic from the UI, including A/B tests and ML "loops". I previously built a landing page optimization tool that let marketers define variants of their headline, CTA, cover image, etc, then used a genetic algorithm to find the best combination of them. They used my Chrome extension to define changes on DOM elements based on their unique CSS selector. But this broke when the underlying page changed and didn't work with sites that used CSS modules. Developers hated it. I took a step back. The problem I was trying to solve was making the page configurable by marketers in a way that developers liked. I decided to solve it from first principles and this led to Hypertune. Here's how it works. You define a strongly typed configuration schema in GraphQL, e.g. type Query { page(language: Language!, deviceType: DeviceType!): Page! } type Page { headline: String! imageUrl: String! showPromotion: Boolean! benefits: [String!]! } enum Language { English, French, Spanish } enum DeviceType { Desktop, Mobile, Tablet } Then marketers can configure these fields from the UI using our visual, functional, statically-typed language. The language UI is type-directed so we only show expression options that satisfy the required type of the hole in the logic tree. So for the "headline" field, you can insert a String expression or an If / Else expression that returns a String. If you insert the latter, more holes appear. This means marketers don't need to know any syntax and can't get into invalid states. They can use arguments you define in the schema like "language" and "deviceType", and drop A/B tests and contextual multi-armed bandits anywhere in their logic. We overlay live counts on the logic tree UI so they can see how often different branches are called. You get the config via our SDK which fetches your logic tree once on initialization (from our CDN) then evaluates it locally so you can get flags or content with different arguments (e.g. for different users) immediately with no network latency. So you can use the SDK on your backend without adding extra latency to every request, or on the frontend without blocking renders. The SDK includes a command line tool that auto-generates code for end-to-end type-safety based on your schema. You can also query your config via the GraphQL API. If you use the SDK, you can also embed a build-time snapshot of your logic tree in your app bundle. The SDK initializes from this instantly then fetches the latest logic from the server. So it'll still work in the unlikely event the CDN is down. And on the frontend, you can evaluate flags, content, A/B tests, personalization logic, etc, instantly on page load without any network latency, which makes it compatible with static Jamstack sites. I started building this for landing pages but realized it could be used for configuring feature flags, in-app content, translations, onboarding flows, permissions, rules, limits, magic numbers, pricing plans, backend services, cron jobs, etc, as it's all just "code configuration". This configuration is usually hardcoded, sprawled across json or yaml files, or in separate platforms for feature flags, content management, A/B testing, pricing plans, etc. So if a PM wants to A/B test new onboarding content, they need a developer to write glue code that stitches their A/B testing tool with their CMS for that specific test, then wait for a code deployment. And at that point, it may not be worth the effort. The general problem with having separate platforms is that all this configuration naturally overlaps. Feature flags and content management overlap with A/B testing and analytics. Pricing plans overlap with feature flags. Keeping them separate leads to inflexibility and duplication and requires hacky glue code, which defeats the purpose of configuration. I think the solution is a flexible, type-safe code configuration platform with a strongly typed schema, type-safe SDKs and APIs, and a visual, functional, statically-typed language with analytics, A/B testing and ML built in. I think this solves the problem with having separate platforms, but also results in a better solution for individual use cases and makes new use cases possible. For example, compared specifically to other feature flag platforms, you get auto-generated type-safe code to catch flag typos and errors at compile-time (instead of run-time), code completion and "find all references" in your IDE (no figuring out if a flag is in kebab-case or camelCase), type-safe enum flags you can exhaustively switch on, type-safe object and list flags, and a type-safe logic UI. You pass context arguments like userId, email, etc, in a type-safe way too with compiler errors if you miss or misspell one. To clean up a flag, you remove it from your query, re-run code generation and fix all the type errors to remove all references. The full programming language under the hood means there are no limits on your flag logic (you're not locked into basic disjunctive normal form). You can embed a build-time snapshot of your flag logic in your app bundle for guaranteed, instant initialization with no network latency (and keep this up to date with a commit webhook). And all your flags are versioned together in a single Git history for instant rollbacks to known good states (no figuring out what combination of flag changes caused an incident). There are other flexible configuration languages like Dhall (discussed here: https://ift.tt/w8Kzx5H ), Jsonnet (discussed here: https://ift.tt/MivxAS1 ) and Cue (discussed here: https://ift.tt/0N2V8ou ). But they lack a UI for nontechnical users, can't be updated at run-time and don't support analytics, A/B testing and ML. I was actually going to start with a basic language that had primitives (Boolean, Int, String), a Comparison expression and an If / Else. Then users could implement the logic for each field in the schema separately. But then I realized they might want to share logic for a group of fields at the object level, e.g. instead of repeating "if (deviceType == Mobile) { primitiveA } else { primitiveB }" for each primitive field separately, they could have the logic once at the Page level: "if (deviceType == Mobile) { pageObjectA } else { pageObjectB }". I also needed to represent field arguments like "deviceType" in the language. And I realized users may want to define other variables to reuse bits of logic, like a specific "benefit" which appears in different variations of the "benefits" list. So at this point, it made sense to build a full, functional language with Object expressions (that have a type defined in the schema) and Function, Variable and Application expressions (to implement the lambda calculus). Then all the configuration can be represented as a single Object with the root Query type from the schema, e.g. Query { page: f({ deviceType }) => switch (true) { case (deviceType == DeviceType.Mobile) => Page { headline: f({}) => "Headline A" imageUrl: f({}) => "Image A" showPromotion: f({}) => true benefits: f({}) => ["Ben", "efits", "A"] } default => Page { headline: f({}) => "Headline B" imageUrl: f({}) => "Image B" showPromotion: f({}) => false benefits: f({}) => ["Ben", "efits", "B"] } } } So each schema field is implemented by a Function that takes a single Object parameter (a dictionary of field argument name => value). I needed to evaluate this logic tree given a GraphQL query that looks like: query { page(deviceType: Mobile) { headline showPromotion } } So I built an interpreter that recursively selects the queried parts of the logic tree, evaluating the Functions for each query field with the given arguments. It ignores fields that aren't in the query so the logic tree can grow large without affecting query performance. The interpreter is used by the SDK, to evaluate logic locally, and on our CDN edge server that hosts the GraphQL API. The response for the example above would be: { "__typename": "Query", "page": { "__typename": "Page", "headline": "Headline A", "showPromotion": true } } Developers were concerned about using the SDK on the frontend as it could leak sensitive configuration logic, like lists of user IDs, to the browser. To solve this, I modified the interpreter to support "partial evaluation". This is where it takes a GraphQL query that only provides some of the required field arguments and then partially evaluates the logic tree as much as possible. Any logic which can't be evaluated is left intact. The SDK can leverage this at initialization time by passing already known arguments (e.g. the user ID) in its initialization query so that sensitive logic (like lists of user IDs) are evaluated (and eliminated) on the server. The rest of the logic is evaluated locally by the SDK when client code calls its methods with the remaining arguments. This also minimizes the payload size sent to the client and means less logic needs to be evaluated locally, which improves both page load and render performance. The interpreter also keeps a count of expression evaluations as well as events for A/B tests and ML loops, which are flushed back to Hypertune in the background to overlay live analytics on the logic tree UI. It's been a challenge to build a simple UI given there's a full functional language under the hood. For example, I needed to build a way for users to convert any expression into a variable in one click. Under the hood, to make expression X a variable, we wrap the parent of X in a Function that takes a single parameter, then wrap that Function in an Application that passes X as an argument. Then we replace X in the Function body with a reference to the parameter. So we go from: if (X) { Y } else { Z } to ((paramX) => if (paramX) { Y } else { Z } )(X) So a variable is just an Application argument that can be referenced in the called Function's body. And once we have a variable, we can reference it in more than one place in the Function body. To undo this, users can "drop" a variable in one click which replaces all its references with a copy of its value. Converting X into a variable gets more tricky if the parent of X is a Function itself which defines parameters referenced inside of X. In this case, when we make X a variable, we lift it outside of this Function. But then it doesn't have access to the Function's parameters anymore. So we automatically convert X into a Function itself which takes the parameters it needs. Then we call this new Function where we originally had X, passing in the original parameters. There are more interesting details about how we lift variables to higher scopes in one click but that's for another post. Thanks for reading this far! I'm glad I got to share Hypertune with you. I'm curious about what use case appeals to you the most. Is it type-safe feature flags, in-app content management, A/B testing static Jamstack sites, managing permissions, pricing plans or something else? Please let me know any thoughts or questions! https://ift.tt/AkaRgEu May 4, 2023 at 03:01PM
A Subway Killing Stuns, and Divides, New Yorkers
By Emma G. Fitzsimmons and Maria Cramer via NYT New York https://ift.tt/5Pd7agb
No Arrest in New York Subway Chokehold Death, and Many Want to Know Why
By Hurubie Meko, Chelsia Rose Marcius and Jonah E. Bromwich via NYT New York https://ift.tt/Hxdb3LC
Nothing Says Fashion in 2023 Like a Corset Hoodie
By Jessica Testa via NYT Style https://ift.tt/QqvO5zo
Billionaire Investor Buys Epstein’s Private Islands for $60 Million
By Matthew Goldstein via NYT Business https://ift.tt/7YQ10qz
Thursday, May 4, 2023
What Fed Rate Increases Mean for Mortgages, Credit Cards and More
By Tara Siegel Bernard via NYT Business https://ift.tt/jqeE7yw
We’re Watching the End of a Digital Media Age. It All Started With Jezebel.
By Ben Smith via NYT Opinion https://ift.tt/y4CbjOA
Show HN: Simple TODO with tag based filtering https://ift.tt/QGXFm8v
Show HN: Simple TODO with tag based filtering A custom app I made quickly to better represent how I work. I have 1 long list of tasks from different projects I can easily see any time. Throughout the day I focus on the different projects by filtering them through tags. Does anyone else manage multiple projects like me? What do you use to focus on the different projects? https://ift.tt/nlkjumB May 3, 2023 at 10:26PM
Subway Rider Choked Homeless Man to Death, Medical Examiner Rules
By Maria Cramer and Chelsia Rose Marcius via NYT New York https://ift.tt/uf2LH0W
Subscribe to:
Posts (Atom)