120 karma · joined September 15, 2012
- Ask it to accomplish some coding task
- If it fell short, and I determined that was due to the harness, ask it to patch
- Otherwise proceed to next task
- Rinse + repeat
I run it within a sandbox, so I've been comfortable with the lack of native "approvals". So far my personal usage hasn't really needed subagents, but I think this is one thing I'd need to sort out were I using it professionally[1]. I'm aware of oh-my-pi, but I think half the fun is hacking from the base.The light weight prompt and simple harness design are a lot of fun. I don't mind Claude Code, and I think its well designed for the problem domain, but Pi is a lot of fun to hack with.
Hope that helps!
[1]: https://mariozechner.at/posts/2025-11-30-pi-coding-agent/#to...
OpenAI does publish advice on prompting o1,
but we find it incomplete, and in a sense you can
view this article as a “Missing Manual” to lived
experience using o1 and o1 pro in practice.
To that end, the article does seem to contradict some of the advice OpenAI gives. E.g., the article recommends stuffing the model with as much context as possible... while OpenAI's docs note to include only the most relevant information to prevent the model from overcomplicating its response.I haven't used o1 enough to have my own opinion.
Echo is cool, it can be pretty useful, but it hasn't realized its full potential yet.
I bought the Tap as a portable speaker to take with me on bike rides with friends. Well I took it out the other day and the minute it lost WiFi connection it just wouldn't work. I'm sure this was a problem on my end, but I had already paired the devices and I wasn't going to spend time fiddling with it while I was out with friends.
EDIT: Also it doesn't happen too often but Alexa has definitely accidentally triggered. It even woke me up at 2 AM after the power went out temporarily to tell me that it had no WiFi.
if x.in? my_set # very ugly
With that said, I personally don't agree with the post.1. http://hanselminutes.com/475/accessibility-a11y-with-opendir...
CS emphasizes theory and mathematics. Programming and coding is usually discussed in the introductory courses, but from there students are expected to teach themselves to keep up.
In the past when trying to workout it would generally go something like this:
* Immediate motivation, go strong for 1-3 weeks.
* Work or lack of interest interferes with workout regimen.
* Eventually interest dies out and I stop going.
What helped me break this cycle was finding motivation by:
* Doing things I liked to supplement the 'work' part. This meant playing racquetball, ultimate frisbee, and cycling while lifting.
* Learning about the benefits beyond looking physically attractive.
* Going consistently that a habit has formed.
Seriously, I feel different if I miss my gym routine for a day. Hope it helps as you think about your own material to write about.
My first complaint to the article is that it paints a framework as a universal hammer that tries to do many things. This simply isn't a fair comparison. I am not a builder, so I'm sorry if this analogy falls flat, but it's less like a universal hammer and more like the framing of a house. While there might be different approaches of framing a house for the most part the goal of framing is to ensure the house is structurally stable and can then be built into what the owner wanted. This is exactly what a framework attempts to do. My second complaint is similar.
If I'm building a simple "spice rack" such as a contact form then a framework is certainly overkill. However if one uses a framework to solve such a simple solution then the complaint should be targeted towards the developer. Quite frankly given the hardware available, and the fact that I could develop something like this quickly with or without a framework, it almost makes this point moot.
Finally it's the job of engineers/developers to understand that each problem has multiple solutions. As such it is up to the engineer to choose the solution that best fits the problem and execute. Frameworks will not always be a good solution, but at times they will be absolutely the best decision one can make. Good engineers don't think such black and white terms.
I think that we will see a period in the coming years that could be regarded as a "growing pain" for the human species. Jobs and professions could shift to be more inline with rapidly advancing technologies. During this time there will probably be people who find themselves either out of work, or unqualified. After this time I think that jobs and professions will again be available and that many people will be qualified for them. Perhaps even more jobs.
Who knows, maybe I'm an optimist.
Learning how to build a web application from scratch is not an easy undertaking. Certainly there is the actual task of learning how to program from the ground up that is challenging but I will warn you of the more subtle challenges you will face. Existing packages, libraries, frameworks and more are there to help you but can be a crutch. Understanding the trade-offs of writing your own library verse using a preexisting library is important. The second problem is knowing how to parse information you find online. People learn new things and love to share those things online all the time. Tutorials and screen casts will likely be plentiful, but beware that there may be holes in what you are learning. A fantastic example would be a basic tutorial on storing information to a database--it likely will not show you how to sanitize the data. In my opinion learning how to build solid web applications should then follow a basic formula to overcome these challenges: Learn the basics of web programming, pick up a framework, and then seek knowledge where needed.
Stay away from a framework in the beginning. Rails, Django, and other popular frameworks are absolutely essential tools for building web applications but they abstract a lot of the little things. Not understanding the little things can make debugging tricky. It can also lead to security flaws in your code. A good example of the little things includes parsing form input, interacting with a database, and routing traffic to its intended destination. Having an astute understanding of the building blocks will help you architect, debug, and develop solid web applications.
Once you are comfortable with the basics and could build a complex web application without the help of a framework you are paradoxically ready to use one. I suggest that your first framework be one that is highly popular so you can find tutorials and help as needed. Rails or Django are fantastic to pick up. Since you understand the basics you can then focus on using the best practices that these frameworks declare in their documentation to build a web application that can scale and is secure. You will not need to handle what will now be the mundane task of parsing form input or interacting with the database.
Now that you are comfortable using a framework you can seek more relevant knowledge that is applicable to what you want to do. Perhaps you are hoping to build a web application that shows real time updates for game scores and so you look into advanced AJAX techniques (or web sockets) for feeding the data to the user in a lively manner. Maybe you want to tackle something truly challenging such as converting m4a formatted files into mp3 formatted files. Programming really gets fun once you start tackling challenges that aren't quite as well documented. From here you will find the material more advanced, but with a solid understanding of the basics and a good framework to keep the basics out of your way you will be able to commit the mental capacity required to tackle the more challenging tasks.
In the end my advice is to have fun and work hard. Don't skip the basics, but understand that they are not the end point in programming. It is similar to learning calculus in mathematics. If you do not have a solid understanding of algebra you will struggle more than you need to. Build trivial things. Re-invent the wheel. This is how to best learn.
Best of luck!
TLDR: Pick a language, learn it, and then find a relevant framework and learn how to wield it.
My desktop has both Ubuntu 12.10 and Windows 8, and I love both operating systems. My work computer is loaded with OS X, which I also love. Perhaps I'm a techie, but I think that a lot of the hate we see with Windows 8 is just growing pains.
So for people who perhaps want a look at some of the pros and cons of Windows 8, here is a list I can come up with after using it for a while. Please note that these are mostly subjective.
Pros:
- Sand boxed applications. The implications here are fantastic, and it means less tech savvy users can be safer using Windows.
- Full screen apps, and snapped apps actually work fairly well.
- These full screen apps are per screen for setups with multiple screens. This is coming to OS X Mavericks which I'm really excited about!
- Hot keys allow for fast work! (I can't say what is and isn't new in Windows 8, because I didn't try to optimize my work flow in 7 with hot keys)
- The start menu UI is awesome once you are used to it, and much better than the old menu.
- HTML5 native applications. From what I have seen it is not as easy as building a website though, which is too bad.
- Hooking up to a large screen TV is AWESOME. With their design paradigm nothing is ever too small, and it feels so natural on a TV.
- This is an area where both Linux and OS X have failed to me.
- Far better task manager (subtle, but awesome!)
Cons: - Failure on Microsoft's part to help users differentiate between a Windows 8 targetted app, and a "Desktop" app.
- A proposed solution here would be to allow Windows 8 store apps to act as a desktop app, while remaining sand boxed.
- Desktop apps aren't sand boxed (see above).
- Windows store sucks.
- Full screen shouldn't be forced. They made some good UI moves, but this is one that I wish they hadn't done.
- Command line (I mean, I just love bash way more, and no git bash isn't a fantastic replacement).
- Microsoft tries hard to force the use of GUIs. Seriously I love using a shell to do most things.
- Start screen can be hard to manage for an average PC user.
EDIT Sorry for the formatting, I'm not really sure how to make the lists look pretty!1. In my experience JSON is frequently output programmatically, and taken in programmatically. Comments are not useful in these cases.
2. The only time comments could be perceived as useful then would be when parsing JSON by eye or hand. However, it is not difficult to parse JSON and understand it unless the keys have used obfuscated names. If key naming is obfuscated, comments aren't really the correct solution.
3. "An object is an unordered set of name/value pairs", as mentioned by jasonlotito and others earlier. There is no guarantee that a JSON parser will give you the right value if there are two of the same keys in the same scope.
Many managers think fear works to improve stats.
So I agree, this isn't a good measuring stick for newbies who don't have the same time or focus.
Edited to add that they mention that this won't satisfy every use case, and also what use cases they think it does satisfy. http://cppcms.com/wikipp/en/page/when_to_use_cppcms
My main takeaway from the experience was that every time my ego starts to inflate I should take a step back and breathe. I'm not some God coder, I have three years of experience. I realize that this doesn't quite parallel what the author was talking about, but I felt like sharing it because it was a hard lesson for me to learn.
Also, as an aside, my step dad has been developing for 25+ years. He's a really quiet guy, but when he gets talking I realize just how brilliant he is at this stuff. To those already in the field with careers just blossoming, watch out for those who are quietly smart, if he's anything like other developers sometimes they just don't feel the need to prove themselves to you.