Choose an appropriate programming language before start a new project

programming_langs

Last night my wife asked me about ways to create GUI applications using C++ (She’s currently teaching C++ fundamentals to some high school students). I suggested her to use frameworks like MFC on Windows and Qt for cross-platform development.

After she described the project more, I instantly suggested her to use C# rather than C/C++. Her project was a simple GUI app that simply shows some messages according to user’s input. In addition, she wanted the app to run on Windows OS only.

Low-level languages like C or C++ should be used for low-level developments such as drivers, kernels, etc. Companies like Microsoft and Oracle created much simpler to use languages; so, why should we use such low-level languages for simple apps?

As a developer, I know using low-level languages are much cooler and geekier; but, in most cases, high-level languages does the work much easier and faster!

Before start any project please analyze and choose an appropriate programming language.

Write your 2015 goals before the year begins

To-Do listWriting goals is one of the most important tasks that I believe everyone should pay attention to. It’s all about your plans for the upcoming year.

Unfortunately, most people don’t have an annual plan which is so bad. Some people have goals to achieve in their mind but don’t write their goals down which is not so good as well. Some write their annual goals after the year is begun.

None of those I’ve mentioned are good. I believe, we all have long-term goals. Writing your tasks down is one of key parts of being a successful person. It’s important to plan for a day/week/month/year before it begins. For example, if you’re going to plan for tomorrow, you should write your tasks down tonight.

In addition, be realistic when writing your goals. For instance, you may won’t be able to accomplish 20 tasks in a single day. Just write three most important tasks and sort them by priority.

Write three most important plans you want to do in the upcoming year. If you’re writing those on a paper, it can be stuck on your room’s wall. If you’re writing your plans/tasks in a file stored in your computer like what I do, put them somewhere on your desktop; so, you can see them every day.

Before install a Chrome extension, check out its permissions

Chrome-Store1It’s about a week that I am working on developing a Chrome extension. Actually, this was my first experience developing an extension. During the process of R&D, I’ve checked out some of existing Chrome extension for learning purposes. While searching, I’ve found some extensions which had suspicious activities. Actually, some of them has access to users’ sensitive information such as files on their computer!

The fact is that, extensions are one of the most dangerous piece of software I’ve ever worked with because of the access level they can get. A Chrome extension can get access to almost anything on your computer. from file system, to your web history. Even most desktop apps don’t have access to such resources. Here are some of things an extension can do and you may want to consider:

  • It can have direct access to all of your Chrome stuff: including your tabs, websites you visit, your password and a lot more.
  • It can have access your file system. This means that an extension can access all of your personal files in your computer.
  • It can execute a file: The extension developer can also include an executable file inside a chrome extension and run it in background without notifying you about. This can be very dangerous. Assume that extension developer develops a keylogger using C++ and run it on your computer. As a result, it can gather all of your password and personal information and then send it to a server.
  • It also can access system memory and CPU as well. This is ridiculous because only some low-level apps and services can have access to such resources.
  • And a lot more…

The following is an example of a chrome extension that has access to your computer resources more than it really needs (I’ve omitted the extension name and logo):

chrome-extension-permissions

As you can see in the above picture, This extension want to have access to nearly everything on your computer:

  • It can access your USB devices!
  • It can communicate with native applications such as kernel processes.
  • It can access your entire Google Drive account including all of your personal documents, photos, and etc.
  • It has full access over your network connections.

Permissions in a Chrome extension can be gained in the manifest.json file. The extension developer can request any access he/she wants. Google reads this file when a user attempts to install the extension and shows the above dialog.

Conclusions

You MUST check out an extension’s permissions before attempting to install it. An extension can be very dangerous. make sure it only asks for permissions it needs. For example, a game don’t need access to the browser proxy. You should not allow such permissions.

Even extensions which are downloaded from Chrome Web Store are not safe since there’s no review process behind them.

Note that everything I’ve mentioned in this post works the same in Firefox; consequently, a Firefox extension can also have unlimited access over your computer.

Hope it helps.

Nostalgia! Installing MS-DOS alongside Windows 3.1 on Virtual Box

You may remember MS-DOS and Windows 3.1 if you are 28 or older. These were the most important software and apps on a computer in that time. Most of us had memorable moments with these operating systems and applications. Actually, I started programming with QBasic and then moved to Visual Basic on Windows.

