jelkner has quit (Quit: Leaving) | 11:13 | |
thomasboimah has quit (Quit: Leaving) | 11:15 | |
freena has quit (Quit: Connection closed for inactivity) | 14:40 | |
thomas_ has left #novawebdev (None) | 15:51 | |
thomasboimah | Good afternoon jelkner | 18:53 |
---|---|---|
jelkner | Good evening thomasboimah | 18:58 |
jelkner | Glad you're here early. | 18:58 |
jelkner | We can have a bit of a pre-meeting meeting ;-) | 18:59 |
thomasboimah | Yes! I'm happy to be here | 18:59 |
jelkner | thomasboimah: cjones and i were talking this morning, and i need to follow up with you now. | 18:59 |
jelkner | you will soon be more skilled in many things than we are. | 18:59 |
thomasboimah | Really?? lol. | 19:00 |
jelkner | yes, really | 19:00 |
jelkner | and we have a danger to our progress that we will become blockers for you | 19:00 |
jelkner | so we need to begin thinking about that now | 19:00 |
jelkner | this deployment challenge is a case in point | 19:01 |
jelkner | i spoke to tony yesterday | 19:01 |
thomasboimah | Yeah, I guess it is about time we bring Mulbah and Gabriel on board | 19:01 |
jelkner | he has 20 years professional experience | 19:01 |
jelkner | so he's a real pro, but Django was not part of his experience | 19:01 |
jelkner | so he isn't ready to decide how we should deploy Django | 19:01 |
jelkner | he's looking into it, but we will be blocking on that too | 19:02 |
jelkner | i know people who can help | 19:02 |
jelkner | and it may be time to ask them | 19:02 |
jelkner | i'm thinking specifically of Adrian | 19:02 |
jelkner | he and Stefan could deploy Django in their sleep | 19:02 |
jelkner | that's what they did for NOVA Web. | 19:03 |
thomasboimah | Okay. I will be soooo happy to learn form Adrian | 19:03 |
jelkner | i can reach out to Adrian now. | 19:03 |
jelkner | I don't like to bother people | 19:03 |
jelkner | we need to do our homework first | 19:03 |
jelkner | but we have | 19:03 |
jelkner | and now we are ready | 19:03 |
jelkner | another person i can go to for guidance is Matt Gallagher | 19:03 |
jelkner | i'm getting together for dinner with him on Friday | 19:03 |
thomasboimah | Good afternoon anthony_p | 19:04 |
jelkner | great, anthony_p, take a quick look at the logs | 19:04 |
jelkner | so you see what thomasboimah and i started talking about | 19:04 |
jelkner | then join in | 19:04 |
jelkner | thomasboimah: quick task for you, ready? | 19:04 |
thomasboimah | +1 | 19:04 |
jelkner | open a Python REPL | 19:04 |
jelkner | and type: | 19:05 |
jelkner | import this | 19:05 |
jelkner | tell me what you see | 19:05 |
thomasboimah | i see a long this like; Beautiful is better than ugly. | 19:05 |
thomasboimah | Explicit is better than implicit. | 19:05 |
thomasboimah | and etc. | 19:05 |
thomasboimah | *text* | 19:05 |
jelkner | Exactly | 19:05 |
jelkner | that is a famous "Easter Egg" in the Python interpreter | 19:06 |
jelkner | but it is so much more than that | 19:06 |
jelkner | i believe is contains the reason that Python is now the most popular programming language in the world | 19:06 |
jelkner | so it's worth reading over | 19:06 |
jelkner | again and again | 19:07 |
thomasboimah | Okay. | 19:07 |
jelkner | Tim Peters, who wrote "The Zen of Python" is a brilliant guy | 19:07 |
jelkner | and very wise | 19:07 |
anthony_p | okay | 19:07 |
jelkner | imple is better than complex. | 19:07 |
jelkner | oops | 19:07 |
jelkner | Simple is better than complex. | 19:07 |
thomasboimah | Sure! | 19:08 |
jelkner | Readability counts. | 19:08 |
jelkner | There should be one-- and preferably only one --obvious way to do it. | 19:08 |
thomasboimah | Now is better than never. | 19:08 |
anthony_p | i've been refreshing my python understanding working on the dmarc processing webhook recently | 19:08 |
jelkner | sweet | 19:08 |
jelkner | so if we want to be successful, we should strive to learn from Tim's lessons | 19:09 |
jelkner | in the work we do | 19:09 |
jelkner | here we have a challenge - how to develop a "deployment story" for our Django apps | 19:09 |
jelkner | i want to follow the Simple is better than complex here | 19:09 |
anthony_p | i actually have a my development version actively running right now. all the dmarc reports are sitting in the archive folder of the mailbox i set up after it successfully processed them and dumped them into a postgresql db on my home machine | 19:10 |
jelkner | since whatever we do, we need to maintain it | 19:10 |
jelkner | and that means making it easy for members of our team to learn and maintain | 19:10 |
anthony_p | i'm getting close to the point to moving it to deployment stage so that I can deploy it on the web server | 19:10 |
jelkner | that's great anthony_p | 19:10 |
jelkner | but we're talking about deploying thomasboimah's ToDo app now | 19:10 |
anthony_p | it's not exactly django, but relearing and refreshing the basic python deployment stuff will really healp with that | 19:11 |
jelkner | yes | 19:11 |
jelkner | thomasboimah: i propose we look at deploying it on May First | 19:11 |
jelkner | using Jetro's account | 19:11 |
jelkner | it won't cost us anything | 19:11 |
thomasboimah | NIce Idea | 19:11 |
thomasboimah | I can look into that | 19:11 |
jelkner | and, thomasboimah, james o'connor can help | 19:12 |
thomasboimah | After our meeting today and document what i found | 19:12 |
jelkner | he figured out how to deploy weblog.elkner.net there | 19:12 |
anthony_p | that's a good idea, but we should also be looking at having the deployment be automated through the continuous deployment approach | 19:12 |
jelkner | that is a Django app that Adrian and Stefan wrote | 19:12 |
jelkner | it is one of the first Django apps deployed on May First infrastructure | 19:12 |
jelkner | so james had to work directly with the devs at May First to get it to work | 19:13 |
jelkner | it uses shared hosting | 19:13 |
jelkner | so we will need to work with them | 19:13 |
thomasboimah | sure! is James o'connor still at Nova Web? | 19:13 |
jelkner | james is available to work if we can find work for him | 19:14 |
jelkner | we have no money now | 19:14 |
thomasboimah | Ahhh | 19:14 |
jelkner | but this again is a good use of the SJC funds | 19:14 |
jelkner | since it is building the skills we need | 19:14 |
jelkner | we could contract with james for a few hours to help you deploy ToDo | 19:14 |
jelkner | but you should do the investigation first | 19:14 |
thomasboimah | I will try to look into that tonight is see what i can find | 19:15 |
thomasboimah | *and* | 19:15 |
jelkner | so that we minimize the time we need from james | 19:15 |
jelkner | do you know where TheBlog repo is? | 19:15 |
jelkner | on gitlab | 19:15 |
jelkner | you should look at that | 19:15 |
thomasboimah | Alright | 19:15 |
jelkner | then we can look on the May First server where it is hosted | 19:15 |
jelkner | Django apps need a web server and a wsgi server | 19:16 |
jelkner | two web servers basically | 19:16 |
jelkner | and they need to work together | 19:16 |
jelkner | hello cjones | 19:17 |
jelkner | we ended up starting early | 19:17 |
anthony_p | hello | 19:17 |
jelkner | take a look at the log | 19:17 |
cjones | hi! will so | 19:17 |
cjones | *do | 19:17 |
jelkner | so you can catch up with us ;-) | 19:17 |
thomasboimah | Good afternoon cjones | 19:17 |
jelkner | cjones: we have three people we can go to for help if we want to deploy ToDo on May First | 19:18 |
jelkner | James O'Connor, Adrian Buchholz, and Matt Gallagher | 19:18 |
jelkner | i can be responsible for getting thomasboimah the help he needs | 19:18 |
jelkner | that's my proposal | 19:18 |
jelkner | since it won't cost us anything | 19:18 |
jelkner | and free is good right now! ;-) | 19:19 |
jelkner | thoughts? | 19:19 |
thomasboimah | I'm with you on this jelkner. second in motion :-) | 19:20 |
cjones | sounds great. don't forget that i wrote a bunch of django deployment notes based on my conversations with Matt last semester: https://github.com/ACCDjangoGirls/culinary_webapp/wiki/2025_05_12_Deployment_Notes | 19:20 |
jelkner | Nice! | 19:21 |
thomasboimah | Wow! t | 19:21 |
cjones | (those are pretty advanced - using CI/CD, docker, etc. so more than we need now) | 19:21 |
jelkner | cjones: i'm having dinner with mat on Friday | 19:21 |
jelkner | we won't be using docker on may first | 19:21 |
jelkner | it will be shared hosting, just like weblog.elkner.net | 19:21 |
cjones | does may first give you a VPS? or is it something managed? | 19:21 |
jelkner | which is hosted there | 19:21 |
jelkner | it will probably run on the same server | 19:22 |
jelkner | james had to work with them to set it up there | 19:22 |
anthony_p | no, but the principles of ci/cd are good to start learning when learning how to deploy applications | 19:22 |
jelkner | anthony_p: ci/cd ? | 19:22 |
jelkner | i'm not familiar with that. | 19:22 |
anthony_p | continuous integration and continuous delivery | 19:23 |
jelkner | ah | 19:23 |
jelkner | that is probably more advanced then what we will do on May First | 19:23 |
jelkner | like i said, James did it | 19:23 |
jelkner | for weblog | 19:23 |
cjones | relevant docs from May first: https://help.mayfirst.org/en/guide/how-to-manually-install-software-for-website | 19:24 |
jelkner | there we go! | 19:24 |
jelkner | thomasboimah: start there | 19:24 |
anthony_p | it bridges the gap between development and operations, automating the process of implementing new code from end to end by automating testing and configuration so that you don't accidentally push broken code to a live product | 19:24 |
jelkner | yes, anthony_p, but like i said, i think our May First infrastructure will be *very* basic and without tools like that | 19:25 |
jelkner | it's good for us at this stage to just learn the basics of how Django apps run | 19:25 |
jelkner | how can a web request cause python to run on a server to start | 19:26 |
jelkner | that's what wsgi is for | 19:26 |
anthony_p | on the mayfirst end of the infrastructure, it's mostly handled by git pulls | 19:26 |
jelkner | since i don't know what i'm talking about here, i'll be quiet now ;-) | 19:27 |
jelkner | my job is to help clarify the task | 19:27 |
anthony_p | the tools that you use for ci/cd tend to be on the development/testing and repo side of things | 19:27 |
jelkner | and to offer to bring in resources we need | 19:27 |
jelkner | anthony_p: you let me know what you want to handle | 19:27 |
jelkner | or what i need to ask james / adrian / matt for help with | 19:28 |
jelkner | but we don't want thomasboimah to block for long | 19:28 |
jelkner | we need to keep him moving forward | 19:28 |
jelkner | he has the skills, energy and time | 19:28 |
jelkner | so helping he develop his skills is a central task for us | 19:29 |
cjones | quick skim of the docs - looks like you use their front-end to create and deploy a psql db, update your django app to take the psql connection string, and then ssh into their servers to deploy it. looks like they give very limited tools via ssh, so not sure git will be there. but we can scp files. | 19:29 |
anthony_p | gitlab actually has a lot of CICD tools built into the system, so it's mostly learning how to use tools that gitlab has available | 19:29 |
thomasboimah | jelkner, I will also be interesting in learning how to deploy | 19:29 |
thomasboimah | So who ever that will be doing it i want to work with them | 19:30 |
jelkner | my proposal is to have you deploy ToDo thomasboimah | 19:30 |
cjones | the most immediate question i don't see answered on those docs is what their reverse proxy (gunicorn) system looks like | 19:30 |
jelkner | so you'll get your change now | 19:30 |
jelkner | two places we can look | 19:30 |
jelkner | we have weblog deployed | 19:30 |
jelkner | and we can ask james | 19:31 |
cjones | or just ssh in and poke around | 19:31 |
jelkner | that's what i meant by the first place | 19:31 |
anthony_p | gunicorn isn't a reverse proxy, as i understand it. they recommend sitting it behind a reverse proxy | 19:31 |
anthony_p | you generally would use gunicorn behind nginx, which would be the web facing part, and gunicorn is the internal application server | 19:32 |
jelkner | +1 | 19:32 |
jelkner | as far as i understand | 19:32 |
jelkner | nginx handles web requests | 19:32 |
jelkner | gunicorn runs python scripts | 19:33 |
anthony_p | and adding a location to an existing nginx site that uses proxy pass is pretty straitforward | 19:33 |
jelkner | it might have to be apache | 19:33 |
jelkner | or whatever mayfirst has | 19:33 |
jelkner | like cjones said, we can poke around weblog to see | 19:33 |
anthony_p | ah, i've never run apache for reverse proxying, but i'm sure it's not much harder, people just tend towards nginx because it's super simple for that | 19:34 |
jelkner | +1 | 19:34 |
jelkner | but here we will need to use what they give us | 19:34 |
cjones | oi yep - got my terms mixed up. i'm thinking that they won't give us much access to the web server (nginx/apache/whatever), they have their own web interface for that part. (https://help.mayfirst.org/en/guide/how-to-add-web-site) - it's the next layer that we'll probably be responsible for | 19:34 |
anthony_p | so, if we have apache, we just need to set up a reverse proxy that feeds web requests to the address we want directly to the gunicorn application server | 19:34 |
jelkner | cjones: i know from what james told me that may first folks are very responsive | 19:35 |
jelkner | easy to communicate with | 19:35 |
jelkner | we are them, actually | 19:35 |
jelkner | in the sense that we are members of the co-op | 19:35 |
jelkner | Agaric runs their own may first servers | 19:35 |
jelkner | but that is expensive | 19:36 |
jelkner | we want to just use shared infrastructure here | 19:36 |
jelkner | so that Jetro's membership will already cover the cost | 19:36 |
jelkner | it's a little app | 19:36 |
jelkner | shouldn't need much | 19:36 |
anthony_p | well, we'll have to figure out what we have access to, what we can install, if we can install nginx just to act as a proxy server between their apache server and our gunicorn server, that's a simple fix with minimal overhead | 19:37 |
anthony_p | but if we can configure the apache or ask them to configure a reverse proxy to the gunicorn, that would be better | 19:37 |
jelkner | only way to learn what we can do is to start investigating and then reaching out | 19:37 |
jelkner | thomasboimah: you have more time then the rest of us | 19:37 |
jelkner | so a lot of this will fall on you | 19:37 |
thomasboimah | np | 19:38 |
jelkner | anthony_p, cjones we need to help guide thomasboimah to minimize his pain | 19:38 |
thomasboimah | yeah | 19:38 |
jelkner | but we can assign the time consuming tasks to him | 19:38 |
jelkner | since he has the time, and we don't | 19:38 |
jelkner | make sense? | 19:39 |
thomasboimah | +1 | 19:39 |
jelkner | lol, thomasboimah i'm waiting to hear from our mentors | 19:39 |
cjones | yep. first task: register a new site on mayfirst, ssh in, see what's there, and take notes? | 19:40 |
jelkner | sweet, thomasboimah can you do that? | 19:40 |
thomasboimah | Yes | 19:40 |
jelkner | great | 19:40 |
cjones | for "see what's there", my first things would be to try scp'ing a file to the server, see if you have sudo, and if so try running `sudo systemctl status gunicorn` | 19:40 |
anthony_p | yes, so I still have to look at the todo stuff, i've been working primarily on the dmarc stuff because it's helping me get familiar with python, but i do want to put ToDo on my machine and look it over as well | 19:41 |
jelkner | he won't have sudo cjones | 19:41 |
jelkner | i can tell you that already | 19:41 |
jelkner | it is a shared server | 19:41 |
jelkner | giving sudo to everyone would be a recipe for disaster | 19:41 |
jelkner | we will only have user space previlages | 19:41 |
cjones | yeah, and that'll make gunicorn configuration tricky. i've only ever set it up as a daemon with root | 19:42 |
jelkner | and will need to communicate with the sys admin to do anything requiring admin privileges | 19:42 |
anthony_p | they don't do shared servers as virtual machines? | 19:42 |
jelkner | no sir | 19:42 |
jelkner | they don't | 19:42 |
anthony_p | oof | 19:42 |
jelkner | anthony_p: i think i | 19:42 |
jelkner | told you a bit about this | 19:42 |
jelkner | it is a mostly volunteer operation | 19:43 |
jelkner | with dedicated (and from my years of experience with them) competent people | 19:43 |
jelkner | but only one staff admin | 19:43 |
jelkner | it's a political project | 19:43 |
jelkner | and they keep it running | 19:43 |
jelkner | but not high tech | 19:43 |
jelkner | older tech | 19:43 |
jelkner | that they understand and can run without breaking | 19:44 |
anthony_p | yeah, but even then, having their system running vms with proxypass would be a more efficient use of resources than shared servers like that | 19:44 |
jelkner | they don't know how to run that anthony_p | 19:44 |
jelkner | someday, if we are successful and you're feeling the desire | 19:44 |
jelkner | since we are them | 19:44 |
jelkner | we could set that up | 19:44 |
anthony_p | yeah | 19:44 |
jelkner | but not now, right | 19:44 |
jelkner | ok, anything else we need to discuss? | 19:45 |
anthony_p | just quick | 19:46 |
cjones | we setup the web server on the sjcompute db server. sounds like we want to use mayfirst instead. should I take that down? | 19:47 |
anthony_p | thomasboimah: when you set up the new site on the shared server, if you can share the details of that, even before investigating... if i have the opportunity, i'd like to look at their infrastructure and see what's going on | 19:47 |
jelkner | which web server? | 19:47 |
jelkner | anthony_p: we could change whatever we want here | 19:47 |
jelkner | mayfirst is just a proposal | 19:47 |
jelkner | i'm suggesting it because: | 19:48 |
jelkner | 1. its free (we are already members) | 19:48 |
jelkner | 2. it will help us build relationships we want with our fellow co-op members | 19:48 |
jelkner | 3. it is such a small app, (like weblog) it should run easily | 19:49 |
jelkner | we could run it on our own server | 19:49 |
anthony_p | did you mean that for cjones? because i'm not against using mayfirst, i'm just asking that we get the log in details so I can ssh in and poke around as well | 19:49 |
jelkner | but then we keep getting bigger and bigger bills each month | 19:49 |
jelkner | with no revenue to pay them :-( | 19:49 |
jelkner | oh | 19:49 |
jelkner | you're talking about our school web server? | 19:49 |
cjones | https://todo.jetrowebdevelopment.org/ - we setup a caddy server running on postgresql.sjcompute.org and pointed todo.jetrowebdevelopment.org to it | 19:49 |
jelkner | cjones and i discussed that one | 19:50 |
jelkner | we need our won nanode for that | 19:50 |
jelkner | for many reasons | 19:50 |
jelkner | goal there is to get the school to pay for it | 19:50 |
jelkner | but that isn't happening :-( | 19:50 |
cjones | i'm talking about postgresql.sjcompute.org | 19:50 |
jelkner | ah | 19:50 |
jelkner | now that is a different story | 19:51 |
cjones | when we got that server, you said your plan was to use that to host todo. i installed caddy and you asked thomasboimah to point todo.jetrowebdevelopment to that IP | 19:51 |
jelkner | since that's just supporting the small databases we are using for gnucash, could that be moved to mayfirst? | 19:51 |
jelkner | we need to look for places to save money | 19:51 |
cjones | sure | 19:51 |
jelkner | i'm not sure if that is one | 19:51 |
jelkner | but if it, we should do it | 19:51 |
jelkner | however, i don't know how to manage postgres through mayfirst | 19:52 |
jelkner | since we needed superuser | 19:52 |
jelkner | i bet they don't give us that | 19:52 |
anthony_p | likely not | 19:52 |
jelkner | so we couldn't have multiple users accessing shared databases | 19:52 |
jelkner | that's why we need our own server for that | 19:52 |
jelkner | but not for ToDo | 19:53 |
jelkner | am i right? | 19:53 |
jelkner | or off base? | 19:53 |
anthony_p | but, one option... we have the potgres on nwd-01, which we could configure to accept external connections and just use our own external postgres for stuff on mayfirst | 19:53 |
cjones | idk, we'd have to investigate. they have docs about configuring multiple users on mysql, and their docs say that they support psql, but i don't see detailed docs about psql | 19:54 |
cjones | (here's their docs about mysql: https://help.mayfirst.org/en/guide/how-to-create-a-mysql-user-and-database) | 19:54 |
jelkner | anthony_p, cjones let me know when you think we've put enough on our plate for one day | 19:54 |
jelkner | i'm thinking we know enough know about what we don't know | 19:54 |
cjones | ha yeah, this is a tangent. i think my conclusion is yes i should kill the caddy server running on postgresql.sjcompute | 19:55 |
jelkner | that it calls for investigation before we take this any further | 19:55 |
anthony_p | we can't really get rid of the pg on nwd-o1 because business tracker runs through it | 19:55 |
anthony_p | so we may as well use it, no? | 19:55 |
jelkner | that's a thought | 19:55 |
jelkner | but my concern there is entanglement | 19:55 |
jelkner | we don't want to tie too many separate things together | 19:55 |
jelkner | since if we want to make big changes to one | 19:56 |
jelkner | it could impact the others | 19:56 |
jelkner | for now, the pg server for gnucash is a school thing | 19:56 |
jelkner | not a nova web thing | 19:56 |
jelkner | so despite my continual whining about needing to reduce costs | 19:56 |
jelkner | i don't think we should merge those yet | 19:57 |
jelkner | again, i'm not wedded to any of this | 19:57 |
jelkner | just thinking out loud | 19:57 |
anthony_p | it's no more entangling than the headache that is a shared webserver where you don't have admin privileges by my thought | 19:57 |
jelkner | ahh, my dear friend, but here is where i disagree | 19:58 |
anthony_p | just because we don't see the tangled mess doesn't mean it's not there | 19:58 |
jelkner | the question is "whose headache?" | 19:58 |
jelkner | may first takes care of their infrastructure | 19:58 |
jelkner | not us | 19:58 |
anthony_p | ours if the mess encroaches on us | 19:58 |
jelkner | and they do it well | 19:58 |
jelkner | so it will run | 19:58 |
jelkner | we can rely on that | 19:58 |
jelkner | we don't have to maintain it | 19:58 |
jelkner | ToDo is a tiny little app | 19:58 |
jelkner | we just want to run it somewhere that we *don't* need to maintain | 19:59 |
jelkner | so we can focus on learning Django development | 19:59 |
jelkner | let's investigate more | 19:59 |
jelkner | and then meet again later | 19:59 |
anthony_p | okay, sounds good | 19:59 |
jelkner | when we have a clear vision | 19:59 |
cjones | yep. i need to log off soon. thomasboimah - do you feel like you know what you need to get started? | 20:00 |
thomasboimah | +1 that task you give me | 20:00 |
jelkner | great | 20:00 |
jelkner | thanks everyone | 20:00 |
jelkner | good meeting | 20:00 |
anthony_p | thanks | 20:00 |
jelkner | we can follow up by email | 20:00 |
jelkner | and meet again when we're ready | 20:01 |
jelkner | bye | 20:01 |
jelkner | thomasboimah: see you tomorrow morning | 20:01 |
cjones | take care everyone | 20:01 |
cjones has quit (Quit: Leaving) | 20:01 | |
thomasboimah | Okay Good night | 20:01 |
jelkner has quit (Quit: Leaving) | 20:01 | |
thomasboimah | ACTION leaving | 20:02 |
thomasboimah has quit (Quit: Leaving) | 20:02 | |
anthony_p has quit (Read error: Connection reset by peer) | 21:59 |
Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!