ea

Episode 438: Andy Powell on Lessons Learned from a Major Cyber Attack

Andy Powell is the CISO of AP Moller Maersk and discusses the 2017 cyber attack that hit the company and the lessons learned for preventing and recovering from future attacks.




ea

Episode 460: Evan Weaver on FaunaDB

Evan Weaver of Fauna discusses the Fauna distributed database. Host Felienne spoke with him about its design and properties, as well as the FQL query language, and the different models it supports: document-based as well as relational.




ea

Episode 469: Dhruba Borthakur on Embedding Real-time Analytics in Applications

Dhruba Borthakur, CTO and co-founder of Rockset, discusses the use cases and core requirements of real-time analytics, as well as the evolution from batch to real time and the need for a new architecture with host Kanchan Shringi.




ea

Episode 473: Mike Del Balso on Feature Stores

Mike Del Balso, co-founder of Tecton discusses Feature Stores which are data platforms to operationalize Machine Learning applications. He talks about challenges faced by teams in creating custom data pipelines to serve models in production...




ea

Episode 479: Luis Ceze on the Apache TVM Machine Learning Compiler

Luis Ceze of OctoML discusses Apache TVM, an open source machine learning model compiler for a variety of different hardware architectures with host Akshay Manchale. Luis talks about the challenges in deploying models on specialized hardware and how TVM.




ea

Episode 488: Chris Riccomini and Dmitriy Ryaboy on the Missing Readme

Chris Riccomini and Dmitriy Ryaboy discuss their book, The Missing Readme, which is intended to be the missing manual for new software engineers. Felienne spoke with Riccomini and Ryaboy about a range of topics that new software engineers might not have..




ea

Episode 493: Ram Sriharsha on Vectors in Machine Learning

Ram Sriharsha of Pinecone discusses the role of vectors in machine learning, a technique that lies at the heart of many of the machine learning applications we use every day. Host Philip Winston spoke with Sriharsha about the basics of vectors, vector...




ea

Episode 494: Robert Seacord on Avoiding Defects in C Programming

Robert Seacord, author of Effective C, The CERT C Coding Standard and Secure Coding in C and C++, discusses why the C programming language can be insecure, the top 5 security issues and the tools and techniques you can employ to write secure code in C.




ea

Episode 494: Robert Seacord on Avoiding Defects in C Programming

Robert Seacord, author of Effective C, The CERT C Coding Standard and Secure Coding in C and C++, discusses why the C programming language can be insecure, the top 5 security issues and the tools and techniques you can employ to write secure code in C.




ea

Episode 501: Bob Ducharme on Creating Technical Documentation for Software Projects

Nikhil Krishna speaks to Bob DuCharme an experienced technical writer and author about how to write and maintain technical documentation for software products. In the episode different mediums to distribute documentation and tools to maintain documentation are discussed.




ea

Episode 505: Daniel Stenberg on 25 years with cURL

Daniel Stenberg, founder and lead developer of cURL and libcurl, and winner of the Polhem Prize, discusses the history of the project, key events in the project timeline, war stories, favorite command line options and various experiences from 25 years of developing an Open Source project.




ea

Episode 505: Daniel Stenberg on 25 years with cURL

Daniel Stenberg, founder and lead developer of cURL and libcurl, and winner of the Polhem Prize, discusses the history of the project, key events in the project timeline, war stories, favorite command line options and various experiences from 25 years of developing an Open Source project.




ea

Episode 532: Peter Wyatt and Duff Johnson on 30 Years of PDF

Peter Wyatt, CTO at PDF Association and project co-Leader of ISO 32000 (the core PDF standard), Duff Johnson CEO at PDF Association and ISO Project co-Leader and US TAG chair for both ISO 32000, discuss the 30 years' history of PDF, how to make a PDF...




ea

Episode 536: Ryan Magee on Software Engineering in Physics Research

Ryan Magee, postdoctoral scholar research associate at LIGO Laboratory – Caltech, joins host Jeff Doolittle for a conversation about how software is used by scientists in physics research. The episode begins with a discussion of gravitational waves...




ea

Episode 549: William Falcon Optimizing Deep Learning Models

William Falcon of Lighting AI discusses how to optimize deep learning models using the Lightning platform, optimization is a necessary step towards creating a production application. Philip Winston spoke with Falcon about PyTorch, PyTorch Lightning...




