<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>boulder dan</title>
    <link>https://boulderhopkins.com/</link>
    <description>Recent content on boulder dan</description>
    <generator>Hugo -- 0.152.2</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 22 Apr 2026 10:00:00 -0600</lastBuildDate>
    <atom:link href="https://boulderhopkins.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>What a Time to Be Alive</title>
      <link>https://boulderhopkins.com/posts/2026-04-22-what-a-time-to-be-alive/</link>
      <pubDate>Wed, 22 Apr 2026 10:00:00 -0600</pubDate>
      <guid>https://boulderhopkins.com/posts/2026-04-22-what-a-time-to-be-alive/</guid>
      <description>One of the untold stories of the AI revolution is how fun it is to build stuff again. A note on homelabs, work agents, and feeling technical again after a decade in management.</description>
    </item>
    <item>
      <title>How StackHawk Adopted AI to Drastically Accelerate Development</title>
      <link>https://boulderhopkins.com/posts/2026-04-03-how-stackhawk-adopted-ai-to-accelerate-development/</link>
      <pubDate>Fri, 03 Apr 2026 10:00:00 -0600</pubDate>
      <guid>https://boulderhopkins.com/posts/2026-04-03-how-stackhawk-adopted-ai-to-accelerate-development/</guid>
      <description>Nine months of going all-in on AI-assisted development at StackHawk: the ramp-up, the custom tooling, and what actually made it stick.</description>
    </item>
    <item>
      <title>Cleaning Up My forScore Music Library</title>
      <link>https://boulderhopkins.com/posts/2025-12-25-cleaning-up-my-forscore-music-library/</link>
      <pubDate>Thu, 25 Dec 2025 10:00:00 -0700</pubDate>
      <guid>https://boulderhopkins.com/posts/2025-12-25-cleaning-up-my-forscore-music-library/</guid>
      <description>&lt;p&gt;Over the past couple days, I&amp;rsquo;ve been on a mission to clean up my music library in &lt;a href=&#34;https://forscore.co/&#34;&gt;forScore&lt;/a&gt;, the sheet music reader I use on my iPad. What started as a simple organization project turned into building custom tooling and developing ideas for how forScore could better support power users and integrations.&lt;/p&gt;
&lt;p&gt;The real power tool here was &lt;a href=&#34;https://claude.ai/download&#34;&gt;Claude Code&lt;/a&gt;—Anthropic&amp;rsquo;s AI coding assistant. It handled the fuzzy matching logic to identify duplicates and normalize inconsistent names, helped build the Rust CLI from scratch, and iterated through the tricky parts like reverse-engineering forScore&amp;rsquo;s binary plist format. Tasks that would have taken me days of trial and error were done in hours.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Christmas Light Database</title>
      <link>https://boulderhopkins.com/posts/2025-12-06-christmas-light-database/</link>
      <pubDate>Sat, 06 Dec 2025 16:59:38 -0700</pubDate>
      <guid>https://boulderhopkins.com/posts/2025-12-06-christmas-light-database/</guid>
      <description>&lt;p&gt;This year our trees have grown large enough and my Christmas lights were old enough that multiple strands died, so we made a significant investment in new lights. At Home Depot I found $5, $10, and $20 options.&lt;/p&gt;
&lt;p&gt;Since my last lights lasted about 10 years, I&amp;rsquo;m curious whether I&amp;rsquo;ll see a difference in longevity between the $10 and $20 lights. I skipped the $5 ones—they looked disposable with no replaceable bulbs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thread safety with no threads in sight</title>
      <link>https://boulderhopkins.com/posts/2012-05-06-thread-safety-without-threads/</link>
      <pubDate>Sun, 06 May 2012 15:16:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2012-05-06-thread-safety-without-threads/</guid>
      <description>&lt;p&gt;When people discuss thread safety in code it is almost entirely within the context of threading in a single process. The problems that come up are races conditions, &lt;a href=&#34;http://blog.regehr.org/archives/490&#34;&gt;data races&lt;/a&gt;, and unseen updates with solutions like locking, synchronized updates and immutability.&lt;/p&gt;
