Introducing: Awful Security News
A daily news publication and API providing a distraction free overview of the day's news.
I found that I LOVED the style of this blog for distraction free reading. It's an mdBook
so that makes sense. I also noticed that the built-in search indexing works fantastically for finding content that I know that I had written, but have trouble placing. These two simple elements of appreciation were the only muse I needed to spark another idea.
I find the web to be mostly unusable these days. The copious amounts of advertising polluting every page, autoplay enabled videos, shifting content as a result of these things, manipulative image placement, thousands of tracking cookies, poor design choices in general for READING makes it a poor home for something like reading the news.
I also found the constant deluge of however long a news cycle is supposed to be these days a quite interesting domain.
The advent of natural language processing has opened up a lot of cool opportunities for people interested in data, or extracting information and presenting it in way palatable to your personal preferences. The term AI is incredibly overused and the general public has no idea what they're are talking about when they use it and in my personal experience, they place for too much faith in the capability of what amounts to a computer program that graphs contexts and calculates the distance between them.
Now that I've got the acronym out of the way let's cease from using it. AI is no more intelligent than an equation written on a sheet of paper.
The Webpage
I've made the webpage serving the news content available at Awful Security News. The process that compiles the days events are run manually by myself, twice a day, in theory. I may not always have the time or wherewithal to run the script from my server consistently. The only thing preventing me from automating the entire process is that the Qwen 2.5 3B Large Language Model that powers the content extraction, key to the justification of this project, is run on Google Collab which requires me to power up the notebook manually to avoid excess charges. I've published the IPython Notebook that I'm using to compile Llama.cpp, and run with cloudflared, to create an accessible API endpoint for running inference using the model.
The homepage is available at https://news.awfulsec.com. There's a lil burger icon at the top left hand portion of the page that opens the navigation. You may navigate to certain dates which contain an index with links to each publication and story. A publication may be titled either "Morning", "Afternoon", or "Evening". Each publication's stories will be nested under it in list format.
The paintbrush icon, next to the burger icon on the top left, contains themes that will change the look of the site. The pictured theme is a custom theme I added to mdBook for people like me with slightly bad vision and prefer larger text with a decorative flourish.
Each published story will contain:
- The title of the original article.
- A link to the original article (source).
- The date and time the article was published. (Extracted by Qwen2.5 3B so may not be entirely accurate.)
- A summary of the article. (Extracted by Qwen2.5 3B so may not be entirely accurate.)
- Key Takeaways from the article. (Generated by Qwen2.5 3B so may not be entirely accurate.)
- Named Entities in the article. (Extracted by Qwen2.5 3B so may not be entirely accurate.)
- A description of how this entity is relevant to the article. (Generated by Qwen2.5 3B so may not be entirely accurate.)
- A description of how this entity is relevant to the world. (Generated by Qwen2.5 3B so may not be entirely accurate.)
- Important Dates mentioned in the article. (Extracted by Qwen2.5 3B so may not be entirely accurate.)
- Important Timeframes mentioned in the article. (Extracted by Qwen2.5 3B so may not be entirely accurate.)
The API
A JSON API has been made available at https://news.awfulsec.com/api/. Then contents of the API are browsable thanks to Caddy.
Each publication is saved to a .json
file named after the time of day it was run and nested under a path of the date the publication was run. For example: https://news.awfulsec.com/api/2025-05-08/evening.json
.
We can use curl
and jq
to display the first article in our terminal.
λ curl -s https://news.awfulsec.com/api/2025-05-06/morning.json \
| jq -r '.articles[0]'
{
"source": "https://lite.cnn.com/2025/05/06/europe/merz-chancellor-german-parliament-intl",
"dateOfPublication": "2025-05-06",
"timeOfPublication": "11:06:00+00:00",
"title": "Merz appointed German chancellor hours after unprecedented parliamentary defeat",
"summaryOfNewsArticle": "German Chancellor Friedrich Merz has been appointed after an unexpected parliamentary defeat, hours after failing to secure a two-thirds majority. Despite this setback, Merz's appointment was confirmed by the German President and he is set to be sworn in. However, his appointment was made during a tumultuous period of political uncertainty, as his coalition displayed reluctance. The appointment was also met with the insurgent far-right AfD party gaining new leverage. Merz faces challenges in his new role, including pushing through changes to Germany's defense spending and managing the impact of the Trump administration's withdrawal of security guarantees for Europe. This appointment is a complex situation for Germany, with political instability and the need to modernize defense spending as pressing issues.",
"keyTakeAways": [
"Friedrich Merz has been appointed as the new Chancellor of Germany after an unexpected parliamentary defeat. This was his second attempt at becoming Chancellor, as he fell short by six votes in an earlier vote. The appointment was confirmed by the President shortly after the parliamentary approval. However, the appointment was met with significant political instability, as the coalition revealed reluctance and the far-right AfD party gained new leverage. Merz faces challenges in his new role, including the need to modernize Germany's defense spending and manage the impact of the Trump administration's withdrawal of security guarantees for Europe. The appointment of Merz is a complicated situation for Germany, particularly in light of the AfD's new position and the broader political landscape."
],
"namedEntities": [
{
"name": "Rob Picheta",
"whatIsThisEntity": "The author of the news article.",
"whyIsThisEntityRelevantToTheArticle": "Rob Picheta is the one who published the article."
},
{
"name": "Friedrich Merz",
"whatIsThisEntity": "The newly appointed German Chancellor.",
"whyIsThisEntityRelevantToTheArticle": "Friedrich Merz is the central figure in this article, as he was appointed as Chancellor after an unexpected defeat."
},
{
"name": "2025-04-26",
"whatIsThisEntity": "The date when the article was first published, but then updated on May 6th.",
"whyIsThisEntityRelevantToTheArticle": "This was the date the article was first published, and it was updated with the latest developments on May 6th."
},
{
"name": "2025-05-06",
"whatIsThisEntity": "The date when the article was updated and published.",
"whyIsThisEntityRelevantToTheArticle": "This is the date when the article was updated and finalized."
},
{
"name": "2025-02-05",
"whatIsThisEntity": "The date when Merz won an election.",
"whyIsThisEntityRelevantToTheArticle": "This was the date Merz won the election that led to his coalition formation."
},
{
"name": "2022-02-14",
"whatIsThisEntity": "The date when the coalition was formed by Merz.",
"whyIsThisEntityRelevantToTheArticle": "This was the date when Merz announced his coalition with the Social Democrats (SPD)."
},
{
"name": "2022-02-28",
"whatIsThisEntity": "The date of the election on which Merz's coalition was based.",
"whyIsThisEntityRelevantToTheArticle": "This was the election on which Merz's coalition was formed."
},
{
"name": "2022-12-31",
"whatIsThisEntity": "The date when the Trump administration ended.",
"whyIsThisEntityRelevantToTheArticle": "This is the end of the Trump administration, which had been impacting German politics."
},
{
"name": "2022-03-28",
"whatIsThisEntity": "The date when Merz won a two-thirds parliamentary majority to change Germany's constitutional 'debt brake'.",
"whyIsThisEntityRelevantToTheArticle": "This was the date Merz was able to push through changes to limit government borrowing."
}
],
"importantDates": [
{
"dateMentionedInArticle": "2025-05-06",
"descriptionOfWhyDateIsRelevant": "The date when the news article was updated and published."
},
{
"dateMentionedInArticle": "2025-02-05",
"descriptionOfWhyDateIsRelevant": "The date of Friedrich Merz's election."
},
{
"dateMentionedInArticle": "2025-02-05",
"descriptionOfWhyDateIsRelevant": "The date of the coalition formed by Merz."
},
{
"dateMentionedInArticle": "2022-02-14",
"descriptionOfWhyDateIsRelevant": "The date of the coalition announced by Merz."
},
{
"dateMentionedInArticle": "2022-02-28",
"descriptionOfWhyDateIsRelevant": "The date of the election on which Merz's coalition was based."
},
{
"dateMentionedInArticle": "2022-12-31",
"descriptionOfWhyDateIsRelevant": "The date when the Trump administration ended."
},
{
"dateMentionedInArticle": "2022-03-28",
"descriptionOfWhyDateIsRelevant": "The date of Merz winning a two-thirds parliamentary majority to change Germany's constitutional 'debt brake'."
}
],
"importantTimeframes": [
{
"approximateTimeFrameStart": "2025-05-06",
"approximateTimeFrameEnd": "2025-05-06",
"descriptionOfWhyTimeFrameIsRelevant": "The time frame when the news was updated and published."
},
{
"approximateTimeFrameStart": "2022-02-14",
"approximateTimeFrameEnd": "2022-02-14",
"descriptionOfWhyTimeFrameIsRelevant": "The time frame when the coalition announcement was made."
}
]
}
The availibility of an API let's us do some fun things like get an overview of the frequency Named Entities appear in a single publication.
λ curl -s https://news.awfulsec.com/api/2025-05-08/evening.json \
| jq -r '.articles[].namedEntities[].name' \
| grep -v '^CNN$' \
| sort \
| uniq -c \
| sort -nr \
| head -10 \
23 Donald Trump
6 Vladimir Putin
6 Trump administration
5 Pope Leo XIV
4 Victory Day
4 Ukraine
4 President Donald Trump
4 Pope Francis
4 Harvard University
4 Columbia University
We use grep -v '^CNN$'
in the command to remove CNN as a named entity due to an idiosyncracy involving the sources we are scraping our data from. The only two sources we are currently syndicating are lite.cnn.com which publishes 100 stories at any given time and text.npr.org which publishes 20 stories at any given time.
We can uncover all the Key Takeaways that mention "Temple University" for a given publication.
λ curl -s https://news.awfulsec.com/api/2025-05-06/morning.json \
| jq -r '.articles[].keyTakeAways[]' \
| grep -i 'Temple University' \
One of the customers was a student at Temple University, who is now on interim suspension pending further investigation.
Temple University President John Fry called antisemitism
A Temple University student was suspended after an antisemitic sign was posted at a Barstool Sports bar.
Temple University is one of 60 US institutions receiving an investigation into antisemitic discrimination and harassment from the Department of Education.
We can collate all of the Named Entites listed alongside a given Named Entity for all of the articles in a publication.
λ curl -s https://news.awfulsec.com/api/2025-05-08/evening.json \
| jq -r '
.articles[]
| select(.namedEntities[].name == "Vladimir Putin")
| .namedEntities[].name
' \
| grep -v '^Vladimir Putin$' \
| grep -v '^CNN$' \
| sort \
| uniq -c \
| sort -nr
4 Victory Day
4 Ukraine
3 Donald Trump
2 Russia
1 Xi Jinping
1 Xi
1 Volodymyr Zelensky
1 Victory Day parade
1 Victory Day military parade
1 Victory Day Parade
1 Ukrainian military
1 Ukraine's President Volodymyr Zelensky
1 Simone McCarthy
1 Russian Ministry of Defense
1 Red Square
1 Nazi Germany
1 Moscow
1 May 9
1 Matthew Chance
1 Kir
1 Kilmar Abrego Garcia
1 JD Vance
Unlike the HTML webpage, the JSON API provides the content of the original article that got sent to Qwen 2.5 3B
for processing.
λ curl -s https://news.awfulsec.com/api/2025-05-08/evening.json \
| jq -r '.articles[0].content'
Trump administration fires librarian of Congress
By Kaanita Iyer, CNN
Updated:
10:19 PM EDT, Thu May 8, 2025
Source: CNN
The White House on Thursday notified Librarian of Congress Carla Hayden that she was removed from her position, a spokesperson for the Library of Congress told CNN.
While the reason for Hayden’s removal was not immediately clear, several congressional Democrats swiftly criticized President Donald Trump and accused him of targeting books.
House Minority Leader Hakeem Jeffries in a statement called Hayden’s termination “a disgrace and the latest in his ongoing effort to ban books, whitewash American history and turn back the clock.”
CNN has reached out to the White House for comment.
Hayden was sworn in as the librarian of Congress in September 2016, becoming the first woman and Black person to hold the position. She had about a year and a half left in her 10-year term.
She told CNN during the early days of her tenure that her plans for the library included bringing the contents of the library to people who might not have direct access to the physical building in the nation’s capital.
In 2022, Hayden allowed singer and flutist Lizzo to play President James Madison’s 200-year-old crystal flute onstage at her Washington, DC, concert.
Democratic Sen. Martin Heinrich of New Mexico applauded Hayden for bringing “the Library of Congress to the people, with initiatives that reached into rural communities and made the Library accessible to all Americans, in person and online.”
“While President Trump wants to ban books and tell Americans what to read — or not to read at all, Dr. Hayden has devoted her career to making reading and the pursuit of knowledge available to everyone,” Heinrich added. “Be like Dr. Hayden.”
CNN’s Jamie Gangel and Samantha Waldenberg contributed to this report.
See Full Web Article
It is from this text and some very specific instructions that Qwen 2.5 3B
is able to extract and generate the information we need with reasonable degrees of accuracy and consistency.
Getting Qwen to Submit to Your Will
We are running inference on Alibaba's 3 billion parameter large language model named Qwen 2.5 using Llama.cpp
. Llama.cpp
supports an OpenAI compatible API for running inference using the model. This model was specifically chosen to run on the most amount of relatively low powered computers while still providingly accurate and timely results. I found that running inference on 120 articles on my Macbook Air M2 laptop takes a little under 2 hours. This would be acceptable to me were I to only run this locally and serve the content from my local machine.
OpenAI has introduced the concept of "Structured Outputs" to LLM inference operations. This is supported by Llama.cpp and in turn other more user friendly projects like LM Studio.
I hate writing Python and prefer to not use interpreted code. I've also found any approaches to templating conversations for specific use cases clunkly and un-intuitive. I love Rust and I like yaml
so I built a tool called aj to allow me to easily template the kind of conversation I want in a yaml
file and call an OpenAI-compatible API. aj
supports Structured Outputs through a json
schema.
Awful News Text uses aj
as a dependency to call any OpenAI-compatible API with the contents of a news article, and receive in response a JSON formatted blob containing the data we expect. Let's look at the configuration and the template.
~/.config/aj/config.yaml
api_key:
api_base: https://calvin-mills-reprints-buffer.trycloudflare.com/v1
model: Qwen_Qwen2.5-3B-Instruct-GGUF
context_max_tokens: 8092
assistant_minimum_context_tokens: 2048
stop_words:
- |2-
<|im_start|>
- <|im_end|>
session_db_url: None
session_name: None
This contains conversation specific options to use when calling any OpenAI API. They are documented in aj's source code repository.
~/.config/aj/templates/news_parser.yaml
system_prompt: You are Qwen, created by Alibaba Cloud.
messages:
- role: user
content: |-
U.S. judge says 2-year-old apparently deported to Honduras 'with no meaningful process'
By Alana Wise
Saturday, April 26, 2025 • 1:12 PM EDT
A Trump-nominated federal judge in Louisiana said that a 2-year-old American citizen appears to have been deported "with no meaningful process." This comes as the Trump administration has faced growing criticisms for its hurried proceedings to remove as many noncitizens from the country as quickly as possible.
U.S. District Judge Terry Doughty wrote that the toddler, identified as VML, had been sent to Honduras on Friday, alongside her mother and sister, even as the court had sought to clarify the girl's status. He set a hearing on the case for May 16 "in the interest of dispelling our strong suspicion that the Government just deported a U.S. citizen with no meaningful process."
Related Story: NPR
On Friday afternoon, Doughty had called counsel for the federal government to try to speak with VML's mother and better understand the child's situation, but VML and her family were already "above the Gulf of America," the judge wrote, using President Trump's preferred term for the Gulf of Mexico.
"The Government contends that this is all okay because the mother wishes that the child be deported with her," Doughty wrote. "But the Court doesn't know that."
According to a lawsuit filed on VML's behalf, she and her family were taken into U.S. Immigration and Customs Enforcement (ICE) custody on Tuesday while attending a routine check-in with the mother's Intensive Supervision Appearance Program (ISAP).
Related Story: NPR
ISAP is an alternative to detention for noncitizens who are in the country unlawfully.
It is not immediately clear what was flagged during that meeting to trigger deportation proceedings for VML's mother and sister. But according to a court petition, her father, who had dropped the trio off at the meeting, was informed about an hour after the start of the meeting that his partner and two daughters had been taken into custody.
Related Story: NPR
The suit alleges that ICE agents repeatedly refused to give VML's father her location and denied him the opportunity to speak for more than a minute to VML's mother.
"V.M.L.'s father received a call from an ICE officer, who spoke to him for about a minute," the filing said.
"The officer said that V.M.L.'s mother was there, and that they did not have much time to speak to each other and that they were going to deport his partner and daughters. V.M.L.'s father was able to speak with his partner for only about or less than a minute. He heard his daughters crying and his partner crying," the filing said.
Related Story: NPR
According to the suit, at one point as VML's father tried to secure her release, New Orleans ICE Field Office Director Mellissa Harper began interrogating the family's attorney about the father's immigration status and attempted to lure him into custody as well.
In an emailed statement to NPR, the Department of Homeland Security (DHS), which oversees ICE, defended its decision.
"The parents made the decision to take the child with them to Honduras. It is common that parents want to be removed with their children," said Tricia McLaughlin, DHS' assistant secretary for public affairs.
The agency did not respond to further request for comment as to why McLaughlin implied that both parents had supported VML's deportation to Honduras when her father ostensibly remains in the United States.
VML is just the latest to be ensnared in the messy legal process as the Trump administration has rushed to remove as many undocumented immigrants as it can.
Last month, a Maryland man, Kilmar Abrego Garcia, was illegally deported to El Salvador and sent to the notorious CECOT megaprison "due to an "administrative error"
- role: assistant
content: |-
{ "title": "U.S. judge says 2-year-old apparently deported to Honduras 'with no meaningful process'", "dateOfPublication": "2025-04-26", "timeOfPublication": "13:12:00", "summaryOfNewsArticle": "A U.S. District Judge has raised concerns regarding the deporting of a 2-year-old girl, identified as VML, from the United States to Honduras without following proper legal procedures. Judge Terry Doughty expressed that VML's mother and sister were deported on Friday alongside the toddler, despite a court request for clarification. This issue has arisen amidst criticisms of the Trump administration's rapid removal of noncitizens from the country. VML and her family were detained on Tuesday for a routine meeting, during which they were unexpectedly taken into custody. The judge believes that the government lacks evidence supporting the claim that VML's mother and sister wanted to be deported together, indicating potential issues with 'meaningful process.' The case highlights concerns about the Trump administration's rushed deportation procedures.", "namedEntities": [{"name": "VML", "descriptionOfEntity": "A 2-year-old girl who was mistakenly deported from the U.S. to Honduras without proper process." , "whyIsThisEntityRelevant": "VML is central to the story, as she's at the center of the controversy about her deportation without proper legal process." }, {"name": "Terry Doughty", "descriptionOfEntity": "U.S. District Judge in Louisiana who made a ruling regarding the case of VML." , "whyIsThisEntityRelevant": "The judge who issued a ruling on the case of VML, indicating his concern over the lack of meaningful process in her deportation." }, {"name": "Alana Wise", "descriptionOfEntity": "News reporter who published the article." , "whyIsThisEntityRelevant": "The author of the news article that contains information about VML's deportation and the judge's ruling." }, {"name": "U.S. District Judge", "descriptionOfEntity": "'Terry Doughty' who ruled on the case of VML." , "whyIsThisEntityRelevant": "The judge who ruled, highlighting the critical role he played in understanding and resolving a potentially controversial scenario." }, {"name": "Intensive Supervision Appearance Program (ISAP)", "descriptionOfEntity": "'An alternative to detention for noncitizens who are in the country unlawfully.'" , "whyIsThisEntityRelevant": "The alternative detention program that VML's mother was participating in when she and her family were apprehended by ICE." }, {"name": "ISAP", "descriptionOfEntity": "'An alternative to detention for noncitizens who are in the country unlawfully.'" , "whyIsThisEntityRelevant": "The detention program the family was part of, which could have been tied to a potential reason for their deportation." }, {"name": "Trump administration", "descriptionOfEntity": "'The current U.S. federal government that has faced criticism for its rapid removal of noncitizens.'" , "whyIsThisEntityRelevant": "The source of the controversy, as they are accused of rushing to remove noncitizens without proper legal process." }], "keyTakeAways": ["A 2-year-old girl was erroneously deported from the U.S. to Honduras without proper legal process." ], "importantDates": [{"dateMentionedInArticle": "2025-04-26", "descriptionOfWhyDateIsRelevant": "'The date when U.S. District Judge Terry Doughty issued a ruling regarding VML's case, highlighting the urgency of the issue and the lack of proper procedure in her deportation process." }], "importantTimeframes": [{"approximateTimeFrameStart": "Now", "approximateTimeFrameEnd": "2025-04-26", "descriptionOfWhyTimeFramRelevant": "'The time frame when the issue of VML's deportation without proper process came to light, indicating ongoing concern and potential for future occurrences." }, {"approximateTimeFrameStart": "2017-01-20", "approximateTimeFrameEnd": "2022-12-31", "descriptionOfWhyTimeFramRelevant": "'The time frame when the Trump administration was in power, suggesting that this issue may relate to their policies of rapid deportation." }]}
response_format:
name: article_summarizer
strict: true
description: Represents a summarized news article.
schema:
type: object
properties:
title:
type: string
dateOfPublication:
type: string
format: date
timeOfPublication:
type: string
format: time
summaryOfNewsArticle:
type: string
namedEntities:
type: array
items:
type: object
properties:
name:
type: string
description: Name of entity.
whatIsThisEntity:
type: string
description: Explanation of how this entity is relevant to the world.
whyIsThisEntityRelevantToTheArticle:
type: string
description: Explanation of why this named entity is relevant to the article.
required:
- name
- whatIsThisEntity
- whyIsThisEntityRelevantToTheArticle
keyTakeAways:
type: array
items:
type: string
importantDates:
type: array
items:
type: object
properties:
dateMentionedInArticle:
type: string
format: date
descriptionOfWhyDateIsRelevant:
type: string
required:
- dateMentionedInArticle
- descriptionOfWhyDateIsRelevant
importantTimeframes:
type: array
items:
type: object
properties:
approximateTimeFrameStart:
type: string
approximateTimeFrameEnd:
type: string
descriptionOfWhyTimeFrameIsRelevant:
type: string
required:
- approximateTimeFrameStart
- approximateTimeFrameEnd
- descriptionOfWhyTimeFrameIsRelevant
required:
- title
- dateOfPublication
- timeOfPublication
- summaryOfNewsArticle
- namedEntities
- keyTakeAways
- importantDates
- importantTimeframes
pre_user_message_content: |-
Please read the following news article and extract all of the key elements verbatim. To extract the key elements and summarize, follow these steps:
1. Identify all named entities.
2. Write a sentence describing why this entity is relevant to the world outside of the article.
3. Write a sentence describing how this entity is relevant to the article.
4. Compile the key information points and create a summary paragraph.
5. Generate the final JSON object.
6. Read final JSON object and ensure there are no duplicate values.
7. Review format of JSON Object to ensure correctness.
8. Output JSON object.
post_user_message_content:
This configuration file contains 6 important keys.
- system_prompt
- messages
- response_format
- pre_user_message_content
- post_user_message_content
The system_prompt
is set to the suggested system prompt content for all requests to Qwen for producing the best output.
The messages
key contains counterfeit messages injected into the beginning of the conversation to mould the output of the next inference request. This gives the context window a pattern that subsequent inference request outputs tend to follow. By "preloading" our conversation with the exact input and corresponding output we expect, we are able to guide Qwen into producing more accurate content and the expense of inference time and number of tokens that fit in our context window.
The response_format
key contains the structure of a JSON Schema Object in yaml
format. This gets deserialized into the "tools:"
JSON string that is sent along with our request to the API and enforces Qwen to return a consistent JSON object as a response.
The pre_user_message_content
key contains the instructions that are prepended to the beginning or the news article content.
The post_user_message_content
key is left blank but can contain further instructions to be appended after the news article content.
awful_news_text
then sends a request to the LLama.cpp
API with a conversation that has a request body that looks like this:
{
"messages": [
{
"role": "system",
"content": "You are Qwen, created by Alibaba Cloud."
},
{
"role": "user",
"content": "U.S. judge says 2-year-old apparently deported to Honduras 'with no meaningful process'\nBy Alana Wise\n\nSaturday, April 26, 2025 • 1:12 PM EDT\n\nA Trump-nominated federal judge in Louisiana said that a 2-year-old American citizen appears to have been deported \"with no meaningful process.\" This comes as the Trump administration has faced growing criticisms for its hurried proceedings to remove as many noncitizens from the country as quickly as possible.\n\nU.S. District Judge Terry Doughty wrote that the toddler, identified as VML, had been sent to Honduras on Friday, alongside her mother and sister, even as the court had sought to clarify the girl's status. He set a hearing on the case for May 16 \"in the interest of dispelling our strong suspicion that the Government just deported a U.S. citizen with no meaningful process.\"\n\nRelated Story: NPR\nOn Friday afternoon, Doughty had called counsel for the federal government to try to speak with VML's mother and better understand the child's situation, but VML and her family were already \"above the Gulf of America,\" the judge wrote, using President Trump's preferred term for the Gulf of Mexico.\n\n\"The Government contends that this is all okay because the mother wishes that the child be deported with her,\" Doughty wrote. \"But the Court doesn't know that.\"\n\nAccording to a lawsuit filed on VML's behalf, she and her family were taken into U.S. Immigration and Customs Enforcement (ICE) custody on Tuesday while attending a routine check-in with the mother's Intensive Supervision Appearance Program (ISAP).\n\nRelated Story: NPR\nISAP is an alternative to detention for noncitizens who are in the country unlawfully.\n\nIt is not immediately clear what was flagged during that meeting to trigger deportation proceedings for VML's mother and sister. But according to a court petition, her father, who had dropped the trio off at the meeting, was informed about an hour after the start of the meeting that his partner and two daughters had been taken into custody.\n\nRelated Story: NPR\nThe suit alleges that ICE agents repeatedly refused to give VML's father her location and denied him the opportunity to speak for more than a minute to VML's mother.\n\n\"V.M.L.'s father received a call from an ICE officer, who spoke to him for about a minute,\" the filing said.\n\n\"The officer said that V.M.L.'s mother was there, and that they did not have much time to speak to each other and that they were going to deport his partner and daughters. V.M.L.'s father was able to speak with his partner for only about or less than a minute. He heard his daughters crying and his partner crying,\" the filing said.\n\nRelated Story: NPR\nAccording to the suit, at one point as VML's father tried to secure her release, New Orleans ICE Field Office Director Mellissa Harper began interrogating the family's attorney about the father's immigration status and attempted to lure him into custody as well.\n\nIn an emailed statement to NPR, the Department of Homeland Security (DHS), which oversees ICE, defended its decision.\n\n\"The parents made the decision to take the child with them to Honduras. It is common that parents want to be removed with their children,\" said Tricia McLaughlin, DHS' assistant secretary for public affairs.\n\nThe agency did not respond to further request for comment as to why McLaughlin implied that both parents had supported VML's deportation to Honduras when her father ostensibly remains in the United States.\n\nVML is just the latest to be ensnared in the messy legal process as the Trump administration has rushed to remove as many undocumented immigrants as it can.\n\nLast month, a Maryland man, Kilmar Abrego Garcia, was illegally deported to El Salvador and sent to the notorious CECOT megaprison \"due to an \"administrative error\""
},
{
"role": "assistant",
"content": "{ \"title\": \"U.S. judge says 2-year-old apparently deported to Honduras 'with no meaningful process'\", \"dateOfPublication\": \"2025-04-26\", \"timeOfPublication\": \"13:12:00\", \"summaryOfNewsArticle\": \"A U.S. District Judge has raised concerns regarding the deporting of a 2-year-old girl, identified as VML, from the United States to Honduras without following proper legal procedures. Judge Terry Doughty expressed that VML's mother and sister were deported on Friday alongside the toddler, despite a court request for clarification. This issue has arisen amidst criticisms of the Trump administration's rapid removal of noncitizens from the country. VML and her family were detained on Tuesday for a routine meeting, during which they were unexpectedly taken into custody. The judge believes that the government lacks evidence supporting the claim that VML's mother and sister wanted to be deported together, indicating potential issues with 'meaningful process.' The case highlights concerns about the Trump administration's rushed deportation procedures.\", \"namedEntities\": [{\"name\": \"VML\", \"descriptionOfEntity\": \"A 2-year-old girl who was mistakenly deported from the U.S. to Honduras without proper process.\" , \"whyIsThisEntityRelevant\": \"VML is central to the story, as she's at the center of the controversy about her deportation without proper legal process.\" }, {\"name\": \"Terry Doughty\", \"descriptionOfEntity\": \"U.S. District Judge in Louisiana who made a ruling regarding the case of VML.\" , \"whyIsThisEntityRelevant\": \"The judge who issued a ruling on the case of VML, indicating his concern over the lack of meaningful process in her deportation.\" }, {\"name\": \"Alana Wise\", \"descriptionOfEntity\": \"News reporter who published the article.\" , \"whyIsThisEntityRelevant\": \"The author of the news article that contains information about VML's deportation and the judge's ruling.\" }, {\"name\": \"U.S. District Judge\", \"descriptionOfEntity\": \"'Terry Doughty' who ruled on the case of VML.\" , \"whyIsThisEntityRelevant\": \"The judge who ruled, highlighting the critical role he played in understanding and resolving a potentially controversial scenario.\" }, {\"name\": \"Intensive Supervision Appearance Program (ISAP)\", \"descriptionOfEntity\": \"'An alternative to detention for noncitizens who are in the country unlawfully.'\" , \"whyIsThisEntityRelevant\": \"The alternative detention program that VML's mother was participating in when she and her family were apprehended by ICE.\" }, {\"name\": \"ISAP\", \"descriptionOfEntity\": \"'An alternative to detention for noncitizens who are in the country unlawfully.'\" , \"whyIsThisEntityRelevant\": \"The detention program the family was part of, which could have been tied to a potential reason for their deportation.\" }, {\"name\": \"Trump administration\", \"descriptionOfEntity\": \"'The current U.S. federal government that has faced criticism for its rapid removal of noncitizens.'\" , \"whyIsThisEntityRelevant\": \"The source of the controversy, as they are accused of rushing to remove noncitizens without proper legal process.\" }], \"keyTakeAways\": [\"A 2-year-old girl was erroneously deported from the U.S. to Honduras without proper legal process.\" ], \"importantDates\": [{\"dateMentionedInArticle\": \"2025-04-26\", \"descriptionOfWhyDateIsRelevant\": \"'The date when U.S. District Judge Terry Doughty issued a ruling regarding VML's case, highlighting the urgency of the issue and the lack of proper procedure in her deportation process.\" }], \"importantTimeframes\": [{\"approximateTimeFrameStart\": \"Now\", \"approximateTimeFrameEnd\": \"2025-04-26\", \"descriptionOfWhyTimeFramRelevant\": \"'The time frame when the issue of VML's deportation without proper process came to light, indicating ongoing concern and potential for future occurrences.\" }, {\"approximateTimeFrameStart\": \"2017-01-20\", \"approximateTimeFrameEnd\": \"2022-12-31\", \"descriptionOfWhyTimeFramRelevant\": \"'The time frame when the Trump administration was in power, suggesting that this issue may relate to their policies of rapid deportation.\" }]}"
},
{
"role": "user",
"content": "Please read the following news article and extract all of the key elements verbatim. To extract the key elements and summarize, follow these steps:\n1. Identify all named entities.\n2. Write a sentence describing why this entity is relevant to the world outside of the article.\n3. Write a sentence describing how this entity is relevant to the article.\n4. Compile the key information points and create a summary paragraph.\n5. Generate the final JSON object.\n6. Read final JSON object and ensure there are no duplicate values.\n7. Review format of JSON Object to ensure correctness.\n8. Output JSON object. \n\t Taylor Swift subpoenaed in Blake Lively and Justin Baldoni case \n \n By Elizabeth Wagmeister and Dan Heching, CNN\n \n\n \nUpdated: \n 12:37 AM EDT, Sat May 10, 2025\n \n\n\n\n \n Source: CNN\n \n \n Taylor Swift has been subpoenaed in the case between Blake Lively and Justin Baldoni.\n \n\n \n Swift – a longtime friend of Lively’s – was first mentioned in connection to the ongoing legal dispute between Lively and her “It Ends with Us” director and costar when text exchanges were revealed to include the name “Taylor” as part of Baldoni’s $400 million defamation countersuit against Lively and her husband Ryan Reynolds in January.\n \n\n \n One of the text messages included in Baldoni’s suit appears to show an exchange between Baldoni and Lively about the script for the film: “I really love what you did. It really does help a lot. Makes it so much more fun and interesting. (And I would have felt that way without Ryan and Taylor),” Baldoni wrote with a wink emoji. “You really are a talent across the board. Really excited and grateful to do this together.”\n \n\n \n A spokesperson for Swift on Friday told CNN, “Taylor Swift never set foot on the set of this movie, she was not involved in any casting or creative decisions, she did not score the film, she never saw an edit or made any notes on the film, she did not even see ‘It Ends With Us’ until weeks after its public release, and was traveling around the globe during 2023 and 2024.”\n \n\n \n “The connection Taylor had to this film was permitting the use of one song, ‘My Tears Ricochet.’ Given that her involvement was licensing a song for the film, which 19 other artists also did, this document subpoena is designed to use Taylor Swift’s name to draw public interest by creating tabloid clickbait instead of focusing on the facts of the case,” the spokesperson added.\n \n\n \n CNN has reached out to representatives for Baldoni for comment.\n \n\n \n When reached for comment later on Friday, a spokesperson for Lively said Baldoni and his legal team “continue to turn a case of sexual harassment and retaliation into entertainment for the tabloids.”\n \n\n \n “This is a very serious legal matter, not Barnum & Bailey’s Circus,” the spokesperson also said. “The defendants continue to publicly intimidate, bully, shame and attack women’s rights and reputations.”\n \n\n \n Lively accused Baldoni of sexual harassment and retaliation in a complaint first filed with the California Civil Rights Department in December, preceding a lawsuit that followed about a week later. She also claimed that Baldoni, along with his PR representatives, orchestrated a “social manipulation campaign” to hurt her reputation in the media while they were promoting “It Ends with Us,” their 2024 film at the center of the dispute.\n \n\n \n In an amended complaint filed in February, Lively alleged other women also raised claims about Baldoni’s behavior on set.\n \n\n \n Baldoni has denied the allegations.\n \n\n \n Along with Lively, Reynolds is named as a defendant in the $400 million defamation lawsuit Baldoni filed in January.\n \n\n \n Baldoni has accused Reynolds of assisting Lively in “hijacking” his film and taking down his career. He claimed that Reynolds, who had no formal role on “It Ends With Us,” re-wrote a scene and made “unauthorized changes to the script in secret.” Baldoni also accused Reynolds of reprimanding him at the couple’s home in New York and alleged Reynolds made fun of him in “Deadpool & Wolverine,” mirroring the character Nicepool after Baldoni in an effort to mock him.\n \n\n \n An attorney for Reynolds filed a request for him to be dropped as a defendant from Baldoni’s suit, claiming that his argument against Reynolds has no legal bounds and amounts to “hurt feelings.”\n \n\n \n The trial in the case is set for March 2026.\n \n\n See Full Web Article \n\n"
}
],
"model": "qwen2.5-3B-mlx",
"max_tokens": 32768,
"response_format": {
"type": "json_schema",
"json_schema": {
"description": "Represents a summarized news article.",
"name": "article_summarizer",
"schema": {
"properties": {
"dateOfPublication": {
"format": "date",
"type": "string"
},
"importantDates": {
"items": {
"properties": {
"dateMentionedInArticle": {
"format": "date",
"type": "string"
},
"descriptionOfWhyDateIsRelevant": {
"type": "string"
}
},
"required": [
"dateMentionedInArticle",
"descriptionOfWhyDateIsRelevant"
],
"type": "object"
},
"type": "array"
},
"importantTimeframes": {
"items": {
"properties": {
"approximateTimeFrameEnd": {
"type": "string"
},
"approximateTimeFrameStart": {
"type": "string"
},
"descriptionOfWhyTimeFrameIsRelevant": {
"type": "string"
}
},
"required": [
"approximateTimeFrameStart",
"approximateTimeFrameEnd",
"descriptionOfWhyTimeFrameIsRelevant"
],
"type": "object"
},
"type": "array"
},
"keyTakeAways": {
"items": {
"type": "string"
},
"type": "array"
},
"namedEntities": {
"items": {
"properties": {
"name": {
"description": "Name of entity.",
"type": "string"
},
"whatIsThisEntity": {
"description": "Explanation of how this entity is relevant to the world.",
"type": "string"
},
"whyIsThisEntityRelevantToTheArticle": {
"description": "Explanation of why this named entity is relevant to the article.",
"type": "string"
}
},
"required": [
"name",
"whatIsThisEntity",
"whyIsThisEntityRelevantToTheArticle"
],
"type": "object"
},
"type": "array"
},
"summaryOfNewsArticle": {
"type": "string"
},
"timeOfPublication": {
"format": "time",
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"dateOfPublication",
"timeOfPublication",
"summaryOfNewsArticle",
"namedEntities",
"keyTakeAways",
"importantDates",
"importantTimeframes"
],
"type": "object"
},
"strict": true
}
},
"stop": [
"\n<|im_start|>",
"<|im_end|>"
]
}
It returns the following response body:
{
"id": "chatcmpl-ej077tnyn5t2lnixxy0fl",
"object": "chat.completion",
"created": 1746852657,
"model": "qwen2.5-3b-mlx",
"choices": [
{
"index": 0,
"logprobs": null,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "{\"dateOfPublication\": \"2025-05-10\", \"importantDates\": [{\"dateMentionedInArticle\": \"2025-05-10\", \"descriptionOfWhyDateIsRelevant\": \"The date when the news article was published, detailing Taylor Swift's subpoena in the Blake Lively and Justin Baldoni case.\"}, {\"dateMentionedInArticle\": \"2024-12-01\", \"descriptionOfWhyDateIsRelevant\": \"The date when Lively filed her initial complaint with the California Civil Rights Department regarding Baldoni's alleged behavior.\"}, {\"dateMentionedInArticle\": \"2025-01-17\", \"descriptionOfWhyDateIsRelevant\": \"The date when the $400 million defamation lawsuit was filed by Baldoni against Lively and Reynolds.\"}, {\"dateMentionedInArticle\": \"2025-02-01\", \"descriptionOfWhyDateIsRelevant\": \"The date when Lively filed an amended complaint, adding other women's claims against Baldoni.\"}, {\"dateMentionedInArticle\": \"2026-03-01\", \"descriptionOfWhyDateIsRelevant\": \"The date set for the trial of the case involving Blake Lively, Justin Baldoni, and Ryan Reynolds.\"}], \"importantTimeframes\": [{\"approximateTimeFrameEnd\": \"2025-05-10\", \"approximateTimeFrameStart\": \"Now\", \"descriptionOfWhyTimeFrameIsRelevant\": \"The current timeline as of the publication date, highlighting the ongoing legal dispute and Taylor Swift's involvement.\"}, {\"approximateTimeFrameEnd\": \"2026-03-01\", \"approximateTimeFrameStart\": \"2025-01-17\", \"descriptionOfWhyTimeFrameIsRelevant\": \"The legal timeline from the filing of Baldoni's lawsuit to the trial date, showing the progression of the case.\"}], \"keyTakeAways\": [\"Taylor Swift has been subpoenaed in the Blake Lively and Justin Baldoni case, despite her lack of involvement with the film 'It Ends With Us'.\"], \"namedEntities\": [{\"name\": \"Taylor Swift\", \"whatIsThisEntity\": \"A prominent singer and songwriter who was subpoenaed in the legal case involving Blake Lively and Justin Baldoni.\", \"whyIsThisEntityRelevantToTheArticle\": \"Taylor Swift was mentioned in the legal case due to text messages that included her name, leading to a subpoena for her involvement.\"}, {\"name\": \"Blake Lively\", \"whatIsThisEntity\": \"A celebrity actress and the plaintiff in the defamation case against Justin Baldoni.\", \"whyIsThisEntityRelevantToTheArticle\": \"Blake Lively is the plaintiff in the defamation case, which involves allegations of sexual harassment and retaliation against Justin Baldoni.\"}, {\"name\": \"Justin Baldoni\", \"whatIsThisEntity\": \"A film director and costar of 'It Ends With Us' who is the defendant in the defamation case against Blake Lively.\", \"whyIsThisEntityRelevantToTheArticle\": \"Justin Baldoni is the defendant in the defamation case, accused of sexual harassment and retaliation against Blake Lively.\"}, {\"name\": \"Ryan Reynolds\", \"whatIsThisEntity\": \"A celebrity actor and husband of Blake Lively, who is also a defendant in the defamation case against Justin Baldoni.\", \"whyIsThisEntityRelevantToTheArticle\": \"Ryan Reynolds is a defendant in the defamation case, accused of assisting Blake Lively in 'hijacking' Justin Baldoni's film and taking down his career.\"}, {\"name\": \"California Civil Rights Department\", \"whatIsThisEntity\": \"A government agency that received Blake Lively's initial complaint about Justin Baldoni's alleged behavior.\", \"whyIsThisEntityRelevantToTheArticle\": \"Blake Lively filed her initial complaint with the California Civil Rights Department, which led to the defamation lawsuit against Justin Baldoni.\"}, {\"name\": \"It Ends With Us\", \"whatIsThisEntity\": \"A 2024 film starring Blake Lively and Justin Baldoni, which is at the center of the legal dispute.\", \"whyIsThisEntityRelevantToTheArticle\": \"The film 'It Ends With Us' is the central issue in the legal dispute, with allegations of sexual harassment and retaliation against Justin Baldoni.\"}, {\"name\": \"Deadpool & Wolverine\", \"whatIsThisEntity\": \"A 2024 film where Justin Baldoni is mocked by Ryan Reynolds, mirroring the character Nicepool after Baldoni in an effort to mock him.\", \"whyIsThisEntityRelevantToTheArticle\": \"Ryan Reynolds' actions in the film 'Deadpool & Wolverine' are part of the allegations against him in the defamation case.\"}], \"summaryOfNewsArticle\": \"Taylor Swift has been subpoenaed in the legal case between Blake Lively and Justin Baldoni, despite her lack of involvement with the film 'It Ends With Us.' The case began when text messages, including Taylor's name, were revealed to be part of Baldoni's $400 million defamation countersuit against Lively and her husband Ryan Reynolds. Swift's spokesperson clarified that she was not involved in any aspects of the film, only licensing a song. The case is ongoing with a trial set for March 2026, and both sides continue to present their arguments about the allegations of sexual harassment and retaliation.\" , \"timeOfPublication\": \"12:37:00\", \"title\": \"Taylor Swift subpoenaed in Blake Lively and Justin Baldoni case\"}"
}
}
],
"usage": {
"prompt_tokens": 2751,
"completion_tokens": 1203,
"total_tokens": 3954
},
"stats": {},
"system_fingerprint": "qwen2.5-3b-mlx"
}
Awful News Text then deserializes the JSON into structs. It then calculates the "edition" or time of day which is only a bit tricky because the evening edition window actually runs from 8pm-4am Eastern Time. A JSON output directory is passed as a command line argument and after each article is deserialized a JSON file named after the date, like 2025-05-11.json
, is written to the directory. This was done so that you could theoretically have a realtime API, were you to write to a directory that you are serving to the web. It then builds a table of contents for the day's news, which it saves to a markdown file titled after the edition's day, like 2025-05-11.md
, to an mdBook repository. It then adds an entry for the edition to the top of SUMMARY.md
.
Currently this mdBook is built and then copied to a web directory, its permissions are adjusted and our distraction-free news experience is available for public consumption. If you're old like me, or just have bad eyes I highly recommend the Papier
theme built into the book. It has greatly helped with my eye strain and ability to focus.
Further Work to Be Done
Since beginning this post, I've found Google Collab notebooks to be unreliable for use as an API for model inference and prohibitively expensive. I found that a Macbook Pro M1 is plenty powerful enough to run not only the Qwen 2.5 3B
model the projected started with but Qwen's most recent Qwen 3 4B
parameter model.
I would also like to add the astrological moon phase to each edition. While not a scientifically accurate window through which to view the trend of world events I find the inclusion of something fun like this to add levity when news burnout inevitably kicks in. It also gives us something more to talk about.
There are also extremely fun finetunes of models available like Trismegistus that I've been having illuminating conversations with about The Book of Enoch. I'd like to make a parody site to act as a mirror to the world's events, and use Trismegistus to rewrite the world's events from the perspective of angelic intervention being the initiaiting factor of each key event.
I'm hoping it will spark some motivation for books I plan to write in the future. In the meantime I hope you enjoy Awful Security News.