ea

SE Radio 557: Timothy Beamish on React and Next.js

Timothy Beamish of BenchSci discusses React and Next.js, two of today's most popular front-end frameworks. Host Philip Winston speaks with Beamish about components, routing, JSX, client-side and server-side rendering, single-page applications, automatic code-splitting, image optimization, and more. Beamish also details his experience moving a real-world application to Next.js.

 




ea

SE Radio 566: Ashley Peacock on Diagramming in Software Engineering

Ashley Peacock, author of the book Creating Software with Modern Diagramming Techniques, speaks with SE Radio host Akshay Manchale about diagrams in software engineering. They discuss the power of diagramming and some reasons we don’t fully use it as often as we should. Ashley contrasts historical use of UML diagrams versus modern diagrams, which don't have hard rules about representations. The episode examines different types of diagrams through an example application and how it could be built with modern tools such as Streamy to simplify the building, versioning, and maintenance of diagrams.




ea

SE Radio 577: Casey Muratori on Clean Code, Horrible Performance?

Casey Muratori caused some strong reactions with a blog post and an associated video in which he went through an example from the “Clean Code” book by Robert Martin to demonstrate the negative impact that clean code practices can have on performance. In this episode, he joins SE Radio’s Giovanni Asproni to talk about the potential trade-offs between performance and the qualities that make for maintainable code, these qualities being the main focus of Clean Code. Brought to you by IEEE Computer Society and IEEE Software magazine.




ea

SE Radio 582: Leo Porter and Daniel Zingaro on Learning to Program with LLMs

Dr. Daniel Zingaro and Dr. Leo Porter, co-authors of the book Learn AI-Assisted Python Programming, speak with host Jeremy Jung about teaching programming with the aid of large language models (LLMs). They discuss writing a book to use in Leo's introductory CS class and explore how GitHub Copilot de-emphasizes syntax errors, reduces the need to memorize APIs, and why they want students to write manual test cases. They also discuss possible ethical concerns of relying on commercial tools, their impact on coursework, and why they aren't worried about students cheating with LLMs.




ea

SE Radio 588: José Valim on Elixir, Machine Learning, and Livebook

José Valim, creator of the Elixir programming language, Chief Adoption Officer at Dashbit, and author of three programming books, speaks with SE Radio host Gavin Henry about what Elixir is today, what Livebook is, the five spearheads of the new machine learning ecosystem for Elixir, and how they all fit together. Valim describes why he created Elixir, what “the beam” is, and how he pitches it to new users. This episode examines things you can do with Livebook and how it is well-aligned with machine learning, as well as why immutability is important and how it works. They take a detailed look at a range of topics, including tensors with Nx, traditional machine learning with Scholar, data munging with Explorer, deep learning and neural networks with Axon, Bumblebee and Huggingface, and model creation basics. Brought to you by IEEE Computer Society and IEEE Software magazine.




ea

SE Radio 594: Sean Moriarity on Deep Learning with Elixir and Axon

Sean Moriarity, creator of the Axon deep learning framework, co-creator of the Nx library, and author of Machine Learning in Elixir and Genetic Algorithms in Elixir, published by the Pragmatic Bookshelf, speaks with SE Radio host Gavin Henry about what deep learning (neural networks) means today. Using a practical example with deep learning for fraud detection, they explore what Axon is and why it was created. Moriarity describes why the Beam is ideal for machine learning, and why he dislikes the term “neural network.” They discuss the need for deep learning, its history, how it offers a good fit for many of today’s complex problems, where it shines and when not to use it. Moriarity goes into depth on a range of topics, including how to get datasets in shape, supervised and unsupervised learning, feed-forward neural networks, Nx.serving, decision trees, gradient descent, linear regression, logistic regression, support vector machines, and random forests. The episode considers what a model looks like, what training is, labeling, classification, regression tasks, hardware resources needed, EXGBoost, Jax, PyIgnite, and Explorer. Finally, they look at what’s involved in the ongoing lifecycle or operational side of Axon once a workflow is put into production, so you can safely back it all up and feed in new data. Brought to you by IEEE Computer Society and IEEE Software magazine. This episode sponsored by Miro.




ea

SE Radio 605: Yingjun Wu on Streaming Databases