&lt;p&gt;This definition of thread safety is too focused. Much of the problems normally attributed to thread safety can be seen in programs that have no access to OS threads or are running on multiple servers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Epic google error message fail</title>
      <link>https://boulderhopkins.com/posts/2011-02-24-epic-google-error-message-fail/</link>
      <pubDate>Thu, 24 Feb 2011 02:22:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2011-02-24-epic-google-error-message-fail/</guid>
      <description>&lt;p&gt;I just spent a day without being able to send email because I enabled &lt;a href=&#34;http://googleblog.blogspot.com/2011/02/advanced-sign-in-security-for-your.html&#34;&gt;two factor authentication&lt;/a&gt; on my work account. That and a complicated gmail setup that apparently appeals to no one else ;)&lt;/p&gt;
&lt;p&gt;I forward all my mail from my work, google apps account into my personal gmail account so that all my email is consolidated for reading, filtering, etc. I then use the “&lt;a href=&#34;http://mail.google.com/support/bin/answer.py?hl=en&amp;amp;ctx=mail&amp;amp;answer=22370&#34;&gt;Send mail as&lt;/a&gt;” functionality to email from my work account. Gmail even allows you to configure alternate SMTP information so that when I send from my work account people don&amp;rsquo;t get a &amp;ldquo;Sent on behalf of&amp;hellip;&amp;rdquo; in their Outlook.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Connecting to an untrusted certificate in java</title>
      <link>https://boulderhopkins.com/posts/2011-02-20-connecting-to-untrusted-certificate-in/</link>
      <pubDate>Sun, 20 Feb 2011 22:38:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2011-02-20-connecting-to-untrusted-certificate-in/</guid>
      <description>&lt;p&gt;I was getting errors(&lt;em&gt;unable to find valid certification path to requested target&lt;/em&gt;) in &lt;a href=&#34;http://www.alfresco.com/&#34;&gt;Alfresco&lt;/a&gt; trying to connect to LDAP over ssl using an untrusted certificate and found a great hint on the interwebs that I thought I&amp;rsquo;d share.&lt;/p&gt;
&lt;p&gt;Most of the hits on google mention this post: &lt;a href=&#34;http://blogs.sun.com/gc/entry/unable_to_find_valid_certification&#34;&gt;http://blogs.sun.com/gc/entry/unable_to_find_valid_certification&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My only criticism of that article is that it only minimally addresses how to actually use the fixed keystore.  I downloaded their source and hacked it  up a little change the name of the certificate store from &amp;ldquo;jssecacerts&amp;rdquo; into &amp;ldquo;cacert&amp;rdquo; which is the default certificate store for all java programs.  My goal was to fix the certificate store for the entire machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Help improve the Kindle reading ecosystem.</title>
      <link>https://boulderhopkins.com/posts/2011-01-06-help-improve-kindle-reading-ecosystem/</link>
      <pubDate>Thu, 06 Jan 2011 16:12:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2011-01-06-help-improve-kindle-reading-ecosystem/</guid>
      <description>&lt;p&gt;I sent this as an email to kindle-feedback but thought I would share it with the interwebs as well.  Let me be clear that I am absolutely in love with my Kindle.  I used to not particularly enjoy reading but the kindle has changed my opinion in two short weeks.  With that said my major sadness about it was access to personal content.  Hence this letter:&lt;/p&gt;
