Programming

Basically, yes. I spent some time trying to make the simple thing as a desktop app (in Qt for Python), but I’ve pretty much decided that that was a mistake and it needs to be a web app. My least plausible software concept would probably also be a desktop app, but that is on the back burner.

That was the thinking. Also there’s just a limit to how much complexity I feel able to absorb. I think this is ultimately going to be less important to my goals, but I’m simultaneously trying to figure out basic Django, so it’s a process of cobbling together enough of a front-end to extend the back-end further, then cobble together enough back-end to do something interesting on the front-end and so on.

Before you go too far down the do-it-on-the-side route make sure you understand your employer’s IP rules so you don’t end up doing a lot of work that turns out not to belong to you.

1 Like

The moderators of this message board, otatop, L.Washington, WichitaDM, Yuv, JonnyA, RiskyFlush, and SvenO, are cowards who let abusers dox and harrass other long time posters.

Feel the same about Flask?

The moderators of this message board, otatop, L.Washington, WichitaDM, Yuv, JonnyA, RiskyFlush, and SvenO, are cowards who let abusers dox and harrass other long time posters.

Cool. I have something in Flask and picked it over Django, though I didn’t really have much to go on and just picked it almost randomly (though “lighter weight” is something that appeals to me).

I think it’s hard to give bobman much advice without knowing what the software is. This:

to a much more ambitious concept to make a modular architecture for creating semi-custom software solutions for a particular kind of task.

Sounds very ambitious, creating super-flexible software able to handle any requirements is typically either extremely difficult or a bad idea or both. Beware the inner-platform effect.

Edit: I guess I’d recommend thinking about where the value in the product will come from, you want something that for some reason cannot be easily duplicated by other programmers. If it needs in-depth domain-specific knowledge, that’s good.

I guess I can also give an example of a successful product from a company I used to work for: they make a web app for student placement called Sonia. The thing was originally written for nursing students, who nominate preferences for where they would like to go out on placement into workplaces. Some choices are more popular than others, and the software handles allocating placements such that students suffer as little disappointment as possible. Here are some reasons this product succeeded:

  1. It’s not immediately apparent how you accomplish the core functionality.

  2. They were able to exactly meet the needs of an initial client and thereafter modify it for the needs of later clients to gradually achieve a general solution.

  3. The product easily admits of both horizontal and vertical expansion (having sold to one university, you can easily sell to more, you can also sell additional products to your existing clients).

  4. Although the needs of later clients might differ (for example, maybe you want some extremely popular placement allocated by lottery rather than making it so nobody with an easily-allocated second preference gets to go) the basic workflow of the thing remains the same. Getting a new client does not mean major surgery to what the app is trying to accomplish. (I have worked on other applications for which this was not true and it meant the product was only ever marginally profitable).

Might be worth thinking about whatever you’re doing in terms of these points and seeing if you see any problems.

Ok a less ambitious mini project that I may do soon: a word/dictionary scraper/api whore with a modest UI for then searching, tagging and up/down voting words of the day that I like. I have a very slight preference to do scraping/api’ing in python, but I would rather not do the UI in python unless you guys tell me there’s a good python UI lib that’s worth trying; otherwise the stack du jour is mongodb express then vue or react? I know js reasonably enough and have a few tutorials worth of experience in MEAN so I’d not be starting completely from zero. Is this overkill?

I have some things in python/react/mysql/Linux/apache that I managed to get all playing together and it works nicely.

Regarding the job getting stuff…

  1. Isn’t some of that whiteboarding falling out of favor?

  2. Is that kind of algorithm testing stuff in interviews common at all levels of the business or more of a Google/Netflix/Facebook/etc thing?

Also a more narrow question: any recommendations for free, but then as fancy as possible JS UI component libraries (like controls, graphs etc.)? Seems like there’s a lot of stuff out there but most of them want $.

Like this kind of stuff but not for 700 a year but for 0 a year

The moderators of this message board, otatop, L.Washington, WichitaDM, Yuv, JonnyA, RiskyFlush, and SvenO, are cowards who let abusers dox and harrass other long time posters.

2 Likes

I’ve always had the tendency to reinvent the wheel, but I know it’s bad if you want to get anything done. I have a little thing I just started in Python yesterday that involves parsing Google results and I found a module xgoogle that was written a long time ago and updated once, but it’s Python2 and a fair amount of errors running it in Python3 and just going through and fixing the code is probably just as educational and way more productive than starting from scratch.

The author’s tag line is “good coders code, great reuse”.

Thanks! This is what I think I’m most worried about, both wit the business idea and with the idea of working in software professionally as a fallback plan. Again, this may be unjustified arrogance, but I feel about the algorithms and whiteboarding Goofy was talkign about and book knowledge about design patterns the way that Sklansky feels about winning the Nobel Prize in Physics: sure there’s some legwork to be done to get the basics down, but fundamentally it’s just a matter of doing some work. It all seems pretty crammable.

What seems very hard to get a grasp on is how all of this works in practice if you’re working on a project that has 100k lines of code instead of 1k. Honestly, even basic stuff like how source code files are supposed to be divided up and organized is a bit mysterious. It seems clear to me that there’s a whole universe of knowledge about how to organize and manage a project bigger than a couple files that’s a complete mystery to me. If there’s any resources you like, please do recommend. I’ve read Code Complete, which was helpful, but on the big picture stuff, the materials that I’ve seen have been one or two degrees too abstract (“it’s important to maintain loose coupling so that blah blah blah”) and don’t drill down and say “Therefore, maintain loose coupling by having your components interface like X, Y, Z.” Or they do the latter, but it’s for an extremely basic application where it’s performative. It may be that the implementation is inherently a practical skill and there’s not a good way to learn other than by doing?

Thanks! As to the motivation, it’s mostly professional burnout/work-life balance issues. I’m a lawyer, and high-end professional services have very little tolerance for people who are not 100% all-in on their career. I have two young kids, and I have realized that I can’t be the kind of father that I want to be and also be all-in on my job. There’s also a ton of stress and sleep deprivation that I would love to not have in my life.

The idea here wouldn’t really be to have flexibility in the software, it would be to have components (which would hopefully be standalone applications of their own) that can be wired together to provide a slick front-end and some generic data infrastructure that would serve as a scaffold that could be (relatively) easily extended with unique domain logic to accomplish a particular class of project.

It’s definitely true that even successfully completing the project you have in mind won’t turn you into a well-rounded senior software engineer.

But when I’m hiring for a junior dev, I’m quite happy to hire someone who has shown an ability and interest in making actual real-world projects work, with real users. I just expect I’m going to have to teach a junior dev all the other engineering stuff anyway, because they aren’t really going to learn it except on the job.

So I don’t think it’s an enormous problem for your idea, unless you have unrealistic expectations about where on the org chart you could start in your first professional programming gig.

I haven’t been following any of this WW stuff very closely, but if anybody wants to scrape the site you can get static, paginated threads just by turning off javascript.

You can also get JSON output for most pages just by appending .json to them, like this:

https://unstuckpolitics.com/t/programming/192.json