-
Posts
8,098 -
Joined
-
Last visited
Content Type
Forums
News
20th
EduGeek EDIT Conference
Blogs
Everything posted by dhicks
-
Self Contained Laptop Booking Web Interface and ID photo card Interface.
dhicks replied to 2097's topic in New Project Ideas
This isn't something I'm going to be able to install and test myself, but it certainly looks like an interesting project. Is this currently Windows / Microsoft only - does the software only work on a Windows server, do you only support Microsoft 365 logins? For authentication, would you support authentication by trusted proxy header, allowing for user details to be passed in by an up-stream HTTPS proxy that handles user authentication - something like Cloudflare Tunnels or Tailscale, or Pangolin for a self-hosted solution? -
Last-minute booking yesterday for train and hotel - looks like I might be in Derby by about 5pm (unless I don't make the window for my super off-peak train ticket, in which case I'll be nearer 9pm). Are people meeting up somewhere this evening?
-
Using AI to ressurect old equipment
dhicks replied to Dos_Box's topic in AI in Education & Enterprise
I've not yet tried getting a n AI coding assistant to write anything that controls physical hardware, although it sounds like it would make for an interesting exercise. I do currently have a USB DMX interface not being used, which could do with a nice touch-screen user interface for lighting control, that might make a good first project. It might be a good idea to be careful as to exactly what hardware you are hooking up to AI-written code - for some reason I'm picturing a mini PC on a motorised wheeled base with a webcam and a circular saw from a sawbench... -
This Python IDE works in a similar manner: https://milesberry.net/pyde/ Or this version (features added to the original): https://ukfootprint.github.io/pydeXTD/ That might well be the perfect solution for anyone looking for a Python code editor usable for lessons and exams - works entirely in the browser, can be used offline, and you can host on your own website if you have any privacy / filtering concerns. I know both Miles (the original author) and Simon (the author of the extended version), and both have a lot of experience in school environments, so this is something designed with practical usage in actual (UK) schools in mind.
-
We have a bunch of batch-processing scripts (import new users, that sort of thing) run at about 3am. It still couldn't get to the iSAMS Batch API at 3am this morning. I've now added new code to failover to the REST API instead, which seems to work okay.
-
Ah - but I don't currently seem to be able to get data from the iSAMS Batch API.
-
That's the thing - I don't remember seeing any email directly from iSAMS, or it simply passed me by. I did see an email fom Wonde last week saying there would be a "first brownout" for the old-style keys, which is what I've assumed is happening today.
-
As an added bonus: iSAMS are changing the way their Batch API is implemented, moving to a (more common) dual "ClientID" and "ClientSecret" values rather than a single "API Key" value. Today (as we're preparing reports for the first time with the new school portal and wanting to be able to write a script that sorts out the reports for us) is the day that the changeover occurs, hence I now need to go back and re-implement how the Batch API call works.
-
I suspect that means you need to upgrade your iSAMS subscription to a version where REST API keys are a thing, otherwise possibly the person you were talking with didn't understand what you were asking for. On our instance of iSAMS we can simply add REST API keys ourselves from the Control Panel. If you already sync your data from iSAMS to Wonde you could maybe look at Wonde's API instead - I've foundthem very helpful inthe past, they have a whole proper developer relations department for dealing with this kind of thing.
-
AI Coded Apps to Replace Mainstream Products?
dhicks replied to Dos_Box's topic in AI in Education & Enterprise
Ah - you mean for visitor / guest access? We have much the same issue - we want to be able to match the exact person using a voucher to that actual person. At the moment, the plan is to get voucher codes via the UniFi API and produce a printable sheet that the front desk staff can manually hand out. I was thinking of having a touch-screen all-in-one PC on the front desk, complete with camera, that could take a picture of the user as they were assigned a voucher code, but that seemed slightly like an over-the-top sort of solution for the size of the problem in our case. -
The Python code is, hopefully, fairly generic - a little clunky / step-by-step in the way it does things, but hopefully that makes it easier to read through if you don't generally use Python. This is the kind of thing an AI coding assistant can be very good at helping with - you can probably just copy-and-paste the above into any chatbot asistant and ask it to re-write in the language of your choice. Is "Socs" a section / module in iSAMS? You could, potentially, write medical information back to iSAMS if that is coming from a separate system somewhere. If you're writing pupil records via the iSAMS REST API, be aware that the API writes blank values - if you define a record, write the value you want to a particular field but leave the rest of the fields blank, the API will happily overwrite those blank values to the database. You need to do a GET request first, populate the record with any existing values, make any additions / changes, then do a POST to write back to iSAMS. If the data the staff require is static (I'm guessing a list-of-medical-conditions per child per club / society), I find generating a viewable / printable PDF works quite nicely - you can have a script go through the data, match up pupils with any medical conditions and produce a formatted PDF you can then upload to OneDrive / Googel Drive / etc. Again, the sort of thing (with suitible safeguards for data handling) an AI assistant can pretty much write for you in a few minutes now.
-
I have secrets (REST API keys, etc, that you get from the iSAMS Control Panel) in a simple JSON file, loadable by a script: # Load the configuration file. config = json.loads(dataLib.readFile("config/config.json")) for requiredConfigParameter in requiredConfigParameters: if not requiredConfigParameter in config.keys(): print("Error - required value " + requiredConfigParameter + " not set in config.json.") sys.exit(1) Something like: { "iSAMSAPIDomain":"exampleschool.isams.cloud", "iSAMSRESTAPIID":"12345678-1234-1234-1234-123456789012", "iSAMSRESTAPISecret":"12345678-1234-1234-1234-123456789012", } Then a couple of functions to call the REST API: # Retrive the cached iSAMS REST API Access Token, or request a new one if needed. def authenticateWithiSAMSRESTAPI(): if os.path.exists("accessToken.txt"): access_token = dataLib.readFile("accessToken.txt").strip() else: print("Authenticating with iSAMSREST API...", flush=True) requestURL = "https://" + config["iSAMSAPIDomain"] + "/auth/connect/token" response = requests.post(requestURL, data={"client_id":config["iSAMSRESTAPIID"],"client_secret":config["iSAMSRESTAPISecret"],"grant_type":"client_credentials","scope":"restapi"}) if not response.status_code == 200: print("Error athenticating with the iSAMS API:") print("URL: " + requestURL) print("Error Code: " + str(response.status_code)) print("Data: " + str(response.content)) sys.exit(1) access_token = json.loads(response.content.decode("utf8"))["access_token"] dataLib.writeFile("accessToken.txt", access_token) return access_token iSAMSAccessToken = authenticateWithiSAMSRESTAPI() # A handy function to do a call to the iSAMS REST API. Uses the global "iSAMSAccessToken" value for authentication - if that access token fails (default expiration is after 1 hour), # it gets a fresh access token and tries again. Only does 2 tries to avoid getting stuck in a loop. def iSAMSRESTAPICall(theMethod, theEndpoint, theData): global iSAMSAccessToken tries = 0 while tries < 2: tries = tries + 1 print("Doing " + theMethod + " to " + theEndpoint + " with data:", flush=True) print(str(theData).encode("utf-8"), flush=True) requestURL = "https://" + config["iSAMSAPIDomain"] + theEndpoint requestHeaders = {"accept":"application/json","authorization":"Bearer " + iSAMSAccessToken, "content-type":"application/json"} if theMethod == "get": response = requests.get(requestURL, data=json.dumps(theData), headers=requestHeaders) elif theMethod == "put": response = requests.put(requestURL, data=json.dumps(theData), headers=requestHeaders) elif theMethod == "patch": response = requests.patch(requestURL, data=json.dumps(theData), headers=requestHeaders) else: print("iSAMSRESTAPICall: Unknown request method: " + theMethod) if response.status_code == 200: return response elif response.status_code == 401 and tries < 2: print("iSAMSRESTAPICall: iSAMS authentication access token expired - retrying.") os.remove("accessToken.txt") iSAMSAccessToken = authenticateWithiSAMSRESTAPI() else: return response Then you can do calls to the REST API: getResponse = iSAMSRESTAPICall("get", "/Main/api/students/" + SchoolId, {}) if getResponse.status_code == 200: pupilData = json.loads(getResponse.text)
-
This is the kind of thing where AI assistance can work really well, both in explaining how-it-works to you and, if you have a suitible coding agent, writing the code for you. If I remember correctly, iSAMS uses an OpenAPI/Swagger REST API interface - you might have seen other services offer the same thing, where you get a handy documentation and live try-it-out box all in one. You are basically doing HTTP(S) calls to a given endpoint, with defined parameters - the Swagger UI willl let you try out values and show you the URL strings (and even examples in Javascript / Python / etc) as you type. You authenticate via OAuth - I can't remember setting up a REST API with iSAMS, I suspect it was a while ago and I probably had to do a log-in-with-Google step in the browser the first time.
-
There's a couple of "photos for work" apps that allow you, as an admin, to define where photos taken get synced to. Instead of the user taking a photo and then manually sharing to a location (e.g. somewhere on Googel Drive, for which they need to be logged in with their Google account, etc), the app simply takes the photo and uploads it to a defined cloud / network share. This saves a bunch of messing around, you could have a school-owned mobile device with a big sticker on the back ("Photos Phone 1") with the phoos app set as a kiosk (so it only does photos), any photo taken gets uploaded to a cloud-based folder that staff (maybe pupils) can access.
-
VeryPC have some rather snazzy laptop stands with integrated USB-C connected docking ports which might be worth looking at.
-
If you are meeting organistational security standards, you don't generally allow anyone-with-the-link sharing of files / folders to Google Drive / OneDrive any more. We still allow sharing between specific, named users, so a user on our Google Workspace could share a spreadsheet with a named user at the NHS. I could see that becoming a bit tricky to manage at the NHS side as your would have to support direct sharing from all vendors, and I suspect there will be a user limit to how many shares one named user could have, at which point you're probably looking at creating a separate user per school to receive shares. Probably do-able, but I suspect an API endpoint that accepts submissions of data is going to be simpler (and cheaper) to manage at the NHS side.
-
A simple, well-defined, stable API for schools to be able to submit data to. It could probably be as simple as a single endpoint that accepts a CSV file. Schools could write their own tools to compile and submit data or, more likely, the vendors of common data-processing tools (Salamander, Locker, etc) could support it. You could, of course, also provide a simple submition form for people to upload the CSV file manually if they wanted. As others have pointed out, integrating with Wonde (or Clever, etc) would be ideal for many schools, as it would just be another service to approve on their Wonde dashboard and then that would be done. I understand that, while free for schools, Wonde charges per-customer for data access, so this might take some negotiation / budget allocation to sort - it would probably be the simplest option for a lot of schools, but I can understand there might be difficulties sorting this out at the NHS end if it involves having to pay a third-party vendor.
-
Music for small drama groups
dhicks replied to NegativeKillDeath's topic in AV and Multimedia Related
Not sure if this is a hardware or software question. If it's a simple question of what hardware do we provide, then in our case each group of pupils could use a Chromebook to play music from whatever source was appropriate. Software-wise, you could simply put a bunch of tracks in a shared folder (Google Drive / Classroom, OneDrive, etc) and have the pupils play them from there. I find that a rather clunky system for sound effects and so on if you want things to play exactly on cue, so I have a script that generates a one-page sound effects playback webpage, giving you a handy "play" button for each audio item. Licensing is, of course, a separate issue - ripping tracks from Youtube and storing them in a Google Drive folder and distributing to a class probably doesn't meet whatever licensing requirements you have in place. If you need general background music to fit certain scenes / moods / etc you could probably get an AI system to generate a selection for you that you then store. You could, of course, give each group of pupils a microphone and a looper / vocoder and have them beatbox their own background accompniment. -
I'm finding the same. I'm not sure quite how repeatable a pure AI assistant is, the approach I've gone for is to use the AI coding agent to write a script that does what you want, then it's repeatable for subsequent actions. Also cheaper as it doesn't use AI tokens each time, just the first time round. It's interesting watching the agent scan the filesystem and figure stuff out - it does stuff pretty much how I would, just way, way quicker.
-
That would seem to be what the new Mac Minis are aimed at - local AI processing should be very do-able with a fast processor and 64GB of unified RAM. I did get a very rough price from their website of around £3,000, which might be pricey for an individual workstation but not bad for a central on-site device usable by multiple users. Mac Minis can also, seemingly, be clustered via their Thunderbolt ports, so around £10,000 might get you a 4-node, 256GB AI processing cluster. Not something I know much about or have any current experience in setting up, but I did notice specialised AI servers being sold for £40,000 a few months ago.
-
Google AntiGravity - Anyone using it ?
dhicks replied to 2097's topic in AI in Education & Enterprise
Hmm - we have Summer 2024-era 8GB-of-RAM iMacs in our ICT suite, I wonder if it's worth trying to run a local model of some sort on those? -
If it's any help, I have a 2011-era iMac running ChromeOS, which of course has a Linux core. It does have problems with the wireless hardware, having no supported driver available for the wireless used in that device, I wonder if your disk problem might be similar - it might manage to get to the initial boot stage, but need some sort of "driver" to get any further. It might, possibly, be instructive to try installing ChromeOS Flex on it and (if that boots) see if that can give you any hints as to how hardware might work.
-
Google AntiGravity - Anyone using it ?
dhicks replied to 2097's topic in AI in Education & Enterprise
So, a couple of days and around £20 in AI tokens has produced this: https://www.sansay.co.uk/magooify/demo/ A somewhat specialised application for a specific image editing workflow - useful (hopefully) for the person wanting to use it, but rather niche otherwise. That would seem to be a strength of AI coding tools - I can now make tools for a "market" of one / a few people, and it's affordable and do-able in a reasonable timeframe. Using Go as the implementation language seems to have worked well and has produced an application capable of running on most hardware and with minimal resources - the live version is running on a VM with 2GB of RAM and 80GB of disk space, and that's for the whole system including authenticating proxy server (Pangolin), code to mount cloud file systems and the OpenCode tool for development. -
I'm starting to lean slightly towards the opposite view - the education sector (probably similar to other specialised sectors) has some poor software options, some of which it should be quite easy to re-implement quite rapidly with a coding agent. That's still probably a job for a small team rather than individuals in schools, just to keep continuity of development and keep projects / products maintained. A separate company, maybe, or for the larger company / school authority a team of in-house developers.
-
Good point. And, as with spreadsheets, it's great that end users have the tools to handle their data how they want, but it would be good to have some kind of (auditable) controls on access, correctness, etc. Also, I tend to find the issue with spreadsheets is that they're a bit too easy for people to create a new one, so you wind up with data duplicated in multiple places.