&lt;p&gt;Dear Amazon,&lt;/p&gt;
&lt;p&gt;Please improve the reading ecosystem represented by the kindle device, and the plethora of applications that also represent &amp;ldquo;kindle devices&amp;rdquo; e.g. the iphone, ipad, web, etc.  Right now these other devices are treated like second class citizens because there is no way to get personal content onto them and to synchronize the reading of the content.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remap Caps lock on a Macbook Pro</title>
      <link>https://boulderhopkins.com/posts/2010-12-14-remapping-capslock-on-macbook-pro/</link>
      <pubDate>Tue, 14 Dec 2010 01:29:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-12-14-remapping-capslock-on-macbook-pro/</guid>
      <description>&lt;p&gt;I was fortunate enough to receive a CR-48 from Google last week.  My impressions of it are more or less in line with what &lt;a href=&#34;http://techcrunch.com/2010/12/12/cr-48-chrome-notebook-review/&#34; title=&#34;MG Siegler over at TechCrunch&#34;&gt;MG Siegler over at TechCrunch&lt;/a&gt; has reported:  good battery, nice screen, light weight laptop.  The only problem is that I have needed to adjust my workflow when I&amp;rsquo;m working on my regular computer, a Macbook Pro to facilitate sharing documents between the two machines.  For example, I have migrated away from OmniOutliner to a comparable online version, &lt;a href=&#34;http://workflowy.com/&#34; title=&#34;Workflowy&#34;&gt;Workflowy&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes about Alfresco&#39;s devcon</title>
      <link>https://boulderhopkins.com/posts/2010-11-08-notes-about-alfresco-devcon/</link>
      <pubDate>Mon, 08 Nov 2010 18:22:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-11-08-notes-about-alfresco-devcon/</guid>
      <description>&lt;p&gt;Nate McMinn has a &lt;a href=&#34;http://www.unorganizedmachines.com/site/software-and-technology/42-events/110-alfresco-devcon-nyc-wrap-up&#34;&gt;brief wrap up&lt;/a&gt; of the Alfresco developers convention.  I was unable to attend and it sounds like I missed a lot of interesting news.  I was excited to here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One upcoming project that was discussed at DevCon is putting together a third-party components catalog for Alfresco.  Right now there is nothing like this available.  Alfresco community projects are scattered all over the place.  Some are in Alfresco Forge, some are on Google Code, still others are on developers&amp;rsquo; blogs (mine included).  I&amp;rsquo;m sure I&amp;rsquo;m forgetting a few locations, but you get the idea.  Rolling all of this up in one queryable repository would be a fantastic addition to the Alfresco community.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating custom JMX MBeans for reporting in Alfresco</title>
      <link>https://boulderhopkins.com/posts/2010-11-08-creating-custom-jmx-mbeans-for/</link>
      <pubDate>Mon, 08 Nov 2010 15:10:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-11-08-creating-custom-jmx-mbeans-for/</guid>
      <description>&lt;p&gt;JMX rocks.  When configuring a server it is a boon to developers.  Especially when combined with the Alfresco &lt;a href=&#34;http://wiki.alfresco.com/wiki/Alfresco_Subsystems&#34;&gt;subsystem architecture&lt;/a&gt;.  You can interate on changes to the LDAP sync without having to restart the server.  JMX also gives savvy system administrators a way to manage and monitor what’s going on within the repository.&lt;/p&gt;
&lt;p&gt;If you’re still unfamiliar with the basics of JMX, especially within the context of Alfresco, &lt;a href=&#34;http://jared.ottleys.net/&#34;&gt;Jarred Ottley&lt;/a&gt; over at Alfresco has written a number of excellent tutorials.  I’ve added some additional articles and come up with the list below.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Alfresco for authentication in Spring Surf</title>
      <link>https://boulderhopkins.com/posts/2010-11-02-using-alfresco-for-authentication-in/</link>
      <pubDate>Tue, 02 Nov 2010 14:37:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-11-02-using-alfresco-for-authentication-in/</guid>
      <description>&lt;p&gt;Kevin Roast’s blog had a great post about &lt;a href=&#34;http://blogs.alfresco.com/wp/kevinr/2010/11/01/springsurf-authenticating-users-against-an-alfresco-repository/&#34;&gt;Authentication User’s against an Alfresco Repository&lt;/a&gt;.  When we first explored Surf, when it starting to get traction in 3.2 or 3.3 our major complaint was that it seemed difficult to actually connect to the repository.&lt;/p&gt;
