Ask HN: How do I stay on top of AI within software development?
What are the steps I should be taking now to take advantage of AI as a developer? So far I've been using it to replace Google, generate boilerplate code, generate example code for working with an API, and just bouncing ideas off of it.
I've been collecting several resources that seem useful (besides ChatGPT). I've been wanting to understand these technologies deeper [1, 2, 3].
Are there other resources that are recommended?
Should I be learning more about prompt engineering? [4]
[1]: https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/
[2]: https://www.fast.ai/
[3]: https://karpathy.ai/zero-to-hero.html
[4]: https://github.com/dair-ai/Prompt-Engineering-Guide
33 comments
[ 478 ms ] story [ 1153 ms ] threadIf I'd already developed an application- I would explore ways to make it AI native app. Question I'll be asking myself would be: is there anything in my app that needs prediction, classification or generation? Will my app user gets any benefit out of it?
For example: if HN was my app,I could show more relevant articles based on my history or comments. But does end user really need it? That's answer we should dig in ourself though
Prompt engineering appears to be similar to quality search skills. Learning how to use a search engine for instance, is a key skill that many engineers don't spend time on. I bet a bunch of people reading now don't know you can make sure a word is not included in a search, e.g.'javascript -coffee' or quote a word to make sure it appears e.g. 'javascript "dom"' or use the OR operator e.g. 'javascript OR ecmascript'. All part of the skill of searching, which I consider to be a "multiplier skill", multiplier skills are something where the value pays large dividends over time, much larger than the time invested. Good prompt engineering is going to be a key skill, both for image generation and text generation.
I find that's almost always where news breaks out first if you really want to be on top of things.
You could offer the public a different interface on top.
This post tells me you have fear of missing out. Your 3d printer inexperience or ability to create your own smart contract hasn't held you back and neither will this.
The cost to create software is rapidly decreasing with tools like this. For most people on HN making software is how they pay their bills.
If I was paying my bills with injection moulding, I would try to be on top of 3D printing as well.
To be honest I didn't dig deep, but the introduction [0] seems obvious stuff. Am I missing something?
[0] https://github.com/dair-ai/Prompt-Engineering-Guide/blob/mai...
RNNs: http://karpathy.github.io/2015/05/21/rnn-effectiveness/
https://hackage.haskell.org/package/grenade
haskell, composing well FP, succintness is important for complex concepts involved in RNN, and using an RNN as another layer in Grenade is very elegant and this is enabled by the haskell's composability, type-safety and type-classes. This makes RNNs almost fun relative to how painful tensorflow and their imperative kin are to use in python. Albeit tensorflow is more advanced with more advanced features not yet available in weka, grenade, hlearn.
not all neural networks are equal imho: https://www.youtube.com/watch?v=sPjA6lS0GlQ
>> what’s really nice about these functions is that they directly mirror the functions in Layers, in fact, this match works so well that we can embed a Network as a Layer in another Network. Grenade is a dependently typed, high level, artificial neural network library written in Haskell. It’s pretty robust, fast, and expressive, and uses some interesting type level programming techniques which don’t appear to have been used in neural networks before. Grenade does a lot of things right, it’s very expressive in my view, and makes the construction of networks incredibly safe: they essentially can’t crash, and they’ll always be sound. It’s also pretty quick, using BLAS and some hand written C, I’ve found this acceptable for a lot of problems.
or for lispers : http://www.intelligency.org/ai_lisp.php
or for elixir : https://dashbit.co/blog/elixir-and-machine-learning-nx-v0.1
I think FP, and in particular typed FP, is going to be important for code generation. I think successors of ChatGPT will generate much better code partly because they will explicitly target FP languages. FP code is composable, so it's easier to generate small functions that are correct.
Code synthesizers powered by SAT solvers already achieve impressive results, especially when targeting typed FP languages. I imagine that in the not-so-distant future many programmers will be writing type signatures and GPT-like systems will autocomplete function bodies.
This might also make formal verification appealing, because one would like to make sure AI-generated code is correct and also because AI-powered assistants will make it more cost-effective.
https://www.reddit.com/r/ChatGPT/
https://www.youtube.com/watch?v=kCc8FmEb1nY (Let's Build GPT: From scratch, in code, all spelled out)
https://openart.ai/promptbook (Stable Diffusion Prompt Book)
https://www.emergentmind.com/ (Formerly LearnGPT.com)
https://platform.openai.com/playground
https://chat.openai.com/chat (pay for plus, you can learn faster)
- New product launches: HN, Reddit, Twitter
- Technical ML advancements: arXiv, GitHub, HN
- Building your own projects: Project docs (Stable Diffusion, OpenAI), Andrej Karpathy, GitHub
Shameless plug - I've been asking myself the same question lately, and I've started exploring as much as I can and documenting everything I find: https://generatives.substack.com/
You will be an architect moving forward with AI, rather than an engineer.
Coding, as writing code by yourself, will be more of a brain-dead job in the future, how to instruct AI to write code for you more efficiently will be a bread bringer.
> How do I stay on top of AI within software development?
The best way is to apply the same way you do with software development into AI. AI is pretty much just software on different layers. The abstract of AI is still being determined so that's why you may be feeling FOMO now. What's happening now is basically an arms race for AI and testing it in real-time.
> What are the steps I should be taking now to take advantage of AI as a developer?
Gain access with any publicly available products with AI, such as Copilot, ChatGPT, etc. and use them. Another important subset of AI are the developer tools test them out and offer to test and review if they're offering such programs. Your list is already good btw. One thing I haven't seen mentioned is learning the overall fundamentals of AI outside the software we're seeing. Since we're at an arms race moment for AI, there will be a lot of changes understanding the fundamentals then would be a net positive to better iterate learning as releases happen.
> Are there other resources that are recommended?
Many already shared here, I'd take a look at those. If you use Twitter I recommend making a list and actively revisiting it atleast weekly or twice a week.
Follow relevant news sources and publications: Stay updated with the latest news and developments in the field of AI by subscribing to relevant news sources and publications such as AI News, MIT Technology Review, and TechCrunch.
Attend conferences and workshops: Attend AI conferences, workshops, and meetups to learn from industry experts, network with peers, and stay updated on the latest advancements in the field.
Join online communities and forums: Join online communities and forums such as GitHub, Reddit, and Stack Overflow, where you can interact with other developers, ask questions, and learn from their experiences.
I've been working with AOT Technologies (https://www.aot-technologies.com/) for past 3 years, I've seen how well they are gelling with the latest AI technologies and how they are promoting the AI Techs among the developers. So the culture and freedom in your organisation is also an important factor.