Coding with AI
I've never been enthusiastic about the AI revolution in software development.
However, this week, I started using Zed.dev together with their AI assistant integration. I'm surprised by the experience and efficiency gains. I still have reservations, but it can be valuable allies in tackling complex programming challenges and streamlining routine tasks.
For example, a few days ago, I was working on a tool that needed to parse ClickHouse explain output[^1], an easy task requiring recursively transverse all the properties looking for some specific properties.
With a simple prompt, the model wrote a working version.
Write code to extract all primary key granules from explain_result. An example of explain_result here:
{...}
def extract_primary_key_granules(explain_result):
def traverse(node):
granules = []
if isinstance(node, dict):
if 'Indexes' in node:
for index in node['Indexes']:
if index.get('Type') == 'PrimaryKey':
granules.append({
'Keys': index.get('Keys', []),
'Initial Granules': index.get('Initial Granules', 0),
'Selected Granules': index.get('Selected Granules', 0)
})
for value in node.values():
granules.extend(traverse(value))
elif isinstance(node, list):
for item in node:
granules.extend(traverse(item))
return granules
return traverse(explain_result)
# Example usage:
result = extract_primary_key_granules(explain_result)
for granule in result:
print(f"Keys: {granule['Keys']}")
print(f"Initial Granules: {granule['Initial Granules']}")
print(f"Selected Granules: {granule['Selected Granules']}")
print()
The task was relatively easy, but I had to make changes and improve the initial code. Despite that, this saved me at least a few back-and-forth hours writing the function and running some tests to see if it worked as expected!
[^1]: This is how a ClickHouse explain output looks like