Introduction

Main recommendation goes in the left sidebar. Other recommendations right.

Thursday, December 22, 2016

Writing, Translating.and Bookmarking


1. Writing

If you just want to write some text online, or even a book without a bright & glaring screen, consider this:
https://writer.bighugelabs.com/

Advantages

  • Dark background easy on eyes
  • Simple and easy to use
  • Free
  • Pro has more features and it's not too pricey
Of course, if you want a more powerful notes-taking free solution - Evernote can be your helper. But I'm not sure if Evernote has a more conducive or similar writing experience feature than above Writer though.

2. Translating

Google has done well again and again. In addition to the search and gmail, then the google map app and now google translate app. All free.  With Google translate app, you can speak into it and have the translation done, or even scan the foreign document with the app and then finger touch the unfamiliar word for the meaning, in addition to typing and write the word with the finger e.g. Chinese.


3. Bookmarking

Consider Pocket to save your bookmarks. Free, online bookmarking solution. Been around for quite sometime. It supports the popular browsers for computers and has mobile apps too.

Hope that helps :-)

Sunday, December 11, 2016

Choose and install a good Linux flavour

Which Linux to choose?

In brief, choose Ubuntu Mate

Ubuntu Mate Virtualbox screenshot

This post is meant to help you save time and effort by zooming into one or more Linux flavour that may be well worth your time installing. Some Linux derivatives may prove to be time consuming and even kind of waste of time if discarded after downloading and tested to be unsatisfactory. 

Choose Ubuntu

There are many Linux distros on the market. I suggest to save your time and consider Ubuntu-based straight off.  Reasons may include:
  • GUI may appear more professional, aesthetic or user-friendly
  • Stability and consistent
  • Core software may be easily updated
  • Perhaps the most comprehensive in terms of support both community & paid and extensive offerings - Cloud/Server/Desktop/Phone/Tablet/ioT/Core
  • Many flavours to choose from, perhaps too many for a newbie: https://www.ubuntu.com/download/ubuntu-flavours
Welcome Screenshot

Unless you already have a very specific need or reason to install certain flavour such as MythBuntu for MythTV based PVR, Edubuntu for educational classroom purposes or ubuntu Studio for multimedia content creation, Lubuntu for low-spec hardware, etc, otherwise I recommend this in the hope of saving your time in multiple downloading and testing: Ubuntu Mate - https://ubuntu-mate.org/.

Ubuntu Mate's Software Boutique

Ubuntu Mate seem to look good, has Software Boutique for software installation e.g Google Chrome, software updater for updates or ease of future maintenance - This can be an important consideration because of impermanence.

Conclusion

Choose Ubuntu Mate, if you system is good enough to support it, and even say an old notebook with more than 1GB ram e.g. 1GB ram is not too fast but probably still acceptable. Lesser than 1 GB ram slower machine, please consider Lubuntu. Be aware that Ubuntu Mate's appearance looks better and installs Chrome with Software Boutique but Lubuntu may only install Chromium via GUI.

Also worth mentioning are Fedora and Puppy Linux and PCLinuxOS. But I'd probably advise not to dwindle in these unless hardware drivers are issues with Ubuntu-based Linux. Remember my goal is to help beginners or anyone save time and effort, thus Ubuntu. Even the Redhat-backed Fedora does not seem to measure up to Ubuntu in its offerings.

How to install by creating a Live Usb drive after downloading the torrent/iso files?

If you have a Mac, this works: https://en.opensuse.org/SDB:Create_a_Live_USB_stick_using_Mac_OS_x.  
(May erase pendrive with Disk Utility with ExFat format and GUID Partition first.)

Creating the Live Usb from a Linux, follow something like this:  http://askubuntu.com/questions/372607/how-to-create-a-bootable-ubuntu-usb-flash-drive-from-terminal


Tuesday, June 28, 2016

Coding: The End?

I'm tired


It's good people work hard for the right livelihood! Having studied and trained in computer studies and programming, I know how fast and much this industry can and have changed. For a good and steady lifestyle, I hope people have a consistent, good-paying harmless work, without having to worry about making enough or when will be the next payout. Alas, this is not a work or industry that I wish anyone to take upon as a career or even hobby because of its fast-changing needs and development. While I'm glad people learn logic and systematic way of thinking, but there may be way too much change and dynamism to the point of restlessness - NOT likely something you want or can DO five, ten, twenty months/years down or in your retirement. One may not feel tired right now, but he should or will be.  Who is getting younger and should/can one compete with more and more quick-minded and talented teens? And progression of development in future may only get faster, more complex and harder. 

Another way of looking:  How many senior developers out there still have the energy, health and edge to compete with capable, young minds? Even if one still have a job despite senior discrimination at work, can one's hard work really justify both to others and in conscience the quality is at par with smart teens? And for how long? There will be a time when we will feel tired eventually. And by then, when we look back on the nature of our work, which ones are more valuable and easily replicable as a beneficial, useful skill - coding or art? Would you rather pass on beautiful art appreciation or historic javascript and html codes to your future generations?

Better out now than later


It is not about just learning anything to everything, but the question is what is worth learning. There's no lack of sites to learn from. We should be open-minded and always improve ourselves and our art. However, I don't think we should just learn anything anyone throw at us. Selection is crucial. In fact, it is so impertinent that we do so wisely. Otherwise we might be just reading useless texts, or worse picking up wrong and evil views. 