MS-DOS 6

Today I decided to get back to that sweet moments and tried to install MS-DOS on Virtual Box.

The first thing I had to do was to find the MS-DOS OS and other files; so, I can install it on my virtual machine. As a result, I Googled and found https://winworldpc.com. This is an amazing site contains most of old and nostalgic operating systems, games, applications and developer tools. In addition to MS-DOS, I also downloaded and installed some other apps on the virtual machine which I’ve listed below:

  • Windows 3.1: One of the first operating systems with graphical user interface by Microsoft.
  • Borland C++ for MS-DOS: A powerful IDE (Actually in its own age) to develop, debug and compile C and C++ applications in DOS.

As a gift for this Christmas, I packaged all of the apps alongside MS-DOS OS into a single “.VHD Virtual Hard Drive” file which can be access via the following link:

Ramezanpour MS-DOS.zip

Note: The zip file password is: ramezanpour.net

All you need to do is to download this package, unzip it and then import it in your Virtual Box. If you don’t know how to import a VHD file in Virtual Box, follow these instructions:

Open Virtual Box and click on “New” icon to create a new Virtual Machine.

create-vm-01

The “Create Virtual Machine” window asks for three things. The first is a name which can be anything you want. The second is type which has to be set to “Other”. The third is version which must be DOS. By clicking “Next” you’ll be navigated to the second step which is memory allocation. Since MS-DOS is a very small OS, 32 MB of RAM is enough but you can select as much as you want (Don’t select too much memory because MS-DOS may not support it).

create-vm-02

After the amount of RAM is defined, click next to navigate to the third section. This page will ask you to whether you want to create a new virtual hard drive or use an existing one. Select “Use an existing virtual hard drive file” then select the VHD file you’ve downloaded above.

You’re done. You can now start your MS-DOS 6.22 by double clicking on its icon in Virtual Box.

Enjoy and Happy Christmas!

Essential tools everyone should have at home

In less than two month from now, we’ll celebrate our wedding party. Regarding this, we are preparing our new home. This is one of the hardest things to do because, they’re lots of tasks I haven’t ever thought about and I must get all of them done before the wedding party. Before this, I preferred to give all tasks to their professionals; but, after a while, I realized it’s not possible to give them to someone else because there are lots of small tasks that need to be done immediately.

My father is a handyman. He’s doing all of his house’s tasks by himself. He thinks that everyone knows about his own problems better than anyone else. I didn’t understand the meaning of this until now.

YOU NEED TO BE ABLE TO DO SOME OF CRITICAL TASKS YOURSELF. IF YOU DON’T KNOW HOW TO GET THEM DONE, LEARN THEN!

As a result, I decided to fix our new home’s small tasks myself. accordingly, I started to figure out what tools I need. I asked a few repairmen and handymen including my father about the essential tools I should have to get our home issues done and I decided to share them with you here.

Note that these tools is essential for everyone no matter what are their profession. I’m a programmer and I need these tools as well. Also, if you’re not going to do your home tasks yourself, you may want to skip this post. In addition, this post is all about my own opinion and I’m not advertising any brand here.

1. ToolBox

A large toolboxThe very first thing you need is a toolbox. This will help you gather all of your tools into one package; consequently, you won’t lose any of them. Also, it will be possible to carry them all with ease. toolboxes have different sizes and shapes. To get started, it’s not necessary to buy a large toolbox but a very small one is also enough. Moreover, a small bag can be used if you don’t want to buy one. I preferred to buy a small toolbox while I don’t have a lot of tools by the time.

2. Screwdriver

screwdriverAlmost anything including devices, gadgets, electronics, etc. have some screws today. So, it’s obvious you need some screwdrivers to fix them in the case of emergency.

There are plenty of screwdriver types out there but I believe you’ll need just two of them: Slot and Phillips

You’ll need at least two types of screwdrivers to get most of your tasks done. But, if you want you can purchase a power screwdrivers!  Most power screwdrivers have at least two built-in heads and you can extend it whenever you want. Using a power screw driver makes your work much easier and faster. The following is a photo of automatic screwdriver with more 10 heads:

3209014159_25d91e567c_b

3. Pliers

plierPilers are very important when want to hold objects firmly. Actually, it’s very handy tool because can be used in variety of cases but it’s main functionality is holding objects. I use pliers to bend small objects, pull objects out of the wall, hold wires when working with electricity and many many more.

