Reading view

There are new articles available, click to refresh the page.

Speculating About the Hardware Ambitions of OpenAI

By: Nick Heer

Berber Jin, Wall Street Journal:

Altman and Ive offered a few hints at the secret project they have been working on [at a staff meeting]. The product will be capable of being fully aware of a user’s surroundings and life, will be unobtrusive, able to rest in one’s pocket or on one’s desk, and will be a third core device a person would put on a desk after a MacBook Pro and an iPhone.

Ambitious, albeit marginally less hubristic than considering it a replacement for either of those two device categories.

Stephen Hackett:

If OpenAI’s future product is meant to work with the iPhone and Android phones, then the company is opening a whole other set of worms, from the integration itself to the fact that most people will still prefer to simply pull their phone out of their pockets for basically any task.

I am reminded of an April 2024 article by Jason Snell at Six Colors:

The problem is that I’m dismissing the Ai Pin and looking forward to the Apple Watch specifically because of the control Apple has over its platforms. Yes, the company’s entire business model is based on tightly integrating its hardware and software, and it allows devices like the Apple Watch to exist. But that focus on tight integration comes at a cost (to everyone but Apple, anyway): Nobody else can have the access Apple has.

A problem OpenAI could have with this device is the same as was faced by Humane, which is that Apple treats third-party hardware and software as second-class citizens in its post-P.C. ecosystem. OpenAI is laying the groundwork for better individual context. But this is a significant limitation, and it is one I am curious to see how it is overcome.

Whatever this thing is, it is undeniably interesting to me. OpenAI has become a household name on a foundation of an academic-sounding product that has changed the world. Jony Ive has been the name attached to entire eras of design. There is plenty to criticize about both. Yet the combination of these things is surely intriguing, inviting the kind of speculation that used to be commonplace in tech before it all became rote. I have little faith our world will become meaningfully better with another gadget in it. Yet I hope the result is captivating, at least, because we could use some of that.

⌥ Permalink

Games and life

Games and life

Yesterday, July 25, was a big day. Ironhide Games released the long-awaited fifth edition of their tower-defence game ‘Kingdom Rush’. I bought it as soon as it launched and completed its primary campaign in one sitting of several hours. Called ‘Alliance’, the game combines the gameplay of ‘Kingdom Rush: Vengeance’ and Ironhide’s ‘Junkworld’, together with aspects of ‘Legends of Kingdom Rush’. The game also continues a long storyline that began with the first ‘Kingdom Rush’ game, released in 2011, and last updated in ‘Vengeance’. For what it’s worth, it’s a good story, too.

In ‘Kingdom Rush: Origins’, Ironhide introduced Vez’nan as a powerful wizard who becomes corrupted by a gem called the Tear of Elynie to become a malevolent power threatening the kingdom of Linirea. In the games that followed, heroes and towers from several parts of the kingdom, ultimately including King Denas, were tasked with defeating Vez’nan and his allies. In ‘Vengeance’, Vez’nan returned to exact revenge against King Denas — or so it seemed. ‘Alliance’ describes Denas’s return as well as Vez’nan’s efforts against a greater evil called the Overseer, who is also the ultimate boss in ‘Legends of Kingdom Rush’.

Games and life
A ‘Kingdom Rush: Alliance’ skirmish begins…

I love tower-defence games and among them ‘Kingdom Rush’ is my favourite by far. I own all editions of it as well as have unlocked most towers and heroes in each one. At more than a few points during a work day, I like to break one of these games out for a quick and hairy skirmish or — time permitting — a full-on campaign on a high difficulty setting.

But while I like to play as often as I can, tower-defence doesn’t fit all moods. I have 13 games on my phone: the five ‘Kingdom Rush’ games, ‘Junkworld’, ‘Monument Valley’ I and II (and the expansion packs), ‘Loop’, ‘1010!’, ‘Idle Slayer’, ‘Rytmos’, and ‘Lost in Play’. They’re all great but I’d single out ‘Idle Slayer’, ‘Loop’, and ‘Monument Valley’ for particular praise.

