IRC log of #novawebdev for Wednesday, 2025-08-27

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
thomasboimahGood afternoon jelkner 18:53
jelknerGood evening thomasboimah 18:58
jelknerGlad you're here early.18:58
jelknerWe can have a bit of a pre-meeting meeting ;-)18:59
thomasboimahYes! I'm happy to be here18:59
jelknerthomasboimah: cjones and i were talking this morning, and i need to follow up with you now.18:59
jelkneryou will soon be more skilled in many things than we are.18:59
thomasboimahReally?? lol.19:00
jelkneryes, really19:00
jelknerand we have a danger to our progress that we will become blockers for you19:00
jelknerso we need to begin thinking about that now19:00
jelknerthis deployment challenge is a case in point19:01
jelkneri spoke to tony yesterday19:01
thomasboimahYeah, I guess it is about time we bring Mulbah and Gabriel on board19:01
jelknerhe has 20 years professional experience19:01
jelknerso he's a real pro, but Django was not part of his experience19:01
jelknerso he isn't ready to decide how we should deploy Django19:01
jelknerhe's looking into it, but we will be blocking on that too19:02
jelkneri know people who can help19:02
jelknerand it may be time to ask them19:02
jelkneri'm thinking specifically of Adrian19:02
jelknerhe and Stefan could deploy Django in their sleep19:02
jelknerthat's what they did for NOVA Web.19:03
thomasboimahOkay. I will be soooo happy to learn form Adrian19:03
jelkneri can reach out to Adrian now.19:03
jelknerI don't like to bother people19:03
jelknerwe need to do our homework first19:03
jelknerbut we have19:03
jelknerand now we are ready19:03
jelkneranother person i can go to for guidance is Matt Gallagher19:03
jelkneri'm getting together for dinner with him on Friday19:03
thomasboimahGood afternoon anthony_p 19:04
jelknergreat, anthony_p, take a quick look at the logs19:04
jelknerso you see what thomasboimah and i started talking about19:04
jelknerthen join in19:04
jelknerthomasboimah: quick task for you, ready?19:04
thomasboimah+119:04
jelkneropen a Python REPL19:04
jelknerand type:19:05
jelknerimport this19:05
jelknertell me what you see19:05
thomasboimahi see a long this like; Beautiful is better than ugly.19:05
thomasboimahExplicit is better than implicit.19:05
thomasboimah and etc.19:05
thomasboimah*text*19:05
jelknerExactly19:05
jelknerthat is a famous "Easter Egg" in the Python interpreter19:06
jelknerbut it is so much more than that19:06
jelkneri believe is contains the reason that Python is now the most popular programming language in the world19:06
jelknerso it's worth reading over19:06
jelkneragain and again19:07
thomasboimahOkay.19:07
jelknerTim Peters, who wrote "The Zen of Python" is a brilliant guy19:07
jelknerand very wise19:07
anthony_pokay19:07
jelknerimple is better than complex.19:07
jelkneroops19:07
jelknerSimple is better than complex.19:07
thomasboimahSure!19:08
jelknerReadability counts.19:08
jelknerThere should be one-- and preferably only one --obvious way to do it.19:08
thomasboimahNow is better than never.19:08
anthony_pi've been refreshing my python understanding working on the dmarc processing webhook recently19:08
jelknersweet19:08
jelknerso if we want to be successful, we should strive to learn from Tim's lessons19:09
jelknerin the work we do19:09
jelknerhere we have a challenge - how to develop a "deployment story" for our Django apps19:09
jelkneri want to follow the Simple is better than complex here19:09
anthony_pi 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 machine19:10
jelknersince whatever we do, we need to maintain it19:10
jelknerand that means making it easy for members of our team to learn and maintain19:10
anthony_pi'm getting close to the point to moving it to deployment stage so that I can deploy it on the web server19:10
jelknerthat's great anthony_p 19:10
jelknerbut we're talking about deploying thomasboimah's ToDo app now19:10
anthony_pit's not exactly django, but relearing and refreshing the basic python deployment stuff will really healp with that19:11
jelkneryes19:11
jelknerthomasboimah: i propose we look at deploying it on May First19:11
jelknerusing Jetro's account19:11
jelknerit won't cost us anything19:11
thomasboimahNIce Idea19:11
thomasboimahI can look into that19:11
jelknerand, thomasboimah, james o'connor can help19:12
thomasboimahAfter our meeting today and document what i found19:12
jelknerhe figured out how to deploy weblog.elkner.net there19:12
anthony_pthat's a good idea, but we should also be looking at having the deployment be automated through the continuous deployment approach19:12
jelknerthat is a Django app that Adrian and Stefan wrote19:12
jelknerit is one of the first Django apps deployed on May First infrastructure19:12
jelknerso james had to work directly with the devs at May First to get it to work19:13
jelknerit uses shared hosting19:13
jelknerso we will need to work with them19:13
thomasboimahsure! is James o'connor still at Nova Web?19:13
jelknerjames is available to work if we can find work for him19:14
jelknerwe have no money now19:14
thomasboimahAhhh19:14
jelknerbut this again is a good use of the SJC funds19:14
jelknersince it is building the skills we need19:14
jelknerwe could contract with james for a few hours to help you deploy ToDo19:14
jelknerbut you should do the investigation first19:14
thomasboimahI will try to look into that tonight is see what i can find19:15
thomasboimah*and*19:15
jelknerso that we minimize the time we need from james19:15
jelknerdo you know where TheBlog repo is?19:15
jelkneron gitlab19:15
jelkneryou should look at that19:15
thomasboimahAlright19:15
jelknerthen we can look on the May First server where it is hosted19:15
jelknerDjango apps need a web server and a wsgi server19:16
jelknertwo web servers basically19:16
jelknerand they need to work together19:16
jelknerhello cjones 19:17
jelknerwe ended up starting early19:17
anthony_phello19:17
jelknertake a look at the log19:17
cjoneshi! will so19:17
cjones*do19:17
jelknerso you can catch up with us ;-)19:17
thomasboimahGood afternoon cjones 19:17
jelknercjones: we have three people we can go to for help if we want to deploy ToDo on May First19:18
jelknerJames O'Connor, Adrian Buchholz, and Matt Gallagher19:18
jelkneri can be responsible for getting thomasboimah the help he needs19:18
jelknerthat's my proposal19:18
jelknersince it won't cost us anything19:18
jelknerand free is good right now! ;-)19:19
jelknerthoughts?19:19
thomasboimahI'm with you on this jelkner. second in motion :-)19:20
cjonessounds 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_Notes19:20
jelknerNice!19:21
thomasboimahWow! t19:21
cjones(those are pretty advanced - using CI/CD, docker, etc. so more than we need now)19:21
jelknercjones: i'm having dinner with mat on Friday19:21
jelknerwe won't be using docker on may first19:21
jelknerit will be shared hosting, just like weblog.elkner.net19:21
cjonesdoes may first give you a VPS? or is it something managed?19:21
jelknerwhich is hosted there19:21
jelknerit will probably run on the same server19:22
jelknerjames had to work with them to set it up there19:22
anthony_pno, but the principles of ci/cd are good to start learning when learning how to deploy applications19:22
jelkneranthony_p: ci/cd ?19:22
jelkneri'm not familiar with that.19:22
anthony_pcontinuous integration and continuous delivery19:23
jelknerah19:23
jelknerthat is probably more advanced then what we will do on May First19:23
jelknerlike i said, James did it19:23
jelknerfor weblog19:23
cjonesrelevant docs from May first: https://help.mayfirst.org/en/guide/how-to-manually-install-software-for-website19:24
jelknerthere we go!19:24
jelknerthomasboimah: start there19:24
anthony_pit 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 product19:24
jelkneryes, anthony_p, but like i said, i think our May First infrastructure will be *very* basic and without tools like that19:25
jelknerit's good for us at this stage to just learn the basics of how Django apps run19:25
jelknerhow can a web request cause python to run on a server to start19:26
jelknerthat's what wsgi is for19:26
anthony_pon the mayfirst end of the infrastructure, it's mostly handled by git pulls19:26
jelknersince i don't know what i'm talking about here, i'll be quiet now ;-)19:27
jelknermy job is to help clarify the task19:27
anthony_pthe tools that you use for ci/cd tend to be on the development/testing and repo side of things19:27
jelknerand to offer to bring in resources we need19:27
jelkneranthony_p: you let me know what you want to handle19:27
jelkneror what i need to ask james / adrian / matt for help with19:28
jelknerbut we don't want thomasboimah to block for long19:28
jelknerwe need to keep him moving forward19:28
jelknerhe has the skills, energy and time19:28
jelknerso helping he develop his skills is a central task for us19:29
cjonesquick 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_pgitlab actually has a lot of CICD tools built into the system, so it's mostly learning how to use tools that gitlab has available19:29
thomasboimahjelkner, I will also be interesting in learning how to deploy19:29
thomasboimahSo who ever that will be doing it i want to work with them19:30
jelknermy proposal is to have you deploy ToDo thomasboimah 19:30
cjonesthe most immediate question i don't see answered on those docs is what their reverse proxy (gunicorn) system looks like19:30
jelknerso you'll get your change now19:30
jelknertwo places we can look19:30
jelknerwe have weblog deployed19:30
jelknerand we can ask james19:31
cjonesor just ssh in and poke around19:31
jelknerthat's what i meant by the first place19:31
anthony_pgunicorn isn't a reverse proxy, as i understand it. they recommend sitting it behind a reverse proxy19:31
anthony_pyou generally would use gunicorn behind nginx, which would be the web facing part, and gunicorn is the internal application server19:32
jelkner+119:32
jelkneras far as i understand19:32
jelknernginx handles web requests19:32
jelknergunicorn runs python scripts19:33
anthony_pand adding a location to an existing nginx site that uses proxy pass is pretty straitforward19:33
jelknerit might have to be apache19:33
jelkneror whatever mayfirst has19:33
jelknerlike cjones said, we can poke around weblog to see19:33
anthony_pah, 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 that19:34
jelkner+119:34
jelknerbut here we will need to use what they give us19:34
cjonesoi 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 for19:34
anthony_pso, 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 server19:34
jelknercjones: i know from what james told me that may first folks are very responsive19:35
jelknereasy to communicate with19:35
jelknerwe are them, actually19:35
jelknerin the sense that we are members of the co-op19:35
jelknerAgaric runs their own may first servers19:35
jelknerbut that is expensive19:36
jelknerwe want to just use shared infrastructure here19:36
jelknerso that Jetro's membership will already cover the cost19:36
jelknerit's a little app19:36
jelknershouldn't need much19:36
anthony_pwell, 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 overhead19:37
anthony_pbut if we can configure the apache or ask them to configure a reverse proxy to the gunicorn, that would be better19:37
jelkneronly way to learn what we can do is to start investigating and then reaching out19:37
jelknerthomasboimah: you have more time then the rest of us19:37
jelknerso a lot of this will fall on you19:37
thomasboimahnp19:38
jelkneranthony_p, cjones we need to help guide thomasboimah to minimize his pain19:38
thomasboimahyeah19:38
jelknerbut we can assign the time consuming tasks to him19:38
jelknersince he has the time, and we don't19:38
jelknermake sense?19:39
thomasboimah+119:39
jelknerlol, thomasboimah i'm waiting to hear from our mentors19:39
cjonesyep. first task: register a new site on mayfirst, ssh in, see what's there, and take notes?19:40
jelknersweet, thomasboimah can you do that?19:40
thomasboimahYes19:40
jelknergreat19:40
cjonesfor "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_pyes, 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 well19:41
jelknerhe won't have sudo cjones19:41
jelkneri can tell you that already19:41
jelknerit is a shared server19:41
jelknergiving sudo to everyone would be a recipe for disaster19:41
jelknerwe will only have user space previlages19:41
cjonesyeah, and that'll make gunicorn configuration tricky. i've only ever set it up as a daemon with root19:42
jelknerand will need to communicate with the sys admin to do anything requiring admin privileges19:42
anthony_pthey don't do shared servers as virtual machines?19:42
jelknerno sir19:42
jelknerthey don't19:42
anthony_poof19:42
jelkneranthony_p: i think i19:42
jelknertold you a bit about this19:42
jelknerit is a mostly volunteer operation19:43
jelknerwith dedicated (and from my years of experience with them) competent people19:43
jelknerbut only one staff admin19:43
jelknerit's a political project19:43
jelknerand they keep it running19:43
jelknerbut not high tech19:43
jelknerolder tech19:43
jelknerthat they understand and can run without breaking19:44
anthony_pyeah, but even then, having their system running vms with proxypass would be a more efficient use of resources than shared servers like that19:44
jelknerthey don't know how to run that anthony_p 19:44
jelknersomeday, if we are successful and you're feeling the desire19:44
jelknersince we are them19:44
jelknerwe could set that up19:44
anthony_pyeah19:44
jelknerbut not now, right19:44
jelknerok, anything else we need to discuss?19:45
anthony_pjust quick19:46
cjoneswe 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_pthomasboimah: 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 on19:47
jelknerwhich web server?19:47
jelkneranthony_p: we could change whatever we want here19:47
jelknermayfirst is just a proposal19:47
jelkneri'm suggesting it because:19:48
jelkner1. its free (we are already members)19:48
jelkner2. it will help us build relationships we want with our fellow co-op members19:48
jelkner3. it is such a small app, (like weblog) it should run easily19:49
jelknerwe could run it on our own server19:49
anthony_pdid 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 well19:49
jelknerbut then we keep getting bigger and bigger bills each month19:49
jelknerwith no revenue to pay them :-(19:49
jelkneroh19:49
jelkneryou're talking about our school web server?19:49
cjoneshttps://todo.jetrowebdevelopment.org/ - we setup a caddy server running on postgresql.sjcompute.org and pointed todo.jetrowebdevelopment.org to it19:49
jelknercjones and i discussed that one19:50
jelknerwe need our won nanode for that19:50
jelknerfor many reasons19:50
jelknergoal there is to get the school to pay for it19:50
jelknerbut that isn't happening :-(19:50
cjonesi'm talking about postgresql.sjcompute.org19:50
jelknerah19:50
jelknernow that is a different story19:51
cjoneswhen 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 IP19:51
jelknersince that's just supporting the small databases we are using for gnucash, could that be moved to mayfirst?19:51
jelknerwe need to look for places to save money19:51
cjonessure19:51
jelkneri'm not sure if that is one19:51
jelknerbut if it, we should do it19:51
jelknerhowever, i don't know how to manage postgres through mayfirst19:52
jelknersince we needed superuser19:52
jelkneri bet they don't give us that19:52
anthony_plikely not19:52
jelknerso we couldn't have multiple users accessing shared databases19:52
jelknerthat's why we need our own server for that19:52
jelknerbut not for ToDo19:53
jelkneram i right?19:53
jelkneror off base?19:53
anthony_pbut, 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 mayfirst19:53
cjonesidk, 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 psql19:54
cjones(here's their docs about mysql: https://help.mayfirst.org/en/guide/how-to-create-a-mysql-user-and-database)19:54
jelkneranthony_p, cjones let me know when you think we've put enough on our plate for one day19:54
jelkneri'm thinking we know enough know about what we don't know19:54
cjonesha yeah, this is a tangent. i think my conclusion is yes i should kill the caddy server running on postgresql.sjcompute19:55
jelknerthat it calls for investigation before we take this any further19:55
anthony_pwe can't really get rid of the pg on nwd-o1 because business tracker runs through it19:55
anthony_pso we may as well use it, no?19:55
jelknerthat's a thought19:55
jelknerbut my concern there is entanglement19:55
jelknerwe don't want to tie too many separate things together19:55
jelknersince if we want to make big changes to one19:56
jelknerit could impact the others19:56
jelknerfor now, the pg server for gnucash is a school thing19:56
jelknernot a nova web thing19:56
jelknerso despite my continual whining about needing to reduce costs19:56
jelkneri don't think we should merge those yet19:57
jelkneragain, i'm not wedded to any of this19:57
jelknerjust thinking out loud19:57
anthony_pit's no more entangling than the headache that is a shared webserver where you don't have admin privileges by my thought19:57
jelknerahh, my dear friend, but here is where i disagree19:58
anthony_pjust because we don't see the tangled mess doesn't mean it's not there19:58
jelknerthe question is "whose headache?"19:58
jelknermay first takes care of their infrastructure19:58
jelknernot us19:58
anthony_pours if the mess encroaches on us19:58
jelknerand they do it well19:58
jelknerso it will run19:58
jelknerwe can rely on that19:58
jelknerwe don't have to maintain it19:58
jelknerToDo is a tiny little app19:58
jelknerwe just want to run it somewhere that we *don't* need to maintain19:59
jelknerso we can focus on learning Django development19:59
jelknerlet's investigate more19:59
jelknerand then meet again later19:59
anthony_pokay, sounds good19:59
jelknerwhen we have a clear vision19:59
cjonesyep. 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 me20:00
jelknergreat20:00
jelknerthanks everyone20:00
jelknergood meeting20:00
anthony_pthanks20:00
jelknerwe can follow up by email20:00
jelknerand meet again when we're ready20:01
jelknerbye20:01
jelknerthomasboimah: see you tomorrow morning20:01
cjonestake care everyone20:01
cjones has quit (Quit: Leaving)20:01
thomasboimahOkay Good night20:01
jelkner has quit (Quit: Leaving)20:01
thomasboimahACTION leaving20: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/!