Open Side Menu Go to the Top
Register
Progress Report: One year of self-learning in CS / Programming Progress Report: One year of self-learning in CS / Programming

07-08-2013 , 08:36 AM
For CS: Concrete/discrete math + logic > rest (statistics leading the pack imo, set theory if you do lots of DB stuff)

You usually only need the rest for specific cases (i.e. the domain logic) whereas the discrete math and to a lesser degree logic helps you reason about the program (in most cases).
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 10:48 AM
Quote:
Originally Posted by _dave_
Don't mean to derail , but the Internet Marketing nit in me is confused about this. If the thing will bring in enough traffic to cost heavily in hosting, it has to be able to turn a profit.

- Make an affiliate account on Stars and throw up a banner. Do the same for Bodog? and show that one to USA visitors. people will click them links often enough that $100+ signup CPAs will do you nicely, imo.

- track stats, analyze, optimize.

- less scruples: take emails in exchange for a simple how2hunl ebook of your creation. "spam" them with signup bonus offers (Aweber etc)

- even less scruples. "congrats you beat lizzie! here's a free ipad offer especially for you!"

- annoying bastard: some combination of the above, as a "facebook game". spam people's friendslists with "DaveT beat Lizzie in 5:42 minutes! do you have what it takes?" etc. Add leaderboard, who can win the most from Lizzie's infinite bankroll! For prizes (spammy affiliate offers)!

Of course you couldn't link that version of the site here, for obvious reasons. but I strongly suspect it would make you good money *IF it gets traffic*. if it doesn't get traffic, it'll be cheap!

I'd like options 1 & 2.
You did forget to mention that I could do a random-generated email blast with "XXX LIZZIE WANTS TO MEET YOU FOR A GAME OF AMAZING POKER XXX"...

Didn't consider the affiliate route since I thought there was some minimal traffic needed. Regardless, I'll cross that bridge when I get there.
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 11:13 AM
Quote:
Originally Posted by clowntable
Amazing read dave. I think it would be a very cool idea to go meta and really think long and hard about how you approached the learning and what you'd do differently.

Maybe make one of the next items on your todo list "learning about learning" which is a topic that really fascinates me.


If you can hold off and move this down your priority list until roughly May next year we should talk for sure. I like Python, I have worked on ERPs before. Doing it in Clojure sounds somewhat neat as well if you'd like that (I have this exact same project on my todo list except in Erlang because that seems like the neat language to try).
This really is way at the bottom, so it probably wouldn't be a problem to wait an extra few months.

I'm looking at about a max of 15hrs / wk of programming for the next several months, so I wouldn't expect some productivity explosion.

In fact, I still owe some C# code. If you're lurking, I haven't forgot.

I'm not at all interested in using Clojure for this. Ideally, I'd like end users to be able create customizations with no headache. While there can be a dual language combo, one of those languages, in my opinion, should be widely used. Using Erlang for speed with a layer of Python for scripting type stuff doesn't sound to bad, really. Also want to open up the a ability to do raw SQL select queries for CSV extraction and of course, something like PyLab and / or d3.js for creating charts and stuff.

I'll definitely talk to you later, since I believe your insight will be valuable, which seems worth waiting for.
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 11:21 AM
Quote:
Originally Posted by daveT
I built a poker bot in Clojure and ClojureScript. I can say that this is far more complicated than anything I've programmed so far. There are many side-cases in poker, and there has been many speed and profiling issues to explore along with minor details. The UX has also been challenging.

I have no real plans with the bot, except to make it smarter and perhaps start doing a NL, Omaha, Stud, etc. version, though not sure when that will happen. I would love to create an entirely separate site with it and run it with a nice database, but... for those who remember Poker Paradime and Sonya, I'm sure you can understand my concern. I would be paying a ton of money to keep it alive and I don't think there is any way to monetize it. Grant it, if I had a 75k/year job, I'd probably pay out the $100/month I'd need to keep it running, but that isn't relevant now since I'm not earning that kind of money.
Aside from the internet marketing angle I think you can take a page from a popular app strategy and offer playing against your bot for free and then charge for extras. If your bot is good enough you could offer non-free coaching based off of their play against your bot. That would be a cool Machine Learning problem too.
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 12:32 PM
Quote:
Originally Posted by daveT
The uPenn class started at Taylor Series of e and Euler's formula and ended at the Discrete Taylor of e.

FWIW, my friend agrees with you, that Calculus is easier than Linear Algebra.
Sounds to me like the difference of opinion mainly comes from the difference in content of the specific classes we took.
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 01:40 PM
There was also integration by substitution, and by parts, and Reimann stuff, and other stuff.

That class is going right now. You ought to check it out. Really is an incredible course I plan to do again.
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 11:19 PM
Quote:
Originally Posted by jjshabado
Aside from the internet marketing angle I think you can take a page from a popular app strategy and offer playing against your bot for free and then charge for extras. If your bot is good enough you could offer non-free coaching based off of their play against your bot. That would be a cool Machine Learning problem too.
Poker Paradime tried this with Sonia. She was billed as some sort of uber-bot that played exploitive poker. Basically, you could either play her heads up (I clocked a decent grip of hands against her) or play a ring game and "train" your bot to play like you. It had uniquely drawn monster avatars and a slick UI, better than any of the official rooms out there.

Anyways, after getting creamed by Sonia, she did drop some hints on how to play. I think the last time I logged in, the program asked for money to play or for training via Sonia, or something that prevented me from playing further: my memory is fuzzy here. Seemed to tumble down pretty quick. I really don't know what happened, but it doesn't surprise me at all that they couldn't monetize the program. Something tells me I'd face the same general issues, unless I can gain the support of the poker coach community. That Will Tipton guy seems like he knows his HU pretty well and all accounts suggest that his book is the best thing written since Math of Poker. I'm certainly going to buy his book and use it for guidance. For this moment, I see it as a hobby and definitely a great excuse to look into Machine Learning, PGM, and AI.
Progress Report: One year of self-learning in CS / Programming Quote
07-08-2013 , 11:40 PM
Quote:
Originally Posted by ballin4life
Sounds to me like the difference of opinion mainly comes from the difference in content of the specific classes we took.
This is entirely possible. I first took Calculus and Linear Algebra in boarding school and my history only gets weirder from there, so I may have some odd biases I don't know about.
Progress Report: One year of self-learning in CS / Programming Quote
07-09-2013 , 12:56 AM
I do agree with you about limits. Entire maths are birthed from the idea of what kind of limit you are using and how you'd like to use it (discrete, continuous, etc). Heck, Big O is really nothing more than the extra trash of a Taylor Expansion. The entire field of algorithms is Omega, Theta, and O, which is really just the study of limits.

