<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Juampatronics&#39;s personal website</title>
		<link>https://juampatronics.github.io/</link>
		<description>Recent content on Juampatronics&#39;s personal website</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Fri, 30 Oct 2026 23:54:38 +0100</lastBuildDate>
		
			<atom:link href="https://juampatronics.github.io/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Bringing sessions to ipyllm</title>
				<link>https://juampatronics.github.io/posts/new_ipyllm_version/</link>
				<pubDate>Fri, 30 Oct 2026 23:54:38 +0100</pubDate>
				<guid>https://juampatronics.github.io/posts/new_ipyllm_version/</guid>
				<description>&lt;p&gt;When doing data exploration it is also important to remember how you obtained the results. This is the main motivation behind this new version of &lt;a href=&#34;https://github.com/juampatronics/ipyllm&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ipyllm&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can now start recording a session with &lt;code&gt;%llm --save FILE.py&lt;/code&gt;. From that moment on, all your prompts will be saved as comments followed by the corresponding code produced by your agent in that file. &lt;code&gt;%llm --save off&lt;/code&gt; stops the recording.&lt;/p&gt;&#xA;&lt;p&gt;You can rerun a session and continue recording with &lt;code&gt;%llm --resume FILE.py&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>eqn2latex: Reviving Legacy Notation in the Browser</title>
				<link>https://juampatronics.github.io/posts/eqn2latex/</link>
				<pubDate>Tue, 13 Oct 2026 22:15:02 +0200</pubDate>
				<guid>https://juampatronics.github.io/posts/eqn2latex/</guid>
				<description>&lt;p&gt;Many years ago, I got hooked on &lt;a href=&#34;https://troff.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;troff&lt;/a&gt; and all its companion programs. The best reference to understand and appreciate the design of these tools is &lt;a href=&#34;https://www.oreilly.com/openbook/utp/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UNIX Text Processing&lt;/a&gt;. Great book, still today.&lt;/p&gt;&#xA;&lt;p&gt;Troff’s appeal comes mostly from its design philosophy, which is very much Unix’s: small tools that each do one job, connected by pipes.&lt;/p&gt;&#xA;&lt;p&gt;The preprocessor ecosystem. Instead of one monolithic program, troff has a family of companions that each translate a specialized mini-language into plain troff requests:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Supercharging IPython with ipyllm</title>
				<link>https://juampatronics.github.io/posts/ipyllm/</link>
				<pubDate>Sun, 11 Oct 2026 23:57:42 +0200</pubDate>
				<guid>https://juampatronics.github.io/posts/ipyllm/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://juampatronics.com/ipyllm&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ipyllm&lt;/a&gt; is a open source IPython extension that seamlessly integrates Large Language Models (LLMs) into your live IPython environment. Built on top of the versatile &lt;a href=&#34;https://llm.datasette.io/en/stable/usage.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;llm&lt;/a&gt; package, ipyllm extends the IPython REPL with agents that access your current environment to help you solve data analysis tasks, assist you with the exploration of an API or help you debug issues in your code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-can-ipyllm-do-for-you&#34;&gt;&#xA;  What can ipyllm do for you?&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#what-can-ipyllm-do-for-you&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Effortless Data Exploration&lt;/strong&gt;: Instead of explaining your dataset in text, ask &lt;code&gt;%llm What columns in &lt;/code&gt;df&lt;code&gt; have missing values?&lt;/code&gt; or &lt;code&gt;%%llm Plot the rolling average of sales using matplotlib and run the code.&lt;/code&gt;. The model inspects the live variables, writes the visualization, and executes it in your session.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Contextual Debugging&lt;/strong&gt;: When a script stalls or fails, drop &lt;code&gt;ipyllm.embed()&lt;/code&gt; into your code. It works just like &lt;code&gt;IPython.embed()&lt;/code&gt;, giving the assistant direct access to the function&amp;rsquo;s local scope and variables. You can ask: &lt;em&gt;“What is holding &lt;code&gt;result&lt;/code&gt; in a None state?”&lt;/em&gt; and let the model inspect local state on the fly.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Diagnostic Shell Integration&lt;/strong&gt;: Run commands inside &lt;code&gt;%%llm --run&lt;/code&gt; (such as &lt;code&gt;pytest -q&lt;/code&gt;) to capture stdout, stderr, and exit codes instantly, letting the model explain failures and suggest fixes without manual log pasting.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;supercharging-data-analysis-with-agent-skills&#34;&gt;&#xA;  Supercharging Data Analysis with Agent Skills&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#supercharging-data-analysis-with-agent-skills&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Data analysis workflows often require specialized domain knowledge. &lt;code&gt;ipyllm&lt;/code&gt; bridges this gap by supporting local &lt;a href=&#34;https://agentskills.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Agent Skills&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>About</title>
				<link>https://juampatronics.github.io/about/</link>
				<pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate>
				<guid>https://juampatronics.github.io/about/</guid>
				<description>&lt;p&gt;Written in Go, Hugo is an open source static site generator available under the &lt;a href=&#34;https://github.com/gohugoio/hugo/blob/master/LICENSE&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Apache Licence 2.0.&lt;/a&gt; Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.&lt;/p&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://juampatronics.github.io/photo_selection/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://juampatronics.github.io/photo_selection/</guid>
				<description>&lt;p&gt;I enjoy photography quite a bit. Besides pictures taken during a trip or just while strolling through the city, I have done occasional honorary work which has been &lt;a href=&#34;https://www.google.com/search?q=%22juan&amp;#43;pablo&amp;#43;de&amp;#43;la&amp;#43;cruz&amp;#43;guti%C3%A9rrez%22&amp;#43;fashion&amp;#43;network&amp;amp;sxsrf=AKL5yDh-tLtwO9sXqp06TFGTTTGFq6Co8Q%3A1793315622862&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;featured online&lt;/a&gt;. It was a blast every time!.&lt;/p&gt;&#xA;&lt;p&gt;Below, a selection of some of the photos I posted over &lt;a href=&#34;https://www.flickr.com/photos/juampatronics/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;flickr&lt;/a&gt;, taken many years ago. My first real camera was a Canon 450D, and then I upgraded to a Canon 7D.&lt;/p&gt;&#xA;&lt;div&gt;&#xA;&lt;a data-flickr-embed=&#34;true&#34; data-header=&#34;true&#34; data-footer=&#34;true&#34; href=&#34;https://www.flickr.com/photos/juampatronics/albums/72157623764098715&#34; title=&#34;My most interesting&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/7032/6782119711_a97674b7a0_h.jpg&#34; width=&#34;1024&#34; height=&#34;768&#34; alt=&#34;My most interesting&#34;/&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;  &lt;/div&gt;</description>
			</item>
			<item>
				<title>Contact</title>
				<link>https://juampatronics.github.io/contact/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://juampatronics.github.io/contact/</guid>
				<description>&lt;p&gt;Follow me, @juampatronics.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