Another thing about Internet tutorials or courses I find wary and tiring is the incompleteness and readers are often left wondering what next after spending time learning or does this really lead to anywhere useful? Well, I can't say all online courses are the same, some may really deliver certain long-lasting beneficial results, but my current recommendation medium to learn from is books. Why? Briefly, possibility of gauging book quality and expectation from preview and reviews. Good books suitable for you may be classics and not be latest releases. Secondly, Use an online bookstore that fights paid, biased reviews like Amazon.


Good books of quality can be a really bargain for the  good information at an affordable price. In fact, one may be hard pressed to find a better deal for value. Use good books!

So what is the right stuffs to read? To each his own, but definitely choose wise and in good and wholesome readings and views free of contradictions, negativities or ignorance.

Recommendation



Therefore, I wholeheartedly recommend you or anyone for that matter to engage in a more steady and wholesome skill learning such as landscape painting or sculpturing as work or long term hobby. Of course, logic development is good, just doing it in a way that is beneficial and wholesome without being a mental baggage, tagged with a quick-expiration, high learning curve nature or work dread might be better. 
I feel coding is not what I want to pursue anymore because of the quick-changing nature of it. It is changing too fast for me, and can be too much pressure to deliver. I think it is better to spend time and effort on Art. It is more rewarding and directly beneficial to self and others. 

While my coding journey may not continue, I hope somehow my experience will help someone have a greater chance at better work, career and life :-)

The End?


So why am I pushing myself to code in the realm of uncertainties, only to enjoy it less and lesser? Perhaps my time to programming had run its course, as with everything a result of causes and conditions will come to end. Impermanence.

Take care



Note: Post contains amazon affiliate links.

Monday, June 20, 2016

Learn Javascript Free Course Online with Free Code Camp (Part 5)



Important: Follow an authentic, comprehensive course that CAN be broken down into quality bytes of minutes for practise each day!

There is not much point investing your time, effort and money in some endeavours going nowhere. Be productive and diligent. Have a worthy purpose - Be kind to others is of utmost importance.

Whether it is sketching, piano, writing, inkscape or programming, the amount of research just to get the right roadmap (book / course) is so crucial yet time-consuming. This simply cannot be compromised. As a self-learning adult, there is no other way to skip this essential process to success.

Quality is key.

“Pay as much attention to detail as possible" 

-somewhat a quote I learned from Marcello Barenghi, a photorealistic artist in his TV interview.

In the case of programming, freecodecamp roadmap is the one to follow I'd think. Yes you may follow other resources to supplement your learning but do stick to a good roadmap in the long run. Stay focused.

Please DON'T get caught up with hefty bootcamp($20k?) that may or may not serve you no more than just as a motivation crutch! Money may not come by easy, just think of how our parents, ancestors and how hard people are working for it. The luxuries we have, we owe it to the hard work of our parents and others. Be thrifty, don't waste it unnecessarily, spend wisely is all I'm saying.

I am slowing down and taking the time to go though some fundamentals again this time with You Don't Know JS series (my collection here) (was progressing in React learning, the next step after front-end and sass.) React is not so straightforward as JS i'd think, I find it a big jump in terms of syntax, design (the use of ES6 & classes) and setup (not a necessity but webpack and node.js may be used) compared to basic JS. Even the debugging or troubleshooting part when something is not working seem more challenging. However, learning React can be a significant milestone in being a full-stack JS web developer.


On Codepen:

Did you know that Codepen also support two cool features : Emmet and Multiple Cursors/Selections?? These time-saving tricks are pretty useful for heavy HTML and Sublime users. Under the html space in Codepen:

Type nav>ul>li*10 , and then TAB

Type p>lorem and TAB

Type div.showOnHover and TAB

Multiple selection for editing? Click anywhere, then click press command key (on a Mac) without release, click all the places you want to edit at the same time, then realise the command key and start typing away!

To embed a pen, click the embed button at the bottom right corner, copy the iframe/html codes and paste into html code page.







In addition to Learncode.academy, I also found another cool youtube channel - The Net Ninja with at least 18 playlists to learn from. And basically from what I watched, it's quite good. Some better, like the Asynchronous JS playlist. Both do not waste time in story-telling and dives fast into the topic.




Summary: I'd like to complete You Don't Know JS series (my collection here) while waiting for FreeCodeCamp to release the React materials in Spring. Let's see how it goes :-)

Enjoy and take care!

References / Related





Monday, February 8, 2016

Learn Javascript Free Course Online with Free Code Camp (Part 1)


Announcement: Last update 6th March 2016


Read I spent $110,000 on grad school, only to realize that the free online resources were actually better - Robb.



Listen to Mr Quincy Larson's podcast on FreeCodeCamp.

If you just browse through the important, systematic road map guide, you will see actually see how comprehensive or intensive it is! Freecodecamp puts the course at 2080 hours to complete. Realistically, I'ld think it is likely longer. 


Learn HTML, CSS, Javascript and some of its frameworks with the free online course : Free Code Camp - Become a software engineer: Front End, Back Data Visualisation, Back End, Full Stack Web Developer.

FreeCodeCamp.com (FCC) - Javascript and MORE - is my current number one recommendation for learning to code and become a front-end web and back-end developer for relevant jobs preparation, freelancing or coding for non-profits.

In my previous post Choose and learn a new programming language: Python, I indicated a preference for knowing and mapping in advance where and how the learning path will go. Don't think I know of a resource as good as FCC for python, but if you can survive on just free and organised ebook, videos and active support group - then Web2py is my definite recommendation for learning Python and all the way to web development  - Why use Web2py?.

