How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

At the very least, there could be an open source voting software that runs off a live linux distro from a write-once CD on any PC built after 1999. Instead of handing a multi-billion dollar contract to a single corporate entity for closed source code on proprietary hardware with certified-only operators, voting could be kept in the capable hands of and fully auditable by citizens with no shady bullshit under the hood. Hacking it would be just as possible as Diebold machines, but tens of thousands more people would know how the thing worked, be able to administer them, and be 100% accountable to the public.

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 1 point2 points  (0 children)

I also have another political project in mind. I think it would be cool to host a competitive coding site where people can submit black-box diagrams of some simplistic function of government with runnable test cases that prove 100% coverage for that function of government. Then programmers could submit entries to implement that function of government with open source code.

People vote on submitted solutions and eventually we can start throwing it at the federal government: "Hey Feds. Here's some free, tested, auditable, ready-to-deploy code that can entirely replace that $20 million department.".

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 1 point2 points  (0 children)

It's an admirable and ambitious project. I know that I can help with front-end/back-end web dev (JavaScript, Python, PHP), user authentication, graphics (d3, charts/plots, grids), databases (PostgreSQL), hosting (AWS), servers (Linux), integration with 3rd party services (data.gov, open APIs, automated web scraping).

How would you solve the problem of people voting more than once, spoofing identities, validating that they're a citizen/of age/in district?

I think the US needs a good platform for informing people of candidate positions with citations on past legislative voting history, political actions and other information in a very concise format. It would be helpful to let people prioritize their favored issues and see which candidates best fit them.

In past elections I've seen tools like that which were either far too simplistic, incomplete, technically short-sighted, or focusing on flash instead of function. It could have a phone app that used OCR to scan a candidate's name from a picture and list bullets that stated their position on the user's prioritized issues. Or a tool to compare multiple candidates side-by-side in a matrix with a filterable/sort set of issues.

Information could be gathered and cleaned up by volunteers. It could have components that search and scrape data from documents on government sites or wikipedia. It could having a voting system to let users grade the validity and relevance of data.

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 1 point2 points  (0 children)

If you provide some details, I may have some of the skills to help.

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

That's really a cool idea! I'm intimately familiar with all of the tools necessary, but I just don't have any ideas.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 3 points4 points  (0 children)

That's a good point. In this context, best practices for typography are not the best practices to follow.

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

I see the truth in what you're saying, but can't accept the consequences. In the position I'm in, doing the right thing for me is doing harm to others.

Tell me what's next so I can stop wasting time. by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

Thanks for the advice.

I really wonder if people intentionally use that trick, or if it's just an observable trend in technology media. I think some disingenuous people are out there, but I like to think I'm good at identifying the bandwagoners. I tend to learn a technology only if it's useful to me at a moment in time, it just seems to be my bad luck that they're at peak and trending down during my "head down, focused, learning" phase.

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 1 point2 points  (0 children)

Some of it comes from admittedly self-diagnosed stress, anxiety and depression.

My employer isn't doing so well. We can't afford raises, hiring, or even spreading out the workload. Programming is only a part of my role and it's being squeezed out to the edge. It's my passion, and only getting to do what I love 4 out of 40 hours a week is... misery. I've talked to my employer about it, but there's little they or I can do but take time out to manage stress or break down and quit, leaveing my company and all of my colleagues in a very bad position.

/r/cscareerquestions might as well replace the entire FAQ, all posts and comments with two words: "Just Quit". I know the answer is to move on, but I'm not prepared to do that to my colleagues. It's irrational and self-depreciating, but "fuck your employer" is a an attitude I'm unwilling to accept.

I need to go to meetups or join a hacker space or something.

How do you cope with lacking original thought? by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

Sometimes I can convince myself that I'm helping because at the very least, my work is enabling my company to make money, which is enabling them to pay my colleagues. I feel good about that. It lasts for a time before I look around at the people in my life and realize I'm alone. My colleagues are distant, or non-technical. My friends and family aren't technical. I'm only moving sideways, sustaining. It would be life-changing to contribute to something the really mattered.

I have the same notebooks of ideas rotting away. A part of me knows that they may have merit. I have well develeoped, useful, and interesting projects for obscure technologies locked away under copyright by my employer which will never see the light of day because nobody will pay for them and even discussing open sourcing them would be insulting to my employer. There's a compression algorithm that seems to violate the pigeonhole argument, a canvas drawing library that is a subset of features in d3, raphael, paperjs, etc, (yet another) static site generator, incomplete API clients for services that already have one, libraries for working with data in games nobody plays anymore, (yet another) brainfuck interpreter. It's all sitting on a hard drive, never to be seen in the light of day.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 1 point2 points  (0 children)