Yingjun Wu, founder of RisingWave Labs and previously a software engineer at Amazon Web Services and researcher at IBM Almaden Research Center, speaks with SE Radio host Brijesh Ammanath about streaming databases. After considering the benefits and unique challenges, they delve into the architecture and design patterns of streaming databases, as well as the evolution and security considerations. Yingjun also talks about the future of streaming databases, including the potential impact that Amazon S3 Express One Zone will have on the streaming landscape, and how the unified batch and streaming might evolve in the database world. Brought to you by IEEE Computer Society and IEEE Software magazine.




ea

SE Radio 614: Wouter Groeneveld on Creative Problem Solving for Software Development

Wouter Groeneveld, author of The Creative Programmer and PhD researcher at KU Leuven, discusses his research related to programming education with host Jeremy Jung. Topics include evaluating projects, constraints, social debt in teams, common fallacies in critical thinking, maintaining flow state, documenting and retaining knowledge, and creating environments that encourage creativity. Brought to you by IEEE Software and IEEE Computer Society.




ea

SE Radio 618: Andreas Møller on No-Code Platforms

Andreas Møller, founder of Toddle, a no-code tool for building scalable performant web applications, speaks with SE Radio's Brijesh Ammanath about no-code platforms. They discuss the role of developers in a no-code ecosystem and explore scalability and performance considerations, as well as enterprise adoption of no-code tools. Andreas also expands on why he built Toddle.dev and its unique features. Brought to you by IEEE Computer Society and IEEE Software.




ea

SE Radio 627: Chuck Weindorf on Leaders and Software Engineers

Chuck Weindorf, a retired IT director and chief engineer with nearly 40 years' experience in software engineering, joins host Jeff Doolittle for a conversation about the concepts in Chuck's book, Leaders & Software Engineers. Through personal anecdotes and insights gleaned from his extensive career, Chuck underscores quality assurance's critical role in building trust with users and fostering a proactive culture of defect resolution within development teams. He highlights how ethical considerations underpin trust and integrity within the software engineering profession.

Chuck and Jeff examine the significance of thorough documentation and the vital role of effective communication in overcoming silos within organizations, and ensuring that projects meet their intended objectives while maintaining high standards of quality and reliability. They discuss how to cultivate a positive, innovative culture within engineering teams. Chuck shares strategies for addressing challenges and opportunities presented by change, advocating for adaptability and continuous learning as essential qualities for both new and experienced engineers navigating the evolving technological landscape. He offers advice for those transitioning into leadership roles, emphasizing the importance of developing soft skills and the ability to empathize with and inspire team members. Finally, the episode explores the potential impact of emerging technologies, such as low-code platforms and artificial intelligence.

Brought to you by IEEE Computer Society and IEEE Software magazine. 




ea

SE Radio 638: Nick Tune and Jean-Georges Perrin on Architecture Modernization

Nick Tune and Jean-Georges Perrin join host Giovanni Asproni to talk about their proposed approach to modernizing legacy systems. The episode starts with some high-level perspective to set context for the approach described in their book, Architecture Modernization (Manning, 2024). From there, the discussion turns to important details, including criteria for deciding which aspects to revisit; some of the activities, processes, and tools; and the importance of data engineering in modernization efforts. Nick and Jean-Georges describe how to successfully implement an architecture-modernization effort, and how to fit that work with the teams' other priorities. The episode finishes with some warnings about the typical risks associated with modernizing a legacy system, and suggestions on how to mitigate them.

This episode is sponsored by QA Wolf.




ea

SE Radio 641: Catherine Nelson on Machine Learning in Data Science

Catherine Nelson, author of the new O’Reilly book, Software Engineering for Data Scientists, discusses the collaboration between data scientists and software engineers -- an increasingly common pairing on machine learning and AI projects. Host Philip Winston speaks with Nelson about the role of a data scientist, the difference between running experiments in notebooks and building an automated pipeline for production, machine learning vs. AI, the typical pipeline steps for machine learning, and the role of software engineering in data science. Brought to you by IEEE Computer Society and IEEE Software magazine.




ea

Philips Performance Wireless TAPH805BK Bluetooth Headset Review

The Philips Performance Wireless TAPH805BK are wireless headphones with battery life that will knock your socks off, but the sound quality has a lot of room for improvement.... [PCSTATS]




