Skip to content

Instantly share code, notes, and snippets.

View pedroduartecosta's full-sized avatar
🏠
Working from home

Pedro Costa pedroduartecosta

🏠
Working from home
View GitHub Profile
@pedroduartecosta
pedroduartecosta / how-i-code-with-ai.md
Last active February 11, 2025 13:04
How I Code with AI: A Practical Guide

How I Code with AI: A Practical Guide

Over the past three years, I've integrated AI tools into almost every aspect of my development workflow. From migrating legacy bash scripts to TypeScript CLIs, building Next.js applications, writing backend and frontend TypeScript code, creating Helm charts, managing infrastructure with Terraform, to debugging code across multiple languages - AI has become an essential part of how I work. I've used it for everything from improving complex SQL queries to writing Python scripts, and even for non-coding tasks like drafting postmortems and technical reviews. Here's what I've learned along the way about making AI tools truly useful in real-world development.

The Foundation: Choose the Right Tools

I primarily use two AI tools for coding:

  1. Claude Pro: My main tool for complex coding tasks and project work. While there are many AI coding assistants available, I've found Claude to be the most reliable and capable of understanding complex contexts without veering of
//triggered when there's a consensus on the final result
event UpdatedRequest (
uint id,
string urlToQuery,
string attributeToFetch,
string agreedValue
);
//called by the oracle to record its answer
function updateRequest (
uint _id,
string memory _valueRetrieved
) public {
Request storage currRequest = requests[_id];
//check if oracle is in the list of trusted oracles
//and if the oracle hasn't voted yet
//event that triggers oracle outside of the blockchain
 event NewRequest (
uint id,
string urlToQuery,
string attributeToFetch
 );
function createRequest (
string memory _urlToQuery,
string memory _attributeToFetch
)
public
{
uint lenght = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));
Request storage r = requests[lenght-1];
// Hardcoded oracles address
// defines a general api request
struct Request {
uint id; //request id
string urlToQuery; //API url
string attributeToFetch; //json attribute (key) to retrieve in the response
string agreedValue; //value from key
mapping(uint => string) anwers; //answers provided by the oracles
mapping(address => uint) quorum; //oracles which will query the answer (1=oracle hasn't voted, 2=oracle has voted)
}
pragma solidity >=0.4.21 <0.6.0;
contract Oracle {
 Request[] requests; //list of requests made to the contract
 uint currentId = 0; //increasing request id
 uint minQuorum = 2; //minimum number of responses to receive before declaring final result
 uint totalOracleCount = 3; // Hardcoded oracle count
}

Keybase proof

I hereby claim:

  • I am pedroduartecosta on github.
  • I am pedroc (https://keybase.io/pedroc) on keybase.
  • I have a public key ASAzPvCsscwUOE487ulXNKdyfk-Vfu-9gwYaWGmGJq1f-wo

To claim this, I am signing this object:

@pedroduartecosta
pedroduartecosta / cloudSettings
Last active September 16, 2019 19:17
Visual Studio Code Settings Sync Gist
{"lastUpload":"2019-04-22T16:12:57.533Z","extensionVersion":"v3.2.9"}