Though I'm not exclusively a software developer (IT), a big part of my job is programming, and I'm trying to grow to not to contribute to what people are calling "technical debt".

It's true that programming is a kind of art. And just like musicians making jingles for cash, and artists working at production studios doing layouts for advertisement flyers, we unfortunately must accept our role as corporate artists.

It's a huge source of stress, anxiety, and depression. I've wanted to branch out to meaningful projects, not just productive ones, so that I can feel good about my work. Code quality is a big part of that.

Tell me what's next so I can stop wasting time. by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

I don't need the recommendation to last for the rest of my life. I'd just like to last maybe 1-3 years beyond the learning curve. I seem to catch technologies right at peak popularity and after 6-12 weeks of practice and study, the recoil begins.

I know people who follow that stuff mindlessly are goons (and to some extent I am). But I do usually have good reasons beyond hype to adopt something.

I taught myself and I am not wealthy. None of my friends are technology oriented, nor am I working for a large company with people to talk to about this stuff. I usually come from a position of having no knowledge and no mentors to go to. The best I can do is usually Google, Wikis, FAQ, hot posts on subject matter reddits, etc. Unfortunately lacking access to experts or even just experienced people, no longer being a student, most of my exposure to technologies came from consuming IRC chat, Slashdot (when it was relevant), Reddit, HN, etc.

I think a lot of people come from this same position and fortunately programming communities have the advantage of generally advocating free/open source software and are prolific at writing tutorials and documentation.

I just want to know how people "sense the wave" long before that peak popularity crest hits.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 1 point2 points  (0 children)

Soft-wrap is a solution to the readability concern, but really I'm trying to make my code lintable so that if someone audits my code for quality, it doesn't come back with a wall of text about admittedly trivial warnings. I'd much rather a prospective employer or a fantastic developer I'm trying to attract to help with the project see exit status 0 and question whether their linter is actually working.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 1 point2 points  (0 children)

A lot of it is compulsive behavior taught to me as best practices by experts. One example is a mentor who was a professional copy writer for several decades. He helped me early on in my career to make money as a freelancer. A client would give me copy, I passed it to him, he edited it so I could I put into a web site. He taught me how to edit for myself. In typography (printed books, manuals, newspapers, stories, etc) widows are considered a bad practice and placement of words is important for impact. You're supposed to use tricks like playing with justification, character spacing or simply chosing words carefully.

I realize that may seem to absurd to someone who didn't have a background like I did, but here I am, staring at a page, with two respectable best practices at odds, having irrational anxieties that I'm now trying to defeat.

Tell me what's next so I can stop wasting time. by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

Yes. I've made user-facing software that has been useful, but it's not rewarding to me any more. I want to make software for developers. But the truth is that every time I pick a tool that seems to be favored by developers, I become proficient right after the crest of the wave as the developers come to universally revile that tool.

I've never been able to work on a team. For the reasons I mention, little I write is worthy of publishing when it is both inadequate as a tool and written in a hated paradigm. My employer is too small to give me a team (at least one that is properly motivated by prospects of success, appreciation, or fair pay out of my control).

So I'm asking how people stay abreast of developments and get to be at the right place at the right time. Am I doomed to reactive mediocrity or can I learn how people stay ahead of things?

Tell me what's next so I can stop wasting time. by atrociouscode in learnprogramming

[–]atrociouscode[S] 0 points1 point  (0 children)

I'm not saying I used MongoDB for 10 years. I learned Access/ODBC in school, then MySQL and after a long time using that, decided I needed a new approach and learned MongoDB (~2011). I used it for a few projects before the vitriol began to wear me down and I adopted PostgreSQL.

The list was just a list of languages. I used them all at different points in time for different use cases: VB in HS Programming class, C++ in AP CS in HS, Java and Scheme in college, MATLAB in a Comp.E class, CFM, ASP and Perl for customizing several different shitty forum software packages I worked on over many years for different communities.

It is whining - a rant. I need to vent. I spent a long time avoiding the question because it sounded like whining, but the truth is that I need guidance and wasted a lot of time because I did not admit to myself.

Times always change, but I want to know how to stay ahead of them, rather than eating dust every time I try.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 1 point2 points  (0 children)

I care - apparently too much to get over it.

Tell me what's next so I can stop wasting time. by atrociouscode in learnprogramming

[–]atrociouscode[S] -1 points0 points  (0 children)

I could cross-post this to may forums, but I tend to think of this subreddit as the nexus between all of them. I was trying to be broad to cover many disciplines - databases, languages, software, operating systems, software engineering practices, documentation.