‘Idle Slayer’ is a top-notch incremental game (a.k.a. idle game): the game will continue irrespective of whether you interact with the player-character, the player-character can’t perish, and gameplay is restricted to tapping on the screen to make the character jump. The whole point is to slay monsters — which the character will if she/flies runs into them, automatically pulling out an omnipotent sword when she gets close — and collect slayer points and to pick up coins and gems, which the character also does if she runs/flies into them. ‘Idle Slayer’ thus eliminates the player (you, me, etc.) having to be challenged in order to reap rewards. It’s just a matter of time, although occasional bursts of speed and character abilities purchased with slayer points can make things exciting.

I agree with what journalist Justin Davis wrote in 2013:

“Idle games seem perfectly tuned to provide a never-ending sense of escalation. They’re intoxicating because upgrades or items that used to seem impossibly expensive or out of reach rapidly become achievable, and then trivial. It’s all in your rearview mirror before you know it, with a new set of crazy-expensive upgrades ahead. The games are tuned to make you feel both powerful and weak, all at once. They thrive on an addictive feeling of exponential progress.”

Right now, this is where I’m at: 209 decillion coins in my kitty and racking up 110 octillion coins per second, plus whatever I pick up as I keep running…

Games and life
My player-character is named Mintana. She’s awesome.

Second is the amazing ‘Loop’, an endless series of puzzles in each of which your task is to link up some open-ended elements on a screen such that they form a large closed loop. You can tap on each element to rotate it; when the open ends of two elements line up in this way, they link up. The game is minimalist: each level has a plain monotone background and elements of a contrasting colour, and there’s beautiful, low-key instrumental music to accompany your thoughts. ‘Loop’ is the game to get lost in. I’ve played more than 3,500 levels so far and look forward every day to the next one.

Games and life
The two rings in the bottom-left corner are linked up.

Third comes ‘Monument Valley’, but in no particular order because it’s the game I love the most. I don’t play it as often as I play ‘Kingdom Rush’, ‘Idle Slayer’ or ‘Loop’ because its repeatability is low — but it’s the game that redefined for a younger and less imaginative me what a smartphone product could look and feel like when you play it. ‘Monument Valley’ is an ode to the work of the Dutch artist MC Escher, famed for his depiction of impossible objects that toy with the peculiarities of human visual perception. The player-character is a young lady named Ida navigating a foreboding but also enchanting realm whose structures and vistas are guided by the precepts of a mysterious “sacred geometry”. The game’s visuals are just stunning and, as with ‘Loop’, there’s beautiful music to go with. The objects on the screen whose geometries you change to create previously impossible paths for Ida take time to move around, which means you can’t rush through levels. You have to wait, and you have to watch. And ‘Monument Valley’ makes that a pleasure to do.

Games and life
Unobtrusive pink, lush green, obsidian black.

It should be clear by now that I love puzzles, and ‘1010!’ is perhaps the most clinical of the lot. It’s Tetris in pieces: you have a 10 x 10 grid of cells that you can fill with shapes that the game presents to you in sets of three. Once you’ve placed all three on the grid, you get the next three; once a row or a column is filled with cells, it empties itself; and once you can no longer fit new shapes in the grid, it’s game over. ‘1010!’ takes up very little of your cognitive bandwidth, which means you have something to do that distracts you enough to keep you from feeling restless while allowing you to think about something more important at the same time.

Games and life
What does losing mean if you can never win?

‘Rytmos’ and ‘Lost in Play’ are fairly new: I installed them a couple weeks ago. ‘Rytmos’ is just a smidge like ‘Loop’ but richer with details and, indeed, knowledge. You link up some nodes on a board in a closed loop; each node is a musical instrument that, when it becomes part of the loop, plays a beat depending on its position. Suddenly you’re making music. There are multiple ‘planets’ in the game and each one has multiple puzzles involving specific instruments. You learn something and you feel good about it. It’s amazing. I’ve only played a few minutes of ‘Lost in Play’ thus far, and I’m looking forward to more because it seems to be of a piece with ‘Monument Valley’, from the forced-slow gameplay to the captivating visuals.

Games and life
A scene from ‘Lost in Play’.

