Introducing Claude Science, a new app designed with every stage of research in mind.
Artifacts traced to their code, environments managed on demand, and 60+ optional scientific databases that you can connect.
Available now in beta.
I started Thinking Machines Lab alongside a remarkable team of scientists, engineers, and builders. We're building three things:
- Helping people adapt AI systems to work for their specific needs
- Developing strong foundations to build more capable AI systems
- Fostering a culture of open science that helps the whole field understand and improve these systems
Our goal is simple, advance AI by making it broadly useful and understandable through solid foundations, open science, and practical applications.
https://t.co/y2Bbl6BKF9
Introducing GPT-4o, our new model which can reason across text, audio, and video in real time.
It's extremely versatile, fun to play with, and is a step towards a much more natural form of human-computer interaction (and even human-computer-computer interaction):
🚨 Exciting update!🚨
Our MoonBats game just landed on the @Apple App Store!
It's time to unleash your inner MoonBat and embark on an epic journey!🥳
Grab your friends, download now, and let's make some noise! Link in our bio. 🦇 LET'S FLY!
#MoonBatsGame#AppStore@fatcat_fish
The new #MOONBATS game, is currently undergoing testing on iOS. The vibes are incredible, and we can't wait to share the fun with you!
The MoonBats team are here for the long haul, and we're committed to building unforgettable moments together.🦇Grab a bat and come hang with us!
You did it! We did it! 😱
Hape has won TWO Lovie Awards in the following categories for our partnership with Jägermeister!
🏆 Marketing, Advertising & PR - Best Partnership or Collaboration
🏆 Web3 - Art, Culture, Music & Film
We're ecstatic! Thank you for your constant support, and thank you to #Jägermeist3r for their valuable work and trust 🫡
A while back I updated my storage model from ObservableObject to use the new @Observable macro.
However, it meant getting rid of all @AppStorage declarations for values stored in UserDefaults and replacing them with code like this:
var name: String {
get {
access(keyPath: \.name)
return name
}
set {
withMutation(keyPath: \.name) {
name = newValue
}
}
}
This led to a lot of tedious boilerplate code, since I had almost 20 settings like this. So, I thought, this is a perfect use case for a Swift macro!
Well, it was not as simple as I first thought it would be, the use of @Observable on the class made things complicated, since that macro essentially turns "stored" properties into computed ones by inserting getters and setters in property accessor blocks. That was conflicting with my own macro which also had to inject getters and setters.
I had almost gave up trying to get this working when I decided to take one more look at how @Observable works, and realized the key to the solution is to apply @ObservationIgnored on the var, which basically prevents @Observable doing its thing on that property, i.e., no more conflicting macros.
So, we can replace the boilerplate like so (see the Github link in next post):
@ObservableUserDefault
@ObservationIgnored
var name: String
On expansion of the @ObservableUserDefault macro, you see the getter and setter shown above.
The macro is somewhat limited at the moment, since it relies on static properties within UserDefaults, for example, there must be a property https://t.co/967xNB3FDL for the code above to work.
I'm trying to make a more flexible solution so that keys and default values can be passed in to the macro so that the code like below could also work:
UserDefaults.standard.value(forKey: key) etc.
It's a little difficult though because the default value needs to be a generic and mixing that with macros is not easy.
📢@miramurati, Chief Technology Officer at OpenAI, is inviting you to https://t.co/m9AoQIkRCt X Edition
📍Join us on May 27 - 28 at Palace of Youth and Sports [Pallati i Rinisë], Prishtinë
🖇Register NOW: https://t.co/hZUtRwkHoo
#Dokutech#XEdition#BringingtheFutureCloser