If you must go for RoR, for learning web development for free Using Ruby on Rails, it's The Odin Project or (free for now, Udemy course - Ruby on Rails Tutorial for Complete Beginners) Comparison between the two: FCC over TOP or here . Long story short - unfortunately, it seems the founder has focused his energy on VikingCodeSchool rather than updating TOP.

All things considered, go for FCC for the long run!



So why Javascript/Freecodecamp?


For some obvious reasons.

One, it's popularity is undeniable as shown in below graph. That means the community support too.




Two, this post is inspired by the a really excellent resource found online. Sometimes, or more often than not, our learning can depend heavily on whether good resources or courses are available to us at the right time.

Just like Atom.io editor is a really good choice for code editing, or web2py web framework for learning python web frameworks, I find FreeCodeCamp.com (FCC) to be outstanding and refreshing as a learning platform to become a developer (for non-profit / look for a developer job). Best of all, all is free. Just the time and effort to learn and code.

There are quite a number of advantages for going with FreeCodeCamp, to name some:-

  1. Work towards non-profit or practical projects
  2. Extensive and Intensive: Complete and comprehensive path from novice to Front End Development Certification, Data Visualisation Certification, Back End Development Certification, Full Stack Development Certification
  3. Can be flexible and jump around
  4. Good, visual Step-by-Step tutorial guides (at least in the beginning)
  5. Interactive Coding Tutorial (at least in the beginning)
  6. Beginner friendly and ease of site navigation
  7. Can be a fun learning experience at least in the early stage e.g. cat references and fun range of positive hoorays.
  8. Big, strong community with  >223k campers,  >10 millions completed challenges,  >39k chatroom members and multiple chatrooms! And Twitch TV broadcast
  9. Pair programming concept
  10. Free and open source
  11. Friendly to both sexes
  12. Report of success stories, people getting job while learning
  13. On-going development / addition of materials
  14. NOT just simple javascript but covers more e.g. HTML, CSS, MongoDB, NodeJS etc.
  15. Systematic path to being a developer and even covers Coding Interview Preparation!
  16. Accountability of how many tasks covered and complex subject broken down into simpler steps may help overcome procrastination and break quitter habit

For this quality of comprehensiveness to intermediate or advanced developer course, I think one will be hard pressed to find a better one, and for FREE. Sure there are other resources, in terms of learning javascript or even looking for a developer job, but this may well be the best one to stay focus on.

Remember, to study one subject or language well, we normally have to scout for good resources, may have to spend money on it, take the time and effort to go through it, and then when problems arise, we have to search and look for solutions, one may still have to market or prepare oneself for interview to look for a job.

So far, the interactive coding experience, well-planned curriculum in a step by step progressive and systematic learning approach makes it a really pleasant and yet disciplined way to reach the goal of being a developer. FCC, it seemed, has remove much of our external obstacles to learn programming. Payment? No need because it is free. Disoriented? A full curriculum map to show you where you are. Lost in between? No worries, steps are available to help guide the completion of each learning topic. Stuck even after googling? Strong and active community to help you learn.




Because of the flexible nature of working on the codes as and when it suits an individual, as opposed to the way a physical bootcamps require the candidate to be on-site which means that he/she is preferably young and able to take long physical toil and mental stress, this got my vote too. This works for a busy, working adult does not mean it won't for someone serious enough to treat it like a full-time course.

My gratitude to FCC. It is perhaps what I am looking for these many years.  Yes, one may learn from Udemy or Udacity or other learning platforms, but the advantages outlined simply outweigh the competition in my opinion. Now a free, practical, flexible, professional, certifiable and complete course is available to anyone with internet access. And it may very well better those paid or costly courses offline or online out there!

To top it off, you may like the learning experience as much as I liked it. The affirmative, constructive cheer-ons upon every correct code submission, and the use of cute, loveable  kitty cat references to make it fun in the early stage.

Really, even Udacity job guarantee in one aspect will set you back by hundreds of dollars, but four certifications you get for free, provided of course you put in the time and effort to finish the assigned projects. To be fair, no job guarantee at FCC, but think about it, if one follow and complete the many projects, it's hard to deny one's capability and development skill as a coder, right? That I value to be more than just talk without substance. And not to forget its coding interview preparation alone takes 80 hours long. Altogether, the whole FCC syllabus or complete course path can take more than 2000 hours, so you get the idea the kind of skill level.

That's something about Free Code Camp learning experience that helps to learn the concepts that others may not offer, I'd think it is  the breaking down, easy explanation and interactive coding experience to illustrate the concepts being taught.

By the way, note that FCC community is huge! more than 99 thousands chat members  and more than 500 chatrooms. And there are local Facebook FCC groups across the world. Quite a large gathering for a project that started less than 500 days ago, don't you think? For example, here are eight of the many chatrooms available and a collection of more than 530 pages of challenges or information.

Perhaps the best part of it is the accountability or display tracking of one's progress of how many accomplished tasks. It is like a game or to-do list or daily journal to remind one of what to do next. Other than self-discipline, I think this is a really good way of keeping oneself on track instead of quitting easily or quickly.

I also like and appreciate the fact that one can view a camper's public page display of his or her points or number of completed challenges  (if he/she did not choose to hide) below his profile name) + brownies thanks received from others, then one can tell how advance his skills. I guess this is a big plus for potential employers - both job or freelance. At least there is a unit of measurement to tell a first glance how proficient a person is at Javascript or Web development. To transparency, equality and accountability!

