Code Club Saturday 6th November
The next Paignton Library Code Club is Saturday 6th November 2021. Usual time.
We will just carry on from where we left off last time, catch up on what has been undertaken since the last code club.
Links
Tags
#Paignton,#Library,#CodeClub,#Coding,#Programming,#Scratch,#HTML,#Python,#More,#Tech
Code Club 4/10/2021
I am back at Code Club today, 2nd session since our return. If you are still not sure what Code Club is, then you have clearly being living in a cave since about 2012. Anyway, it is a coding club for children, generally 9-13 years of age.
The Paignton Club is a little more advanced, in that some of the attendees are working through a responsive web design course.
It would be really good to get MORE code clubs in Torbay, and in fact would be really nice if those clubs could collaborate, share expertise, maybe some resources.
Links
Tags
#Coding,#Programming,#Scratch,#Python,#HTML,#CSS,#Python,#MicroBit,#RaspberryPi,#Lego,#FreeCodeCamp,#More
Write your own compiler
Another post found on Mastodon. This was posted by Dr. Brian Callahan.
Links
Tags
#Write,#Own,#Compiler,#Programming,#Blog,#coding #code #program #programming #compiler #compile #compilers
Ansi Weather
Getting weather information is really useful. What happens if you're at the command line in Linux? I found a really little application that can help
ansiweather
apt install ansiweather
ansiweather -l Plymouth, UK
So what else can we do with this
This is a two step process
Will send the weather info to Mastodon.
However this does not include any date info
We can fix this with
then send the whole lot to Mastodon with
So, if we put this in to a final shell script we need:-
#send weather info to Mastodon
# current date
date > weatherinfo.txt
# current weather
ansiweather -l Plymouth, UK >> weatherinfo.txt
#send to Mastodon
toot post < weatherinfo.txt
# done
echo done
Again released under GPLv3
I tried to get festival to speak the weather, it is not perfect but this sort of works, you will need to direct to weather.txt first.
festival —tts < weather.txt
Looking in to this further, the issue is the brackets etc, so this stackoverflow post
strips out the colour formatting
sed 's/\x1b[[^\x1b]*m//g' weatherinfo.txt
Therefore
sed 's/\x1b[[^\x1b]*m//g' weatherinfo.txt > weatherinfo2.txt
Sends the newly formatted text to weatherinfo2.txt
So running back through festival
festival —tts < weather.txt
Is perhaps a little better, but not perfect
So going back to what we wrote earlier to send to Mastodon, the new script
1 #send weather info to Mastodon
2 # current date
3 date > weatherinfo.txt
4 # current weather
5 ansiweather -l Plymouth, UK >> weatherinfo.txt
6 # clean up output with sed
7 sed 's/\x1b\[[^\x1b]*m//g' weatherinfo.txt > weatherinfo2.txt
8 #send to Mastodon
9 toot post < weatherinfo2.txt
10 # done
11 echo done
Produces much nicer output. The top bottom part of this illustrates what was sent before we stripped out the colour formatting
However it still isn't perfect, as it removes part some of the wording, but it is hopefully getting there.
REFERENCES
TAGS
#YearOfTheFediverse,#Weather,#Scripting,#Bash,#Linux, #Mastodon,#ProblemSolving,#AnsiWeather,#programming, #Stackoverflow,#sed,#cat,#grep,GPL3,#FSF
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License
Contribute to f-droid
This was originally shared on Mastodon, so am sharing here for any of my followers who may be interested.
The contribution page is also here
Looks like lots of opportunities to get involved. If you are interested you can also get in touch with IzzyOnDroid.
You can join Mastodon here then connect with IssyOnDroid and ask how to get involved.
I am on Mastodon here
#freesoftware,#fdroid,#contribution,#foss,#repository, #android,#technology,#programming,#testing,#docs, #development,#software
Scratch projects 20/11/2020
Still occasionally create simple Scratch projects to add to my portfolio. Mostly simple stuff, that can be built upon.
Resources
New Repl.it course 3/8/2020
New course – How to teach yourself coding with Quizlet Founder Andrew Sutherland.
This may complement Paignton Code Club nicely. You can find more details here
I still need to complete the FreeCodeCamp course I am undertaking, I am also undertaking Teaching Primary Science : Chemistry With futurelearn.
Hopefully however, this is useful. I have shared on with Paignton Library on Twitter and with the Local Children and Young People partnership.
Free Virtual Summer camps – from Microsoft
Just sharing this, in case anyone is interested
Add more functions
I have added a few more maths functions to the application and also provided a clear function. There are still a few items to add to help improve debugging but the application is starting to take shape.
Notes
window = Tk()
window.title('Maths Application')
window.geometry("570x150") # w x h
window.resizable(0,0)
The above code is being modified as I go. So I am changing the window size depending on what is being displayed.
I have also made the Window title reflect the purpose of the application.
That the source code now has 'result' as a label rather than output. This will show up future screenshots.
The code for the above is as follows.
#!/usr/bin/env python
import Tkinter # note use of caps
from Tkinter import *
window = Tk()
window.title('Maths Application')
window.geometry("570x150") # w x h
window.resizable(0,0)
#define button actions
def btn1():
#convert box text in to integers
ent1 = int(entrytext.get())
ent2 = int(entrytext2.get())
#add the 2 integers and store in variable add
add = (ent1 + ent2)
print (add)
#insert value of variable add in to box outtext
outtext1.insert(0,str(add)) # insert response
def btn2():
#print("subtraction")
ent1 = int(entrytext.get())
ent2 = int(entrytext2.get())
#subtract the 2 integers and store in variable sub
sub = (ent1 - ent2)
#insert value of variable sub in to box outtext
outtext1.insert(0,str(sub)) # insert response
def btn3():
#print("multiply")
ent1 = int(entrytext.get())
ent2 = int(entrytext2.get())
#multiply the 2 integers and store in variable mul
mul = (ent1 * ent2)
#insert value of variable mul in to box outtext
outtext1.insert(0,str(mul)) # insert response
def btn4():
#print("divide")
ent1 = int(entrytext.get())
ent2 = int(entrytext2.get())
#multiply the 2 integers and store in variable div
div = (ent1 / ent2)
#insert value of variable mul in to box outtext
outtext1.insert(0,str(div)) # insert response
#clear boxes
def clear():
#print("clear boxes") # leave in for legacy testing
entrytext.delete(0, END) # clear input box
entrytext2.delete(0, END) # clear input box2
outtext1.delete(0, END) # clear output box
btn_tog2 = Button( window, text ='+', command=btn1) # add
btn_tog3 = Button( window, text ='-', command=btn2) # subtract
btn_tog4 = Button( window, text ='x', command=btn3) #multiply
btn_tog5 = Button( window, text ='/', command=btn4) #divide
btn_tog6 = Button( window, text ='Clear', command=clear) #clear
btn_exit = Button( window, text ='Exit',command=exit) #exit
# define some labels
box1 = Label(window, text="1st Value")
box2 = Label(window, text="2nd Value")
box3 = Label(window, text="Result")
#define entry box
entry1 = StringVar() # this is our entry box
entry2 = StringVar()
entrytext = Entry(window, textvariable=entry1) # this is our entry box
entrytext2 = Entry(window, textvariable=entry2) # this is our second entry box
#define out box
entry2 = StringVar() # this is our output box
outtext1 = Entry(window, textvariable=entry2) # this is our output box
#display boxes
entrytext.grid(row = 3, column = 2,) #display entry box
entrytext2.grid(row = 3, column = 3,) #display entry box
outtext1.grid(row = 3, column = 4,) #display output box
#place labels
box1.grid(row = 1 , column = 2, padx = 5, pady = 5)
box2.grid(row = 1 , column = 3, padx = 5, pady = 5)
box3.grid(row = 1 , column = 4, padx = 5, pady = 5)
#buttons
btn_tog2.grid(row = 4, column = 2, padx = 1, pady = 1) # addition button
btn_tog3.grid(row = 4, column = 3, padx = 1, pady = 1) # subtraction button
btn_tog4.grid(row = 5, column = 2, padx = 1, pady = 1) # multiply button
btn_tog5.grid(row = 5, column = 3, padx = 1, pady = 1) # divide button
btn_tog6.grid(row = 4, column = 6, padx = 1, pady = 1) # clear button
btn_exit.grid(row = 3, column = 6, padx = 1, pady = 1) # exit button
window.mainloop()
The code that I used for a previous application to detect if numerical values have been used is below but provided 'as is' for now.
def response():
msg = "error : must be a text value"
i = circletext.get()
y = i.isdigit()
l = len(circletext.get())
#print l
if y == True or l == 0:
circletext.insert(0,(msg))
else:
x = random.choice(RESPONSES)
circletext2.delete(0, END) # clear prev output
circletext2.insert(0,str(x)) # insert response
I will integrate a version of this in to the main code.
#python, #tkinter, #programming, #python, #graphic, #applications, #bugs, #troubleshooting, #howto, #paignton, #library, #virtual, #codeclub
Happy to provide help and support via decentralised social media. I can be contacted on Mastodon here. You can get a free account on the http://qoto.org instance by following this link.