ea

Lenovo HT10 True Wireless Bluetooth Earbuds Review

The HT10 True Wireless Bluetooth Earbuds by Lenovo are aimed towards consumers on a tight budget looking to get the best bang for the buck. ... [PCSTATS]




ea

AMD CPUs for the past 9 years are vulnerable to data leak attacks

"It's not just Intel chips that are vulnerable to hard-to-fix security flaws. Researchers at the Graz University of Technology have detailed a pair of side channel attacks under the "Take A Way" name that can leak data from AMD processors dating back to 2011, whether it's an old Athlon 64 X2, a Ryzen 7 or a Threadripper. Both exploit the "way predi... [PCSTATS]




ea

Razer Kraken Ultimate Gaming Headset Review

"About a year ago we took a look at Razer�s Kraken Tournament Edition headset, which we really did enjoy. It was however designed for professional gamers, hence the name �Tournament Edition�. For those looking for a more polished home solution Razer has the new Kraken Ultimate Edition. This sits as their flagship Kraken gaming headset and brings al... [PCSTATS]




ea

Creative SXFI AIR C Headphones Review

" After re-creating our profile in the SXFI mobile application, we went on and watched several TV shows such as Star Trek: Picard, Better Call Saul and Altered Carbon. The EQ was left on neutral and we were quite surprised by the quality of the surround sound delivered by the product, same basically as the one found with the SXFI THEATER. SXFI AIR ... [PCSTATS]




ea

Raspberry Pi Enthusiast Creates Coronavirus Live Global Tracker Display

There are so many things that can be done with a little spare time and a Raspberry Pi that it boggles the mind; the little developer board can be made to do just about anything builders can dream up. One of the most recent projects we've seen using the Pi turned up on Reddit from a person called jul-bruegger who combined the Raspberry Pi Zero... [PCSTATS]




ea

Galax GeForce RTX 2070 Super HOF 10 Year Anniversary

The Galax RTX 2070 Super HOF 10 Year comes with a large overclock on both GPU and memory, it's actually the fastest RTX 2070 we ever tested, almost matching RTX 2080. Thanks to a large power limit increase and 16 Gbps memory chips from Samsung, manual overclocking works great, too.... [PCSTATS]




ea

RIOTORO Aviator Classic Gaming Headset Review

Riotoro just released their very first 7.1 virtual surround sound gaming headset called the Aviator Classic and today it�s up to us to put it to the test. ... [PCSTATS]




ea

Fnatic React Gaming Headset

Fnatic React is the first gaming headset released by this world-famous esports brand. It's a simple analog headset with no extra features or gimmicks. It is laser-focused on what's important: sound and microphone quality, as well as wearing comfort.... [PCSTATS]




ea

Threadripper 3990X TRX40 VRM Torture Test

Today we're going to perform some AMD TRX40 motherboard VRM thermal testing using the powerful 64-core Threadripper 3990X. To apply load we're using Blender with the system running at stock and overclocked to 3.8 GHz. The typical power draw for this system is around 450 watts, but once overclocked we are hitting as much as 850 watts. Toasty!... [PCSTATS]




ea

Vertagear SL5000SE Gaming Chair Review

Are you in the market for a new gaming chair? Vertagear has only been in the world of chairs since 2015 but they have plenty of options available. The SL5000 features top of the line fabrics with intricate stitching, removable lumbar pillow and luxurious memory foam head pillow � but what else sets the SL5000 special edition apart from the competit... [PCSTATS]




ea

Should Feed Readers Count Unread Items?

Brent Simmons, the developer of the NetNewsWire RSS reader, is questioning his decision to put an unread count next to each feed, reasoning that it encourages people to be too obsessive about reading every item:

Instead of a dozen bookmarks, people had a hundred feeds. Or two hundred. Or two thousand.

And there was a tyranny behind keeping track of unread items and showing an unread count. People reacted in different ways, but many people felt like they always had to go through everything.

Including me. To this day.

I did not know this was going to happen. That was not the idea: it was a side effect of reasonable (at the time) choices.

I like seeing these counts on feeds where I need to read all items that are posted, but that's only a small percentage of the 100-120 feeds I follow. It would be nice to turn that off for others I read more casually.