And also... I'm surprised no one suggested making Lizzie a Clojure Android App and support it with ads. Might be fun to try.
Progress Report: One year of self-learning in CS / Programming Quote
07-09-2013 , 01:33 AM
I own the book it's one of the better poker books out there I'd say. Very game theory focused.
Progress Report: One year of self-learning in CS / Programming Quote
07-09-2013 , 10:40 AM
Before PokerParadime shut down or whatever my "bot" was like #2 in the money list

I was very proud
Progress Report: One year of self-learning in CS / Programming Quote
10-21-2013 , 02:24 PM
Quote:
Originally Posted by clowntable

Maybe make one of the next items on your todo list "learning about learning" which is a topic that really fascinates me.
I've been doing some research on learning efficiency and stumbled on http://supermemo.com/. It's pretty fascinating and I'm surprised it's not utilized more in classroom settings. There's more elegant and user-friendly alternatives (Anki) to supermemo, but there's a lot of great info on their site.
Progress Report: One year of self-learning in CS / Programming Quote
10-21-2013 , 11:21 PM
In response to flash-cards:

I wholly 1000% disagree that learning is memorization, although that may be from my personal experiences. I also found that people with astounding memories aren't always that intelligent.

I have a terrible memory, and its not like a minor issue; this was a huge thing for me growing up and it was noticed by many people. I even got psychological help, a bunch of silly "memory improvement" books and tools, and yes, I really worked hard at it, but no matter how hard I tried, I couldn't remember things like my phone number (90s, bro), people's names, what I ate in the morning, conversations I had earlier that day, and many other things. It wouldn't surprise you to know that I struggled like hell in history and literature, which were almost completely rote learning. I was, oddly, good at math and foreign languages, and that helped me in other areas like science.

I eventually discovered that I'll never be a rote learner. I have to have patterns to remember. At this point, I was able to build pictures in my mind. For example, if I wanted to remember my phone number, I had to have a telephone in front of me and allow my fingers to automatically dial the number. After a few times of going through the motion and remember the motion, I was able to slow down enough to pull the number out of the pattern. It took a little while before I could actually remember the layout of the dial pad and took much longer to mentally "dial" this number in my head.

Eventually, I figured out a good way to remember names. Since I couldn't recall names from rote, I was fascinated enough by people to remember stuff about them, so I'd ask them a personal question, and often uncomfortable questions. I would then have a sentence in my head like "Sarah likes to eat grapes before going to bed" and other such non-sense. In essence, I learned to attach the pattern to the person and now I'm able to attach patterns to people and recall their names.

The first step to really learning and self-learning is learning how *you* learn. **** all the gurus and technicians. All they do is regurgitate what you got in 12 years of school. If it didn't work then it won't work now.
Progress Report: One year of self-learning in CS / Programming Quote
10-22-2013 , 01:09 AM
Very interesting post OP ^^

One of the main reasons why I wrote earlier in the thread, that I started out writing everything down with a pen is because it helped me remember the basics.

I've got really lucky since then with getting a year long paid internship at a big company and will say that I'm really grateful because of it. Actually working every day in android and c# is way better than the pen.

Gl and keep going
Progress Report: One year of self-learning in CS / Programming Quote
10-22-2013 , 10:35 AM
Congratulations on the internship. I'm assuming a one year internship is a paid internship as well.

I agree about the pen and paper stuff as well. It may not be macho to use pencil and paper with programming but it really is the foundation of the thinking.
Progress Report: One year of self-learning in CS / Programming Quote
10-22-2013 , 03:01 PM
Quote:
Originally Posted by daveT
In response to flash-cards:

I wholly 1000% disagree that learning is memorization, although that may be from my personal experiences. I also found that people with astounding memories aren't always that intelligent.
This was my default position when I was younger. My memory wasn't great (though probably not as bad as yours, the way you describe it), and my ability to ask questions, generate ideas, and reason through things was pretty good. Over time my position has changed. I think memory can represent learning in that people with really good memory can be hard to compete with in many disciplines even if they aren't as strong, mentally, in other areas. I think this is particularly true for closed systems.

For example, there was this chess player who hit a plateau and went on to become a neuroscientist. He found that most people do depth first searches as they play chess, but the grandmaster's index board positions and related positions, and that they constantly build this indexing as they play so that instead of getting better by analyzing things away from the table, they get better simple by playing more. It's like memoization for humans, and as a result playing chess is also less mentally taxing. I used to play Magic: The Gathering with a person who I suspected had this ability.
Progress Report: One year of self-learning in CS / Programming Quote
10-23-2013 , 11:08 AM
Quote:
Originally Posted by daveT
I have a terrible memory, and its not like a minor issue; this was a huge thing for me growing up and it was noticed by many people. I even got psychological help, a bunch of silly "memory improvement" books and tools, and yes, I really worked hard at it, but no matter how hard I tried, I couldn't remember things like my phone number (90s, bro), people's names, what I ate in the morning, conversations I had earlier that day, and many other things. It wouldn't surprise you to know that I struggled like hell in history and literature, which were almost completely rote learning. I was, oddly, good at math and foreign languages, and that helped me in other areas like science.