What is different and special about Free Code Camp is a combination of positive aspects. The quality of the materials (after more than 100 challenges, I'm satisfied.). The active and large community. The challenges completed counter to help motivate oneself one step at a time. Comprehensive curriculum. Initial interactive coding experience allows students to focus on learning itself. Free to learn and complete with 4 attainable certifications, more than 2000 hours of learning. Supports and encourages non-profit and ladies to code causes. Works for both busy adults and full-timers. During and after certifications resources - interview preparation, linkedin profile and ready github projects for others to view.



While I took other paid online courses before, what is impressive is that FCC does it better than them, and for free! This outstanding learning platform makes me wonder about people spending so much money on stuffs that has little or no value or return, or worse than complete waste of time and effort, or so much debt before even getting a job and earning anything! This is not about telling you to quit school out of sheer impulse because there are obviously benefits to the education system but more of taking a realistic take on your future life. Read I spent $110,000 on grad school, only to realize that the free online resources were actually better.


There is no need to hunt and figure where and what books, courses, technologies and frameworks to learn from, other than data visualisation learning modules that are not ready yet or for projects assignments. But the map is a clear layout of what is to be done and learn to complete the objective to being a developer. The Front end and back end development two certifications learning materials are complete as far as I know. Even without data visualisation and full stack developer, one is still in pretty good standing, I would think. I read of people being hired before completing the whole curriculum. (No one has completed the whole course yet to the best of my knowledge). Therefore, FCC is still my top recommendation for learning to code and be a developer, rather than confuse or distract with the many options available out there. Not many, if any, will provide a path as comprehensive and cost-effective as FCC, I believe.

Perhaps there are really good, free coding courses that may be on par with FCC, but none so far I know of yet, imho. Don't overlook or slight FCC because it's free. Go through and seriously take the time to learn, I believe you too can be a skilled and professional web developer!

*Data Visualisation Module still in progress construction as of 11 Feb 2016 but certification should be attainable upon completion of whatever is ready to work through e.g projects. According to here, React, Sass and D3 challenges will be released in Spring 2016. This is one of the good stuffs about FCC,  on-going development/ addition of materials. These two posts and Twitch FCC may give you an idea how active Freecodecamp is going - Summits Ahead and Tinkering Toward Simplicity.

Conclusion


It's been more than two weeks since joining with FCC, and I am pretty satisfied and appreciative of it. Even paid or professional courses may not compare to its quality and extensiveness of deliverance for web development and code learning for certification, assignments and non-profits projects experience. And for the price of: Free!

To re-iterate the point, this may or should well be the free and quality online course what some like me had been searching for all these years. To date, is there any such free online coding course that is this good that I know or came across? I do not think so. It is this good!!

Even if you are not into IT jobs or field, it can be a good playground for logic training and earning certifications or experience for increasing your market value as a developer.

Definitely recommended: FreeCodeCamp.com (FCC)

Just head over to FreeCodeCamp, sign up and see for yourself :)

Testimonials or success stories? Go here.

This may be by far my best discovered gem of a learning platform for learning to code or become a web developer or even getting a programming job starting from scratch! Just look at the curriculum, and take some lessons to test it out free.

Have fun learning and be kind!

Thank you FCC - its founder Mr. Quincy Larson and other contributors!

Good luck!

References / resources



Sunday, January 24, 2016

Why use Web2py?


Announcement


Last update: 6th March 2016

Unless you must program in Python, my latest and best recommendation go to FreeCodeCamp, read more here.

Download free Web2py ebook  and/or free Web2py Vimeo Album Videos

There is also a free Udemy course on Python and Web2py that is still under development as of this writing.

As Massimo Di Pierro (original author of Web2py) said, " the main advantage/objective of web2py framework is to be the easiest and fastest to develop web applications".





Friendly and ease of use


Web2py has a friendly, approachable outlook and feel to it e.g. GUI environment and web2py simple examples and more. There is a lesser learning curve and so much easier to deploy. So fast it took me less than two hours to run a hello world app site and deploy to python anywhere, learn and see how fast you can do it from killer web development. In fact, web2py is the only one that I got deployed after spending some tinkering with Django and Flask too. When it comes to the complexity of web frameworks, makes one wonder is it not the purpose of technological advancement to make life easier and simpler rather than not? This is straightforward, I think, there is much to learn before one can even do serious Django proper. Flask is easier than Django, but gets complex soon. Web2py is the simplest to get started quickly for me so far, but that does not mean it cannot be used for production. It is so friendly that running the server, file editing and web page views can all be done from the graphical interface, like an all in one package - that in itself, my friend, is in a league of its own, I feel.  That means you can even edit the codes from the desktop graphical interface without hunting high and low for a good and hopefully free code editor. In case you are wondering, my recommendation goes to the free Atom.io code editor that comes with free manual ebook.


Of course, when it comes to coding, one is more likely to fire up their favorite editor to modify the web2py files. Your choice.

Why is web2py important?


As a learning ground to pick up web frameworks. There is perhaps a gap between finishing a python beginner course and web framework coding. Web2py can cover the basics, yet not an overly simplistic framework to the point of just being a play toy. I like the fact that it can be used for learning easily, and expanded to become more advanced, or bring the same concepts over to other more 'intimidating' full-fledged frameworks. For those who could NOT seem to grasp or find web framework too tough to learn, then you may owe it to yourself to discover the importance of learning from the ground up the easy way, and work yourself up in steps. Even if Web2py does not support Python 3, still I consider it a good framework both for learning and production.



