- Видео 96
- Просмотров 236 168
Simon Howroyd
Великобритания
Добавлен 27 ноя 2006
Simon is a senior embedded software engineer in C++ and (more recently) Python. In particular, he strives to promote the use of modern coding standards, such as C++20, where the embedded world are often left behind and still using C++11/14.
TwitchPlays is a piece of Python software that Simon created to enable live streamers on Twitch the ability to have their keyboard and mouse controlled by their viewers using chat messages. It is aimed at the Phasmophobia game community, however the software talks to Windows directly, so should work with any programme!
For his PhD, Simon was a researcher for hydrogen fuel cell powered unmanned aerial vehicles (drones), specifically investigating hybrid topologies with batteries and newly discovered carbon based ionic liquid supercapacitors.
TwitchPlays is a piece of Python software that Simon created to enable live streamers on Twitch the ability to have their keyboard and mouse controlled by their viewers using chat messages. It is aimed at the Phasmophobia game community, however the software talks to Windows directly, so should work with any programme!
For his PhD, Simon was a researcher for hydrogen fuel cell powered unmanned aerial vehicles (drones), specifically investigating hybrid topologies with batteries and newly discovered carbon based ionic liquid supercapacitors.
Do bees react aggressively to Bananas?
When honeybees panic, they release a pheromone on the target to coordinate a colony level attack. This pheromone smells like ripe banana. (To UK viewers it smells exactly like the old sweets you used to get called Pear Drops!)
Someone asked me if an actual banana causes the attack response, just like the pheromone does. Here's the result with my bees!
Someone asked me if an actual banana causes the attack response, just like the pheromone does. Here's the result with my bees!
Просмотров: 87
Видео
My First Beekeeping Stream!
Просмотров 885 месяцев назад
www.twitch.tv/drgreengiant Of course, everything broke when I went live. All the prep I did and OBS said nope because it hates my Linux laptop. Thankfully I also recorded the footage so here it is in slightly more watchable quality. Next time I will use my PC to stream to Twitch and do the rendering, and use my laptop just as a webcam bridge and for a live Discord call for you Q&A! Enjoy and fe...
Phasmophobia Performance on Steam Deck Console
Просмотров 219Год назад
Phasmophobia has the "Steam Deck Verified" badge and status. One of the maps causes the console to hard crash and the rest of the maps are unplayably dark. The TV in this video is doing a slightly better job at boosting the brightness and contrast than the console screen does (i.e. it is even worse on the console screen.) Some screenshots taken directly on the device are below to elide my dodgy...
Memory Management and Race Conditions - Demonstration
Просмотров 373Год назад
Following on from the discussion and speculation of a shared state bug in Phasmophobia (ruclips.net/video/6JrEww0arpc/видео.html), in this video we explore a live demonstration of how a race condition can form and what one might look like.
Memory Management and Race Conditions - Case study
Просмотров 61Год назад
For a practical demonstration of a race condition, I have made a follow-on video ruclips.net/video/nyefIUwo-hU/видео.html Memory management in software is a concern for those writing highly performant code. Typically, in my embedded firmware world, we don't have much memory nor processing power, so we keep only one copy of system state. This state is protected from so called "race conditions", ...
SimonSays Version 2 - How To Guide
Просмотров 386Год назад
Code Repository: github.com/howroyd/simonsays Latest Version: github.com/howroyd/simonsays/releases/latest SimonSays is a TwitchPlays style app for Windows and Linux which converts commands written in Twitch chat to keyboard and mouse inputs on the users computer.
Nightbot How-to Stream | Teaching easy and complex commands
Просмотров 247Год назад
The long promised how to guide for the fun Nighbot commands I have programmed for mine and other friends channels. Looking at the basics of making counters and tagging users then moving on to more complex API calls, conditionals and aliasing. Feel free to ask questions or make suggestions for future content in the comments. Nightbot documentation, check out "Custom Variables": docs.nightbot.tv/...
TwitchPlays Version2 Programming - Build Process with PyInstaller and Github Actions
Просмотров 71Год назад
Almost ready for release! Bugfixing and finalising the build process for creating a Windows executable that gets automatically attached to the release using Github Actions. My name is Simon and I am a senior embedded software engineer. Windows based Python code is a nice challenge for me outside my normal comfort zone! Programming my new open source TwitchPlays v2, based upon v1 which I release...
TwitchPlays Version2 Programming - Improving the CommandAction Flow
Просмотров 20Год назад
My name is Simon and I am a senior embedded software engineer. Windows based Python code is a nice challenge for me outside my normal comfort zone! Programming my new open source TwitchPlays v2, based upon v1 which I released last year, aimed at Phasmophobia streamers on Twitch. Using Github Copilot to help me, running the GPT3 engine, similar to ChatGPT. Contribute and see the code: github.com...
TwitchPlays Version2 Programming - Arguing with GUI alignment
Просмотров 27Год назад
Very short stream showing progress on my tkinter GUI and the challenges I am facing. More details below: My name is Simon and I am a senior embedded software engineer. Windows based Python code is a nice challenge for me outside my normal comfort zone! Programming my new open source TwitchPlays v2, based upon v1 which I released last year, aimed at Phasmophobia streamers on Twitch. Using Github...
TwitchPlays Version2 Programming - My first GUI
Просмотров 35Год назад
Looking at making my first ever GUI! Using tkinter for Python. More details below: My name is Simon and I am a senior embedded software engineer. Windows based Python code is a nice challenge for me outside my normal comfort zone! Programming my new open source TwitchPlays v2, based upon v1 which I released last year, aimed at Phasmophobia streamers on Twitch. Using Github Copilot to help me, r...
New IRC Connection to Twitch for TwitchPlays Version 2 with help from GPT
Просмотров 53Год назад
Looking at the Twitch IRC server connection! More details below: My name is Simon and I am a senior embedded software engineer. Windows based Python code is a nice challenge for me outside my normal comfort zone! Programming my new open source TwitchPlays v2, based upon v1 which I released last year, aimed at Phasmophobia streamers on Twitch. Using Github Copilot to help me, running the GPT3 en...
TwitchPlays Version2 Programming with GPT Github Copilot!
Просмотров 42Год назад
Looking at the new actions that chatters can impose on the streamer! More details below: My name is Simon and I am a senior embedded software engineer. Windows based Python code is a nice challenge for me outside my normal comfort zone! Programming my new open source TwitchPlays v2, based upon v1 which I released last year, aimed at Phasmophobia streamers on Twitch. Using Github Copilot to help...
Embedded C++20: Static Hardware Driver Wrapper
Просмотров 7442 года назад
Embedded C 20: Static Hardware Driver Wrapper
Embedded C++20: UART Driver Interface and Implementation
Просмотров 1,1 тыс.2 года назад
Embedded C 20: UART Driver Interface and Implementation
Embedded C++20: VSCode Setup for C++ and Useful Extensions
Просмотров 3,3 тыс.2 года назад
Embedded C 20: VSCode Setup for C and Useful Extensions
ESP-IDF in CPP 18: RTTI fix, attribute value specialisation and dynamic table GATTS construction
Просмотров 5352 года назад
ESP-IDF in CPP 18: RTTI fix, attribute value specialisation and dynamic table GATTS construction
ESP-IDF in CPP 17v2: Starting work on Bluetooth LE (BLE) Take 2!
Просмотров 1,1 тыс.2 года назад
ESP-IDF in CPP 17v2: Starting work on Bluetooth LE (BLE) Take 2!
ESP-IDF in CPP 16: We're back! Recap of where we're at
Просмотров 4912 года назад
ESP-IDF in CPP 16: We're back! Recap of where we're at
ESP-IDF in CPP 15: Logging and the future of this project
Просмотров 8353 года назад
ESP-IDF in CPP 15: Logging and the future of this project
ESP-IDF in CPP 14: Inter Task Messaging
Просмотров 1,2 тыс.3 года назад
ESP-IDF in CPP 14: Inter Task Messaging
ESP-IDF in CPP 13: WiFi Smart Config
Просмотров 1,5 тыс.3 года назад
ESP-IDF in CPP 13: WiFi Smart Config
ESP-IDF in CPP 12: Non-volatile Storage Testing
Просмотров 6753 года назад
ESP-IDF in CPP 12: Non-volatile Storage Testing
ESP-IDF in CPP 11.5: Fixing the Build Environment
Просмотров 6413 года назад
ESP-IDF in CPP 11.5: Fixing the Build Environment
ESP-IDF in CPP 11: Non-volatile Storage Continued
Просмотров 5793 года назад
ESP-IDF in CPP 11: Non-volatile Storage Continued
ESP-IDF in CPP 10: Non-volatile Storage and Templates
Просмотров 1,3 тыс.3 года назад
ESP-IDF in CPP 10: Non-volatile Storage and Templates
ESP-IDF in CPP 09: Simple Network Time Protocol (SNTP)
Просмотров 1,6 тыс.3 года назад
ESP-IDF in CPP 09: Simple Network Time Protocol (SNTP)
ESP-IDF in CPP 08: Getting an IP Address
Просмотров 1,1 тыс.3 года назад
ESP-IDF in CPP 08: Getting an IP Address
7:30 problem 1 with default logging 8:50 problem 2 11:40 macro some type. 18:20 constructor 21:04 log 33:30 auto convert to stringview& type 43:00 Make sure it's compile time error when give it un convertable typw 45:30 logf() log in printf() style. 48:56 GetLast argument problem in variadic template. 55:10 log buffer as hex 1:00:23 GetLast class implementation 1:07:00 review variadic arg overload 1:09:10 review the lock 1:12:00 when inline specifier needed 1:14:50 use case of local logger.
Nothing wrong with long when it is as good as this! Really learned a lot from you.
Simon, Hope the comment finds you well. Great series, but it is a struggle using v5.3.1 for this as I have not found any way to get 'esp_efuse_mac_get_default' to compile into the project (yes, I checked all CMake REQUIRES statement) and I am using 'esp_read_mac' instead. I have been looking at the Wifi::init() method in wifi.cpp and cannot see how one would ever enter into the 'else if' block of the 'if' block as there does not seem to be any code like this: _state = state_e::ERROR. Hence, it seems that the error state would never be reported. Any clarification would be appreciated.
_state is a member variable, not the local status variable. The whole if-else in this function is to protect against initialising twice, i.e. initialising only when _state==state_e::NOT_INITIALISED. If we are in _state==state_e::ERROR then this function returns a failed code, the underlying driver is in an error state so we cannot just retry initialisation, we would need reinitialise first, for example. Any other state means we are already initialised so the return status is OK in my schema; although this initialisation call failed, because we are already initialised, so there is no work to be done, systems are nominal so I accept this as a success and not a multi call bug. I have not played with EDF v5.3.1 so can't help here I am afraid. A very quick look at the docs shows the function hasn't been removed. I wonder if it has to be enabled in IDFConfig for the project? I am guessing though.
@@DrGreenGiant I did a little more digging and found that with v5.3.1 you have to either include esp-idf/components/esp_system/include/esp_system.h in Wifi.h or add esp_system to the REQUIRES parameter of idf_component_register in application/Wifi/CMakeLists.txt and then the project would build and not error out on 'esp_efuse_mac_get_default'. Doing both also works. It was an easy fix so I am perplexed as to why I was having so much trouble before. Oh well, water under the bridge. Thanks for your reply. BTW, what version of ESP-IDF are you currently using? Is up grading something to avoid?
@@DavidTLutz Glad you have it compiling now! Great to hear! Ive not touched an esp for 2 over years now unfortunately, new job that doesnt use them and other life things going on so not had chance as a hobby. Upgrading any major version of a toolchain component in embedded is always a big pain. Unless you have need to, that pain is obviously not worth it just for the sake of it. For a new project that needed quick time to market and needs to have high availability, I would always go with the most stable and well hardened version, which is pretty much never "latest." If I am messing about or have more time on my hands and less pressure for a reliable product then I will go with latest so I can try the new toys!
Hey there, Thanks a ton for the video, hope you're feeling better now 😊. I've also been diagnosed with acromegaly (Microadenoma) and I'm scheduled for surgery in 3 weeks. A part 2 of the videos explaining more about the surgery would be super helpful. But I'm curious, how exactly did you prepare for the surgery? Did they continuously monitor your brain signals? What happens if brain fluid leaks and how do the docs manage it? And how long did it take? Also, did they have to shave your nose or head? Thanks in advance.
Hiya. There was no prep bar blood tests, no brain signal monitoring that I was aware of. No shaving either, they went up through my nostril; there was absolutely no external evidence that I had had an operation. I had to have a dressing under my nose for a few days to catch any blood and mucous etc, which was a bit gross but not too bad. I was warned about CFS leaks and what to look out for, I forget now but iirc it was a clear watery fluid leaking from my nose. Luckily I didn't get that so I am not sure what they would do to fix it, but they seemed pretty competent if it was to occur. The surgery was about 2-3hrs I think, first thing Monday morning and I should've gone home Wednesday but they kept me in an extra 2 days because of an admin blunder, nothing to do with the surgery. To be honest, the whole thing seemed very easy and trivial, so I would have no worries at all if I had to do it again (I have had the all clear now though!) The one thing that did affect me a lot, that I believe is common, is sound. Everything seemed turned up to 11. People whispering in the next room was deafening. So if you have some ear defenders or ear plugs for the few days after surgery, that would be useful to have on standby in case you get the same. Good idea about a follow up video. I have a better webcam now too. I shall go through all the questions that have been asked in these comments and make some notes of what to cover! Best of luck, it was an absolute life changer for me.
Hey, thanks a lot for taking the time to answer our questions. 🫡 I have a few more questions for you. Were there any food restrictions after the surgery? If so, how long did they last? If you're a physically active person who goes to the gym or plays sports, how long did it take before you could start doing those things again? How long do we need to monitor IGF-1 levels after surgery? Mine is currently around 800 ng/mL. Do you mind sharing what yours was before the surgery, if you remember?
@@sumankumary You're welcome! No food restrictions except the usual no food 12hrs prior to the anaesthetic. There would be no physical restriction on exercise really but you probably won't desire to do any for at least 3 weeks. You'll be able to do very light exercise like walking after a week, but you will still have a bandage under your nose if anything like me, so might feel a bit self conscious! My IGF1 is monitored for life now, once annually by the NHS as a preventative measure. After surgery I was tested after 2-3 months, then again at 6 months then again at 12 months. I have no idea what my levels were, they may be buried in some paperwork somewhere but no idea where.
Very nice. Thank you!
Could we instead use a fixed-size buffer allocated on the stack at compile time, rather than dynamic memory allocation, to handle data in the _verify_buf function? If the data exceeds this buffer size, we could read or write it in chunks. Thanks for the great videos.
You could indeed. That static allocation would then not be able to be used for anything else, and as you say, you would have to chunk it up for bigger buffers. If you _can't_ use heap allocs which allow the memory reuse afterwards then static would be fine. You could possibly consider doing it on the stack with small chunks too, but be wary of the FREERTOS stack size for that task. Thanks for the great comment!
Thank you so much for this, I'm a full-stack web and mobile developer who somehow became the sole dev on an embedded project. This series is a life saver for me, really appreciate it.
You're very welcome. Glad it is of some help! This might all be a bit out of date now but it should get you started. I keep meaning to do a new series but finding time is difficult these days! Ask any questions you have!
Sorry but I found this presentation very slapdash, unstructured, inaccurate and amateurish. Also maybe install a proper video grabber instead of a camera pointing at the screen?
@@icarossavvides2641 I'm not a professional content creator, nor do I claim to be. I don't monetise my videos. This was also my first video. Curious what you thought was "inaccurate" or "amateurish" in terms of the technical detail? I used OBS, not a camera pointing at the screen, obviously.
I'm not sure what I hate more... your rambling, your mumbling, or your incessant amount of typos. I had to stop watching, it made me want to pluck my eyes out and cut my ears off listening to a muppet.
Finally , i have been wondering about this for years
"Science conducted" Love it
Thought I cornered the disaster market.
bees!! Very cool
Lol, I also though of going to farming instead of programming XD. Never expected to follow same channels for those thoughts XD
🐝🐝🐝
Greetings from Odesa! Thanks for supporting my country
omg your voice is extremely similar to mine. For a moment I was confused because I didn't remember recording a series on ESP32 programming.
Thank you so much for this series, it's really fantastic. I am struggling with how I can create my own tasks though, like I want to be able to have a member function of a class run as a task. Is this the right approach? Do you have any advice?
You ate using c instead of c++. Using a .cpp extension means nothing.
This episode is setting up the framework to use a C++ compiler, which I do throughout. In all the episodes following this we use C++ language. File extensions are used to differentiate between C and C++ source files in the toolchain. If you wrote C++ code in a .c extended file then the toolchain would fail to compile the code with the way it's been setup by Espressif.
Just stumbled on this video. Hope you are doing well now. Thanks so much for sharing your story. Currently going through tests myself. Just wondering if you are going to put out the 2nd part I would really love to hear about how the surgery was.
I forgot to do a part two! I'll see if I can get some thoughts together to make a video but to quickly give you some thoughts now; the surgery was amazing. I recommend getting a set of ear defenders for after surgeries as myself and others I've read about became very sensitive to noise for about 2 weeks. Ear defenders made this much more comfortable. Other than that, the pain was a bit rough but mostly covered by the oxycodone I was prescribed. I was up on my feet the same day and in hospital for 4 days total. Recovery to being a useful human again was about 3 weeks. But take it easy for another couple of weeks. The change in my mood and energy levels since having the surgery have been dramatic. It made such a huge positive difference. Best of luck, ask me anything you want!
@@DrGreenGiantthank you so much for your reply and for sharing your journey. This is comforting to hear. I am personally just being sent to an endocrinologist now as I noticed a protrusion in my brow and had slightly elevated igf although I don’t really seem to have any other symptoms. However I am preparing myself for what may be to come. The most scary part for me I think is the thought of the surgery. Just as another question, so like when you went for the day of the operation did you find your anxiety was manageable? What sort of pain or anxiety did you have when waking up is it like a bad headache? Did you find in the coming days you had a lot of anxiety about potential complications, CSF leak etc? Sorry for all the questions just trying to prepare myself and be as educated as possible. Thank you again so much.
Hello, Around 45:00, you"re starting to consider the "good accessibility" in GpioBase for _pin, _cfg and _inverted_logic. IMO, a good encapsulation rule would be to always put data (and possibly function) in private accessibility , and to provide only functions in protected or public accessibility. So, you should, maybe, put those data in private accessibility and provide getter in protected accessibility, because it seems clear that "outside world" would never to have access to them (only derived classes will). I know that those three data are constant, and that compiler will not allow the derived classes -- whose may need to access to them -- to modify them values, but, putting those data in protected accessibility will -- in some way -- break the Low of Demeter, by providing to derived classes a "direct" access to those data. Putting those data in private accessibility and providing only getters on them in protected accessibility could allow you to minimalize refactoring work if you consider to represent those data in a different way in the future. You are -- of course -- completely right on the fact that it looks like unnecessary code bloat, but, as we don't know -- when writing the code now -- how many access to those data will be done in the future, it could enforce the OCP principle, by allowing you to only have to change your getters behavior if you consider "one day" to change the way those variable are represented. More interesting thing being that those getter's behavior can perfectly be inlined. In the same idea, around 1:00:00, you were stroking your mind to deal with the possibility to use inverted logic. You could avoid such "problem" by just definying some protected function to compute the final state to use according to the _inverted_logic's. We could call this function -- will say -- logic_state(bool state) -- or any more interesting name if you will -- and implement this in a way like if (inverted_logic()) // considering we have a protected getter to know what the value is return !state; return state; or, in a way like return inverted_logic() ? ! state : state; if you prefear ;-)
19:00 39:00 47:00 value attr 50:00 size of type
I'm not quite clear if C++ mutexes and FreeRTOS semaphores can coexist without any problem ?
I've not had issues and last time I looked they used the same implementation. I.e. the "system calls" used by the C++ standard library were calling freertos locks. To be fair, it is a long time since I checked but I've had no reason to doubt it's changed so far.
31:00 const reference, copy constructor 46:20 constructor inheritance. 54:00 init inheritance.
I am using Nodemcu. Facing that error. error: 'time_point_now' function uses 'auto' type specifier without trailing return type [[nodiscard]] static auto time_point_now(void) noexcept note: deduced return type only available with -std=c++14 or -std=gnu++14
Yeah I was using C++17. I presume you are on C++11 which is very old now. You will have to trail the declaration with the return type (or change auto to the actual type expected which is probably easier, or a template.) More info here: en.cppreference.com/w/cpp/language/auto
Thx for specifying the problem. To solve it I've added target_compile_options(${COMPONENT_LIB} PUBLIC -std=gnu++17) line in the CMakeLists file in Wifi folder.
16:47 N.I.C.E
Really great job. Just one question and i would like to hear your opinion. I've read in a book once that it's better to include stuff only in .cpp files rather than the hearder files. So,, in your code it would be better to include in .cpp Is it right or it wouldn't actually matter ?. Thanks for that great job btw
The answer is, it depends :) If there is something in the header that requires the include, then there is no choice. For example, a function takes a std::array as an argument, you will have to include <array> in the header if that's where the function is declared. Anything that is only used in the translation unit (cpp file in this case) can be included in either the header or the cpp and work fine. HOWEVER, if in the header, then any other translation unit that includes that header then also has all this superfluous stuff that the pre-processor has to deal with, which will inflate build times. I am very lax on this particular best practice, I admit. Simply because my build times aren't slow enough for me to care and I'm lazy. I also quite like having all my includes in one place so I can notice dependencies easier, but that preference is only enabled by having quick builds. It's not uncommon in large code bases for builds to take hours, in which case being more disciplined would have a noticeable advantage.
Great series, just getting started with C++ in embedded. I previously only used MicroPython but C++ seems to give you much more options. Thank you very much for these videos, I was a little bit lost getting started!
I am using Nodemcu8266 I spend a day looking for this error I spend a day looking for this error undefined reference to `pthread_cond_init' esp undefined reference to `pthread_cond_broadcast' undefined reference to `pthread_cond_wait' The answer is putting the CMakeLists as this : idf_component_register(SRCS src/main.cpp INCLUDE_DIRS "" REQUIRES freertos spi_flash pthread)
I kind of grateful, but after 20 minutes I realized, that this is a 40min video. Does it really take 40mins of configuration to write hello world.
Not really. If you just want to download and run the example project provided by espressif then that would be fastest, but then I'm not adding any depth or value at that point by making a video about it. This is a very old video now and my first one so the quality is poor to be honest. I'm starting a new series soon and am aiming to be much more concise and watchable.
Best dude ever. Thank you very much <3. i was watching another series which describing ESP-IDF, and i couldn't focus on the video for 10 min. But your videos are great, your way in explaining the way of OOP is great. Thanks again, you are the best I've seen in embedded systems on youtube.
Finally, a guy in embedded systems who really cares about his code to be clean and explains the reasons. Not just blinking a LED. You are the first one i find, please recommend anyone who codes in the same way in Embedded systems if you know any.
For a while i felt like i was just repeating my codes and the only difference is the driver module i am writing. But every thing is the same in C, so boring to be honest. No art in it.
@@abdelrahmanyasser5720 Thank you so very much for the kind words. I know it has been a while since recording these very waffly videos so hopefully they still hold the test of time! If not, I am very close to starting a new series using IDF5 and C++20, so keep an eye out for that! Hopefully the production quality will be a little better too. As for others, I know what you mean. I find nothing modern, which is what inspired me to do this in the first place. That's a reflection of the whole industry imo. The only name I know worth watching, and I highly recommend is Michael Caisse. He's done a few embedded talks at CppCon (on youtube),
@@DrGreenGiant Wow, waiting for it. I will be the first one watching it XD. Just please keep describing the bad way and the better way of doing things, just like you talked about getters and setters and the way you made it better, doing the bad thing (repeating code) in the video, and how to avoid it. This kind of stuff i don't find in many courses (specially in embedded field). Thanks for your recommendation, i will listen to his talks.
Thank you
There is actually a vscode plugin, that places text after the closing curly brackets to tell which line it belongs to and it will not be part of the codefile itself.
Ooh any idea what it's called? That would be helpful, particularly when reviewing legacy code
@@DrGreenGiant Sure, I had to look it up. It's called "Bracket Lens" by wraith13. I mainly used it on TypeScript JS and PHP before, but I just opened a C++ / PlatformIO project to make sure it works there, too. And it does.
11:06 13:24 recursive mutex 15:45 send 20:52 receive 31:15 underlying pointer 34:35 QueueInterface constructor 38:20 convert pointer 40:14 copy constructor 46:40 default constructor 47:35 n_item_waiting 50:15 n_free_space 53:00 clear 54:47 create and destroy queue 1:01:00 create unique ptr to pass to Base Q Message
how can i make a !followage command? Because currently averything is broken :(
There's nothing native in Nightbot nor the TwitchAPI afaik to do this. There are some third party tools that can though. StreamElements has this integrated as a default command. Maybe this helps if you wish to do it in Nightbot though: community.nightdev.com/t/new-followage-command/35108
@@DrGreenGiant thank you. Sadly i dont really understand anything sayed on this Website :( You may could do a Tutorials it would be the only recent one on youtube for the nightbot and it proberbly will get a good amount of views ^^
@@LEMIZO Sure. What bits are you struggling with, so I have a bit of an idea what to focus on?
@@DrGreenGiant in general how to create the command with helf of this website :)
each your keeypress makes a sound like a drum. why? however I like your lecture.
u didn't finish smartconfig!!!! -.-
Iirc, and this was ages ago now, there was a bug in the IDF for SmartConfig which meant I couldn't complete it at the time of recording. I'm intending on starting a new series soon and SmartConfig or something equivalent will be pretty much the first thing I do to get remote development working, so hopefully that will help you! Watch this space
excellent project man