Pliers are not limited to just one type. There plenty of types out there are I’m using some of those as well.

4. Locking pliers

locking plierLocking pliers, Mole grips (Mole wrench) or Vise-Grips are pliers that can be locked into position, using an over-center action. One side of the handle includes a bolt that is used to adjust the spacing of the jaws, the other side of the handle (especially in larger models) often includes a lever to push the two sides of the handles apart to unlock the pliers.

5. Needle-nose pliers

Needle-nose pliersNeedle-nose pliers (also known as long-nose pliers, pinch-nose pliers or snipe-nose pliers) are both cutting and holding pliers used by artisans, jewelry designers, electricians and other tradesmen to bend, reposition and cut wire. Their namesake long nose gives excellent control while the cutting edge near the pliers’ joint provides “one-tool” convenience. Because of their long shape they are useful for reaching into small areas where cables or other materials have become stuck or unreachable with fingers or other means.

6. Pipe wrench

PipeThe pipe wrench (US), Stillson wrench or Stillsons (UK) is an adjustable wrench used for turning soft iron pipes and fittings with a rounded surface. The design of the adjustable jaw allows it to lock in the frame, such that any forward pressure on the handle tends to pull the jaws tighter together. Teeth angled in the direction of turn dig into the soft pipe. They are not intended for use on hardened steel hex nuts or other fittings because they would ruin the head; however, if a hex nut is soft enough that it becomes rounded beyond use with standard wrenches, a pipe wrench is sometimes used to break the bolt or nut free.

7. Utility knife

utility knifeWhen we were bringing furnitures everything was packed so we needed something to unpack them. The utility knife is exactly what we wanted. It’s one of the most handy tools all the time especially while moving to a new place. It has a very sharp blade which helped us unpack all or our packages. In some cases that scissors are not usable, utility knife is the best choice.

8. Self Retractable Metric Ruler

meterFitting everything in its right place is a very important especially for women. Before we start moving to this house, we needed to measure every single part of the house in order to buy right furnitures such as curtains. A metric ruler was essential for us. Without it, we weren’t be able to fit stuff to their places.

9. Hammer

Hammer is a critical tool everyone should have. It comes very handy when want to install something. For example, we used hammer to install our photos and mirrors on the wall. Hammer has a lot of usage and I think it’s one of the first things you should buy.

hammerI believe everyone should have these essential tools to get small tasks done. Someday you will need at least one of them. I think I won’t be able to set things up without these. If you know any other essential tool I forgot to mention, please tell me by commenting down below.

Hope it helps 🙂

 

Why don’t you enable comments!?

One of the best tasks I’ve done last week was to revise my Feedly feeds. I removed some feeds which hadn’t been upgraded recently and also added some new feeds. I also came across some Persian bloggers and added their feeds as well.

Yesterday I was reading a post by a blogger about technical matters. I thought I can complete the blogger’s idea by adding a comment. When I wanted to do so, I realized that the comments are closed! When checked other post by that person, I found out that there’s no comment capabilities at all! Why?

One of the biggest purpose of blogging is to share your experience with others. No one in the universe is complete enough; consequently, there might be other thought that can complete your ideas which are posted on your blog. Some of the times, I find my solutions in the comments rather than the post itself.

I know there might be some S P A M M E R s out there which can bother you; but, lot of blog extensions and plugins are available today to reduce them. Comments could also be moderated to avoid inappropriate contexts. There are also other options which can be used like Disqus. It’s a very powerful comment system which can be installed very easily on your blog. It manages all comments on your blog. I also used Disqus on my blog too.

If your blog comments are disabled, please re-enable it to improve your knowledge.

Thank you 🙂

Moving to WordPress!

As you may know, I’m blogging for about 7 years now. My very first post was published on a Microsoft free blogging platform called Windows Live Spaces which discontinued its services and I don’t know why; but, here’s a the answer a Windows Live Spaces user asked them about it:

windowsLiveSpacesDead

Anyway, after Windows Live Spaces, I registered my own domain and started to blog using BlogEngine.NET which is a very successful .NET based blog engine. I used this engine for about 6 years and I was pretty satisfied until their last version which (2.9) which requires .NET Framework 4.5 to be installed on the server. Also, as far as I know, they don’t support Mono anymore. So I decided to move to a more common blog engine which is WordPress of course.