Aside from these games, I also play ‘Entanglement’ in the browser and ‘Factorio’ on my laptop. ‘Factorio’ is the motherlode, an absolute beast of a game for compulsive puzzle-solvers. In the game, you’re an engineer in the future who’s crash-landed on an alien planet and you need to build a rocket to get off of it. The gameplay is centred on factories, where you craft the various pieces required for more and more sophisticated components. In parallel, you mine metals, pump crude oil, extract uranium, and dig up coal; you smelt, refine, and burn them to get the parts required to build as well as feed the factories; you conduct research to develop and enhance automation, robotics, rocketry, and weapons; you build power plants and transmission lines, and deal with enormous quantities of waste; and you defend your base from the planet’s native life, a lone species of large, termite-like creatures.

I’ve been playing a single game for three years now. There’s no end in sight. Sometimes, when ‘Factorio’ leaves me enough of my brain to think about other things, I gaze with longing as if out of a small window at a world that has long passed me by…

Games and life
[Polyphonic robot voice] This facility mines copper ore, smelts it to copper plates, and feeds it to factories that make copper cables.

Začnite novo šolsko leto z Arnesovimi storitvami

V novem šolskem letu izkoristite široko paleto Arnesovih storitev, ki so ustvarjene za podporo vzgojno-izobraževalnemu procesu. Na Arnesu si želimo zagotoviti najboljša orodja in aplikacije za sodobno in učinkovito izobraževanje.

AAI-račun za dostop do vseh storitev

Večina šol je s hitrim optičnim omrežjem povezana v omrežje ARNES in z AAI-računom, ki ste ga pridobili na svojem zavodu, lahko dostopate do Arnesovih spletnih storitev in varnega brezžičnega omrežja eduroam.

e-pošta in ogromne datoteke

Z AAI-računom lahko uporabljate e-poštni račun z 20 GB prostora in brez nadležnih oglasov. Z distribucijskim seznamom lahko sporočila pošiljate določenim skupinam uporabnikom, za res velike datoteke velikosti do 100 GB pa uporabite Arnes Filesender.

Interaktivno učenje in spletne vsebine

Arnes Učilnice vam omogočajo ustvarjanje in urejanje interaktivnih izobraževalnih vsebin. Na Arnes Spletu lahko brez omejitev oblikujete spletne strani za šole ali posamezne predmete in domišljiji pustite prosto pot.

Najbolj zaželene videokonference in izobraževalni portal

Hibridni pouk lahko še vedno brezplačno organizirate v Arnes Zoomu ali storitvi Arnes VID, brez kakršnih koli časovnih omejitev. Izobraževalne videoposnetke in prenose v živo pa preprosto objavite na portalu Arnes Video in jih vključite v vaše spletne strani.

Napredne spletne ankete in organizacija dogodkov

Z Arnes 1KA lahko brezplačno uporabljate vse funkcionalnosti naprednega orodja za spletne ankete. Z Arnes Planerjem pa hitro na enostaven način organizirate dogodke.

Zmogljivi strežniki in varna shramba podatkov

Za organizacije nudimo brezplačno gostovanje virtualnih strežnikov in shranjevanje do 1 TB podatkov v oblaku.

Odzivna in strokovna podpora v slovenskem jeziku

Predvsem smo ponosni na našo ekipo strokovnjakov, ki vam je med tednom na voljo za svetovanje in pomoč pri uvajanju Arnesovih storitev v vzgojno-izobraževalno okolje. Tehnično podporo poiščite na novem spletišču podpora.arnes.si, lahko pa nas kontaktirate na telefonski številki 01 479 88 77 ali na naslovu helpdesk@arnes.si.

Strokovna izobraževanja in prenos znanja

Na portalu SIO, osrednji informativni točki, povezujemo projekte, dejavnosti in storitve slovenskega izobraževalnega sistema. Pripravljamo večtedenske množične odprte spletne tečaje – MOST – namenjene strokovnim in vodstvenim delavcem v izobraževanju, ter delavnice, na katerih lahko pridobite dodatno znanje. Dodali smo nova tečaja, prvega na tematiko odprtih izobraževalnih gradiv in drugega o interaktivnih vsebinah H5P. Zanimive tematike poiščite na izobrazevanje.sio.si.

S pomočjo Arnesa bo novo šolsko leto še bolj uspešno.

Wio Terminal in PlatformIO

By: danman

Seed Studio offered me a sample device (see specs) for exchange for an article on my blog and I accepted. The device came a few weeks ago so I am fulfilling my part.

