There are what we call special cases
For example:
The define keyword assigns data or procedure into the environment (somewhere in memory)
Conditionals evaluate true or false statements
If is a special case condition that evaluates only 2 cases
Starting the book sicp and thought to put some learnings here as I go along
Learning 1: Functions are black boxes where the output will always be the same for the same input
E.g: f(x) = 2x + 5
If x = 3, output will always be 11
#sicp#learninpublic
Normally in scheme, the evaluation order is as follows:
Evaluate all of the operands, and apply the operator to all of its operands
E.g (+ 2 3) => we first evaluate the operand 2 gives value 2, 3 = 3, and operator + adds those 2 up to be 5
However if sub procedures are not functional (i.e given input x it doesn’t generate the same output each time), then the results for applicative vs normal order evaluation are different
There’re general two types of evaluation order:
1️⃣ applicative order: “evaluating all operands and traverse up the evaluation tree”
2️⃣ normal order: “expand all procedures until you get to a primitive procedure, and evaluate”
If procedure is functional, results would be same
half an hour here, an hour there plus the help of chatGPT and google, I was able to create the first feature of a product I'm envisioning (ignore the ugly UI).
Even without a lot of spare time. With consistency, things slowly comes together.
#buildinpublic#indiehacker
@ScottPlusPlus Another thing to add is that I don’t consider only products as side projects
For instance, I am also thinking of brushing up my frontend skills with a few frontend mentor projects from https://t.co/8j6mC1uQba
I’d hold the same rules for those
There’s are two rules I am going to follow this year and see what happens
1️⃣ ship code regularly for my side projects, ideally a few sessions per week
2️⃣ finish one project before moving on to the next
Let’s see what happens in a year!
#buildinpublic#indiehacker
@ScottPlusPlus To the point where its feature complete, deployed in a usable state by other people
My general idea is to create MVPs get them tested by potential users (either online or from my network) and get feedback as quickly as possible, even before the product is fully out
I tend to overestimate how much I can get done in a day and underestimate how much I can get done in a week
When not hitting my daily goal its easy to lose motivation
That’s why writing down my weekly achievements have helped me stay focused
#buildinpublic#indiehacker
When building LLM wrapper app, you might want the response to be a JSON with specific attribute.
You can add `response_format: {"type": "json_object"}` in your open ai API request body and specify the json attributes in the prompt. Try it out!
#buildinpublic#indiehacker#LLM
I don’t have much energy after a long day of work. So the goals that I set for my side projects per day are normally so small that I’m sure I’ll be able to do in less than half an hour
Once I get through that initial hurdle, motivation usually comes
#indiehacker#buildinpuic
@ScottPlusPlus For example, maliciously abusing your open ai chat integration to use up your open ai credits, abusing your S3 uploads to rack up your aws bill etc
What are the kind of ways we can limit the possibility of denial of wallet attack on your saas?
Off the top of my head I’m thinking an auth model with rate limits for free tier customers and unlimited usage for paid customers
What do others think?
#buildinpublic#indiehacker
It takes discipline to be consistent in working on your side project and not be distracted by other ideas
It also takes a lot of discipline to not work when you’re supposed to rest and recharge
#indiehacker#buildinpublic
To not burn out from side projects, showing up consistently and doing little commits is better than hacking for a long period of time imo
It's already difficult to juggle a full time job with life outside of work, don't make your side project something you dread
#buildinpublic