WordPress is open source and can be installed on almost any platform just by installing PHP and My SQL which are both free and open source as well and I think it’s the best choice for you if you’re going to start blogging. WordPress has also offered a free website for those who doesn’t have or doesn’t want to have personal websites and servers so people can go to WordPress.com and start blogging immediately!

Migrating to WordPress from BlogEngine is not easy as it sounds! In fact, moving from a Windows-based blog engine to a Linux-based one is a pain in the neck but when you really decide to migrate you can 😀
I used Dave Burke’s post on .NET to WordPress: Migrating BlogEngine.NET and also a BlogML importer plug-in to move to WordPress. If you want to move as well, checkout Dave’s post!

Besides moving to WordPress, I also migrate my server from Windows to Linux! Linux server are more secure, more stable and more affordable!

It’s about a week I’m working with WordPress and I think it’s awesome. Everything is put in its place. The WordPress editor is outstanding and I think there’s no need to use Windows Live Writer anymore. It’s very simple while powerful! This was one of my biggest problems when was blogging on BlogEngine.NET. BlogEngine’s web interface was not so good so I had to use Windows Live Writer as an alternative and since Windows Live Writer is only available for Windows OS, blogging on other operating systems like Mac was a very difficult task to do.

I highly recommend you to choose WordPress if you want to start blogging or move to a new blogging platform 🙂

A new era of my work life

I started to work with computer when I was 13. In that time, my computer had a Intel Pentium MMX 200 MHz processor, 32 MB of memory, 2 MB S3 VGA card and a 2.1 GB Quantum hard drive. In that period of time, my PC was a monster! But, while years comes and goes, it became weaker and weaker so I changed it with a new one. As a matter of fact, by a week go, I have bought 9 computers; and, all of them had a Windows OS installed.

As you may know, I am a software developer and working on Microsoft technologies such as .NET Framework and SQL Server. However, when I left the last company I’ve worked work with (SiteSaz), deceived to make a fundamental change in my career. Consequently, I started to work with other platforms like Linux and Android; but, neither Linux nor Android are not a good replacement for Windows. As I confessed before, Windows is a very powerful OS for power users and developers but when it comes to normal users, it gets scary.

Less than a month ago, I received a job offer from a company named Pichak. As a result, I went to their office to see what is going on with them. I saw very talented people working in that company. Their job is to create apps for smartphones like iOS-based smartphones, Android smartphones and Windows Phone smartphones. As I see such talented people, I immediately accepted their offer and decided to join them. In fact, I am always looking for new stuff to learn and I think this company is the best place for me to work at.

While Pichak is a cross-platform company, I decided to start switching to a brand new platform and what is better than a Mac! Therefore, I bought a Mac instead of a PC this time. It is about a week that I am working with it and pretty impressed by almost every part of it.

I think with purchasing a new Mac, I opened a whole new door in my life which is the Apple world. I was a Windows user for more than a decade and now I’m switching to a new platform I don’t have any idea about. By now, I didn’t have any problem with it. I will post more about my Mac experience so maybe you use my advices too.

Working on my own

I have worked for variety of companies and organization during my carrier. The last one was Site Saz; a leading company in CMS development and web design in Iran. Yes it’s true! I decided to leave Site Saz last week and work on my own from now on.

The main reason I left Site Saz is the time! As a matter of fact, the time is a very big problem when working for a company (especially in Iran). As a case in point, you should spend about 10-12 hours a day, when working for a company/organization. If you don’t agree, calculate it! When I was working at Site Saz, I couldn’t get my tasks done because I didn’t have time for them!

I had spent some of my best moments in my life at Site Saz; and, the company helped me a lot during that time; in addition, I’ve done the best I could to help the grow. Besides, my colleagues were awesome and most of them are my friends now. I have always been proud of having such great colleagues; and it’s always a pleasure for me to work with them. I wish them success.

But, everybody has a vision; and, my vision is to work on my own. I have a lot of plans to do and lots of goals to achieve, and now, I have more time to work on my own stuff.

“I can’t guarantee I’m making the right choices, but nonetheless, I am choosing my own adventure.” – @codinghorror

I’ll keep blogging about stuff I’m going to do in future 🙂

Wish me luck.