In my last video I talked about how Bloomfilter was implementing chains of large language models to more accurately accomplish difficult tasks. For AI implementors this is often know as an agentic workflows. Andrew Ng has described four approaches to Agentic Workflows: Reflection, Tool use, Planning and Multi-agent collaboration. At Bloomfilter we are currently implementing tool use and multi-agent collaboration, and our use of agent collaboration is in its early stages. We do plan on expanding our capabilities to take advantage of each of these approaches.
There are a few no-code tools for implementing agents workflows — CrewAI, and CasidyAI are a couple examples. We are implementing our agents, and their assistants, in code; we do this because we are relying heavily upon the code and models that we have already built for use in our SaaS application. Today I want to walk through how we are implementing these agents. My use case for this discussion will be eliminating tedious tasks from my routine — exactly what we hope AI would do for us. The specific case I have in mind is using AI — to use Bloomfilter — to pull the data needed to fill in my weekly KPIs.
I have been using Cursor to write code, and this site is code, so I also use Cursor to write the content that I post here. It knows about my codebase, in this case, my previous articles, so it has been interesting to see what it recommends that I write. As I was updating the pages about me, it suggested what I should write about my past. It was wrong, of course, but close enough to be thought-provoking. Here is what the AI suggested I write:
stollee is a nickname I picked up in Iraq in 2004. I was working as a civilian contractor for the U.S. Army in Baghdad when I started a blog called “The Daily Show on Iraq”. I was a big fan of Jon Stewart and The Daily Show, and I thought it would be funny to do a daily show from Iraq. I soon learned that funny is not easy to capture in writing, and I’m not sure I succeeded, but I did manage to capture a bit of the absurdity of the situation. I continued the blog for several years, and it became a popular destination for people interested in what was happening in Iraq at the time. I also started a podcast called “The Iraq Podcast”, which I continued for several years. I also wrote a book called “My Iraq War”, which is a collection of my writings from the blog and podcast.
In this video, I discuss AI and how Bloomfilter is incorporating it into its product. In future sessions, I will cover how the Bloomfilter team integrates AI into our SDLC and dive deep into how we implement AI in our codebase — including a short coding session to demonstrate how we actually code it. But today, I just want to talk about our product’s relationship with AI.
I started this conversation because of the cringe looks I get from some of my friends when I tell them we are building AI into our platform. There’s been so much hype around AI lately that some people in the industry — especially practitioners and implementers of technology — are becoming exhausted by it. And I understand that. Many products are simply adding AI prompt-to-content generators — often with dubious value — just to claim they have an AI-enabled platform.
Historically, I have bounced between a variety of film stocks. In order to get better at photography, I have been trying to reduce variability in my process. So, recently, I have been limiting myself to using a single film stock for a period of time or for a set number of rolls. I want to really embrace each film; learn how to best shoot and develop it, and learn its unique characteristics.
This summer, I had a few backpacking trips planned. I wanted to bring a classic black-and-white film along, and I wanted one that would be extra kind to skin tones. People wear less makeup and tend to get dirtier when backpacking, and I wanted a film that would help tame wrinkles, creases, and dirt. Fomapan 400, with its classic large grain and extra red sensitivity, seemed like it would be an ideal choice. After shooting six rolls of Fomapan 400 in 35mm under varying conditions, I think I’m starting to understand it.
After using a Hasselblad 203FE and Zeiss Planar 110 f2.0 for about a year, I found myself wanting to improve the shooting experience. Though the 203FE is practically dwarfed by cameras like the Mamiya RZ67, I’ll acknowledge it’s still more of a studio camera than a street shooter. Despite that, I enjoy attaching a hand strap and taking it along for a photo walk. The trouble for me comes when I want to throw a filter on the front.
The Carl Zeiss Planar 110 f2.0 has a bayonet 70 filter mount. Purpose-made filters of this type are expensive, but the real problem is that useful filter variants are almost never available for purchase. Additionally, the aftermarket bay 70 adapters are not very good; they have bent metal springs that never catch properly, they rotate out of position, and they fall off the camera. The Cokin P series adapters work fine when on a tripod, but the corners of the oversized square frame catch on pockets and are generally a nuisance when walking around. If I wanted something to suit my needs, I’d have to make it myself.
I have one enlarger, an Omega D3. I sought out this model because it can handle negatives as large as 4 by 5 inches. But, when I decided I wanted to print some subminiature 8 by 11 millimeter negatives, I would be pushing its capabilities in the opposite direction.
The manual assured me that the Omega D was capable of printing Minox negatives. I don’t have the recommended 28mm lens, but a 50mm lens should be able to make enlargements up 3.5 x 5 or 4 x 6. What I really needed was a carrier to hold the negatives in place.
After spending some time searching the internet for the official negative mask, I found that I would need to manufacture one myself. My first thought was to 3D print a near copy of my 24 x 35 carrier; just make the opening smaller. I was concerned that the heat put off by my incandescent condenser would warp the carrier. So, instead, I decided to create an insert for the 35mm carrier.
I finally had a chance to shoot a roll of Harman’s new color film. Phoenix is noticeably different than other films on the market; the film comes out of the can a mustard color and comes out of the developer a deep indigo. At quick glance the developed negatives look to be black and white. It’s only on closer inspection that orange hues are visible. The purplish base color might cause problems for some negative digitization programs, but I was able to get usable images with a small amount of effort.
The final images turned out well, though not without idiosyncrasy. Pictures shot outdoors under average conditions produced contrasty images not unlike other daylight balanced films. It is outside of average conditions where the film began to show its unique character. On mostly blue-sky days, the film seemed to produce pure whites which enhanced the clouds. When shot into the direction of the sun, even under rainy conditions, the lack of an anti-halation layer was obvious and overpowering at times. It seemed that every time I used the spot meter on the TC-1 to preserve details in the shadows, I lost them in the highlights, so perhaps the dynamic range is somewhat limited. Finally, when shot at night Phoenix may have imparted slightly more orange than would be expected from a daylight film.
There is no doubt that this film has quirks, but I enjoy the character of Harman’s Phoenix. I will undoubtedly shoot more of this film, though I will be mindful of the dynamic range and halation.
Modern cameras have evolved towards a uniform set of ergonomics. If you are looking for a new, high-end, mass-market camera, there’s a good chance the one you get will be covered in black plastic, have a hand grip on the right side, and place the majority of controls within the reach of your right thumb and forefinger. And there is nothing wrong with this uniformity; these cameras are like this because the layout works. Vintage film cameras, on the other hand, are what evolved into this form, so they come in a larger variety of shapes, sizes, and layouts. The layout of film cameras is also influenced by the type of film and the functionality that was available when the camera was produced. Film cameras simply have more diversity with regards to form and function.
Since I dropped back into the world of film photography, and my eyes were opened to the number of choices available, I have been searching for the kit that works for me. I tried a lot of cameras. After an obligatory TLR phase, I briefly thought that mid-century rangefinders would be the camera for me. I eventually realized that I was looking for two different cameras. When I go out with the intention to take photos, I like a medium format camera with a large aperture manual focus lens. When I just go out, I like a small, capable point-and-shoot; I’m looking for an alternative to the fine-in-their-own-right iPhone cameras.
As time moves forward, preferences change and get refined. This is how my camera choices have evolved over the past year.
This roll of Fuji Super HQ 200 is probably the best roll of expired film I have ever shot. I really love how the photos turned out. The grain is amazing and the colors have a contrasty, vintage look that is not skewed too far towards one color. The 2000 Canon EOS ELAN 7e (and the FPP C-41) paired nicely with the Super HQ 200.
The film was shot at ISO 80, as per my rules of thumbs for shooting expired film.
A year and a half after I arrived back stateside from my expedition to Iraq I was asked about my deployment experience. The child of a friend of a friend needed to interview veterans for a project they were working on, so I agreed. The thing I remembered about my response, and what made me think of this questionnaire many years latter, was my memory of how Iraq smelled. Usually memories are visual, but these memories had an olfactory component to them. This was brought back to mind by Jon Stewart’s recent efforts to highlight the ill effects veterans are suffering from burning shit in Iraq.
At our first forward operating base we had burn toilets prior to receiving chemical toilets, but I think the rear elements had to burn the waste while we were out running missions. The thing people probably don’t realize though is that the baseline pollution level in Iraq, the baseline in combat zones, is considerably higher than what we enjoy here in the United States. Perhaps urban air quality in the late 60s, prior to the EPA, was similar to what I experienced in Iraq.
Of course it may have been worse in Iraq due to the dusty, arid environment. There was always something in the air. We lived in an old government building which perhaps contained asbestos, who knows, I doubt anyone tested for that. What we do know is that the building was famously bombed by Tomahawk missiles on the first night of the war. Those missiles were probably tipped with depleted uranium. We would laugh every time a mortar bounced off of the sturdy building. But, the so-called insurgents might get the last laugh; each of those mortar hits would stir up dust in the unventilated building. The Army should have given us N95 masks rather than gas masks which literally went unused, because, you know, there were in fact no weapons of mass destruction in Iraq.
The Appalachian Trail is sometimes referred to as the green tunnel. The truth is that many of the backpacking trails on the East Coast run under the cover of deciduous forests and have few scenic overlooks. One backpacking area within driving distance of Northeastern Ohio which breaks out of the green tunnel is the Dolly Sods Wilderness. Dolly Sods has a rough, barren appearance which is partially the result of its unique ecology and partially the result of a long history of exploitation and abuse by European settlers.
Prior to civilization creeping up to it’s borders, Dolly Sods was an inaccessible region covered with spruce, hemlock, and mountain laurel. The expansion of the railroads brought the lumber industry into the area. As the lumber industry clear cut the forests they left behind a landscape barren of trees yet fertile for fires. Fires destroyed vegetation which survived the lumber companies. By the late 1920s little of value was left and the companies moved on. The Civilian Conservation Corps started planting spruce in the 1930s, but in 1940s the US Army rolled in. They were preparing for war in Europe and needed a place to practice destroying things with artillery shells.
On this site I write about, what I like to believe is, a diverse set of topics. The normal way of presenting posts using a sequential list does nothing to help people discover other material on the site which they may also be interested in. I wanted to provide visitors with a list of links to content which is similar to the page they are currently viewing. However, due to limitations in the platform I’m using, there was no option to simply turn this on. So, I wrote some code and implemented an algorithm to solve this problem.