Moving Emails from cPanel to Google Apps *Smoothly*
How do you move emails on a cPanel server to Google Apps for Businesses?
I had been running a small businesses emails and website on an Australian web hosting when it was decided that the business should delegate it's email hosting to Google Apps for businesses. This would be fairly straight forward except, all emails on the cPanel server must be able to be accessed. I figured to simply just move all emails across to Google Apps.
The way I finally found was far from perfect and I am sure there are more practical ways. After being told numerous times that moving from a cPanel based email account to such a service as Google Apps was impossible, I discovered a way. Although the fix is a little time consuming I can guarantee it works.
For those who are familiar with MigrationWiz the main reason I couldn't use it was because I lacked 2 domain names on either side.
cPanel --> Google Apps
My domain could only point to one of the two above.
Step 1:
Download Thunderbird from here.
Install this awesome add-on that allows you to save emails to your HDD (this is the best functional add-on I have ever seen for Thunderbird).
Then you need a secondary email client such as Outlook/Mail/Entourage for the drag-n-drop we'll cover later in the final step.
Step 2:
Setup Google Apps with the domain already active with the cPanel service. The Google Apps process is simple enough. Keep following the setup wizard until you reach the domain verification. Then you must jump into the Advanced DNS Zone Editor in the cPanel.
Step 3:
A list of all the DNS domains will be at the bottom of the page. You must edit the main domain you run your cPanel on to what Google tells you to do here
You do not need to create any subdomains at all. Just change the main DNS settings as shown. Google supplies you with the correct TXT Data - keep the TTL the same.
Step 4:
You should get a success and Google's wizard will pick up this DNS change. It will lead you onto applying the following MX Records. If you don't get a success message on Google's wizard then they have a backup plan of a CNAME or 2 others which include editing files on your website.
The MX Record can be found under the cPanel email list.
Google will tell you this but you must set your MX Records as appropriate priorities. Think of the numbers as a net. If one server is down the emails will flow to the next highest priority and catch/receive the emails.
IMPORTANT: You must not delete the priority 0 that lists your domain name yet. Not until we have downloaded all the emails from the cPanel.
Step 5:
In Thunderbird set up the appropriate cPanel settings to connect a mailbox. You must use IMAP to download all emails. This may take a while depending on how big the mailbox is. Once this is complete click Tools in Thunderbird, the dropdown window will have ImportExportTools at the bottom. Then Export All Messages In This Folder > EML Format. EML Format is best for retaining all format/attachments/images in the email. And Gmail can read the format. Save all your emails to one directory on your computer.
Step 6:
Now head back to MX Records and delete the priority 0. Your MX Records should all point to Google's servers now.
All emails will now be entering Google's servers where you can access them via Gmail.
Step 7:
This is the final step. Use either Outlook/Mail/Entourage to connect to Google's servers. These are Google's instructions. Now you should be able to drag and drop all the emails saved on your HDD to the email client such as Outlook. The email client will upload all emails to Google's servers. This should be it! I used this method to move over 7000 emails and none were lost, altered or corrupted in the process.
If there are any possible improvements or mistakes in this post, don't hesitate to comment below.
I had been running a small businesses emails and website on an Australian web hosting when it was decided that the business should delegate it's email hosting to Google Apps for businesses. This would be fairly straight forward except, all emails on the cPanel server must be able to be accessed. I figured to simply just move all emails across to Google Apps.
The way I finally found was far from perfect and I am sure there are more practical ways. After being told numerous times that moving from a cPanel based email account to such a service as Google Apps was impossible, I discovered a way. Although the fix is a little time consuming I can guarantee it works.
For those who are familiar with MigrationWiz the main reason I couldn't use it was because I lacked 2 domain names on either side.
cPanel --> Google Apps
My domain could only point to one of the two above.
Step 1:
Download Thunderbird from here.
Install this awesome add-on that allows you to save emails to your HDD (this is the best functional add-on I have ever seen for Thunderbird).
Then you need a secondary email client such as Outlook/Mail/Entourage for the drag-n-drop we'll cover later in the final step.
Step 2:
Setup Google Apps with the domain already active with the cPanel service. The Google Apps process is simple enough. Keep following the setup wizard until you reach the domain verification. Then you must jump into the Advanced DNS Zone Editor in the cPanel.
Step 3:
A list of all the DNS domains will be at the bottom of the page. You must edit the main domain you run your cPanel on to what Google tells you to do here
You do not need to create any subdomains at all. Just change the main DNS settings as shown. Google supplies you with the correct TXT Data - keep the TTL the same.
Step 4:
You should get a success and Google's wizard will pick up this DNS change. It will lead you onto applying the following MX Records. If you don't get a success message on Google's wizard then they have a backup plan of a CNAME or 2 others which include editing files on your website.
The MX Record can be found under the cPanel email list.
Google will tell you this but you must set your MX Records as appropriate priorities. Think of the numbers as a net. If one server is down the emails will flow to the next highest priority and catch/receive the emails.
IMPORTANT: You must not delete the priority 0 that lists your domain name yet. Not until we have downloaded all the emails from the cPanel.
Step 5:
In Thunderbird set up the appropriate cPanel settings to connect a mailbox. You must use IMAP to download all emails. This may take a while depending on how big the mailbox is. Once this is complete click Tools in Thunderbird, the dropdown window will have ImportExportTools at the bottom. Then Export All Messages In This Folder > EML Format. EML Format is best for retaining all format/attachments/images in the email. And Gmail can read the format. Save all your emails to one directory on your computer.
Step 6:
Now head back to MX Records and delete the priority 0. Your MX Records should all point to Google's servers now.
All emails will now be entering Google's servers where you can access them via Gmail.
Step 7:
This is the final step. Use either Outlook/Mail/Entourage to connect to Google's servers. These are Google's instructions. Now you should be able to drag and drop all the emails saved on your HDD to the email client such as Outlook. The email client will upload all emails to Google's servers. This should be it! I used this method to move over 7000 emails and none were lost, altered or corrupted in the process.
If there are any possible improvements or mistakes in this post, don't hesitate to comment below.
Sunday, 4 May 2014
Posted by Unknown
Globalization
Globalization
Globalization is directly connected to many aspects of technology and makes a significant impact on technology companies such as Facebook, Twitter and news websites such as TechCrunch or Forbes. In fact these companies and websites are apart of Globalization. How? Well first lets look at the definition of Globalization:
Globalisation is a modern concept referring to the development of a commodity, including possible worldwide influence this can be in a positive or negative way. Key terms; economy, political, society are considered to be affected by globalisation. Global societies are formed where countries will rely on others economical, society and political status to revolutionise and live.
If you would like an excellent explanation of Globalization head and watch this short YouTube video.
Globalization allows news to spread worldwide. This is due to heavy technological advancements such as Facebook and Twiter. People in poorer countries can now start to find out about issues in America. Information is transferred to much larger masses to the world.
If you would like an excellent explanation of Globalization head and watch this short YouTube video.
Globalization allows news to spread worldwide. This is due to heavy technological advancements such as Facebook and Twiter. People in poorer countries can now start to find out about issues in America. Information is transferred to much larger masses to the world.
How Python Interprets And It's Suitability For Large Projects
Python
I have written an overview about Python before here. Python is undoubtably Google's most favourite scripting language at the moment and is a perquisite for most Google Engineers. Much different to other languages such as C or Java, Python is a language that "just works". I use it daily for real simple problems. It competes hand in hand with bash, but personally the Python interpreter is the life-saver here. I love Python and it's simplicity.
Python runs its programs by executing lines at the last minute. What do I mean by that? Well, Python only runs the required lines of code when it is needed. It doesn't check over the entire function or code unless needed in the execution. It runs through each line of code until it either runs into a bug or (hopefully) executes successfully. Fantastic right! Wrong.
I believe the disadvantages can sometimes outweigh the advantages of having each line interpreted during execution. This is because:
- Bugs must be more thorough searched for
- Must have a much more accredited testing system or methodology
- Algorithms may not run properly without immediate realisation
Although this is not a bad thing entirely. This leads to the argument that Python is/is not suitable for large projects. Python can be easily used for large projects and products, take Instagram for example, scalable and today has over 130 million users and 16 billion photos! Go see what their stack is here. The engineers of Instragram kept their values very simple (exactly like the design specifications of Python), don't reinvent the wheel, proven and solid technologies where possible. It has been done before so you can do it right? Yes! Go for it! Python today is becoming a popular language where more support is being offered and start-ups are now considering it for their code-base.
If you sit in the gaming industry you may be already using it for build processes. If not, you better use it quick in fear of not saving enough time for other problems before it comes time to ship.
For those people who develop interesting web applications Django is a based on Python and should be an alternative for all those Node.js people out there.
All in all Python is a great language and should be learned by all engineers and hackers out there. Especially if it's your first language. Use it for those large projects unless computer optimisation and speed is the ultimate key.
The Future of Television
Massive technological advances just over a short period of time have brought television a long way. Our image and perception associated with television are quickly changing from the actual definition of television!
The name Television is derived from telecommunications and vision being what you see. As it was first commercially available from 1920 it has seen the world spectating the First Man on the Moon, many Olympics and other various important events. In the mean time the Internet (most importantly computers) were developed forever more enticing the world populations to connect and communicate with more and more ease. Then Youtube.
What about Youtube?
When YouTube was first founded in February 2005 by three former PayPal employees it soon took off to be a majoring free video sharing site where it receives more than 1 billion visits a month, 100 hours of video every minute and over 250 years of video each day. Interesting. How many people watch more television than YouTube videos? Google claims it has beaten television already 8 years after Youtube's establishment. Not bad since television has been around for 80+ years.
Youtube is apart of the internet television, the new television. Vimeo, Dailymotion, you name it you can go and watch it. Furthermore you can now use smart tv's to watch Youtube, or your Xbox. Using Youtube means you can personally choose what you would like to watch at any given time of the day. Probably the prime reason Youtube is largely successful now. Entire documentaries, entertainment movies exist on internet television today.
Recently Youtube introduced the idea of paid subscription channels where large television publishers can run premium quality services and make a decent profit instead of having to use advertising. Well, lets hope both aren't used at the same time. Publishers such as Fox8, ESPN and SPEED will join Youtube and you can watch your favourite match over and over again when you would like it without having to pay for a recorder etc.
What about the future?
With the ever increasing speeds of bandwidth we will see higher quality streaming videos coming to our televisions to the point where television will be completely internet based or internet dominated.
The name Television is derived from telecommunications and vision being what you see. As it was first commercially available from 1920 it has seen the world spectating the First Man on the Moon, many Olympics and other various important events. In the mean time the Internet (most importantly computers) were developed forever more enticing the world populations to connect and communicate with more and more ease. Then Youtube.
What about Youtube?
When YouTube was first founded in February 2005 by three former PayPal employees it soon took off to be a majoring free video sharing site where it receives more than 1 billion visits a month, 100 hours of video every minute and over 250 years of video each day. Interesting. How many people watch more television than YouTube videos? Google claims it has beaten television already 8 years after Youtube's establishment. Not bad since television has been around for 80+ years.
Youtube is apart of the internet television, the new television. Vimeo, Dailymotion, you name it you can go and watch it. Furthermore you can now use smart tv's to watch Youtube, or your Xbox. Using Youtube means you can personally choose what you would like to watch at any given time of the day. Probably the prime reason Youtube is largely successful now. Entire documentaries, entertainment movies exist on internet television today.
Recently Youtube introduced the idea of paid subscription channels where large television publishers can run premium quality services and make a decent profit instead of having to use advertising. Well, lets hope both aren't used at the same time. Publishers such as Fox8, ESPN and SPEED will join Youtube and you can watch your favourite match over and over again when you would like it without having to pay for a recorder etc.
What about the future?
With the ever increasing speeds of bandwidth we will see higher quality streaming videos coming to our televisions to the point where television will be completely internet based or internet dominated.
The Burning House
What if your house was burning and you only had time to grab your most precious items?
theburninghouse.com aims to bring out the core personalities of people by allowing general members of the public to post a photograph with their possessed items. There are truly some interesting collection of items with some being amusing.
When scrolling through you can appreciate some elements such as over half The Burning House collections have some form of a Apple device be it a Macbook Pro/Air or iPhone or possibly iPod/iPad. Or there is some form of gadget/device in everyone's collections. If I gain some free time I look through the collections and admire some people's pride and diligence that allowed them to gain such possessed items that may be special to them.
The Burning House also chooses a handful of the photographs and publishes them into a book for purchase. What would you take with you?
I would personally try to be practical and valuable choosing items such as my Phone (Samsung SII), Macbook, Passport and my road-bike!
theburninghouse.com aims to bring out the core personalities of people by allowing general members of the public to post a photograph with their possessed items. There are truly some interesting collection of items with some being amusing.
When scrolling through you can appreciate some elements such as over half The Burning House collections have some form of a Apple device be it a Macbook Pro/Air or iPhone or possibly iPod/iPad. Or there is some form of gadget/device in everyone's collections. If I gain some free time I look through the collections and admire some people's pride and diligence that allowed them to gain such possessed items that may be special to them.
The Burning House also chooses a handful of the photographs and publishes them into a book for purchase. What would you take with you?
I would personally try to be practical and valuable choosing items such as my Phone (Samsung SII), Macbook, Passport and my road-bike!
Posted by Unknown
Star Citizen - An Amazing Space Simulator EVERYONE Has Been Waiting For
Has anyone ever thought that the world lacks really good space simulators? Where imagination, time and expansion is endless?
Star Citizen aims to do all of this. Before I bore you with more details hop straight in and watch the video! You'll be glued.
Star Citizen Crowdfund Pitch - 720p from Roberts Space Industries on Vimeo.
Of course Chris Roberts, the head of Robert Space Industries (RSI) believes in many excellent things that massive AAA game companies such as EA and Activision do not consider. AAA standard games almost exclude PC's nowadays as a target platform, the PC is a perfect platform! The PC can be tailored to the style of the user. This is a good start for me in symbolising that this game will be a bestseller that we all have been waiting for. No unfairnesses are included in their business model where the company considers profit over quality, no. In fact Roberts Space Industries is a completely crowd-funded project and has recently hit 10 million in funding (yes, ten million! The largest crowd-funded game I am aware of), funded on KickStarter the project is now at full swing and their frequent updates are very interesting.
An insight ...
The game includes complex mechanics in where your ship will have many endless possibilites in upgrades. In fact, RSI state there will be millions of possibilities for your ship. Get excited, its coming and with high expectations!
Check out their website here for updates and back the project on Paypal!
Star Citizen aims to do all of this. Before I bore you with more details hop straight in and watch the video! You'll be glued.
Star Citizen Crowdfund Pitch - 720p from Roberts Space Industries on Vimeo.
Of course Chris Roberts, the head of Robert Space Industries (RSI) believes in many excellent things that massive AAA game companies such as EA and Activision do not consider. AAA standard games almost exclude PC's nowadays as a target platform, the PC is a perfect platform! The PC can be tailored to the style of the user. This is a good start for me in symbolising that this game will be a bestseller that we all have been waiting for. No unfairnesses are included in their business model where the company considers profit over quality, no. In fact Roberts Space Industries is a completely crowd-funded project and has recently hit 10 million in funding (yes, ten million! The largest crowd-funded game I am aware of), funded on KickStarter the project is now at full swing and their frequent updates are very interesting.
An insight ...
The game includes complex mechanics in where your ship will have many endless possibilites in upgrades. In fact, RSI state there will be millions of possibilities for your ship. Get excited, its coming and with high expectations!
Check out their website here for updates and back the project on Paypal!
What are Functions? [With Examples]
Functions in programming are program fragments used to segmentate programs ranging from simple spreadsheets/applications to complex multi-threaded programs and games. Functions allow you to compartmentalise and organise your programs logic. They enable you to split your the contents of your application into logical blocks that invoked in sequence.
A function is used to take an input, calculate on input and return a value that in large applications will usually be put forward to a larger function or be used multiple times depending on its role. The beauty of a function is the fact that it can be called an infinite times in your application to do x job at hand.
Functions have roots in lambda calculus and were introduced by Alonzo's Church's calculus in 1930. Lisp was the first programming language to debut functions in its design by John McCarthy in 1958.
Lets take a look at function prototypes. These examples are coded in C++
If calculating a circle...
double circumference(double InputRadius);
There are 3 logical parts to a function prototype the first is return the value which is the first double. The second is the function name to refer back which is circumference. The third is optional and is the function parameters comprised of type and optional name. When there are multiple parameters a comma is used to separate. A function can have multiple parameters but it can only have one return type.
After declaring the prototype you will declare a function definition which consists of a statement block. The function definition houses all calculations relevant to the problem the function is trying to solve. The statement block is identical to housing your first program in int main()
double circumference(double InputRadius)
{
calculationHere;
}
Once you have stated the function definition you can make a function call. For example:
cout << "Circumference of circle is: " << circumference(Radius)<< endl;
When making a function call you are causing the program to jump to the function statement, calculate and then jump back to where the result will be printed via the cout statement.
There are more features to functions but this extends the scope of this post.
Windows and OS X
Microsoft Windows vs. Mac for developers
I would bet near every developer has used or come into contact with OS X, the simple graphical interface advertises speed and initiative whilst you work. Windows, on the other hand is still the dominant operating system today. Microsoft is a much older and mature operating system and thus, owns 78% of the device market. Windows owns the feature of having a customizable workspace suiting the specific user more. OS X is so simple and straightforward to use, why need to customize your workspace?
The former head of Windows Steven Sinofsky (Released Windows 8)
See the market share of all devices:
So, Windows or OS X?
Well firstly lets consider these points:
Who has friends who develop on OS X and do they only develop for Apple devices?
I would bet near every developer has used or come into contact with OS X, the simple graphical interface advertises speed and initiative whilst you work. Windows, on the other hand is still the dominant operating system today. Microsoft is a much older and mature operating system and thus, owns 78% of the device market. Windows owns the feature of having a customizable workspace suiting the specific user more. OS X is so simple and straightforward to use, why need to customize your workspace?
The former head of Windows Steven Sinofsky (Released Windows 8)
See the market share of all devices:
So, Windows or OS X?
Sourced: http://www.pcworld.com/article/251340/windows_8_metro_ui_a_bold_new_face_for_windows.html |
Well firstly lets consider these points:
- Windows is highly customizable, I can configure my workspace to jump right in and develop in Visual Studio, a very awesome program used by many developers worldwide, your freedom is massive. Each new version has many new features and quirks. Take a look at the colour Microsoft has integrated! (above)
- Mac is very user friendly, sometimes too simple and its native Xcode program controls you.
- Quick, initiative browsers for developing web-based applications
- Everything looks better on Macbook's displays, retina helps your eyes dramatically.
- Unix Command Line (Terminal) is to die for.
- Great UI (jump into your daily activities and work immediately)
- Great app support, you cannot argue against the ability to drag-and-drop new applications to the /Applications folder!
Who has friends who develop on OS X and do they only develop for Apple devices?
C++11 is here to stay
With the release of C++11 (formerly C++0x) the famous language created back in 1979 its here to stay. The main feature of C++ is scope-bound resource management, SBRM (more commonly known as "RAII").
It is the only industrial programming language that is built around this concept. In C++, life times of all objects are exactly known, and (well-written) C++ programs guarantee that resources are acquired and released in fully deterministic manner. In comparison, garbage-collected or otherwise managed languages do not provide any such guarantees; in fact objects in those languages may persist after the end of their lifetime.
That is the reason why C++ is used in finance, video games, high-performance embedded and real-time systems, transportation, manufacture, and other industries where determinism and precision are important. There are no alternatives.
Granted, it was used for a lot more tasks than this, and those tasks are being lost to C# and Python and other more suitable languages, but that is not affecting its core niche. It is still here to stay for another decade. Use the suitable tools for the right job, but have C++ as part of your toolbox.
It is the only industrial programming language that is built around this concept. In C++, life times of all objects are exactly known, and (well-written) C++ programs guarantee that resources are acquired and released in fully deterministic manner. In comparison, garbage-collected or otherwise managed languages do not provide any such guarantees; in fact objects in those languages may persist after the end of their lifetime.
That is the reason why C++ is used in finance, video games, high-performance embedded and real-time systems, transportation, manufacture, and other industries where determinism and precision are important. There are no alternatives.
Granted, it was used for a lot more tasks than this, and those tasks are being lost to C# and Python and other more suitable languages, but that is not affecting its core niche. It is still here to stay for another decade. Use the suitable tools for the right job, but have C++ as part of your toolbox.
Eliminate Those Nasty Bugs!
Do you fix bugs before writing more code?
It is in software companies' best interest to command their project managers to only lightly force an import deadline upon programmers. Why? An enclosing deadline with merely only weeks or months remaining can severely damage your programmers work efficiency causing projects to fall behind, drastically. A tight deadline causes stress. Stressed programmers is a project managers worse nightmare, everything is rushed and the output code is buggy and useless.Code that has many buggy characteristics will only cause more problems when additional code is added. In industries the active project will be much more efficient if all bugs are targeted and fixed before more is added. A perfect example is, in fact the first Microsoft Word. The programmers of Microsoft Word were all working obscene hours to ship one build in the (tight) deadline they had. The project was continuously delayed again and again. When the final build was shipped off Microsoft placed the team on vacation and commenced searching for the main cause of the late shipping. It was found that the project managers were sticking to the deadline so much that programmers were forced to rush. The story goes one programmer, who had to write code to calculate the height of the text wrote return 12; and simply waited for the bug report to come in. The longer you wait to fix a bug, the more costly it is in terms of time and money to fix.
Bug Database
Keep a bug database! This is extremely important, some programmers wager that they have a mental list of bugs. I can hardly remember 5 bugs in my code that I only wrote last night. Especially when working in large teams a bug database is a must. A simple database might consist of the following:a) Detailed steps to reproduce the bug
b) Expected behaviour
c) observed (buggy) behaviour
d) Who's in charge of this particular bug
e) The status ie critical, unstable, stable, fixed
If you do not have one at your workplace you are wasting precious time everyday when you come back to that piece of code figuring out the particular bug ... its a must!
Get a Tester
Having a dedicated 'tester' is today a vital, must-have in the workplace. A programmer on a $100/hr payroll testing code is illogical and expensive especially when you can have a $30/hr tester doing this. There should be at least one tester for every 3 programmers for efficiency and speed. Get stuff done, get a tester.Is there any aspects of this article you disagree or agree with? Let me know in the comments!
The Easiest Way to Learn Languages (with excellent learning sources)
Currently I am learning French, spoken in 29 countries its beautiful verbs and conjunctions make it an excellent (not to forget romantic!) language. Comparing to other languages such as Russian and Latin French is not a hard language to learn. The same goes for programming, learning easier languages at first is much more efficient. Learning HTML (the simplest of markup languages) is the way to go before jumping into languages such as Java and C, even if you don't have an interest in web applications. Today time is limited and our lives are ever more getting busier and busier. As engineers we need to be efficient in learning languages thus we can sooner get onto fixing problems. Grasping the many different (perhaps difficult) perspectives of C syntax is time consuming. Why not start with an easier language, master it and then shoot through C having a better knowledge on the simplest of concepts so you can focus on the harder ones. To me, it makes perfect sense.
You can search the internet and without looking far you can find common questions people are asking such as "What programming language(s) should I learn?", "What is the easiest language to learn" and so on. All languages are different and thus have their different advantages and disadvantages. Some are easier to learn but not as powerful and others have hard syntax, have many headaches such as time required to compile and debug but are extremely powerful rapidly expanding the amount of problems you can address with the language.
I was inspired by Java, although I was only interested in this for a while although it definitely inspired me to learn programming. Easing in gently was everything to me, I didn't want to ruin my passion and incentive to learn. I began with a markup language HTML5 and CSS which opened my view to how web applications such as Twitter, Instagram and Facebook were made. Learning HTML & CSS was very beneficial to learn the very basic concepts and feeling of programming, although strictly speaking HTML & CSS are not programming languages.
After exposing myself to these the command shell and Git was a definite must-learn followed by Python which was the real eye-opener to programming concepts (and still is). I plan to master Python then debate on either to learn PHP or C++, both remarkable languages. As stated in my last blog post Python is a language that should be learned in modern day society. If you browse for Google Jobs one of their specifications Python is now a must, but many companies will employ expecting you to work with any language regardless if you know it or not, its the process of learning one language that you benefit from and if you've done it once people will believe you can do it twice.
The best way to learn languages is by applying. By creating simple 'Hello World' programs in the proposed language is the best way to remember. Read a few good books, try dismantling programs and see how they operate and the reliability of internet sources are rapidly soaring. But if you don't want to keep staring onto a computer screen all day (like me) keep with books.
Everyone has their own preference for languages for those who would like to follow in my steps (or similiar) I have constructed a list of excellent learning resources that I myself have used:
Note: All sources are free except the very first and last source.
HTML & CSS
Command Shell and Git
Python
You can search the internet and without looking far you can find common questions people are asking such as "What programming language(s) should I learn?", "What is the easiest language to learn" and so on. All languages are different and thus have their different advantages and disadvantages. Some are easier to learn but not as powerful and others have hard syntax, have many headaches such as time required to compile and debug but are extremely powerful rapidly expanding the amount of problems you can address with the language.
I was inspired by Java, although I was only interested in this for a while although it definitely inspired me to learn programming. Easing in gently was everything to me, I didn't want to ruin my passion and incentive to learn. I began with a markup language HTML5 and CSS which opened my view to how web applications such as Twitter, Instagram and Facebook were made. Learning HTML & CSS was very beneficial to learn the very basic concepts and feeling of programming, although strictly speaking HTML & CSS are not programming languages.
After exposing myself to these the command shell and Git was a definite must-learn followed by Python which was the real eye-opener to programming concepts (and still is). I plan to master Python then debate on either to learn PHP or C++, both remarkable languages. As stated in my last blog post Python is a language that should be learned in modern day society. If you browse for Google Jobs one of their specifications Python is now a must, but many companies will employ expecting you to work with any language regardless if you know it or not, its the process of learning one language that you benefit from and if you've done it once people will believe you can do it twice.
The best way to learn languages is by applying. By creating simple 'Hello World' programs in the proposed language is the best way to remember. Read a few good books, try dismantling programs and see how they operate and the reliability of internet sources are rapidly soaring. But if you don't want to keep staring onto a computer screen all day (like me) keep with books.
Everyone has their own preference for languages for those who would like to follow in my steps (or similiar) I have constructed a list of excellent learning resources that I myself have used:
Note: All sources are free except the very first and last source.
HTML & CSS
Command Shell and Git
Python
- Python 3 Documentation
- A Byte Of Python (Highly recommended, Harvard University uses this)
- Dive into Python 3
- Learn Python The Hard Way
- Python Class (PAID)
Languages of the future - C or Python?
Old-school languages like C, C# and C++ still reign supreme as the ultimate choice to program in today. But what about other languages? Google has tried to change the world by introducing its new programming language Go. Officially opened in November 2009 after two years of design its syntax is broadly similiar to C. But why hasn't it kicked off? The designers of Go believe its syntax is easier to understand than high-end languages such as C, especially when things gets in-depth and complicated. But it comes to the fact that language designers don't have practical objectives. Most designers have the eagerness to build a language that stands out from the crowd without thinking of its usefulness. Some other reasons for failed languages is the accompanied poor documentation and support from designers. Take a look at this trend table sourced from Tiobe.
Languages such as C and Java are still the top players with PHP, Basic and Python follows distantly behind. Python is slowly growing in reputation, but is it the language of the future?
The answer is not known even when analysing statistics. Although Python is slowly gaining popularity the language itself is one of a kind. Its syntax is one of the first that actually focuses on making it easier for the engineer so full attention can be focused on the problem, not the language. When reading Python it is like reading English, but strict English indeed! I believe the fact that Python's syntax is incredibly simple, doesn't require an IDE/compiler and is being used by big corporates such as NASA and Google gives the language a big chance of being the language of the future. Python has influenced several languages some being Go, Cobra and a slight hint of Ruby. Languages go in and out of fashion all the time but Python is definitely here to stay. Learn Python and even if it dies from the face of Earth you have still learned (and hopefully excelled) the basic concepts of programming as they are relatively similar across all languages.
What do you think about the prospect of learning C and/or Python? I would like to hear your opinions!
Position Apr 2013 | Position Apr 2012 | Delta in Position | Programming Language | Ratings Apr 2013 | Delta Apr 2012 | Status |
---|---|---|---|---|---|---|
1 | 1 | C | 17.862% | +0.31% | A | |
2 | 2 | Java | 17.681% | +0.65% | A | |
3 | 3 | C++ | 9.714% | +0.82% | A | |
4 | 4 | Objective-C | 9.598% | +1.36% | A | |
5 | 5 | C# | 6.150% | -1.20% | A | |
6 | 6 | PHP | 5.428% | +0.14% | A | |
7 | 7 | (Visual) Basic | 4.699% | -0.26% | A | |
8 | 8 | Python | 4.442% | +0.78% | A | |
9 | 10 | Perl | 2.335% | -0.05% | A | |
10 | 11 | Ruby | 1.972% | +0.46% | A | |
11 | 9 | JavaScript | 1.509% | -1.37% | A | |
12 | 14 | Visual Basic .NET | 1.095% | +0.12% | A | |
13 | 15 | Lisp | 0.905% | -0.05% | A | |
14 | 16 | Pascal | 0.887% | +0.07% | A | |
15 | 13 | Delphi/Object Pascal | 0.840% | -0.53% | A | |
16 | 32 | Bash | 0.840% | +0.47% | A | |
17 | 18 | Transact-SQL | 0.723% | -0.04% | A | |
18 | 12 | PL/SQL | 0.715% | -0.66% | A | |
19 | 24 | Assembly | 0.710% | +0.24% | A-- | |
20 | 21 | Lua | 0.650% | +0.08% | B |
Languages such as C and Java are still the top players with PHP, Basic and Python follows distantly behind. Python is slowly growing in reputation, but is it the language of the future?
The answer is not known even when analysing statistics. Although Python is slowly gaining popularity the language itself is one of a kind. Its syntax is one of the first that actually focuses on making it easier for the engineer so full attention can be focused on the problem, not the language. When reading Python it is like reading English, but strict English indeed! I believe the fact that Python's syntax is incredibly simple, doesn't require an IDE/compiler and is being used by big corporates such as NASA and Google gives the language a big chance of being the language of the future. Python has influenced several languages some being Go, Cobra and a slight hint of Ruby. Languages go in and out of fashion all the time but Python is definitely here to stay. Learn Python and even if it dies from the face of Earth you have still learned (and hopefully excelled) the basic concepts of programming as they are relatively similar across all languages.
What do you think about the prospect of learning C and/or Python? I would like to hear your opinions!