When it came, I went to their page and searched for some example code to test and I picked GitHub Stats example. The documentation is pretty good but it describes the usage with original Arduino IDE which is not my weapon of choice. Some time ago I noticed PlatformIO added support for this device so I wanted to use it.

I started by creating a new project.

Then I pasted the source code in but it ended up with an error:

src/main.cpp:2:10: fatal error: WiFiClientSecure.h: No such file or directory

This led mi to following page: https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/. To use WiFi you need to install several libraries to Arduino. In PIO, you do this by adding following code to your platformio.ini :

lib_deps = 
    https://github.com/Seeed-Studio/Seeed_Arduino_atWiFi
    https://github.com/Seeed-Studio/Seeed_Arduino_FreeRTOS
    https://github.com/Seeed-Studio/Seeed_Arduino_atUnified
    https://github.com/Seeed-Studio/esp-at-lib
    https://github.com/Seeed-Studio/Seeed_Arduino_mbedtls
    https://github.com/Seeed-Studio/Seeed_Arduino_atWiFiClientSecure.git

After doing this, I’ve got a new error:

.pio/libdeps/seeed_wio_terminal/Seeed-Arduino-FreeRTOS/src/FreeRTOSConfig.h:54:3: error: #error architecture not support!
#error architecture not support!

After some investigation I found out I’m missing a build flag:

build_flags =
    -DARDUINO_ARCH_SAMD

Next error was:

src/main.cpp:3:10: fatal error: ArduinoJson.h: No such file or directory

This again means a missing library but this one is specific for the example: https://wiki.seeedstudio.com/Wio-Terminal-Reading-Github/#arduino-libraries-needed so the final lib_deps is following:

lib_deps = 
    https://github.com/Seeed-Studio/Seeed_Arduino_atWiFi
    https://github.com/Seeed-Studio/Seeed_Arduino_FreeRTOS
    https://github.com/Seeed-Studio/Seeed_Arduino_atUnified
    https://github.com/Seeed-Studio/esp-at-lib
    https://github.com/Seeed-Studio/Seeed_Arduino_mbedtls
    https://github.com/Seeed-Studio/Seeed_Arduino_atWiFiClientSecure.git
    https://github.com/Seeed-Studio/Seeed_Arduino_LCD
    https://github.com/bblanchon/ArduinoJson

I also needed to download Free_Fonts.h and put it to src/ directory as described here.

Next error was:

src/main.cpp:120:5: error: 'getData' was not declared in this scope
getData();

So I moved setup() and loop() functions to the end of the file, after getData().

After that, the code compiled and uploaded successfully:

