Posts

From PDF Archive to Study App: An LLM-Driven Data Pipeline

Image
  A lot of real-world problems boil down to the same shape: some scattered, unstructured source material exists (PDFs, archives, scanned documents), and what you actually need is a structured, usable product on the other end — categorized, searchable, and packaged for a specific audience. That transformation used to mean writing a pipeline by hand: a parser here, a classification script there, a templating layer to render the final output. With an LLM as a development partner, the same pipeline can be built through conversation — research, extraction, categorization, content generation and packaging, each step still a real, inspectable script or file, but designed and iterated on in natural language rather than written line by line. The part that changed the most for me wasn’t the coding — it was the analysis phase. Reading five years of exam PDFs, working out the syllabus scope, and deciding how to categorize dozens of tasks by topic and difficulty is the kind of manual review tha...

Self-Healing Scrapers: Let One Agent Write Another Agent's Instructions

Image
A scraper usually breaks the moment a website redesigns its layout. This one doesn't — it researches the page itself, and re-researches it when something changes  This article walks through building exactly that, with Claude Code. The business need Let's imagine a situation where parents have three kids in three different schools. None of the schools agree on how to publish a timetable. The formats are different: one puts up clean, per-class HTML pages. Another exports its entire grade level as a single PDF. What the parents want is one combined, printable schedule covering all three kids. Writing an HTML scraper for the first school and a PDF scraper for the second is an afternoon's work. What is more, the timetable structures may change in time. The process The solution I landed on with Claude Code was a self-correcting process based on LLM agents. There are two agents involved. The first, a research agent , studies a school's site and writes plain-English ins...

ASP.NET 5 Beta 8

It's been a while since a wrote something on a blog. Today I would like to share with you a good starting point for ASP.NET 5 and switching to beta 8. Here is a nice article  Upgrading from ASP.NET 5 Beta 7 to Beta 8 And nice tutorial made by the same author  Building a Web App with ASP.NET 5, MVC 6, EF7 and AngularJS

TCExecutor on NuGet

Image
TCExecutor is now awailable on NuGet.org Project page:  TCExecutor From Visual Studo:

Thread safe rotate index.

Sometimes you may need a rotation thread safe index. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.Concurrent; using System.Threading; namespace ConsoleApplication12 { class Program { static void Main(string[] args) { Console.WriteLine("Init value = Int32.MaxValue - 10"); RotatorIndex.Init = Int32.MaxValue - 10; Thread thread1 = new Thread(new ThreadStart(ThreadMethod)); Thread thread2 = new Thread(new ThreadStart(ThreadMethod)); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); Console.WriteLine("Init value = - 10"); RotatorIndex.Init = - 10; thread1 = new Thread(new ThreadStart(ThreadMethod)); thread2 = new Thread(new ThreadStart(ThreadMethod)); thread1.Start(); thread2.Start(); ...

Localized type conversion

If you need a DateTime or double convertion depending on system localization here are some examples: Date to string DateTime dt = new DateTime(2012, 06, 13, 17, 50, 00); string date_US = dt.ToString(new CultureInfo("en-US").DateTimeFormat); string date_GB = dt.ToString(new CultureInfo("en-GB").DateTimeFormat); string date_PL = dt.ToString(new CultureInfo("pl-PL").DateTimeFormat); string date_RU = dt.ToString(new CultureInfo("ru-RU").DateTimeFormat); Console.WriteLine("date_US = {0}", date_US); Console.WriteLine("date_GB = {0}", date_GB); Console.WriteLine("date_PL = {0}", date_PL); Console.WriteLine("date_RU = {0}", date_RU); /* date_US = 6/13/2012 5:50:00 PM date_GB = 13/06/2012 17:50:00 date_PL = 2012-06-13 17:50:00 date_RU = 13.06.2012 17:50:00 */ String to date date_US = "6/13/2012 5:50:00 PM"; date_GB = "13/06/2012 17:50:00"; date_PL = "2012-06-13 17:50:00"; d...

SSH

Recently I was thinking of SSH support in my TCExecutor application. I've found some 3rd party libraries which support SSH.... but... I think I'll try to implement it on my own... Here are some specs: The Secure Shell (SSH) Protocol Assigned Numbers - RFC 4250 The Secure Shell (SSH) Protocol Architecture - RFC 4251 The Secure Shell (SSH) Authentication Protocol - RFC 4252 The Secure Shell (SSH) Transport Layer Protocol - RFC 4253 The Secure Shell (SSH) Connection Protocol - RFC 4254