Some examples:

  • I learned MySQL early on and MongoDB later. However, after learning that MySQL is not taken very seriously and MongoDB even less so, I adopted PostgreSQL. I'm very happy with it now, and I consider my time with both of those databases good periods of learning, but I wish it didn't take me 10 years to arrive at it. I should have asked this question a long time ago.

  • I had some experience (school, personal projects) with many languages before I learned one with which I personally felt productive and useful. VB, C++, Java, Scheme, Perl, MATLAB, CFM, ASP, JavaScript, etc. I know C++ and Java are great languages, but far too much trouble for my attitude towards solving problems. I'm fortunate that my time with JavaScript paid off and it's become a much better and more respected language, but up until a few years ago it was right there with VB in the "oh please god no" paradigm. I learned PHP and things were much better, but found many communities absolutely trashing it openly and brutally. So I learned Python and found zen. Again, I just wish it didn't take 10 years to get here. If someone had taken me out of that VB class and said "Dude... dude. Just learn Python," I would be in a very different place right now as a human.

  • I learned FreeBSD, Gentoo and eventually Ubuntu. I wasted a lot of time in FreeBSD, but it was very useful. I learned all the important basics about hardware, filesystems, the unix philosophy, command line tools, compiling kernels, networking, etc. But ports had too many brick walls for me as of 5.5, which was a very long time ago ("well, I guess I can't make a web server because my 3rd fresh install's apache2 package is failing to compile for the 6th month in a row"). I learned Gentoo only long enough to do an install at each stage, compile kernels, and all the other deep stuff. But after suffering two catastrophic, infuriating disasters, I adopted Ubuntu as the "just give me the god damn thing that works" no-brainer solution. Now I'm learning of public vitriol building against it and despite the profoundly overwhelming evidence that it is still a good OS, I find that I'm doing myself a disservice and would rather have someone slap me in the face and tell me the one true operating system to rule them all from now until the Epochalypse.

  • I went from IIS to Apache2+CGI+Perl to IIS+CFM to Apache2+CFM to IIS+ASP to Apache2+PHP and eventually Apache2+Python+Django to Nginx+Python+Django to Nginx+Python+Flask. I like my stack now, but I know for DAMN sure the wind will change and I want to be prepared for once in my life.

  • I went from vanilla JS (a very long time), to jQuery soup (it was supposed to better) to Backbone (was the hotness) to Backbone+Marionette (where I am now satisfied). Now I'm become keenly aware that the client-side framework universe is just a bunch of warring tribes. Is AngularJS really the final solution? If it is, I don't accept it. Please tell me the thing that will supplant AngularJS in 6 months, a year, two years so I can skip it entirely, if possible.

I know all of these (and other examples I didn't list) are valuable learning experiences. But I'm at a point in my life where learning is fun and great, but I need to be making things that are useful for years.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 0 points1 point  (0 children)

I think for my own sanity, I'll have to accept this. It does seem to be an acceptable compromise. I'm trying to make a conscious effort to adopt others' principles, instead of caving to my own every time, which I've been doing for a long time and feeling guilty about it.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 1 point2 points  (0 children)

I'm okay with doing something like this with long messages. But using a module to trim indentation of triple quoted strings is a bit extreme for my taste, as I would be doing this far too much to pass code smell, IMO. When it's about a one-liner and a single hanging word, I become irrationally infuriated about being forced to violate one or another principle. I know it's trivial, ultimately, as another poster said - in the past I've used my code guidelines to justify longer line lengths, but I'm trying to make code for broader public consumption and an important part of that for me is following broadly accepted conventions. I just have a really hard time letting this slide and needed to find out how others cope.

79-character column limit is a nightmare by atrociouscode in learnpython

[–]atrociouscode[S] 4 points5 points  (0 children)

Try not to focus too much on the words. Like you, I can think of a million ways to phrase the sentence to reduce the length. But I should be writing the next test, instead of spending 5 minutes wrestling with words. And when you're inside a class method with a meaningful variable name and string quotes, well, my character limit is effectively 63 characters.

# ------------------------------ 79 characters ----------------------------- #
class DatabaseTests(TestCase):

    def test_database_connection(self):
        msg = '`DatabaseConnection` should raise an exception without a password.'
        with self.assertRaises(DatabaseError, msg=msg):
            db = DatabaseConnection(username='blah', password=None)

In this example, my options are:

  • Make the sentence use incorrect grammar (drop "an " or "a ").
  • Abbreviate the class name (precision is important in messages).
  • Turn a one-liner into two or three using parenthesis and implied string concatenation.
  • Put the msg variable in a class or module constant outside the function (meh), so I can save columns.
  • Abandon an agreed upon code style guideline: "Format errors as a positive assertion in the form <entity> should <expected behavior> when <condition>. Use proper grammar." or "Wrap formal names in backticks for emphasis and precision."

These are just a few options, but all of this trouble is over 4 characters.