For learning Python and all the way to coding developing framework for deploying web applications


Though Django and Flask are much more popular than Web2py and seemingly learning Web2py would be taking a longer route to web development mastery, this may not be the case. Hear me out, you see web2py really may be deployed much faster, kind of like what I'd think a seasoned web framework made easy for others should be. Some of us may want to get productive with a site to show for it quickly, novice can get to see a website built to help support their confidence and an idea what they may accomplish in a short span of time. Also, Web2py can support module packages.  Further, the concepts you learn here may help you understand other frameworks too, as a stepping stone to Flask and Django. To top it off, do you know that there are free web2py ebook documentation that covers from python to web2py and lengthy web2py 30 videos album that can be watched and downloaded free? Personally, I find the free ebook documentation, videos, active support and the productive framework, even GUI based, to be commendable, and the only one so.

Bridging the Gap from python basics and web frameworks


I'm not sure about you but I find there is a gap or difference between learning python syntax for basic programming to understanding MVC web frameworks. When looking up stack exchange, stackoverflow or the likes, those who replied in regards to the framework questions are normally intermediate to advanced in their gameplay. But how did they get there? And is everyone cut out to learn the same way as they did? Is there a good and simpler, gentler way to learn a python web framework? These are basic, important questions I think newcomers should be asking or shown first before a bunch of advanced instructions, manuals or solutions. Just like the basic of programming starts with conquering with the smallest of tasks in bits then slowly progressing to more specialised topics, I think it is the same with learning web frameworks too. And guess what, the easiest web framework I found is web2py. Not easy like small framework like Flask, but easy like graphical interface, coding in the browser and learning from the ground up and even way up to advanced integration with other python python modules. Thanks to Massimo and other developers for the open source Web2py. Though there are other web framework solutions out there, but Web2py is a free complete, documented with free resources (ebook and web videos) and support, and beginner-friendly solution - this, I think is a hard deal to beat.

Support?


Active web2py Google Group forum here. For documentation, online manual and pdf download available hereKiller Web Development has done a good job of helping to learn (though somewhat outdated). Web2py is also covered in Book 2 of Realpython / Crash course in Web2py by Michael Herman.

Learning Path Recommendation?

Oh, rather than be distracted by the many, perhaps the best way is to just stick with the path recommended by Web2py.com. 

Conclusion


If you want to learn python and web development for free, this may be the one of the best option available :- Web2py ebook .  Then followed by the free Web2py Vimeo Album

Unconvinced? Why not hop over to a Step by Step Tutorial (The Basics) and glance through the images.


References:







Be kind.

Sunday, January 17, 2016

R and Python


Announcement   

25 January 2016: Machine Learning with R free ebook. Get it free in less than 5 hours.

22 January 2016: R Machine Learning Essentials - Grab free in less than than 24 hours here 

18 January 2016: Building Machine Learning Systems With Python eBook- Grab it free while offer runs out in less than 21 hours! Kindle version, not free (affiliate link) is also available on Amazon, though to be honest, unfortunately the reviews are not too positive.

Read more here about Python vs R for machine learning.

For jobseekers who gravitate towards Machine learning, here's Udacity's Nanodegree Plus - Machine Learning - Get hired guaranteed, conditions apply.

---------------------------------------------------------------------------------

In my previous post on learning a new programming language: Python,  Data analyst is mentioned or recommended.

Programming had progressed and become more complex over the years, may no longer be just about compiling a COBOL file and expects an simple output or just Msgbox(), lists and writing to database in Visual basics. It can still be but more people are looking for more than one skill set to filter out the applicants, understandably and sadly so. I may be wrong, there were challenges and hardships in the past, modern times too has its list of it - some overlapping and new I suppose. People are expected to know so much more before they will be considered for intermediate , higher position.

Nowadays, to be a decent a programmer, in my opinion, one may have to dabble in a few technologies to be proficient. For example, writing and sharing decent projects on Github, and then perhaps deploying them on another platform can be a an important and direct way to telling employers or clients what you had done. Another example is the the use code editors or IDE, in order to be a coder, one most likely has to be familiar with certain code editor of his preference, even testing and configuring for one that works and satisfy his requirements can be time-consuming before even beginning to code. Of course, some may just prefer to just code in basic notepad/Vi/Emacs. So far, my choice is Atom editor and SublimeText could be my next best choice. Online editor, I would recommend giving Cloud9 a shot.

While learning Python, R kept popping up while browsing the websites. Basically, R programming seem 'tailored and focused' on data analysis. Python is a general purpose, syntactically clean language that can also do data analysis e.g. Pandas, but looks like R is so geared towards mathematics, statistics and existing packages for this purpose. More here on Quora if you are interested.

Should you learning R, python or both?

I guess it all depends on what you want to accomplish. Say for example, if you just want to get hired to do Machine Learning, then you might as well enroll in Machine Learning Engineer Nanodegree Plus, which may not focus solely on R. If you are mathematically competent with a curious tendency to focus and explore data and graphs, then R programming can be your playground. I would think a coder who may have a general interest in programming, unsure about what his future or interest, then Python can be a good choice that can develop in different directions, ranging from web development, data analysis to database administration. Of course, those with the aptitude can do both, then again, consider if you are overloading and distracting yourself from being skilful in one, especially for a novice programmer. Or learn R after Python. To each his own.

