Introduction

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

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


Tuesday, November 24, 2015

Blogspot Blog Setup





Are you a beginner blogger or someone who just want to start blogging quickly with ease?

Considering the merits between Blogger or Wordpress For Beginners?

Or already decided to have a blogspot setup?

You just started a blogspot blog site, but wonder why your published pages are not showing up, or you like to incorporate third party HTML/Javascript or Facebook Page Badge and easily let your visitors click a Facebook Like and Share button?

How to start blogging in blogspot discusses some common,simple problems you may  encounter and solution and how to link blogspot to Facebook are shown with simple clear screenshots to guide you.

The site http://howtostartablogfree.blogspot.my does not cover the to absolute basics such as clicking around to get the blogspot sub-domain name which may be too simplistic for most. But it should cover most or some of the frequent or common problems or wish-list encountered when you you start a blogspot blog.

For some who is still unsure between Blogspot or Wordpress, read on to decide for you which is better - Blogspot or Wordpress? This is based on the author's own overall personal evaluation of simplicity, pricing (both are free), google analytics, potential earnings, and SEO. In a nutshell, generally speaking, take Blogger. 

Below are screenshots of the Blogger / Blogspot how-tos or quick fix tutorials.












Disclaimer:  Disclaimer:  This is one of my other blogspot sites.  However, this should not be in any way intended for self-praise or showing off myself. This recommendation is for those who may be interested in starting a blog free.

Monday, November 23, 2015

Why Evernote?

Stack


Some people love it. Some not so much. Others took a few times of revisiting before taking off. I think the chief reason being our need or style at that particular time and situation.

Clearly, some peoples’ life do not need or prefer excessive or much documentation, organisation of information or handles loads of stuffs including words and images. On the other hand, those with the mindset of collecting and storing organised information for either personal or work purposes can appreciate the usefulness of this really neat application!

Not only is it creatively designed, it is made for easy usage and scalable to more advance ways of noting. Moreover, the cross platform versatility and ability to be used in different ways such as helper app and extensions are really easing our fingertips convenience for notes taking.

Evernote is one of those applications that until one uses it, one may not realise what he or she is missing out on. Granted not everyone needs Evernote as a notebook or even much organisational skill to survive, but having a knack for keeping things in order is almost a definite benefit, an advantage over not, right? Moreover, anyone who had made notes, with Evernote or not though it had made it easier and inspire more people to do so, had made an impact in his or her own way come to think about it: A thought can be a cause. The writing on a note the consequence. 




For Organisation and Noting 
  • Create a note
  • Too many notes, need to organise so create notebooks to put notes into accordingly. 
  • Too many notebooks, so stack up all the relevant notebooks together to create a stack or stacks to even further organise for uncluttered and simple top view.
  • There are relevant various topics and subjects across the notebooks and stacks, but you want to group across all relevant subjects and topics together, so you may use tags in addition to your existing notebooks and stacks OR use tags exclusively for hierarchical organisation. Tags can be very powerful. Use ++ for most important stuffs. Tags can be listed in order of importance from hashtags, periods and then numbers.
  • Use shortcuts and default notebooks. For simple and immediate access upon launching Evernote.
  • Use Reminders to remind you of the note or task at a certain later date. For example, to continue a certain writing later.
  • Use Keyboard shortcuts e.g. CMD+OPTION+2 for notebooks and stacks overviews.
  • Use invert colours e.g CMD+OPTION+CONTROL+8 when typing more than a paragraph. iOS is pressing Home button three times. This is useful for long hours of screen stare.
  • Use full screen in typing mood.
  • Use Sidebar Options for quick overview of all
  • Fair and reasonable price model
  • Use Evernote for blogging with Postach.io (paid)
  • Email into Evernote with @notebooks and #hashtags (paid?)
  • Evernote with Evernote App for Web Clippings, there is also a Safari Extension for Evernote
  • Develop a love for organising information, and it may well surprise how much it helped your various aspects of life, from writing to job and personal accountability. And Evernote may introduce a better way of doing it, making it fun and painless, even adding another dimension of mastering it through search tags, social media integration and more. Right mouse click a note, click on More Sharing and Copy Public Link for sharing the note with others on the internet.
  • Use Radiotunes or iTunes Radio when typing away 
  • Evernote has a basic monthly limit, which can act as a motivator for the writer to reach as a target, which in turn can be source for inspiration to write! Weird, but why not give it a shot?
  • Neat Interface. Evernote expanded card view has pictures overview too, looks cool!