> Executing task in folder wio-github: platformio run --target upload --target monitor <
Processing seeed_wio_terminal (platform: atmelsam; board: seeed_wio_terminal; framework: arduino)
Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelsam/seeed_wio_terminal.html
PLATFORM: Atmel SAM 4.4.0 > Seeeduino Wio Terminal
HARDWARE: SAMD51P19A 120MHz, 192KB RAM, 496KB Flash
DEBUG: Current (atmel-ice) External (atmel-ice, blackmagic, jlink)
PACKAGES:
framework-arduino-samd-seeed 1.7.6
framework-cmsis 1.40500.0 (4.5.0)
framework-cmsis-atmel 1.2.0
tool-bossac 1.10900.0 (1.9.0)
toolchain-gccarmnoneeabi 1.70201.0 (7.2.1)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 41 compatible libraries
Scanning dependencies…
Dependency Graph
|-- <Seeed_Arduino_atWiFi> 1.0 #5576591
| |-- <Seeed_Arduino_atUnifed> 1.0 #c4ae417
| | |-- <esp-at-lib> 1.0 #8c3ecc5
| | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| | | |-- <SPI> 1.0
| | | | |-- <Adafruit Zero DMA Library> 1.0.4
| | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
|-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
|-- <Seeed_Arduino_atUnifed> 1.0 #c4ae417
| |-- <esp-at-lib> 1.0 #8c3ecc5
| | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| | |-- <SPI> 1.0
| | | |-- <Adafruit Zero DMA Library> 1.0.4
| |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
|-- <esp-at-lib> 1.0 #8c3ecc5
| |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| |-- <SPI> 1.0
| | |-- <Adafruit Zero DMA Library> 1.0.4
|-- <Seeed_Arduino_mbedtls> 1.0 #4e74341
| |-- <Seeed_Arduino_atUnifed> 1.0 #c4ae417
| | |-- <esp-at-lib> 1.0 #8c3ecc5
| | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| | | |-- <SPI> 1.0
| | | | |-- <Adafruit Zero DMA Library> 1.0.4
| | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
|-- <Seeed_Arduino_atWiFiClientSecure> 1.0 #952bf0b
| |-- <Seeed_Arduino_atUnifed> 1.0 #c4ae417
| | |-- <esp-at-lib> 1.0 #8c3ecc5
| | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| | | |-- <SPI> 1.0
| | | | |-- <Adafruit Zero DMA Library> 1.0.4
| | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| |-- <Seeed_Arduino_mbedtls> 1.0 #4e74341
| | |-- <Seeed_Arduino_atUnifed> 1.0 #c4ae417
| | | |-- <esp-at-lib> 1.0 #8c3ecc5
| | | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| | | | |-- <SPI> 1.0
| | | | | |-- <Adafruit Zero DMA Library> 1.0.4
| | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| |-- <Seeed_Arduino_atWiFi> 1.0 #5576591
| | |-- <Seeed_Arduino_atUnifed> 1.0 #c4ae417
| | | |-- <esp-at-lib> 1.0 #8c3ecc5
| | | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
| | | | |-- <SPI> 1.0
| | | | | |-- <Adafruit Zero DMA Library> 1.0.4
| | | |-- <Seeed-Arduino-FreeRTOS> 1.0.0 #687b036
|-- <Seeed_Arduino_LCD> 1.6.0 #a9341f1
| |-- <SPI> 1.0
| | |-- <Adafruit Zero DMA Library> 1.0.4
|-- <ArduinoJson> 6.15.2 #7e58347
Building in release mode
Checking size .pio/build/seeed_wio_terminal/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [===== ] 48.2% (used 94724 bytes from 196608 bytes)
Flash: [===== ] 47.9% (used 243168 bytes from 507904 bytes)
Configuring upload protocol…
AVAILABLE: atmel-ice, blackmagic, jlink, sam-ba
CURRENT: upload_protocol = sam-ba
Looking for upload port…
Warning! Your /etc/udev/rules.d/99-platformio-udev.rules are outdated. Please update or reinstall them.
Mode details: https://docs.platformio.org/en/latest/faq.html#platformio-udev-rules
Auto-detected: /dev/ttyACM0
Forcing reset using 1200bps open/close on port /dev/ttyACM0
Waiting for the new upload port…
Uploading .pio/build/seeed_wio_terminal/firmware.bin
Write 243168 bytes to flash (475 pages)
[==============================] 100% (475/475 pages)
Done in 2.738 seconds
Verify 243168 bytes of flash
[==============================] 100% (475/475 pages)
Verify successful
Done in 1.506 seconds
======================================================================== [SUCCESS] Took 12.44 seconds ========================================================================
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
--- Miniterm on /dev/ttyACM0 9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
No ACK, R00
Device reset detected!
ESP-AT Lib initialized!
Attempting to connect to SSID: yourNetworkName
…………

Finally the code was working! So I quickly created file wifi_pass.hwith contents:

#define WIFI_SSID "ssid"
#define WIFI_PASS "password"

and included it in main.cpp like this:

#include "wifi_pass.h"
const char* ssid     = WIFI_SSID;
const char* password = WIFI_PASS;

After this, I got the code to work:

--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
--- Miniterm on /dev/ttyACM0 9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
No ACK, R00
No ACK, R00
Device reset detected!
ESP-AT Lib initialized!
Attempting to connect to SSID: homestead5
………Connected to homestead5
Starting connection to server…
Connected to server!
headers received
closing connection
3
1
17

You can see the result screen here:

You can find my project in this repo: https://github.com/danielkucera/wio-github-stats

One negative note though, to use the WiFi, I had to upgrade it’s firmware as described here. The problem is, that the utility works under Windows only so I spent some time installing Windows. But the guide mentions Linux version coming soon so hopefully it will come soon.

To conclude, I like the device, it’s nice big display and that it works with 5GHz WiFi. It’s ideal for displaying some quick info downloaded from the Internet or smart home data.

❌