Personally, I like to research and map out what are the possibilities and where it goes. I prefer Python official site's design, outlook and content to R-project website for one.





Above are two graphs to help understand how Python and R compare under development tools.


Conclusion


If you ==  mathematically or statistically inclined towards data analysis or machine learning:
    Learn R and/or Python
else:
    Learn Python


In any case,  if you wish to learn more about R programming, below can be good courses or resources to get you started.

Courses


Free and paid: 13 R programming related courses - Datacamp

Free -  R Basics - R programming  introduction - Udemy

Free - Data Analysis with R - Udacity

Be kind and best wishes.

Saturday, December 12, 2015

Choose and learn a new programming language: Python


Last Update 7th April March 2016

Announcement:


Please read my later post and recommendation: Learn Javascript Free Course Online with Free Code Camp


  • Numerous Python-related resources here by Luis Solis.
  • Read Atom Flight Manual and download ebook formats here. Atom is a free, open source code editor looks more modern than some, with packages and themes customisable capability.

Web Development with Django Cookbook

Free at  https://www.packtpub.com/packt/offers/free-learning in less than 17 hours.

------------------------------------------------------------------------------------------

Are you a programmer or someone looking to learn a new programming language?

Given the numerous choices, it can be daunting to find the right one.

And there can be a number of reasons and arguments for why this over that, which is not the purpose of this blog to provide a detailed comparisons of them.

However, to help most people decide quickly what they can or may learn generally speaking, this may be possible.

Having dabbled in programming before, I would advise to go for a higher level language for the novice and even become an expert in that e.g Python and Javascript. Why? Because you don't want to spend a long time writing long lines of codes, debugging and stressing yourself out e.g. Assembly language, C. 

As you can see from the graph below, Java is by far the most popular language. However, unless you are young and quick to learn and memorise, a good coder overall, probably it's not a good idea to start with Java. It is not as beginner friendly as some others in my opinion. Then again, do you need to be the best coder in the world to survive?

The languages seemed to be converging over the years, so to make things easier on yourself, why not choose a high level, open source, popular language that is well documented with resources like Python?

Programming language popularity trends for  five languages: Javascript, python, C, C++ and Java. (Credited and thanks to Google Trends)

Programming language popularity trends 2004 onwards to Dec 2015 
Programming language popularity trends Dec 2014 onwards to Dec 2015

My recommendation goes to Python or Javascript instead.

Both are well supported with resources and are popular with the masses. If you do decide to pursue the Javascript path, you may consider taking Senior Web Developer Nanodegree created by Udacity and Google, or start with these free Javascript books or resources here.  In this post, I will discuss/share mostly Python resources in particular. Another reason I like Python is the professional, well organised and friendly-looking site with easy navigation of available abundant information. When choosing a language, you also want convenient support and resources in different aspects, this can be important soon after you start coding and needs help debugging or troubleshooting. Do not take this for granted.

If you wish to learn Javascript instead, please check out this post here:-
Learn javascript free course online (Recommended)

Here take a look at another chart with Ruby - Javascript - Java - Python - PHP, only this time I clicked the Compare to category (programming), and guess which is the only one with an evident steady increase in interest for the past two years?

Only Python has a healthy, steady interest increase for the past few years.

What can you use Python for?

A number of uses apparently including: Web and internet development, building networking applications, scientific and numeric computing such as the Python for data analysis book below, desktop GUIs, education and software development as mentioned here on Python site with more details. Of course, learning Python well may help look for a well-paying jobs and freelancing. If you are wondering which organisations use Python, here's a list.

Learning Python

I like to go for quality, comprehensiveness, practical or projects building, frequent updates, reasonably affordable courses and interesting if possible. To some like me, good quality resources may matter a lot in determining whether to pursue a particular language or not. You might have read people giving up learning programming language because a various reasons such as boring course or book, couldn't find the right next course or skipped over because of the forbidding high course fee. Therefore, I like to map out a possible overview of what might happen next. It does seem Realpython may meet my expectations. Udacity Nanodegrees too.

I also like to map out and consider the possibilities (hopefully not overthink the process) of a learning path, from basics to intermediate and advanced, and where may one go next.I prefer not to look all over the places for quality and systematic educational learning experience;  I hope this is not just for myself but for any reader who may stumble upon this post, because this may help someone save his or her time doing and benefit from the research and keep from sidetracking from the main goal of learning a programming language that may help them in the future long run. This may be important considering the amount of time one may spend researching before even taking the first action step to programming, much like looking for the right place and information about what schools, institutions or courses are offered and which are worth taking leading to what possibilities. 

1. Why use Web2py?
I recommend this if you just want to go Python, learn the basics and all the way to web development. It is not a course, but it is complete with digital ebook, organised vimeo videos, GUI web framework installation package and active support group, all for free. It is really a good learning and coding ground, plus you get to showcase and build site/s driven by python web development framework. This is perhaps my second best recommendation for learning online coding after Freecodecamp course which focus on HTML,CSS, Javascript and its frameworks that comes with free certifications, complete with challenges, personal and non-profit projects, active community support and involves more than ~2000 hours of to complete, with report of hundreds of people already gotten software engineering jobs. Read Learn Javascript Free Course Online with Free Code Camp.

 2. Realpython
Use Promo Code while it lasts: 40OFF4KS for three courses (Introduction, Web Development and Advanced Web Development with Django) for $20 only, $40 less.
I like the concept that they want to keep things practical and interesting, plus they can cover all three aspects without having the student wondering what next after the basics, focused on Python and related. You may want to view/download a copy of the sample chapter here to see if the style is your cup of tea before diving in. This may be a good deal if you want to freelance, or as a stepping board to other specialisation.