&lt;p&gt;I’m glad to see that this has changed.&lt;/p&gt;
&lt;p&gt;Or that it is now better documented.&lt;/p&gt;
&lt;p&gt;Technorati Tags: &lt;a href=&#34;http://technorati.com/tag/Alfresco&#34;&gt;Alfresco&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rapid development in Alfresco Share - the refresh webscript</title>
      <link>https://boulderhopkins.com/posts/2010-11-01-rapid-development-in-alfresco-share/</link>
      <pubDate>Mon, 01 Nov 2010 19:26:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-11-01-rapid-development-in-alfresco-share/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.ziaconsulting.com&#34;&gt;Zia Consulting&lt;/a&gt; develops in Eclipse using a setup different than described by Alfresco.  We run an embedded version of Jetty with the Alfresco default WARs.  At runtime we mix in changes using extra classpath entries and web overlays.  This has many benefits: most importantly that we develop functionality without having to restart the repository.  When there is a reason to restart the server we make efforts to fix the problem through programming or configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating calculated datalist columns in Alfresco Share 3.4b</title>
      <link>https://boulderhopkins.com/posts/2010-10-28-creating-calculated-datalist-columns-in_28/</link>
      <pubDate>Thu, 28 Oct 2010 14:17:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-10-28-creating-calculated-datalist-columns-in_28/</guid>
      <description>&lt;p&gt;This is a short one since not much changed.   If you didn&amp;rsquo;t have a chance to read the 3.3 version of this &lt;a href=&#34;http://www.boulderhopkins.com/2010/10/creating-calculated-datalist-columns-in.html&#34;&gt;please review it now&lt;/a&gt; since I&amp;rsquo;m not going to post the entire tutorial again. We only need to change the filter and specifically how the dynamic columns are added to the form.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;﻿&lt;/span&gt;public &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; ProjectStatusFilter &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; AbstractFilter&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;﻿&lt;/span&gt; {  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;@&lt;/span&gt;Override public void afterGenerate(&lt;span style=&#34;color:#a6e22e&#34;&gt;Object&lt;/span&gt; item, List fields,  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  List forcedFields, Form form, Map context) {  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;﻿&lt;/span&gt;boolean typeDefCorrect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (item instanceof TypeDefinition &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ((TypeDefinition) item)  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getName()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;equals(PmoModel&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;TYPE_PROJECT_STATUS_DL));  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    boolean nodeRefCorrect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (item instanceof NodeRef &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; AlfUtil&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;services()  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getNodeService()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getType((NodeRef) item)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;equals(  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      PmoModel&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;TYPE_PROJECT_STATUS_DL));  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;﻿&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (typeDefCorrect &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; nodeRefCorrect) {  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      double varianceValue &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;d;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      double percentComplete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;d;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      double percentExpended &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;d;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt; If this is a node then &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; the calculations  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (nodeRefCorrect) {  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        NodeRef itemNode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (NodeRef) item;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;/*&lt;/span&gt; Some calculations that aren&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;t interesting */  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;/*&lt;/span&gt; Here are the changes &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3.4&lt;/span&gt;b &lt;span style=&#34;color:#f92672&#34;&gt;*/&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      form&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;addField(FieldUtils&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;makePropertyField(&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;﻿&lt;/span&gt;PmoModel&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;variancePropDef,  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      varianceValue,&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;﻿&lt;/span&gt;AlfUtil&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;services()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getNamespaceService()));  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;/*&lt;/span&gt; Left the other &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; fuctions &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; completeness &lt;span style=&#34;color:#f92672&#34;&gt;*/&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;@&lt;/span&gt;Override  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  public void afterPersist(&lt;span style=&#34;color:#a6e22e&#34;&gt;Object&lt;/span&gt; item, FormData data, NodeRef persistedObject)  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {}  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;@&lt;/span&gt;Override  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  public void beforeGenerate(&lt;span style=&#34;color:#a6e22e&#34;&gt;Object&lt;/span&gt; item, List fields,  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    List forcedFields, Form form, Map context) {}  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;@&lt;/span&gt;Override  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  public void beforePersist(&lt;span style=&#34;color:#a6e22e&#34;&gt;Object&lt;/span&gt; item, FormData data) {}  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>JBPM Workflow in Alfresco Share 3.4a community release</title>
      <link>https://boulderhopkins.com/posts/2010-10-26-jbpm-workflow-in-alfresco-share-34a/</link>
      <pubDate>Tue, 26 Oct 2010 16:15:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-10-26-jbpm-workflow-in-alfresco-share-34a/</guid>
      <description>&lt;p&gt;Dick Weisinger over at &lt;a href=&#34;http://www.formtek.com/&#34;&gt;FormTek&lt;/a&gt; posted a great article on adding new workflows to the Share 3.4 using the newly updated form service.  I&amp;rsquo;m currently developing similar functionality for 3.4b and found the same results - jbpm workflows just seems to work in the share interface.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://keytocontent.blogspot.com/2010/10/jbpm-workflow-in-alfresco-share-34a.html&#34;&gt;Article&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating calculated datalist columns in Alfresco Share 3.3</title>
      <link>https://boulderhopkins.com/posts/2010-10-25-creating-calculated-datalist-columns-in/</link>
      <pubDate>Mon, 25 Oct 2010 13:55:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-10-25-creating-calculated-datalist-columns-in/</guid>
      <description>&lt;p&gt;Datalists out-of-the-box don&amp;rsquo;t have a whole lot of functionality outside of simply capturing data.  A simple way to help users is to add calculated columns that transform other columns or related data from the repository.  In Alfresco 3.3 this functionality is straightforward and allows creating powerful datalists that even an Excel user could love.&lt;/p&gt;