Affordability

One more good reason why to use Evernote, simply because of the price model. It’s free for basic usage of up to 60MB/month, which is fair and quite comfortable for less size-intensive users such as writers. And only pays if one need to scale up considerably, and at a low monthly price even so. Considering someone who starts small and eventually built up to a point where he requires a lot more, it is likely and fair to say that he may already have earned his way to pay for the reasonably small monthly fee, I hope you agree with the logic here. So why not use Evernote as a free service as much as one wishes and even when it doesn’t hit the limit, it will still remain a free service you. That sounds pretty fair to me, just as I would applaud google for offering gmail and many other free services to the public.

Alternative?
Yes, there are Onenote, Google Keep, and iCloud Notes. These are all professional, reliable and free services.

Backup?
Yes, you can backup your evernotes for restore later. Or just tag those few notes as 'important', and manually copy each over to Onenote.

How many new writers already know that a notebook can be so useful and important? 

Evernote can be used as a journal. I also added the daily or important ones to a quick shortcut list that appeared on the left conveniently as a reminder & bookmarks of interesting stuffs. 

Once a writer or blogger start using a notebook intensively,  I'ld imagine it gets overwhelming and cluttered really fast. That's why I appreciate the notebooks feature (a collection of notes), and even stacking of notebooks. To top it off, there is also a search function to look for the needle in a haystack. As if that's not enough, and it may won't be after many months and years, it is also a good practise to start tagging as a habit to better organise and search.

Tag

Of course some might love the traditional way of using physical notebooks, I totally get it. Then again, in this modern age where internet and social media is so prevalent, how or should a writer ignore and not save easily into a digital notebook interesting bits and pieces of digital shares and information that may inspire and contribute to his writings?

Whatever works for you :)

Friday, April 24, 2015

Three Good And Free Resources For Your Graphics and Photo Editing Needs: Inkscape, Skitch App and Pixlr Editor


Hello World from T.S.L.!





Last update: 1st April 2016



Don't have a graphics editing tool?

Give Inkscape a shot if you want some vector graphics done with a free/open-source software! Take up an udemy course if you want to learn Inkscape in systematic, video tutorial style. I have taken this course before so I know this course is fine for learning Inkscape. Please note that while Inkscape is free, the Udemy course is not. More Inkscape resources can be found here. An advice would be, Inkscape like any other artistic endeavours,  usually takes time and effort, so if this is not your strong interest or forte, then perhaps dedicate your time and attention on some other good skill development.
Also, checkout this free Youtube playlist of 200 videos -  Popular videos: Inkscape and drawing starting with below first video:



Also, if you like 3D modelling and animation, instead, then Blender is the way to go! Though like Inkscape course , the Udemy course here for blender 3D  is also not free. All the best.

You want some graphics modifications done fast and quick online?

Give either of these two free resources a shot!

Canva is a fast and easy way to use your own and some free graphics to edit for certain fixed popular formats. And fast too. It looks good as well It's online and capable of saving your work!.You can also purchase more professional graphics at about $1 each.

Skitch by Evernote(as recommended in this post Why Evernote?), can be used offline to quickly and easily illustrate with common arrows/icons and annotate screenshots and images for presentation and educational purposes. Examples can be seen in these posts Blogspot Blog Setup and Choose and learn a new programming language: Python


Simple arrow with Skitch


Pixlr Editor is a powerful online photo editing and effects program suite by Autodesk. Anyone can sign up free and start using the web apps.  For most, probably the free and powerful Pixlr Express is enough for quick photo fixes.

If you like a course to guide you how to benefit from Pixlr power, you may like this Udemy course. However, you may wish to get this course with there is a Udemy promotion going on e.g. $15/10.


Udemy Course on Pixlr Power: How to use the Pixlr Editor

Have fun with your image shots!

======================================