Update 19 December 2015:
I understand from Michael Herman, one of the authors of Realpython, that the second course has three large projects and the third is entirely devoted to building a large e-commer projects; that the courses are geared towards preparing students become freelancers with actual cases. Basically, one can expect at least FOUR projects for portfolio building, which can be good because people may not need a plethora of eye-catching projects to be hired, just the popular common requirements.


3. Python Tutorial: Python Network Programming - Build 7 Apps (Optional depending on your interest level)
With over 140 lectures and 14 hours of content, overwhelming good reviews, frequent updates claim and the fact that this is the only one or few resources that provide a systematic guide to learning and practically building 7 networking applications that can enhance one's understanding, experience and portfolio of Python, this is a bargain, don't you think? This is more like going for a niche expertise too, which is an advantage. Redeem Code while it last: FULLCOURSE15 for $15 to get it far less than the usual price. You may also wait for possible $10 promotions. Bear in mind Python Network Programming may be an uncommon learning resource in its way, but know that this is mainly geared towards networking, so if this is not your forte or interest at all, then perhaps it's best not to start this path. A word of advice if this is your choice: Do good only, power comes with responsibilities.

Note: Above are two paid resources that may be considered to learn Python, however, if you decide on taking only free resources, then Udacity also has some python courses (both free and paid Nanodegree) to help you take off. In fact, Google & Udacity has created free courses covering from Web development, Cloud to others (only some are Python related). Nanodegrees that may have Python components include Data Analyst and Full Stack Web Developer. And Nanodegrees can be costly at $200/month, even at 1/2 tuition back by graduation within 12 months. Having said that, there is still one particular free course I like to bring to your attention - Intro to computer science Build a search engine and a social network (Beginner), this may be an interesting and valuable addition to your experience and CV.

Update 14 January 2016:
Udacity released a Nanodegree Plus - Get a job Guaranteed!, within 6 months or 100% tuition back (Only available in U.S. now, read more and look for fine prints). That sounds really good considering how many established or professional courses offline or online can make such a guarantee. To be fair, this is probably the best economical and professional deal or offer for an average IT novice. If you are someone with the drive and determination to commit into Udacity courses, take a serious look, even when you are enrolled with other campus or online courses. But my guess would be, you are probably better off focusing your time solely on completing Udacity courses.

3. Once done with the basics e.g. with RealPython/Udacity the next steps (for depth or specialisations) could be, to separate yourself from the majority competition:

4. Highly Recommended: Again, if you like the pursuing a professional paid courses that is co-created by Google, getting Nanodegree such as Data Analyst and Full Stack Web Developer may be a good idea that might increase your chances of employment or freelancing, though it may not be focused on Python like RealPython. In fact, this may be the best idea for jobseekers to pursue considering that:

  • All the content in Nanodegrees is actually free. 
  • All the previous work in the free courses will be transferred over to the paid enrolment
  • Though may be possible to complete all the the Nanodegree in as fast as minimum two months just to submit projects to get credentials, but probably six months is 'what they say'.
  • Complete Nanodegree in say,. six months  and get 1/2 of tuition back at usual fee of $200/month, so effectively Nanodegree may cost for example USD$600. That could be reasonably affordable to some for quality materials, coaching, and after support, including job placement process, or even the chance to be hired by Udacity
  • Even if you do not enroll for the paid course and just learn from the free content, you can still build an impressive portfolios of projects, which actually are what many are looking for to hire, be it jobs employers or freelance contracts.
But know that none of the Nanodegrees seem to be fully focused on Python only. They require you to learn other topics as well, thus making it seem overwhelming or easy to detract from being focused on Python only. Of course, you can select the programs highly relevant to Python only, but I don't think there is one Nanodegree available now like RealPython's courses that concentrates on Python solely from basics to advanced. Personally, I like to stay focused on the goal on learning one language first for a purpose - one thing at a time, and search resources high and low for completion. To each his own.

5. Github and/or hardware programming. Of course, writing and contributing to open source projects e.g. Github, first with your own projects, is definitely recommended along the way. Let's say one has learned all the way up to advanced topics, then it is absolutely advantageous or essential to have one or more projects in portfolio to give others an idea your work and potential. This is just common sense. Also, do you like to get creative and program small hardware to do simple things? There is Arduino and Raspberry Pi that can help you get started, it can be as practical as you make it to be - be imaginative and do projects that help others!

Which specialisation

Obviously, this may vary according to the disposition of the individuals. One should almost always take the course that he is most interested or passionate about, because when it comes to career or programming life, one year is not long at all, given the amount of knowledge and experience he has to garner before an average person can be considered proficient in the language, and also depending on his learning capabilities. For example, do you like to program games? Do you see yourself developing  advanced websites? Do you like to enhance website/software performance, making them run faster without problems? Do you like testing applications to ensure they are running smoothly? Or do you like data analysis and researching to the point of deriving quality results and arriving at the right conclusive decisions? Or do you not have an idea what you should do at all, then perhaps in this case below chart may give you an idea. Nevertheless, pursue your interest to avoid doing what you dislike in the long run!

Google_Trends_-_Web_Search_interest__data_analyst__web_developer__software_developer_-_Worldwide__2004_-_present

