272 karma · joined June 3, 2017
https://github.com/vinayms2017/JEEP2018
From what I have seen happen around me, the "new skill" isn't really as new as it seems; it is just tweaking and reapplying the already present skill.
To use human languages as an example, a monolingual English speaker learning Italian, or even the seemingly esoteric Urdu, is not as hard as it seems for all these are of the same (broader) family sharing many similar features, and the skill is transferable easily. However, learning something like Chinese or Arabic and being good at it is hard and only people who have no other choice engage in the activity, and may be stand to benefit more in terms of ROI.
In that sense, I would be interested to know how a C++ guy learnt and became skillful in Haskell or Erlang, more than learning Java or Python and churning out code with them.
Or to use a non CS example, its more interesting to know how a medical student learnt fluid mechanics in order to understand the human body better than to know how a mechanical engineer became a theoretical physicist.
Kleinberg and Tardos is also friendly, informal, insightful, and even heuristic to an extent, but opposite of the others, so IMO its much better and very different than Skiena's, though it isn't a quick read before an exam or an interview sort of a book, which is what Skiena's can be described as. Browse K&T to see what I mean.
This is the book that introduced me to the wonderful world of algorithms, and I love it. The introduction chapter was a revelation and nothing like I had read before. I didn't understand everything in the first read but it made me to want to. The book is more accessible and practical than Knuth and CLRS, and more thorough than Skiena and such. Everything about this book is beautiful, not the least of which is the visualization of sort algorithms. There is also abundant tree related topics, which is quite refreshing and useful, in hindsight, because trees, other than balanced binary ones, are generally ignored in most books where graph steals the limelight.
There are two volumes that make this book, first having Parts 1 to 4, dealing with fundamentals, DS, sort and search, and the second, Part 5, dealing exclusively with graphs. I have only the first one and the opinion is based on that. There is a newer Java version, which includes the graph topics, and is about 250 pages longer than the first volume. However, based on the preview, it seems almost first 120 pages are dedicated to the Java language and OOP, unlike the C++ version which starts directly with the subject, so not sure how much of the contents are removed to make room, and how the quality differs.
Software Engineering
About C++: The Design and Evolution of C++ and The C++ Programming Language, both by Bjarne Stroustrup, the creator of C++. The first one is a snapshot of his philosophy during early years of C++ and is useful to understand the motivations etc. It provides insight. The second one, after the necessary introduction to the language, shows how he uses C++, or expects to be used, which is interesting in its own way.
About algorithms: Algorithm Design by Kleinberg and Tardos. This gives the much needed insight instead of maths equations, data structure implementations or a catalog of what to apply where, which are all good, but are useless without insight.
Mechanical Engineering (ME is a large field, and I will limit to these two books.)
Stephen Timoshenko's two volume Strength of Materials is a seminal work, and still relevant, on a topic that is at the core of mechanical and civil engineering.
Shigley's Mechanical Engineering Design deals with designing machine parts, which is in a sense an applied strength of materials topic, and the book addresses that part quite effectively, though not as comprehensively as Timoshenko's. More importantly, the book gives enough motivation and insight for the design process, without which engineers would just be "design monkeys" that use latest CAE packages.
Based on that experience, my guess is that those who regret are usually those who just go through the motions. They most likely don't have side projects, or ideas to pursue, and the monotone of programming gets to them. Lets face it, our industry is all about repackaging the same old solutions, but for different clients, and that's quite boring. I like to imagine that engineers in other fields do a lot more than what programmers do, which makes things different even when repackaging solutions, but I could be wrong. In Indian context, there are many people I know, ranging from senior engineer or VP, working in multi national companies, with very good salaries, but are quite disenchanted with their jobs because they are nothing more than glorified bricklayers working in India while the architects send out instructions sitting in USA or Europe.
Firstly we don't understand physics fully. We have only more breadcrumbs but no answer to the ultimate "why", and are basically unable to answer a pesky kid who keeps repeating that. Now, we are applying this to explain another equally intractable problem, that of understanding human behavior. It is a strange case of reductionism. I wonder why people engage in such futile activities. May be this line in the article is the answer.
> Results like these have obvious value for corporate marketers.
A bunch of maths equations and charts presented in the form of a paper that promises to crack the human behavior with further research is too good for the corporates to let go. Ergo funding. Well done. I won't be surprised if all this started out as a joke that the corporates lapped up.
To be clear, there is nothing wrong with trying to quantify an observation or a phenomenon, and in fact is always welcome, but bringing in incongruent things into the mix reduces the gravity.
For job, FORTRAN, C++, Python, JavaScript and WebAssembly.
For insight, APL, Forth, Erlang, Eiffel and brainfuck.
What you are asking is similar to "I think I have learnt playing the keyboard well enough as an assistant in an orchestra, now how to create great music for ads or whatever to make some pocket money?".
This is a matter of creativity. The situation you describe is usually the other way around - people have ideas first and then learn whatever is necessary in order to realize their creativity, they don't start with a tool set and then look for ways to apply it. That is done by consultants. So may be you must become one?
Creativity can't be taught. No amount of tips is going to substitute for innate creativity, of any degree, because all tips are effective only when you have an idea to work with, which is the product of creativity. If you don't have it, in this case identifying a problem and imagining a suitable solution, just do what all/most successful companies do - copy, but add a tiny variation to claim that its different and your own.
All that said, my tip would be to keep eyes and mind open, and just build whatever you feel is right and release it. Do consider feedback but don't get discouraged by criticism. There are ample examples of how the most derided product ideas have ended up making quite a profit, not just in software, although luck had a major hand in their success.
But a more serious question is, how is this different from the hundreds of other CMS? I am not attacking, but just trying to understand what motivated this and why someone might choose this. As someone who would need a CMS in the near future I am interested in this genuinely.
Don't say RTFM because I did, but I didn't find anything like "why use vapid?". Is this point in the gist supposed to be the clincher?
> You only need to know HTML (plus CSS and JS to the extent that your design calls for it).
Secondly, one must not conflate belief in a supernatural entity such as god, or even devil, and practicing religion rife with rituals and dogma. Its a major philosophical blunder that has been happening, again, perpetuated by the ones who don't quite understand these things and are eager to appear science-y.
Thirdly, when these amateurs attempt to disprove existence of god, they are really simply falsifying the assertions made by religions. Look closely. They take specific quotes from the religion they are attacking and show the absurdity of it using logic. This is far from disproving existence of god. They can't disprove because the believers cannot prove, and if you press them about it, the true believers that is, they simply say its their gut feeling, which is fair.
Another thing I find amusing is how the god denouncers challenge the believers to ask their god to perform miracles, like, say, curing a fatally ill person, by praying. This is again their imagination of what god is and what god does, which is basically taken from the religion they are attacking. These lot never cease to amuse me.
Now, does it mean god exists? I personally don't think so (actually I don't care), and I can't justify it beyond saying its just my gut feeling, which is exactly equal and opposite of the believers'. Debating gut feelings is futile. We can go into depths of human mind to answer this, but its a labyrinth we haven't cracked yet; we only have theories, conjectures and corelations.
There are three questions that humans ponder that I find to be incredibly waste of intellect - does god exist, where did universe come from, what is life. I find them wasteful since its my firm belief (ha!) that we will only find more bread crumbs but never reach the destination. I would rather people engage their intellect in improving the real and tangible, aka society.
Personally, I have no problem if a smart person believes in a higher power, but there is nothing redeeming about smart people who follow rituals laid down by religion, and I reevaluate my view about their smartness when I find out. In the edge cases where unquestionably smart people such as scientists, mathematicians, musicians etc are religious, I simply separate their achievements from their philosophical bent, and pity them for the latter, for there is no reason to discard beautiful art and hard science they produced just because they light a candle at midnight and stand on their head for three hours to please their god because their scriptures instruct them and their priest approves it.
That's what happens when a topic grows from being a curiosity where dilettantes dabble into a proper field that is applied to solve problems. Granted, some of the developments can indeed be tedious and self indulgent, but otherwise this is the natural progression. Its sad and frustrating when people who ought to know better make such statements. Is it done to provoke a critical analysis, positive trolling if you will?
About the role of data scientist, I find it both amusing and disappointing that just about anyone with a three week MOOC gets to work in this field, who otherwise had never dealt with statistics before. I mean, statistics is a three year long grueling applied maths degree, and condensing it to three weeks is silly. It is actually in this way that it is similar to progamming job of the 90s (I don't know how it was in the 70's, I wasn't born yet). Just about anyone who could learn Java or VisualBasic, or the self taught cowboys who used C, ended up programming professionally. Actually it was not that bad, for coding is not as hard as its made to be, but that until they got sucker punched by the n squared complexity, to say the least, on a big data. Coding couldn't help them and they realized programming was more than learning to code and using some API's and system calls. (I was one of them in a way, when I started to code in C++ to model and simulate my mechanical engineering project, and it lead me to the path of enlightenment.) So, today's data scientists who are not bonafide statistics graduates or statisticians have it coming as well, whatever the analogue is, unless they are merely "data monkeys" in which case all is well and as expected.
As for this point you have highlighted, its just a comment, thinking out aloud, and not worthy of dissection or having a discussion about.
--
As for the topic, I am not sure how much of this is out of genuine concern for the users and how much is opportunistic jabs at the competitor's revenue. Will the jabs lead to hooks and upper cuts and eventual KO? IDK but it seems like we have a nice match on.
As the creator says in a post here, if it is intended to be used by beginners to play music they have already heard before, can't they simply play it from memory? Why do they need to struggle reading the notation? They already know the song. I mean, what's important for a musician, at any level, is to develop an ear (or mind?) for notes and rhythm; everything else is bells and whistles. So, can't beginners simply play by learning the black and white keys and their octave ranges?
If this is meant to be used to play songs previously unheard, thus by sight reading, then all music written in established notations must be mass translated to this notation. Not impossible, but just a tremendous amount of work, dare I say wasteful, overall. Investing some time to learn the existing notations instead has more ROI.
When I started playing guitar in college, and got introduced to western music (I learnt Carnatic violin as a schoolboy, the notation was mainly for notes aka 'svara'), I quickly gave up trying to sight read since not only was I not a professional, it was also much simpler, and more natural, to just play instead of multitasking. Note(ha!) that I can read music, but I can't do it in real time.
The second thing to keep in mind is that computer science/software engineering is basically like metallurgy - its purpose is to produce tools to make lives better, mostly for STEM people but also for laymen. So, while its perfectly alright to have some fun building sand castles in the foundry, it must be remembered that there is a greater purpose. An offshoot of this point is to pursue your interests in non "tech" field of your choice by getting away from computers every now and then; you never know from where you would get your ideas and where your ideas might have an application. As software guys we have an inherent freedom, much like artists, to explore other fields of knowledge, for it has benefits of many kinds. So avail it.
Automatic transmission is a godsend for developing countries like India where roads are too crowded, and filled with bad drivers with bad driving etiquette, and the start-stop driving happens for more than one reason. Its a shame that the market hasn't grown here, at least AFAIK. On the flip side, making it easy to drive might worsen the bad driving and make it accessible to even more incompetent people, as has happened with gearless scooters. It would be interesting to see how things unfold.
The companies are having a knee jerk reaction to the misuse by public, and like all KJR this is heading the wrong way. The fact that the companies whose primary aim it to maximize profits are taking it upon themselves to do these sort of ethically and legally questionable activities itself will lead to bad ramifications.
One obvious solution to controlling fake news is to remove the invisibility cloak of users by forcing them, by law, to use government issued ID to authenticate their accounts. This should make people more responsible before sharing misinformation. However, the fragility of technology that would lead to abusing authenticated user accounts is a big enough concern to put the onus on the companies.
I don't care if the companies "employs executives who are thoughtful about the task of making their platforms less toxic while protecting freedom of speech" or use third party authenticating sources, or some fancy AI/ML, but unless they are forced to abide by the laws, things will only worsen. Whether they like it or not, social media companies are now entangled in social and legal aspects and have to deal with all that comes with it. They have enjoyed exponential growth in profits, now its time to get real.
Why don't anyone think of incorporating at least the low hanging fruits for which developers have to migrate to a different language and transpile? What they do add is halfa$$ed, like const. It boggles my mind. I created an experimental framework called JEEP to remedy the sort of things I am ranting about. Jeep has been happening in several iterations since 2015 and before every iteration I checked if the latest standards would make the framework redundant but sadly the need for Jeep only intensified. Finally I posted the 2018 version here on Show and elsewhere and the response was staggering, in that nobody gave a f.ck. I am not bitter, no, really, but just amazed as to what people find interesting and flock to and what they ignore happily. Admittedly, the framework is quite unconventional and needs some reading and experimenting to be done in order to be fully appreciated, leave alone adopt, and it may even be advocating the sort of things that an average JavaScript developer is not interested in, but the sheer lack of even "what the f.ck is this $hit" was astounding. Some stats: collectively there has been over 3500 views but only 2 comments and a handful of likes, stars, upvotes etc. I am sure it will get attention eventually, hopefully sooner rather than later, its been just 10 days yet, but the initial response is something that has made me recaliberate the priority of an average JavaScript developer.
---
This is my third iteration of JEEP. I had thought of posting in 2017 after the second iteration but I am glad I got occupied elsewhere because the latest one is so much more better in all respects.
Are you looking for popular science variety? I ask because the topics you mentioned are best looked at, read in bits, and worked on in order to be understood. I can't fathom learning any of these by listening alone. I might pick up the jargon but nothing more useful. I would rather pick a humanities topic to listen to to keep the mind active, fresh and compensate for the tech fatigue which will eventually happen to us.
Alternatively, or if you insist, you could download and watch some OCW/MOOC lectures on these topics which can be a nice middle ground.
While glancing through, I didn't come across any mention of "intent to communicate". Not sure if any of the links have. It seems like too much is made out of the act of "dropping off things", and perceived as communication. While it is something that we all have done in high school (or at work, sheesh) while analysing the actions of our crush to check for signals, I am pretty sure it has no place in science.
Further, I don't think everything is "communityfiable". Like I said earlier, interesting conversations don't happen often, so stuff like following a person due to his one email upload or whatever, recommendations etc all seem a bit too much. Following would make sense if it is someone who uploads stuff often, but in this case anyone who does it would be breaching someone else's privacy unless the uploader is part of the conversation and everyone agrees to share it. But, again, as I said earlier, interesting conversations happen only once in a while.
That said, I remember how twitter was derided in the beginning as being a platform for people to share boring stuff that no one cares about, but it turned out to become something else, though not by design but only by chance, and is now quite successful.