Feedly presents unread counts on each feed and folder of feeds. There's a Mark As Read button to clear a count, but when you click it, the confirmation dialog acts like it's an extremely consequential decision: "Are you sure you want to mark this entire source as read? This operation cannot be undone."

I've posed a question on the RSS-Public mailing list: Do you think feed readers should count unread items?




ea

How to Read an RSS Feed with PHP Using SimplePie

If you need to load an RSS feed with the PHP programming language, the open source library SimplePie greatly simplifies the process of pulling in items from a feed to present on a website, store in a database or do something else coooool with the data. There's a full installation guide for SimplePie but you can skip it with just three steps:

  1. Download SimplePie 1.5.
  2. Copy the file autoloader.php and the folder library to a folder that's accessible from your PHP code.
  3. Make note of this folder; you'll be using require_once() to load autoloader.php from that location.

SimplePie has been designed to work the same regardless a feed's format. It supports RSS 2.0, RSS 1.0, Atom and the earlier versions of RSS. Additionally it can read feed elements from nine namespaces.

Here's PHP code that loads feed items from the news site Techdirt and displays them in HTML:

// load the SimplePie library
require_once('/var/www/libraries/simplepie-1.5/autoloader.php');

// load the feed
$feed = new SimplePie();
$feed->set_feed_url('https://www.techdirt.com/feed/');
$feed->init();
$feed->handle_content_type();

// create the output
$html_output = '';
foreach ($feed->get_items() as $item) {
  $html_output .= '<p><a href="' . $item->get_link() . '">' . $item->get_title() . '</a></p>';
  $html_output .= $item->get_description();
  $html_output .= '<p>By ' . $item->get_author(0)->get_name() . ', ' . $item->get_date();
}

// display the output
ECHO <<<END
$html_output
END;

The API documentation for SimplePie_Item lists the functions that can extract data from each feed item. The versatility of the library is demonstrated by get_authors(), which can retrieve an item's authorship information whether it was in the RSS author element, Dublin Core creator, iTunes author, or Atom author.

SimplePie supports caching so that a feed isn't downloaded every time code is executed. The addition of these lines turns on caching, specifies the location of a cache folder and sets the time to use a cached version to four hours (14,400 seconds):

$feed->set_cache_location('/var/www/cache/');
$feed->set_cache_duration(14400);
$feed->enable_cache();

SimplePie was created by RSS Advisory Board member Ryan Parman, Geoffrey Sneddon and Ryan McCue. The project is currently maintained on GitHub by Malcom Blaney.




ea

Atom Feed Format Was Born 20 Years Ago

This month marks the 20th anniversary of the effort that became the Atom feed format. It all began on June 16, 2003, with a blog post from Apache Software Foundation contributor Sam Ruby asking for feedback about what constitutes a well-formed blog entry.

The development of RSS 2.0 had been an unplanned hopscotch from a small group at Netscape to a smaller one at UserLand Software, but Atom was a barn raising. Hundreds of software developers, web publishers and technologists gathered for a discussion in the abstract that led to a concrete effort to build a well-specified syndication format and associated publishing API that could become Internet standards. Work was done on a project wiki that grew to over 1,500 pages. Everything was up for a vote, including a plebiscite on choosing a name that ballooned into a four-month-long bike shed discussion in which Pie, Echo, Wingnut, Feedcast, Phaistos and several dozen alternatives finally, mercifully, miraculously lost out to Atom.

The road map of the Atom wiki lists the people, companies and projects that jumped at the chance to create a new format for feeds. XML specification co-author Tim Bray wrote:

The time to write it all down and standardize it is not when you're first struggling to invent the technology. We now have aggregators and publishing systems and search engines and you-name-it, and I think the community collectively understands pretty well what you need, what you don't need, and what a good syntax looks like.

So, now's the time.

As someone whose only contribution to the project was voting on names, I think I was too quick to rule out Phaistos, a suggestion inspired by a clay disc produced by movable type before 1600 B.C. Comments on the wiki page proposing that monicker offer a sample of the name wars:

MikeBlumenthal: Does one of the great mysteries of antiquity, a document which, after almost 100 years of trying, is still a mystery not only as to its meaning but even as to its purpose, and which stands as a paragon of impenetrability, really fit as a name for an interoperability format?