I eventually discovered that I'll never be a rote learner. I have to have patterns to remember. At this point, I was able to build pictures in my mind. For example, if I wanted to remember my phone number, I had to have a telephone in front of me and allow my fingers to automatically dial the number. After a few times of going through the motion and remember the motion, I was able to slow down enough to pull the number out of the pattern. It took a little while before I could actually remember the layout of the dial pad and took much longer to mentally "dial" this number in my head.
I'm not sure which books you read (?), but you should look up "Mnemonics" if you've not read about them already (it sounds like you're doing something along similar lines yourself now anyway).

Here's a simple example of using the "sounds like" mnemonic to remember a phone number:

014759849749

Visualize this:

A greek hero throws a nun against the door to heaven. Next to it is a beehive with a glass of wine on top. Next to it is a a gnome applying some bait to his fishing rod and next to the him is a whore who's asking him for more wine as she says: "I can't get into heaven and through that door without more wine".

(I just made the number and the story up off the top of my head and you can likely do much better with a bit of thought... Hopefully you get the idea though)

Mnemonics range from the very simple that can be picked up in a few minutes (like "sounds like" or "looks like" mnemonics) to the very complex (like the "Major System"). Even remembering a tray of 20+ objects or a pack of cards isn't really that hard once you learn how it's done...

I don't know if you have seen the "Dragon's Den" TV program (called "Shark Tank" in US I believe?), but once you know a little about Mnemonics you'll be face palming when the people turn up on the program, forget their figures and blame their "bad" memories...

Juk

Last edited by jukofyork; 10-23-2013 at 11:16 AM.
Progress Report: One year of self-learning in CS / Programming Quote
10-23-2013 , 05:59 PM
LOL, I can still remember that made up phone number now and I didn't even try...

If that's not a good advertisement for looking into mnemonics I don't know what it.

Juk
Progress Report: One year of self-learning in CS / Programming Quote
10-23-2013 , 10:23 PM
The problem with mnemonics is that you have to remember one bit of nonsense to recall another bit of nonsense. They did not help me one iota, and perhaps served little more than adding confusion.

Only two things really worked out for me: patterns and derivation. I think I touched on the patterns thing already. Derivation is a bit of the same.

Take a simple example. When you are in grade school, you learn to multiply, and the common way is to remember a multiplication table or something similar. This is how I learned multiplication. I already learned how to add, and I began with the simple definition that multiplication is an extension of addition.

5 * 5 = 5 + 5 + 5 + 5 + 5

And from that, I can see a pattern: 5 0 5 0 5

It is those sorts of relationships that make it all work out. Same goes with 9 + 9 + 9+ ..., where the pattern is 8 7 6 5 4 3 2 1, and thus, the relationship is multiply by 10 and subtract the number.

Same went when I had to learn anatomy, which by first appearances is all rote, but reality, this is all a composition of smaller terms, and that combination creates "difficult" terminology like subcutaneous lipoma, semipermeable phospholipid bilayer, extensor pollicus brevis, or tensor fasciae latae. It looks intimidating and must make one think I have an amazing memory, but it is really just all combination of smaller parts. This is only possible because I learned the latin basis and used that to derive the meaning of the words, though this isn't quite so bottom up as the math examples.

Programming is very similar to this, in that by using small components, you can create amazing complexity and gain some interesting insights into the problem you are facing. This is why I am biased toward staying low level, especially at the beginning.
Progress Report: One year of self-learning in CS / Programming Quote
10-25-2013 , 08:14 PM
Quote:
Originally Posted by daveT
Congratulations on the internship. I'm assuming a one year internship is a paid internship as well.

I agree about the pen and paper stuff as well. It may not be macho to use pencil and paper with programming but it really is the foundation of the thinking.
I love pen and paper for a lot of things. Time management (mixture of trello and oldschool pen+paper for me), initially tackling problems and thinking through them, structuring topics (mind maps) and learning in general. I usually try to write notes/summaries about everything interesting I learn...often time I'll never look at that again but just writing it down helps a lot.
Progress Report: One year of self-learning in CS / Programming Quote
08-03-2014 , 08:42 PM
I didn't expect to ever continue with this, but...

Quote:
Originally Posted by e i pi
daveT, are you going to update your annual progress thread?
Opening

It is strange to look a back at things I wrote 1 and 2 years ago. I've hardly changed my mind on anything I've written back then. I don't know if this means I was on a correct path or if it means I haven't matured over time. I'll take the first option if it vindicates some of my work; I'll take the second if it means I still have my health.

This past year was very tough for me. I had many emotional and health issues. Although there was nothing life-threatening, I was sick for most of November through February, partly from burn-out and partly from working at my job, where everyone who gets sick doesn't take time off work and then kindly gets everyone else sick. Despite being sick, I worked through a fairly large project. Eventually, general life issues took its toll on me and I quit programming for a few months. During this break, I reflected on my relationships with people, my job, and, relevant to this forum, my computer. It is debatable how clear-thinking this thinking has been: I've been drinking & reading, drinking & thinking, drinking & coding, and drinking & writing for the past nine months. I'm currently sitting at my computer with a 22oz can of Sapporo sitting near my left hand, stopping to take a swig and hit on my root beer flavored vaporizer every few minutes. I've been writing this for a few days now, and yes, I've been half-drunk the whole time. Maybe I'll do the final edit half sober.

On History

I love to read, which I guess isn't surprising considering my prolix writing. I once read that it is a shame that there are no comp-sci history classes. There is something magical about looking back at the source materials, especially when searching for answers to many of the vexing questions facing us today. I feel that a good programming book explores the historical context of many ideas that are still in use today.

Once we get past the trivia we all know about Djikstra, Jobs, Gates, Hopper, and Lovelace, there is so much more to consider and contemplate. Why is x86 and x64 built like it is? Why was open source so important to the early days of programming? What did it mean to be a hacker and is the Paul Graham interpretation correct? What is functional programming and why was it created? How is it possible that Radix Sort, a sort created during the punch-card days, still relevant today?

When I read blog posts on certain topics, especially functional programming, I always feel that the author is speaking in abstract terms. It does little good to write about Nouns -vs- Verbs, immutability (which is often sorely misinterpreted by the reader and, I suspect, the author), or first-class functions, as these ideas do not discuss the concepts that the creators of the ideas were trying to solve. The problem is that these blogs speak about a black box world, where only the magic of what is apparently possible is discussed, and the truly compelling reasons -- the foundation of the thinking -- is never discussed. We, as a naturally skeptical and curious crowd, are asked to accept the magic as law. Why would I, or anyone, consider monads anything more than a silly ivory tower toy with the information given to us as half-baked analogies?

Go back and read the sources, or at least find something that explains the reasons in a non-stupid manner. In here, you will find the base logic of so many things you've been told about.

Beautiful Code

Hackers

Masterminds of Programming

Wiley's Assembly

MapReduce Paper

A Relational Model of Data for Large Shared Data Banks

NP-complete Problems and Physical Reality

Dracula

On Open Source

After considering history and my own experiences dealing with close source solutions, I've become a strong proponent of using open source tooling and programming languages. Although I'm not the extreme of the Free Software Foundation, as I believe that "freedom" does include the choice to distribute code as you see fit, I've been shocked by the shear audacity of the programs and companies that I have had the displeasure of working with over the past few years. To be certain, I do believe that Microsoft Office and Adobe Suite (**** Dreamweaver) is far superior to their open source counterparts, as the productivity gains from using these products far outweigh the savings. In my opinion, open source -vs- closed source is not about costs or savings: the debate comes down to respecting your customers and allowing ownership of the data they generate for your company. I'm a strong believer in ownership of what is yours and strongly against theft, and I extend this personal belief to the programming languages tools I chose to use to code with them.

From a historical perspective, open source allowed for the advancement of computer science and thinking. More importantly, the advancement was promoted by open access to computers. This access was, of course, hard to come by in the days of large machines, but when computers shrunk, and knowledge was freely given, ideas were able to be built upon. One story in Hackers relates how a student went to a large company and asked for help on a program. He was given the source code, no questions asked. The endless curiosity of students and access to open ideas and computing led to the development of Spacewar! These early hackers built the game on the DEC PDP-1 they had free access to tinker with.

What would our world be like if mergesort and heapsort was closed source? Would we ever be able to make the conceptual leap quicksort? What would the world be like if emacs or vi were not open source and we had to depend on short-lived, closed source solutions for our editors? Would we have operating systems, either open or closed source, without the freely available C programming language? Would we have the many JavaScript frameworks available if JavaScript was closed source? What would happen to the web if we all had to administer websites to a black-box version of Linux? What would become of the web if the ideas of HTTP was not open?

Many companies take advantage of the ignorance and general stupidity of their customers. While I am okay with taking a market position and using your knowledge to your advantage, I'm a firm believer that data submitted by a customer should be freely available to the customer at a later time. The very concept of refusing to give back data that was uploaded to their systems is plainly absurd and abusive. If I want to export my sales history or export all the emails I sent over the past year, I should have the right, and no, as I have trusted you to hold my information. I should not be responsible for keeping everything in Excel on my local machine.

It's shocking to me to see how many popular programs -- particularly customer relationship programs -- are little more than watered-down, pretty skins over open-source programs, and far from "feature complete." If a company wants to sell license to a featureless program for tens of thousands of dollars per yer, I guess that is its prerogative, but I'd certainly have a sick feeling in my stomach if I worked for such a company.

Consider further the companies that use open-source products such as Drupal (GPL License) yet tell their customers that the code is not available as open-source. Closed source is not the domain of the programming language so much as the domain of the attitudes of the companies involved.

While I don't want to support, either explicitly or implicitly, those that do offer closed source systems, I recognize the fact that I have to learn to live within the world offered by closed-source systems. Yes, this means I have to understand Windows %PATH%. Yes, I get that service equals value, but for me personally, I don't want to be directly involved, and thus I prefer using tools and programming languages that are open and free to use, explore, and learn from. When I make the free choice to use closed source systems and languages, I am vindicating the ideas I oppose. Does this mean that I will never ever use a closed source language or program again? No, but my default position will always be open if the option is available, and I will violently reject using closed-source systems when I know FOSS, which is often more powerful and easier to use, is available.

On Clojure

I honestly don't know if I have practical value to the world, and one reason is due to my exploration of Lisp and Clojure. Although I've had the joy of learning other languages over the past year, I want to talk about how I somewhat regret learning Lisp.

There is a strange mix of awe and disrespect bound to learning and "mastering" a Lisp. I feel uncomfortable telling people I use Clojure or any Lisp these days. I'm often met with "Wow, that's pretty impressive" and that puts me in a strange spot. What if I say something that reveals I'm stupid?

People also assume that certain things are either beneath me or that I'm interested in every esoteric concept and language on the planet.

"What do you think of Erlang?"
"Hey, you know, there is this one company that uses Erlang / Node.JS, you should consider applying there."
"Oh, I bet you wouldn't be interested in working with [Language X] at all."
"If you use Clojure, why would you bother using Python?"
"I bet you are really good at parallel / multi-processor programming."
"I have this one job available... [simply impossible to do by any mortal]."
"You use Clojure and PostgreSQL? Hmm.. that's a strange combination. Why not Mongo?"
"Clojure? What would bring you to a [Language X] meetup?"
"People use Lisp? Isn't that an [x] language?"
"I learned Lisp in school. You can't do anything with it though."

Did I fail to mention that I push bits in Brain**** at my day job?

On Server Programming and Linux

I've had the great joy of learning how to set up and deploy to a server. Although I'm not fascinated enough to learn much more than I know, I appreciate that I learned quite a bit about Linux doing this. I have a deep appreciation for the server admins that keep our web world up a running.

Quote:
Most people don't even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn't make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.
Some of the most interesting talks I've seen were given by sysadmins. Interesting to note that they all sort of roll their own solutions, and few I've talked to prefer using things like Chef or Docker to do their dirty work for them. I'm not sure if this a function of being in the game before these items came out, if they are surly and stubborn, or if these programs get in the way of their work-flow when it matters: when the barns are burning down.

The real bonus of learning about server building is that it taught me how to think of solutions and consider problems that I have not thought have of before. In this world, Occam's Razor rules the land; the challenge is figuring out where Occam lives and politely knocking on his door. It is no wonder that the talks sysadmins give are so fascinating: they see the world in entirely different light, and seldom speak in abstract terms without explicitly saying so.

I've now used Arch Linux and CentOS. There can be no bigger difference in operating system philosophy and style. Personally, I find the default settings in CentOS bat**** insane. Why is *everything* 550? When the postgres user can't even access the postgresql.conf file by default; there is something wrong with this picture. Why are all the default programs Version T minus [1...5] years? Installing anything is a long loop of configure this, call this, call that, munge this, munge that. On the opposite pole lies Arch, where everything is relatively free and the programs are bleeding-edge. In Arch, I know what I'm getting when I install a program, though the downside is that, if I want an older version of something, I'd have to install from a tarball. For my own purposes, I have no idea what old version of anything I'd prefer, but that is a product of not having to work with other people. Regardless, taking a clear stance on what is meant by "default" makes working with the OS much easier and more understandable.

I've also found CentOS disastrously unstable.

Installling PostgreSQL on CentOS

Programming Sucks

On Web Building (Or Why I Hate Myself)

Obviously, I didn't learn to build a server for my mental health. I built up a site in Clojure called Course Island. CI was my first legitimate attempt at building up a site, turtles up and down. Although the database and coding of Clojure was fine and quite enjoyable, I found zero joy in working on the UI.

The entire thing is generated through database calls. I bulk-load a few items via CSV and all of the pages and relevant divs are automatically generated. Perhaps not an impressive feat, but the point is that I ended up creating a data-entry job for myself. Ostensibly, this is what I do all day, and I had no desire to spend 3 hours in the evening doing what I spend 8 hours a day doing.

There are quite a few competitors in the space, and more come out every month. Even though my engine is superior to theirs in power, speed, and features, none of this matters to anyone. The facts are clear: even with their marketing, UI, and "growth hack" efforts, their sites are all dead zones: no one wants to go to another site to talk about MOOCs (don't be fooled by the reviews on those sites, deeper observation shows these reviews are cooked). I'm one person facing off against venture-backed teams. I simply don't have the time to do all of the data-entry, marketing, and maintenance. Once a minor life hiccup happens, the back-log builds up, creating a situation where current and up-to-date is not possible. Forget about new features or learning about AJAX to make the whole thing run smoother.

I learned a few things by building up the site, but overall, I feel like the whole experience was low-bang for the time investment.

I'd like to talk about the limitations and stupidity of using an unproven platform to create a site. I don't see how the fundamental action of building the site can be any easier: build a database, build stuff to interact with it. The problem is that when you need something, it is often not there. The main missing component from Clojure is security. The security is either blatantly wrong, missing, not working well, poorly documented, had limited functionality, too difficult to use, or even added features that broke the site in unhappy ways.

I'm not an expert in security, and learning about all the security components was an impossible chore. During his presentation, Aaron Bedra said that the security in Clojure apps was worse than PHP sans framework. Definitely a scathing remark, but he did offer many ideas of how to improve the situation.

I suspect that this general frustration with security sparked much of shoelace's epiphany about using pre-built frameworks. There are just things that we, as non-experts, should not be worrying about.

If the Clojure community was able to get the security stuff right, I really don't see how it could be any easier to build robust and powerful web applications than using Clojure. The amount of things that you can get done with little code is simply incredible.

Aaron Bedra - clojure.web/with-security

Course Island

Course Island Source

Foundation was a general pain in the ass to use. At first, it felt like a super-charged CSS framework, giving me the feeling that what was once impossible would now be possible. At some point, many of the default setting had to be over-ridden, and I felt as if I would have to just bake my own pie to get it to do things that it was supposedly able to do out of the box. The default spacing between boxes, elements, and other items ended up making many layout things more difficult than it would be if I was building everything by hand.

I hated building websites 3 years ago, yet here I was doing the same crap 2 1/2 years later. I guess there is a desire to work and get a job, which I always took to mean that I should have something I can show. Since it is so hard to show things in the abstract, I felt that I should build sites so that people can see -- and hopefully enjoy -- the results of my work.

Give me a database, and I am truly thrilled;
Give me a unique way to talk to the database, and I'm happy.
Ask me to create forms to talk to the database, and I'm feeling okay.
Ask me to generate HTML and make it look pretty, and I hate my life.
Ask me to enter information to make it work nicely, and I want to walk away.
Ask me to do AJAX... well... I'll keep the commentary nice.

If I am truly this unhappy spinning up a local server and setting up routes, then why was I wasting my time with this stuff? Was it a waste of time? I don't know, but I climbed up quite a few wrong hills. I don't regret this, but it is something I must promise myself to never do again. Facing this reality, and accepting that I'd never be happy programming this way, triggered my long hiatus from programming. I had to re-examine my life and the knowledge I've been acquiring.

The ultimate question is: Am I willing to learn other things and take the real risk of learning things that are more esoteric, and be willing to face-off against those that are far more qualified and educated than I am?

On MOOCs

Up to a year ago, I was warm to the idea of using MOOCs to learn, but I've had a change of heart. Don't get me wrong, if you are just starting and you have no idea where to start, you can't do much better than the beginning material. However, going past the basics, you will find that many classes are either watered-down or reviews of concepts you've already (hopefully) mastered. There are a few exceptions to this rule, but in general, the amount of time wasted watching a few videos and going through pointless homework would be much better spent cracking open a book with good reviews on Amazon. The classes that are legitimately good often go too fast and don't offer enough time to really dive into the material.

This change of heart is another reason I nuked Course Island. Aside from a few classes, I'd probably be writing a bunch of negative reviews, and I don't feel good bashing into the work others have committed their lives to.

On C and Assembly

If Lisp is a paradigm of creating powerful abstractions over basic data structures, C and Assembly is place where we can have fun really diving in and creating the very data structures we use to create the foundation of language upon. I know that others feel differently, but this stuff really makes me feel good when I use it, which I guess isn't surprising considering my love for the raw world of databases. The compile loop and working without a REPL isn't ideal, but there is much to be said about getting the simple story of everything.

I honestly don't care if people can't see my work anymore. I took some time to learn C and x86 this past year, and I plan to dedicate much more time to it this year, and I hope to achieve true mastery soon. When I work in C and x86, I feel more at peace with my day-to-day programming. I can't explain the feeling, but perhaps I am screwed up for finding Nirvana in the ugly bits of the computer.

All I have to do now is figure out a fun project to work on.

C Programming: A Modern Approach, 2nd Edition

Assembly Language for x86 Processors (6th Edition)

I already linked to Wiley's up-post.

On Databases

If my heart lies anywhere in the computing world, it lies most deeply in databases. It is very difficult to explain the feeling of using a database, but if I could find a job working with nothing but databases and gawd-awful data all day, I'd do this and never look back. The challenge of finding decent relationships between data, munging ugly data and fixing it, and just finding answers in data felt good ever since I started doing it years ago. From data, I find answers, and from creatively using data, I find results.

Using PL/pgSQL is something to be desired, but I'm starting to get used to it. It is a decently powerful language. Sadly, there aren't many tutorials or books on this subject, but the incredible documentation with a healthy mix of Stack Overflow makes up 85%. The problem is that there are many things I'd like to represent, but I don't have the knowledge base to do so. Some things come quickly, yet many things feel completely impossible. Deprecated concepts still life on, which is irritating once I find out.

PostGIS is simply amazing to work with. It's incredible how they managed to break down the world into a few basic components and to make it all work out.

Perhaps I'll start looking into other systems like MongoDB or CouchDB.

PostGIS in Action

Seven Databases in Seven Weeks

SQL Antipatterns

On Meetups

Some are more interesting than others. I don't enjoy hack nights very much. The beauty of meetups is that I don't drink the free beer, so I have at least one night every few weeks where I am completely sober. Depending on the meetup, I'm more productive there than I am at home.

I enjoy meetups that feature an interesting speaker. Although this is not a good way to get a CS education, it is a great way to gain interesting perspectives and learn about tools and programs others are creating or using in their day-to-day lives.

I'm a shy person, and I'm often too exhausted from talking at work all day. For the most part, I find intelligent people intimidating. On the other hand, some meetups have a large variety of people, and to be honest, quite a few of them are... beginners, who make me equally uncomfortable. I also dislike being asked about my projects. Most people never seem to get what I'm doing and give me strange looks. I suppose this is because I use funny languages (defined as Not JavaScript or PHP) and work on unusual projects (defined as Not a Rails Web App). In general, I try to always talk about their projects and work and attempt to deflect the conversation from my own projects.

On Management

At my job, there are a lot of tools they use that just aren't cutting it. I have to personally manage over 250,000 product listings, as well as help out with another 50,000 product listings. Excel just doesn't cut it, so after getting a raise, I decided I'd be willing to use a bit of my knowledge and introduce some SQL to the mix. I gradually built, and still am building, the data store for this morass of ever-changing data. There was a major project that came along, and basically it was impossible to do without a database.

A few months ago, I decided that I'm not interested in working at this job anymore. The fundamental problem is low pay and no benefits. I spoke to management about this, and I told them they should consider finding someone else to take over my duties, which they agreed to. I had the rug pulled out from under me, and the ante was raised too high to find a basic replacement, and I found myself fighting to get someone, and that someone had to be damn good. I can't say how it was done, but we managed to get this total badass SQL girl to work with us. This led to a very large project, which meant that not only did I not get my replacement, I ended up getting a new job tossed onto me. Mind that I'm over-worked, probably doing the job of 2 people as it is, and now I have to manage this one extra person, and since the task that was handed to her (us) is quite difficult and convoluted, I ended up having to work with her on this project. Now, don't get me wrong, she is very good at what she does, but I wasn't able to just let her run alone for various reasons.

The pressure was on my head. I knew that I was going to start catching some heat, but I didn't think it would be as extreme as it was. I decided that I can't work as a technical person at a non-tech company. I don't want to be a pointy-haired boss, which is exactly what I was becoming. In order to keep the project going, I did a few things for virtually gratis and I felt deeply disrespected when I was met with hostility.

I eventually won a bit of SQL girl's respect. I would have thought it was my willingness to get my hands dirty, but that didn't really work out. I would have thought it was a well-thought-out gift, but that didn't work either. It really took sitting down with her and having a heart-to-heart about the situation and being brutally honest with each other. I had expectations for her and she simply didn't want to be that person. One of the more surprising parts that finally came out was that she was not comfortable working without well-defined roles. In her perspective, she is the programmer; I am the manager. The other issue is that I always seem too inaccessible, but I assured her that I cut out as much time as I can and I'm always there for however much time she needs to discuss an issue, but understand that when I neglect my work, I catch a lot of heat from above. To set the record straight, I've never once turned her away: its just that I have so much on my plate that I can't stop for more than a few minutes without falling another month behind.

I took everything she said to heart, and I've been actively doing my best to be a better manager. A few days after a long discussion, I pulled her aside and gave her my decision on the points she brought up. I think it left both of us satisfied. Regardless, I figure she still hates me, but at the end of the day, I'm the one that has to earn her trust. Mirrors are sometimes painful to look at.

Now that the project is on the home-stretch, we have to consider the next steps. There are a few features that were requested that we couldn't implement for various reasons, and those will have to be added in. The ultimate issue was that the people and processes we have to depend for the system to work just aren't there. At some point, I have to present everything along with all of the weaknesses we discovered.

I asked her what she wants to do next, aside from implement many of the items that are still hanging, and she looked at me and said: "I'd like to build an application." When asked what language, she said C++, which she doesn't know a lick of. Sigh.

Assuming she is right, and she is, there is no one that is knowledgeable enough to pull something like this off (aside from yours truly), and getting someone in to help out is impossible at the going rate. I don't know what to do next. I don't want to give this company my knowledge on a silver platter. I'd be more than happy to teach someone what I know and figure out the rest, but I'd rather do it for free on my own time. The real catch: this app would have to be web-based, so I'm really not interested.

I learned far more from her than I could ever show her. It took a lot of thinking and trying different tactics, but it really just took listening and assuring her that I am truly an empathetic and altruistic person. Of course, words mean nothing without the obvious actions to back it up.

Aside from my own personal issues and the roles I have at my job, I don't think I can green-light an application. On the one hand, I would like to give her a challenging project and do all that I can to help her become a better programmer. The flip-side is that there are other items that need to be worked out, and I doubt the company would go for a full app. I don't think I can go for a 6 month commitment and I'm not sure if I could extract that from her. I certainly don't want to be stuck with a half-done project if the key person decides to up and quit. Of course, with this new-found knowledge, she'll be quick to scurry off to greener pastures, which is fine, but the balance is finding the correct timing.

She'll probably quit soon.

Making Things Happen: Mastering Project Management (Theory in Practice)

On Programming Books

After working through so many personal and professional issues, I'm more convinced than ever that books are really the way to go for answers. Inside a good book, we can find advice, ideas, and clarity. Reading gives us all a chance to slow down and work at our own pace, and by simply turning back to the front cover, we get that rare and valuable second chance. Unlike sitting in a class or living in real life, we have the time to go back and reread something we didn't understand the first time. I've always been an avid reader and studier, and I think that any autodidact has to be, first and foremost, a good reader.

I've read and worked through a few books this year. I've already listed a decent stock-pile in this thread, but I'd like add a few more here.

Introduction to Algorithms, 3rd Edition

The book is thick, but the conversational style makes it an infinitely interesting read. I've read parts of other algorithm books, but they all fall far short of the thought, knowledge, and impact this book offers. The beautiful idea of this book is choosing to show algorithms in pseudo-code, forcing the reader to program the algorithms and figure it out give the algorithms impact and help with retaining the information.

Concrete Mathematics: A Foundation for Computer Science (2nd Edition)

This book is like a fine wine. I've been taking my time going through this one. Full of interesting history, ideas, and foundations. Just a fun, and yes, difficult, book to work through. One of the few math books that makes me feel good to work through. The graffiti adds a dash of extra flavor. Incredibly well-written.

JavaScript: The Good Parts

Even though I write as little JavaScript as I can, I probably wrote a kLOC while working through this one. I found the underlying philosophy of thinking about "good parts" a fine insight no matter what language you are dealing with.

Higher Order Perl

Lot of people call this book brilliant, and from what I've read of it so far, I couldn't agree more. In spirit, it is similar to SICP. There isn't a whole lot of code in this book, but using Perl would certainly enhance the lessons. Even reading it without coding it offers plenty of valuable food for thought.

On Being Self-Taught

I never finished high school nor have I ever been to college. I don't regret dropping high-school, as I didn't have a future anyways. I wasn't a failing student by any means, but things were what they were, and going to college wasn't a realistic option. Perhaps with better guidance, I would have made less naive choices, but I only went by what I knew, and that wasn't much.

I was always an avid self-learner, and the ideal was innate from a young age. When I was in second grade, I though myself multiplication and division. When I was in high-school, I was reading many books on math, medicine, and cruciverbism. The art of language and writing was my main interests, subjects sorely lacking in the schools I went to, so I studied that.

In my 20s, I studied many other topics. For a short while, I was studying physics (watered-down, unfortunately), and got into learning to read and write foreign languages. I had a few foreign friends who would exchange emails with me in their mother tongue. Got a lot of things wrong, but I had a blast.

Other subjects I studied was humanities, psychology, and, of course, poker.

What does it take to self-learn, and how can we define an autodidact? I believe that there are different shades of autodidact.

The "true autodidact" is the person who stopped giving a ****. This is the guy who sits at his computer or stands in front of his easel ignoring his pissed off girlfriend who doesn't seem to understand why we'd rather not retire from cooking burgers from McDonald's. This is the one who has nothing to lose, and the reward, no matter how paltry, is worth a million risks and losses.

The "dropout autodidact" is the person who dropped out of normal life to find her own means. She probably went to college, but decided that this route wouldn't make her happy, and the search for "something more" wasn't found in a religious book. This is a career-less person, though certainly gifted and full of ideals.

The "apex autodidact" is the life-long learner. More educated, successful and relatively happy at his job or business. He is the avid reader and studier. The joy of learning is enough to drive him.

I left many shades of autodidact out, but the above does cover what I believe is the full spectrum of self-learners, where the "true autodidact" is the bottom of the pyramid, and the "apex autodidact" is at the top. Years ago, I was attempting to be the apex autodidact, but the time was too early for the top of the pyramid, and I probably suffered quite a bit from this. In my view, an autodidact near the bottom of the pyramid needs a drive, and more often than not, that drive is more external than internal, whereas the apex autodidact is driven by personal pleasure and doesn't need to care about improving his external situation.

Self-learning is a deeply intimate exploration of yourself. When we strip away all the glamor of burning the midnight oil and smiling over a mathematical proof, we are only left with the truth of who we are:

Am I a lazy person? I consider myself a lazy person. I don't have a TV, but I replace that with other distractions.

Do I need more sleep than the average person? I need about 9 hours of sleep a night.

If I need so much sleep, can I balance my learning with my life and work? For a short time, I can attempt to sacrifice my sleep. The balance is kidding myself that I am okay against accepting that I've pushed myself past the breaking point.

What truly interests me, and do my true interests have a payoff? Suppose I want to be an astrophysicist: would I be able to study the subject appropriately and gain the respect needed to gain a job doing what I love? Reality is that I would not be able to, so studying this in "true autodidact" fashion is a waste of my time and resources.

How can I balance "who am I?" with "what is realistic?"? If I want to be a data scientist, competing with PhD's, do I have the foundations in programming and math to really go for it? I don't. I can get that knowledge, but at what time cost? If I am looking at a 6 year plan, I'm probably not ready for that commitment.

Habits and philosophy

I believe that education, at least in the primary years, does more harm than good, especially for those who look back at those years as a model of how to self-learn. The first half of any new school year is basically little more than a review of the concepts and ideas that was taught in the prior years. This is harmful because it teaches us that review is more important than continued learning. While some review is fine, I prefer to focus on challenging myself to continue on, and if I am stuck, I know for certain what I need to review and understand. There is no such thing as an education without holes and attempting to seal all of these holes before continuing leads to paralysis. If you are not constantly challenging yourself, then you are likely to get bored. While you don't want to study AI if you can't do basic programming, but you shouldn't be reviewing for loops a year into your education.

The hardest part is figuring out what works for you. It is very difficult for me to give decent advice, as we all have our own habits and styles of learning, and when self-learning, we have to adjust our education to ourselves, not adjust to what others tell us is education. My thinking starts with accepting my limitations.

First limitation: I am a night owl. My brain, personality, and my ability to think is hampered before noon. Some people wake up at 6:00am to study; I don't start studying until after 6:00pm.

Second limitation: I have a poor memory. This was discussed earlier in this thread, but using techniques others find critical doesn't help me much. You have to understand *how* you learn best. What works for me is diametrically opposed to how intelligence was measured in school, which focuses on rote learning and memorizing trivia. If flash-cards works for you, then by all means do it, but don't do flash-cards because you read somewhere that this is the best way. The missing statement for all this advice is "for ME" and unless you are the "me" in question, take the advice with a grain of salt.

resources

I believe that finding good resources is paramount. I prefer to use books for the reasons stated under "On Books." I eschew "how to" books unless they are needed for a certain task, but learning a task is a different focus than the self-learning I am describing here. For self-learning, I believe that well thought-out exercises is often more important than the material. I don't really like the Learn Code the Hard Way series because the exercises aren't very good. Good exercises reinforce the material you have learned. Excellent exercises ask you to think of something that was implied but not said, forcing you to fill in the gaps. Awesome exercises ask you to start from a small piece of the chapter, paying you with insight that can only be found from self-discovery. Horrible exercises ask you to regurgitate what was read. Regurgitation is mindless education of the worst type, and should be considered a crime.

Good resources demand interaction. Programming and math books offer this in spades. There is little value in reading these books without a pencil and paper or a text editor open. If it is possible to do so, then the resource is bad.

The exception to the above are resources about life, such as the Berken book. But even then, the book is interactive because I use it to gain insights into my own life and work, pondering the material and how to apply it to my life when I don't have the book open in front of me. Did I say the right things, and will I slap myself for doing something wrong when I go back to read the material again? The goal of any resource is consistent and constant refinement.

Quickly dropping poor resources is one of the more difficult pieces of self-learning. We all have had the mantra "Finish what you started" driven into our heads all our lives. The correct attitude is to always ask yourself "Does this resource help me achieve my goals?" A simple test is considering how you feel 100 pages in, or how you feel after watching 5 videos. Ask "What have I learned?" and if the answer is nothing or can be counted on one hand, then you gained nothing. Don't kid yourself with intangibles. Focus on what can be enumerated. Finishing what you started does not mean you never quit anything at all. The goal should be to become a better learner and to gain knowledge. If you fall into the habit of sticking with low-payoff resources, you are undermining your goals. "Finishing what you started" implies forward movement, and no movement does not help anyone finish anything.

Taking rests and pacing

This is my Achilles heal. I tend to drive myself far too hard when I feel productive. This often leads to burnout, exhaustion, and feeling embittered and run-down. Balancing myself has always been difficult, and this is an area I still struggle with. At times, I get so involved that I don't realize it is nearing 2am, and this isn't healthy when I have to be up at 6:30am to go to work.

The next piece is not forcing myself to do things. This is something that I struggled with for a while, but I no longer force myself to learn or work at home if I'm not in the mood or if I am too tired. I realize that if I do so, I will probably be in auto-pilot, losing the valuable interaction with the material. If I am tired, I try to enjoy what life I have or go to sleep.

The last piece is finding a support group, and most critically, keeping interactions from people who don't get it to a bare minimum. If your friends think you are strange for self-learning, or your girlfriend doesn't understand why your life is more important than her desire to talk on the phone with you for three hours, or gets mad at you because you'd rather build a project instead of going on a date on Tuesday night, then all of those people have to be swept aside. Self-learning is a selfish endeavor, and recognizing this fact, and knowing that you will find more cheerleaders in your life than haters when you cross the finish-line should drive you.

I have a very simple system for my own learning. I don't start until the evening when I am most prepared. I read slowly, and I interact with the material as much as I can. I use pen, paper, and a text editor. I keep everything highly organized, keeping a separate notepad for each subject I am working on. My computer files are well-separated and defined. Taking 10 minutes to search for something is frustrating and breaks valuable concentration.

I don't have any magic sauce, and like many things in life, the answers are often stupid simple. Convolution, extra techniques, note-taking websites, and systems offer me no benefit and take away from the focus at hand. While my system works for me, I know that it doesn't work for everyone. At the end of the day, you have to be willing to look inside of yourself, understand what drives you, accept your weaknesses, and figure out how to enhance your strengths.

On Getting a Job

Yeah, I shouldn't be working where I am, and I should be happily employed as an engineer, but I'm not. After quitting the C# place, I found a new job in 3 days and didn't really bother looking for anything else. This doesn't mean that I haven't had any offers or leads.

My current job is interesting, but it doesn't make me happy at all. I'm way over-worked and feel deeply under-appreciated. My personal goals don't align with the reason de etre of the company. Which is fine in its own way, but at some point, I'm denying my own abilities, knowledge, and ability to grow.

I don't know what I want from programming. I only know that I don't want to build websites. I don't want to be marked as a "web-dev" and I don't want to risk having that patch put on my shoulder when I attempt to find something that aligns with my interests.

I don't enjoy sysadmin, AI, or security. I loathe UI and design.

I do enjoy databases.

I do enjoy working in worlds that aren't piles of black-boxes on black-boxes. In other words, I truly get a kick out of working with raw data and concepts. Finding a job in either of these fields has not been easy, but if I don't have anything, I do have patience and a desire to focus on furthering my goals.

What's Next?

I started working on the marketing program I wrote about last year. It has been expanded to include many other components such as channel management, basic inventory management, and basic CRM. This is base-line functionality I plan so far. The positive is that this won't have a GUI, so I won't find myself feeling bored later on. The system is written in Python and PostgreSQL. It is entirely open-source, so if someone wants to take the engine and add a GUI, then they have that freedom.

The program is a response to the situations I've found myself in many times over the past 3 years: I'm given a tool to use and it doesn't work very well. In order to do market analysis, keep product listing under control, or even do basic searching, I've always had to export the data and build proxy tools in order to do my basic duties. This program serves as a repository of my experiences and acts as a hedge against me having to rewrite these things in a future job. It is also a cheat sheet for those who find themselves in my position. If they feel they have to present something to their manager to get approval, then they can have a tool that is already half-ready. Just a little company-specific tuning is all that is needed. I'm using Python because it is as close to a "universal" programming language we have available. Although I'd prefer using Lisp or C, this project isn't strictly for myself. The big win is that Python has many great tools and libs, such as SciPy, Pandas, psycopg, and numpy.

I plan to learn more about C, assembly, and PostGIS during the next year, but as the old Chinese proverb goes: "Who can say in the morning what the sunset will bring?"
Progress Report: One year of self-learning in CS / Programming Quote
08-03-2014 , 10:24 PM
Quote:
My current job is interesting, but it doesn't make me happy at all. I'm way over-worked and feel deeply under-appreciated. My personal goals don't align with the reason de etre of the company. Which is fine in its own way, but at some point, I'm denying my own abilities, knowledge, and ability to grow.
Quit tomorrow and do exactly what you want to do. Everything else pales in comparison to this. I will happily offer to beat the **** out of you in a month if you don't follow through to help motivate you.
Progress Report: One year of self-learning in CS / Programming Quote
08-04-2014 , 12:56 AM
Thanks for the update Dave, there's a lot going on here!
Progress Report: One year of self-learning in CS / Programming Quote
08-04-2014 , 03:54 AM
wow, that’s a writeup

“I want to talk about how I somewhat regret learning Lisp.”

This is painful to read. I still love clojure. I assume most clojure programmers are more talented than me, but it doesn’t worry me… I guess I just usually other programmers are more talented than me anyway…


“On Web Building… Although the database and coding of Clojure was fine and quite enjoyable, I found zero joy in working on the UI.”

Have you looked at hoplon? I’ve just started looking it over, and I’m pretty excited about it. It makes html look like a clojure program and integrates the two pretty tightly (among other things).
Progress Report: One year of self-learning in CS / Programming Quote
08-05-2014 , 11:11 PM
Thanks for taking the time to write this up. I started programming more or less around the same time as you so I remembered this thread.

Quote:
Originally Posted by daveT

It is strange to look a back at things I wrote 1 and 2 years ago.
I love that the LC thread still has all the initials posts. I remember reading through the LC thread and understanding none of it, all the programming jargon was alien. I also stumbled upon a question I asked in the python thread about a higher order function. The odd thing is I remember brushing off the answers I got as people not understanding my question but feeling confident that I understood. In reality I had 0 clue and the responses to my question couldn't have been clearer. Pretty humbling to unexpectedly catch your past self asking stupid questions.
Progress Report: One year of self-learning in CS / Programming Quote

      
m