Data Analyst looks to pick up speed and interest even more than software developer and web developer. All performed better than the average Jobs and Education level. Whether it's one or the other, there is a market for it. Honestly, data analyst can be a better choice for jobs hunting than freelancing, while web and software development seem more versatile in both markets. Remember, what matters is your interest too.

Free Python Resources

If you are determined, have a programming background, and feel comfortable enough to work through materials that might be less cohesive overall, then feel free to give these free resources a shot.  


Python Cookbook (Third Edition) Physical Book / Free Online Version




Python Playground (Intermediate)



Fluent Python (Intermediate/Advanced)

More Free Resources 

Get Started With Github
https://www.udemy.com/git-started-with-github
Numerous Python Books and Resources 
http://pythonbooks.revolunet.com
Talk Python to Me Podcast
http://talkpython.fm
Udacity Python Related Courses (both paid and free)
https://www.udacity.com/courses/all?technology=python
A Guide To Python's Magic Methods
http://www.rafekettler.com/magicmethods.html

Not to forget, go here for Python job hunting advice if you are ready.

Conclusion: Why Python?

For those who can invest e.g. $600, Udacity's Nanodegree (Get a job Guaranteed! Conditions apply) is the way to go by completing all their free content and projects first and then enroll to maximise your two months coaching and learning experience and submit the projects to earn credentials. Good for jobs hunting, including Udacity jobs. Nanodegree's after course support might just turn out to be very helpful in your career advancement or job hunt with job-ready project portfolio.

For those who wish to take free quality courses by experts just to build portfolio of projects for both jobs and freelancing, Udacity is also the way to go.  You may like this idea as well!

Free Web2py ebook, videos, GUI learning and development platform and active support is my recommended, straight way to learn python and all the way to web development.

For those who wish for an alternative learning course that focus purely on python Basics, web development including  Flask, web2py and Django, RealPython 3 ebooks guide can be a good deal at $20/60. Perhaps you like the focus approach of covering from basics to advanced web development.

On a side-note: I also included AngularJS and ASP.NET for fair comparison sake, turns out AngularJS is really popular! (Learn AngularJS here with free book, youtube video and magazine, or paid Udemy course here, and free Recipes with Angular.JS online.)


For those who wish to focus on Python Networking, Python TutorialPython Network Programming - Build 7 Apps can be good, hard deal to find. Just be ethical.

Or simply just jump right to this page with numerous free Python and related books or resources as listed by Revolunet.com and start learning from whichever you fancy.

Whichever path you undertake, be really skilful and not just get academic credentials, because that is what others are looking for when we apply for contracts or jobs.

Most importantly, be kind to others.

Good Luck!

Note: Above include affiliate links.

Update 25 February 2016:

Offline Code Editors / IDEs are indispensable to programmers. After tinkering and checking out for the best free or open source solutions preferably to code python and/or html/css/javascript, helpfully this will help save you time and effort or money.  Oh my, I have tested quite some editors to find find the best painless, quick and easy solutions, free or the next best to just start learn coding. Just goggling, glancing or evaluation and setting up of the different IDE or editors (e.g. Vim, Emacs, Textmate, LiClipse - not free and I didn't evaluate, etc) may merit a whole research article itself, but that may detract from the main purpose of just learning programming. So to cut to the chase,

My top Mac App choice is:

Atom.io (preferred)
Free, open source and looks like a modern version of Emacs which can be time consuming or difficult to configure. Just need atom-runner package to run code with control+r and autocomplete-python to complete commands and variables with tab or enter. Cmd+Shift+P, Script Run Options to configure for path to running Python3. Windows version available as well. For windows, perhaps Visual Studio may also be a good, fast and free option. If you are sure you want a free and good solution just for Python programming and won't be using web development, then Pycharm free community edition may be your best option.  Atom interface feel somewhat similar to Sublime Text. Read Atom Flight Manual and download ebook formats here. Good documentation, and growing community presence are all good factors to consider long term using an editor. Plus it's free, unlike some costly annual subscriptions,  and authored/backed by the developer of Github.

Bracket.io
Haven't got to test it out fully yet. But seem a popular choice after Atom for HTML, CSS and Javascript only. Modern,  free, open source code editor.

Sublime Text
Sublime Text seemed to be a promising potential here, but note that Sublime Text 3 is not freeware nor specify a fixed duration for evaluation use. Read good recommendations, after Pycharm and cheaper too. You may like the experience. Albeit someone commented wondering about the whereabouts of the ST developer and when will be the next development release or so.

Eclipse + Pydev / Enthought Canopy
Both are free to download. Users interface and experience preference may be differ and subjective though.

Online Code Editor:
Codepen.io
Good online playground for HTML, CSS and Javascript, free hosting and blogging.

Jsbin.com
Just to tinker around HTML,CSS and Javascript programs online quickly.

Cloud9
Free for basic use. Supports more than 100 languages. Click Run the first time and F5 to run again.  Can easily clone Github Repository, edit and run. Like the simplicity and support for Django. If you want to save yourself the hassle of setting up a local code editor, then c9 is quite a deal. Though I'm satisfied with the ease of Atom for now. Let's say you want to write a book or tutorial about Django and not want to cover the absolute basics of editors but you have to show an easy way to just edit and run the programs without losing the beginners, then c9 can be a good choice.

Host and Run Python Project:
Pythonanywhere / Heroku
Free for basic project hosting with limitations on Pythonanywhere. A free Python/Django deployment platform can be Heroku. Django Girls tutorial here.

References