Tuesday, September 2, 2025
Using OpenAI in code
AI is everywhere you can't escape. Google search something? AI will want to chip in what it thinks. Every Microsoft thing has Co-Pilots that can help you in various ways in its products. Now how about write your own code using it? OpenAI's ChatGPT is the thing to go to...Python is the preferred language. Just about every example out there uses it. Watch out! Some examples you see from websites, youtube, even generated by AI itself... can be outdated as OpenAI is still constantly evolving.
Using OpenAI in code is isn't free but looks affordable at first glance. Look at its pricing though. A million tokens for a few cents? Well look again, one call can be many tokens as it counts output characters, and image generation is a lot of tokens. Watch your budget.
After you pay up to get a OPEN_API_KEY, do not include it in your code as you don't want that stolen. Put it in a file named .env, and then use load_dotenv after installing with "pip install python-dotenv".
Then you have to install the OpenAI library with "pip install openai".
After you have the client you can do A LOT of stuff with it. See https://github.com/openai/openai-python to start your adventure.
I did, see it in https://github.com/josephmaklc/openapi/blob/main/openai_experiment.py
I got OpenAI to answer questions, also remember my previous question so I can ask followup questions. I got it to generate an audio file that I cannot tell at all it isn't recorded by human. I even got it to generate code!
One cool aspect of ChatGPT is generating images! However, that requires you to "Verify you Organization" which means take a picture of your government ID and send to them... Eew I don't want to do that.
Tuesday, August 26, 2025
curl in Windows
Developers (on the Mac) has long used curl to test out http calls on the command line. Sure you can use the browser to test out any GET commmands, and use other things such as Postman to test POST. But curl is very handy and it is right on the command line. Now Windows users do not have it previously.. it was a separate download.
If you have Windows 10 or 11 you have it pre-installed in your C:\windows\system32 folder. However, the world's example code and documentation are not so fair to developers on Windows. Flatty copy paste what you see will result in errors due to differences in Windows.
For example you are doing a little API with music albums your curl (for Mac) for inserting a record looks like this:
$ curl http://localhost:8080/albums \ --include \ --header "Content-Type: application/json" \ --request "POST" \ --data '{"id": "4","title": "The Modern Sound of Betty Carter","artist": "Betty Carter","price": 49.99}'But boom not working for Windows because of the following.
- The not-yet-end-of-commmand character for Windows is not \, it is ^.
- Don't use single quotes. Json double quotes need to be escaped.
So the command above to run for above is
curl http://localhost:8080/albums ^ --include ^ --header "Content-Type: application/json" ^ --request "POST" ^ --data "{\"id\": \"4\",\"title\": \"The Modern Sound of Betty Carter\",\"artist\": \"Betty Carter\",\"price\": 49.99}"
Monday, May 5, 2025
Hello Typescript world
Typescript is javascript with type. Waita minute the very reason you use javascript (rather than java) is you want to be quick-and-dirty and not want to use types right?
Well if you want to use React with types you will need Typescript. Its syntax is somewhat like Pascal: See https://www.geeksforgeeks.org/hello-world-in-typescript-language/ for a quick introduction.
But in React you don't compile and run. It's mostly automatic. and you are likely not going to do a lot of heavy OOP either.
Search for "react typescript hello world" and you will find several ways to do that. I use npm.
First you need to install node.
Then create skeleton app:
npx create-react-app my-app --template typescriptThen go to the folder
cd my-appA bunch of things has been generated for you. Go to src/App.tsx. This is where you put your components. Here is a simple component. Call it MyComponentFC.tsx
import React from 'react'; const MyComponentFC: React.FC<{ name: string; age: number}> = ({name,age}) => { return ( <h1>Hello, {name}! you are {age} years old</h1> ); }; export default MyComponentFC;In React instead of making things public you "export" it so it is known to outside world. Yes, people like returning not a single value these days. People don't mind mixing code with HTML in a giant return statement. You are cranky old school if you think this isn't so elegant. See this little component (not a class, but a constant function) takes 2 parameters and you can give each a type (and you have to repeat the names in that interesting symtax). The parameters can be much more complex than strings and numbers. The idea is define your own tags and manage states (variables) within.
This simple component generates some simple html with parameters you passed in.
That index.html is what your browser hits... which in turns calls index.tsx, which calls the App component. Here is my tweaked App.tsx to call that component. FC stands for Function Component.
import './App.css'; import MyComponentFC from './MyComponentFC'; function App() { return ( <MyComponentFC name="Johnny" age={20}/> ) } export default App;Launch the app with
npm start
Monday, February 3, 2025
Hello boto3 world
Boto3 is the library for interacting with AWS via Python.
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
Need to first install:
pip3 install boto3Lots of examples are out there but they are not yours unless you get it to work for you. So to get started you need an AWS account, and credentials be setup in your local machine. https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html So I have a couple files on S3 in a bucket, and I can retrieve them. Sometimes boto3 is better than other languages because sometimes other languages such as Java may be more clumsy.
import boto3 from botocore.exceptions import ClientError def getContentInBucket(s3_client, bucketName): result = s3_client.list_objects(Bucket = bucketName, Prefix='') for o in result.get('Contents'): print("fileName: "+o.get('Key')) data = s3_client.get_object(Bucket=bucketName, Key=o.get('Key')) contents = data['Body'].read() print(contents.decode("utf-8")) # To get list of buckets present in AWS using S3 client def get_buckets_client(s3_client): try: response = s3_client.list_buckets() for bucket in response['Buckets']: bucketName = bucket["Name"] print("bucketName: "+bucketName) getContentInBucket(s3_client, bucketName) except ClientError: print("Couldn't get buckets.") raise session = boto3.session.Session() # User can pass customized access key, secret_key and token as well # credentials are set in my .aws/credentials file # See https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html s3_client = session.client('s3') get_buckets_client(s3_client);
Subscribe to:
Posts (Atom)