&lt;p&gt;For this demo we will create a part of a project management datalist that takes allows users to enter the following: Estimated to completion, estimated at completion, actuals and budget.  From these inputs we will generate the variance, percent complete and percent expended.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Attaching to a running Alfresco instance - running code in Alfresco</title>
      <link>https://boulderhopkins.com/posts/2010-10-18-attaching-to-running-alfresco-instance/</link>
      <pubDate>Mon, 18 Oct 2010 21:54:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-10-18-attaching-to-running-alfresco-instance/</guid>
      <description>&lt;p&gt;A coworker and I have been scheming for a number of months on ways to run migration scripts and develop workflow in Alfresco.  The common thread is that we have a repository that&amp;rsquo;s running and we want run arbitrary code against it.  We have had a number of ideas that have taken us in two different directions.  I&amp;rsquo;d like to talk about a few of them, outline the issues we&amp;rsquo;ve run into and then outline our merged solution.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building Alfresco enterprise from source v3.4 beta</title>
      <link>https://boulderhopkins.com/posts/2010-10-11-building-alfresco-enterprise-from/</link>
      <pubDate>Mon, 11 Oct 2010 21:54:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-10-11-building-alfresco-enterprise-from/</guid>
      <description>&lt;p&gt;Our development environment runs off an exploded a war file in an embedded version of jetty, all running in Eclipse.  We typically build the war from source pulled from Alfresco Enterprise SVN.  Knowing how to do this means we can checkout from any of the development branches and get a feeling for how different features are progressing without waiting for the official build to be distributed.  It also give me a warm fuzzy to know how the beast is built.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the patch service to run arbitrary code on AMP install</title>
      <link>https://boulderhopkins.com/posts/2010-10-10-using-patch-service-to-run-arbitrary/</link>
      <pubDate>Sun, 10 Oct 2010 21:49:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-10-10-using-patch-service-to-run-arbitrary/</guid>
      <description>&lt;p&gt;There seems to be many times that the Alfresco repository needs to be modified when an AMP is first installed e.g. migration of current nodes.  While Alfresco provides a data bootstrap mechanism it appears it is inadequate for anything except the most basic tasks.  This post was predicated on finding a use of the patch service in the WCM installation script.&lt;/p&gt;
&lt;p&gt;I haven’t seen many docs on the proper or improper use of the patch service.  At first blush it is used as a Repository internal tool to update the repository during major releases and hotfixes. As I’ve mentioned, the inspiration for this came from the WCM &amp;ldquo;installation&amp;rdquo; during which you insert the wcm-bootstrap-context.xml into the repositories classpath and then start it up.  In that file is a new bean that uses the patch service to create a couple of folders.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Jar deployment to solve conflicts with multiple customizations in Alfresco Share</title>
      <link>https://boulderhopkins.com/posts/2010-09-02-using-jar-deployment-to-solve-conflicts/</link>
      <pubDate>Thu, 02 Sep 2010 21:33:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/posts/2010-09-02-using-jar-deployment-to-solve-conflicts/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Screen shot 2010-09-02 at 10.09.53 AM.png&#34; loading=&#34;lazy&#34; src=&#34;http://www.ziaconsulting.com/wp-content/uploads/2010/09/Screen-shot-2010-09-02-at-10.09.53-AM.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Installing customizations using AMPs into a new Alfresco repository is pretty easy, there isn’t much room for configuration overwriting other configuration.  In older systems that have been installed by a client or in systems that have multiple SI’s customizations installed it maybe the case, especially in Share, where configuration from one amp overwrites the configuration of another amp.  You can get into difficult to detect problems depending on the order in which amps are applied to Alfresco (probably alphanumeric, last one wins).&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://boulderhopkins.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/about/</guid>
      <description>About Dan Hopkins</description>
    </item>
    <item>
      <title>Applications</title>
      <link>https://boulderhopkins.com/applications/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/applications/</guid>
      <description>Applications and tools by Dan Hopkins</description>
    </item>
    <item>
      <title>Speaking</title>
      <link>https://boulderhopkins.com/speaking/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://boulderhopkins.com/speaking/</guid>
      <description>Conference talks, workshops, and podcast appearances by Dan Hopkins</description>
    </item>
  </channel>
</rss>
