- PHONK is a full dev environment that lives within the phone / tablet
- The Web Editor is hosted inside the device and served using a web server. So no 3rd party servers / cloud needed.
- It can access the device sensors in a couple of lines of code
- Has support for Websockets, MQTT, OSC, Midi, Bluetooth, Bluetooth BLE, NFC and more in a very concise way
- You can connect an Arduino straight to the phone with a USB OTG cable and communicate with it
- UI uses normalized coordinates, which is very handy for prototyping. It comes with a variety of views for most needs. You can also create a custom one.
- There is live code execution from the Web Editor. Just select the code => Control (or CMD) + Shift + X and that code will be live executed.
- PHONK comes with a Console, so you can console out wirelessly to the Web Editor.
- It comes with OpenStreetMaps support by default
- More advanced 2d and 3d graphics can be done through Processing which is included as a library.
Great work! I'm having a blast. I have tried 8th (a Forth that compiles to many platforms), a bunch of Basics, picoLisp, and some others, but using my mobile as a hotspot and coding from my laptop is so easy. I love that you included libPd and Processing.
One error I see: I ran the Date under JavaScript Basics, and it gives the right long string date (Mon Jun 29 2020 13:38:02 GMT-0400 (EDT)), but when it pulls the fields it has a '5' for month.
Thanks! I am use to 0-indexing in J and other PLs, but for some reason I thought month numbers were always cardinal numbers and should start at 1 in my subconscious!
I think I could integrate ARCore but did not have time yet to play with it, I would be happy to accept contributions since I've never used ARCore myself :) I will add an issue in the repo with the idea!
I have only played with ARCore, which was why I thought I could learn it better through playing with it in PHONK. I'll see if I can contribute. Thanks!
Phonk is also a genre that typically takes samples from early-1990s hip hop, combining them with sounds from jazz,and deploys distorting techniques such as chopped and screwed to create a darker sound.
This could be a nice alternative to LlamaLab Automate [1], which is really useful for automating UI things on Android. That one is flowchart based, sort of like Scratch.
Theoretically one could write a scripting language for it, but it stores its programs in a proprietary binary format and the parser class is too hairy for me to reverse engineer. (the decompiler in jadx only gives you smali for most of it, control flow is too complex)
That's very interesting! In theory PHONK supports running scripts in the background which could potentially listen to all those events and trigger things in response.
Very smart integration layer with Rhino and Android components factory API ! Although i would love to see if ES7/8 features are also make their way.... may be GraalJS can help ... not sure about this.
Looking at the API it supports i think for the most apps i use on daily basis can be prototyped without the bulky Android Studio.
More modern Javascript implementations is something I had in mind since the beginning. I played a bit with J2V8 but the amount of work to migrate it from Rhino is a bit too much!
Slightly off topic, but I love the site design here - the demos at the top illustrate it perfectly and simply, and it's one of few scroll-to-reveals I've seen that actually makes sense, and doesn't feel over the top.
1. The scripts you write calls directly to Java methods, so is much easier to access Android API calls
2. PHONK is not only a framework, is a development environment that lives in your phone, so no needs to install npm or any other tool in your computer. You can write scripts directly on the phone, or using a remote Web Editor that is hosted by the device itself
3. The PHONK API is tailored for quick prototyping, making and exploration. I invite you to have a look to the built-int examples and see how easy is to access sensor data, communicate with Bluetooth Low Energy, add maps or create interactive sound to name a few things!
PHONK supports live execution. You can select the code you want to run and press Control or CMD + Shift + X and it will execute, which is pretty handy.
Is not a debugger but it helps quite a lot to debug :)
What debugging workflow do you think would be important?
It is lovely to mess with. What are the apps that are not possible with this ? Is the API coverage full ? Can I make an app with it packaging PHONK + script ?
PHONK has some "shortcuts" to make prototyping and experimentation fast, such normalized UI positioning instead of complex but powerful layout systems.
so for example you can write the following to include a button
ui.addButton('Click me', 0.1, 0.1, 0.8, 0.2)
That's quite fast to do, but on the other side it makes it a bit cumbersome if your UI is complex and you need to support lots of screen sizes.
The good thing is that PHONK is quite easy to extend and virtually you could expose any Android API to the Javascript engine.
Packaging a PHONK script is possible but I haven't had much time yet to write a guide. I you want, you can follow this issue and upvote it if you think is worth it to have a guide! https://github.com/victordiaz/phonk/issues/9
Did I understand that right, if you have PHONK on your phone, you can write code that affects the phone? Can you brick your own phone accidentally? Or at least cause it to need to be restarted? I guess that's true for anything that can write/run code on itself.
Since everything is scripted and you only write user "apps", it is pretty safe in Android. Apps in Android have very good sandboxing and is virtually impossible to break anything :)
Sometimes if you write some code that makes PHONK unhappy, the app will freeze / crash but that's all :)
- PHONK is a full dev environment that lives within the phone / tablet
- The Web Editor is hosted inside the device and served using a web server. So no 3rd party servers / cloud needed.
- It can access the device sensors in a couple of lines of code
- Has support for Websockets, MQTT, OSC, Midi, Bluetooth, Bluetooth BLE, NFC and more in a very concise way
- You can connect an Arduino straight to the phone with a USB OTG cable and communicate with it
- UI uses normalized coordinates, which is very handy for prototyping. It comes with a variety of views for most needs. You can also create a custom one.
- There is live code execution from the Web Editor. Just select the code => Control (or CMD) + Shift + X and that code will be live executed.
- PHONK comes with a Console, so you can console out wirelessly to the Web Editor.
- It comes with OpenStreetMaps support by default
- More advanced 2d and 3d graphics can be done through Processing which is included as a library.