8 ms·
> The programming parts of this would take 2-4 hours This is, literally, the error that the entire article works on dispelling. Anyone can write a rough comma
by PragmaticPulp 5y ago
> The programming parts of this would take 2-4 hours
This is, literally, the error that the entire article works on dispelling.
Anyone can write a rough command line tool that monitors the clipboard and prints to stdout. Writing a usable GUI application is a lot more work. That’s not project management, that’s coding work.
The ratio of project management work to coding isn’t 10:1 or even 100:1 like you’re suggesting.
- kbutler 5y agoGood project management would prioritize the feature list, cut out 95% of the effort to define an MVP that could be delivered with 2-4 hours of coding, and delivered to the user to find out if it's worth doing anything more.
- Jensson 5y agoI could write it to properly log it to a user file, with reasonable default limits and take some of those as command line parameters etc, in a few hours. Running the program at start isn't programming, it is putting it in a "run on start" location, helping users do that is a part of managing the project and not programming. Figuring out what settings a user would want for it is also project management and not programming. Starting/stopping is just starting and stopping the program, every OS already provides that functionality. Maybe someone would want a better UX, but then you are doing UX work and not programming work. So I don't really see it, almost all of the "gotcha" cases he talked about aren't programming problems.
- azhenley 5y agoBut I didn’t give the students a programming problem. I gave them a software project to solve a problem I have, which involves UX and PM work along with some coding.
- Jensson 5y agoRight, but was that what the students asked for? I doubt they thought that they could launch a successful product in 2 hours worth of work.
- skytreader 5y agoI'm sorry but I gotta call this out; this is just peak HN arrogance. All we have is an article relating an anecdote and the reaction to it is to second-guess the author's actions/interpretation of events. Surely, the author has more context of what was actually happening, what was actually being asked for? The actual words used were already vague enough ("ideas for a software project"). The answer to that would always be subjective. Why is there no trust in the author that he has a better read of the room? He definitely has more context of what the students were actually asking for. These are also, students; I'd give the author benefit of the doubt that he gave them a problem that would be most productive use of their time given their skill level. Maybe that's why he didn't consider web browsers or bug trackers. FWIW, I think the article makes a good point but is poorly illustrated, especially for this audience. I've no doubt your average HN commenter has projects/scripts under their belt more complicated than a clipboard logger, maybe even on far tighter time constraints. But c'mon, these are students! If you work in the industry there will definitely be different causes for project under-estimation.
- Jensson 5y agoBut the author gave a project idea where most of the project was figuring out UX concerns of non existing users. It is a horrible project no matter how you view it. If you do UX then you need users to actually test what you write on. If you don't do UX then this project is very easy. Sure these students might not have done it in 4 hours, but not because they would get stuck on whatever the author talked about, but because they would try to look up API documentation for whatever OS they work with or bugs in their URL detection code. And since the author teaches software engineering classes and not UX classes I assume this would be a software engineering project and not a UX project. Building out a lot of UX features without users is an anti pattern, better write a bare bones implementation first (start from command line, help first users set it up and see how they like it) and then work from there. For a hobby project that would likely be the end of the project, and a good student could get it in a few hours I'm sure.
- chaxor 5y ago> Running the program at start isn't programming, it is putting it in a "run on start" location, helping users do that is a part of managing the project and not programming. I'm confused by this. Any program that doesn't automatically set up this 'autostart' capability in an OS/architecture independent manner is much more of scriptkiddie solution than a real program. If a program isn't made to run on any OS and any architecture without a multistep instruction set, it isn't really useful to many people at all. (And if your solution to this is Docker, re evaluate if you want anyone other than a handful of devs to use it)
- Jensson 5y agoThis was supposed to be a student hobby project, not a company product release. You are thinking of this problem from the perspective of an enterprise programmer, not of a hobbyist enthusiast.
- thom 5y agoI’m baffled by the level of offence you’re taking at the idea that this is all part of a programmer’s job. Nobody needs to go to college to become a hobbyist programmer, it serves students very poorly to treat them that way. It’s the same reason we teach algorithms instead of just how to google. Code doesn’t exist in a vacuum.
- Jensson 5y ago> I’m baffled by the level of offence you’re taking at the idea that this is all part of a programmer’s job. This is a strawman, I never said these things aren't a part of a programmer's job. > Nobody needs to go to college to become a hobbyist programmer Nobody needs to do enterprise programming on hobby projects, you learn that on the job. For a hobby project it is more important that the project is fun, and very few find enterprise coding fun.
- lodovic 5y agoThey are studying to become professional programmers. I think the enterprise perspective is correct, you don't want grad students with a hobbyist mindset.
- strken 5y agoIt's not necessary coding work for someone who intends to use the project themselves and can run tail -f /var/some-log-from-a-clipboard-daemon | grep big-tld-regex They asked for a project idea and he gave them a product idea.
- forgotmypw17 5y agoI would be quite happy with this, actually. I wouldn't even bother with the tld regex and just settle for "http" The part I'm missing is what to tail?
- tremon 5y agoThere is nothing to tail, because (FAFAIK) there are no clipboard events in Linux (well, in X). The best you can do is poll xclip every X ms, so you'd get: while sleep .2 ; do xclip -o ; done | uniq | grep -E 'https?:' but that is pretty wasteful of resources. Luckily processes are cheap on Linux :)
- forgotmypw17 5y agoThank you! I can't imagine myself clipping something more than once 5-10 seconds, so I can set the interval to that. I want to take this moment to remind you that the Web includes http, not just https, and ignoring it is a failure at accessibility and compatibility. For myself a week from now looking for this, here is the version which works for me: while true; do xclip -o | uniq | grep ^http > ~/url.txt ; sleep 5; done Thank you again, this will make my life much easier.
- pbhjpbhj 5y agoPlasma/KDE's Klipper clipboard app has Actions that will do this, fwiw. http://linux-blog.org/make-klipper-work-for-you/ http://linux-blog.org/make-klipper-work-for-you/. You could probably do it very simply by remapping ctrl+c depending on your DE.
- mike_hock 5y agoimport pyperclip import re url_regex = re.compile('^(ftp|https?)') while True: text = pyperclip.waitForNewPaste() if url_regex.match(text): print(text) Seems like a clean, blocking API. I peeked at the source code. It's polling at 10ms intervals under the hood. ... LOL.
- wvenable 5y ago> Anyone can write a rough command line tool that monitors the clipboard and prints to stdout. There's a good chance that this will solve 95% of all needs. Most of the features suggested in the article beyond the original premise are unnecessary.
- moksly 5y agoExcept it isn’t supposed to log things that aren’t urls being pasted into the browser.
- marcellus23 5y agoSo? In any decent programming environment, checking if a string is a URL is a one liner
- dkdbejwi383 5y agoNot without false-positives. E.g., is "foo.bar" a URL? Maybe. But it could also be a filename. How do you know if it's a "real" URL or not?
- toyg 5y agoIn The Good Ol' Times, I would have replied "let's check the TLD", but now that list is basically trending to include the entire English dictionary... so I guess the only response these days is "ask DNS". So we've already gone from "pattern-match a string" to "pattern-match then make network calls", which (as anyone who's done any network work knows) also requires managing a bunch of possible/likely error states (offline, timeout, partial response, response format, etc etc). So yeah, nothing is as easy as it looks.
- AstralStorm 5y agoCan't quite do this most of the time due to privacy concerns. Leaking random URL-looking text to the network is a big no.
- jeroenhd 5y agoHonestly, I'm a bit rusty but I feel like I could've done this project in C# with WinForms in a bit over 2 hours. Not all the advanced features asked for, but the minimal viable product. It's a shame that Microsoft is shifting away from the old, reliable WinForms for their new UWP system because making a quick and dirty implementation of many or these requirements would actually take very little time for many moderately experienced C# GUI programmers. It'd be little more than a tray icon with a list view log, a settings screen and a crude search bar, but it sure would be functional. I don't know any other GUI framework that would allow me personally to do this in the 2 hours as suggested, though. Even with other batteries-included toolkits like Electron (ew) would you need to do all kinds of special searches to get things like clipboard and setting sync working right. Maybe Python and Qt could serve a similar purpose, though you'd probably to pull in a lot of packages to get clipboard monitoring and database storage working right. I get the point, which is that simple ideas often have hidden, complex requirements that take a lot more time, but in this circumstance it's really more a lesson about how bad the state of GUI programming still is after all these years. VB6, despite its stupid programming language, is still the golden standard for a GUI application design framework for me and we've barely made anything equally usable.
- rightbyte 5y ago> VB6, despite its stupid programming language, is still the golden standard for a GUI application design I think the reason is that many programmers have an urge to do things in a stupidly hard and complex way to look competent. Real programmers do not use GUI drag and drop design tools.
- fragmede 5y agoA GUI this simple is that hard. Not compared to learning some of the foibles of CLI programming. What the hell is a stderr and why is >| giving me an error? Reading man pages is a skill unto itself. For those raised on Windows with Visual Studio (not VSCode, but OG Visual Studio), the utility's GUI is quick and easy. Definitely within the 4 hours window if you yolo design a GUI. A button for enable/disable, and a config option for which file to dump the URLs to. How each student decides the UX for the GUI should be is up to them, but that's flexibility in the assignment at the university level, and shouldn't be a profession experience in project management.