Jayseae: Actually, the current state of RSS is pretty much a mystery -- why should this project be any different? I like the association with publishing -- though I'm not sure the pronunciation really flows. Perhaps it could be shortened somehow?

AsbjornUlsberg: Sorry, but I don't like it. We could just as gladly give the project any other Greek-sounding name, like Papadopolous.

Arising from all the chaos and debate, the Atom format became a beautifully specified IETF standard in 2005 edited by Mark Nottingham and Robert Sayre that's used today in millions of feeds. It is the most popular syndication format that's never argued about.

Everybody got that out of their system on the wiki.




ea

How to Read an RSS Feed with Java Using XOM

There are a lot of libraries for processing XML data with Java that can be used to read RSS feeds. One of the best is the open source library XOM created by the computer book author Elliotte Rusty Harold.

As he wrote one of his 20 books about Java and XML, Harold got so frustrated with the available Java libraries for XML that he created his own. XOM, which stands for XML Object Model, was designed to be easy to learn while still being strict about XML, requiring documents that are well-formed and utilize namespaces in complete adherence to the specification. (At the RSS Advisory Board, talk of following a spec is our love language.)

XOM was introduced in 2002 and is currently up to version 1.3.9, though all versions have remained compatible since 1.0. To use XOM, download the class library in one of the packages available on the XOM homepage. You can avoid needing any further configuration by choosing one of the options that includes third-party JAR files in the download. This allows XOM to use an included SAX parser under the hood to process XML.

Here's Java code that loads items from The Guardian's RSS 2.0 feed containing articles by Ben Hammersley, displaying them as HTML output:

// create an XML builder and load the feed using a URL
Builder bob = new Builder();
Document doc = bob.build("https://www.theguardian.com/profile/benhammersley/rss");
// load the root element and channel
Element rss = doc.getRootElement();
Element channel = rss.getFirstChildElement("channel");
// load all items in the channel
Elements items = channel.getChildElements("item");
for (Element item : items) {
  // load elements of the item
  String title = item.getFirstChildElement("title").getValue();
  String author = item.getFirstChildElement("creator",
    "http://purl.org/dc/elements/1.1/").getValue();
  String description = item.getFirstChildElement("description").getValue();
  // display the output
  System.out.println(">h2>" + title + ">/h2>");
  System.out.println(">p>>b>By " + author + ">/b>>/p>");
  System.out.println(">p>" + description + ">/p>");

All of the classes used in this code are in the top-level package nu.xom, which has comprehensive JavaDoc describing their use. Like all Java code this is a little long-winded, but Harold's class names do a good job of explaining what they do. A Builder uses its build() method with a URL as the argument to load a feed into a Document over the web. There are also other build methods to load a feed from a file, reader, input stream, or string.

Elements can be retrieved by their names such as "title", "link" or "description". An element with only one child of a specific type can be retrieved using the getFirstChildElement() method with the name as the argument:

Element linkElement = item.getFirstChildElement("link");

An element containing multiple children of the same type uses getChildElements() instead:

Elements enclosures = item.getChildElements("enclosure");
if (enclosures.size() > 1) {
  System.out.println("I'm pretty sure an item should only include one enclosure");
}

If an element is in a namespace, there must be a second argument providing the namespace URI. Like many RSS feeds, the ones from The Guardian use a dc:creator element from Dublin Core to credit the item's author. That namespace has the URI "http://purl.org/dc/elements/1.1/".

If the element specified in getFirstChildElement() or getChild Elements() is not present, those methods return null. You may need to check for this when adapting the code to load other RSS feeds.

If the name Ben Hammersley sounds familiar, he coined the term "podcasting" in his February 2004 article for The Guardian about the new phenomenon of delivering audio files in RSS feeds.




ea

Surprising Solidarity in the Fight for Clean Water and Justice on O’ahu

After a 2021 leak at the U.S. military’s Red Hill fuel storage facility poisoned thousands, activists, Native Hawaiians, and affected military families have become unlikely allies in the fight for accountability.








ea

Why This Vegan Restaurant Introduced Meat

Sage Regenerative Kitchen’s executive chef explains why she added meat to the menu—and why she believes so deeply in regenerative farming.





ea

How to Defeat the Far-Right: Lessons From the French Left

Analyst Jean Bricmont offers a deep analysis of how France's left-leaning coalition swept a plurality of seats in the recent snap elections.