Posts by csd-admin

Google, Microsoft and Michelle Obama want to meet this 10-year-old coder

April 30, 2019 Posted by News, Programming 0 thoughts on “Google, Microsoft and Michelle Obama want to meet this 10-year-old coder”

Scroll through Samaira Mehta’s Instagram and you’ll see that she is a lot like other kids her age. She posts about having a lemonade stand, going swimming and doing the “In My Feelings” dance challenge.

But she also stands out from other 10-year-olds — Mehta is CEO, founder and inventor of CoderBunnyz, a board game that teaches players as young as 4 basic coding concepts. Players draw and move their bunny piece along the board with the goal of eating carrots and hopping to their final destination.

“CoderBunnyz will basically teach you all the concepts you ever need in computer programming,” Mehta tells CNBC Make It. “There’s the very basic concepts like sequencing and conditionals to more advanced concepts like loops, functions, stack, queue, lists, parallelism, inheritance and many others.”

Mehta says she first conceptualized the board game when she was “about 6½, maybe 7,” after her father, an engineer who serves as an official advisor for the company, started teaching her how to code. As she researched learning materials for first-time coders, Mehta noticed there was an opening in the market for a product that helped young people pick up programming.

She started by sketching how she wanted the game to be designed. Then, with the help of her family, she connected with graphic designers and game manufacturers in China and New Zealand. After exchanging dozens of emails, Mehta settled on a product that she says she’s very proud of.

“My family is very much involved in my business,” she says. Her mother oversees marketing and social media for CoderBunnyz and her little brother tests the games.

Since inventing CoderBunnyz, Mehta also invented a second game called CoderMindz, a coding-based artificial intelligence board game that teachers basic AI concepts using the Java programming language.

“I’m really passionate about coding,” says the budding entrepreneur. “I want the kids to be the same way, because coding is the future and coding is what the world will depend on in the next 10 to 15 years. So if kids learn to code now, [when] they grow up they can think of coding maybe as a career option.”

So far, Mehta says her company has generated about $200,000 in revenue since April 2018 and sold about 6,000 games. She says she is reinvesting that money in the company, saving for college and donating to charities that address homelessness in her community.

At first, Mehta sold the board games through her website and stored the games in her garage.

“We used to pack every order we got,” she says. “And when it started building up, and we started getting more orders, we were not able to fulfill that many, so we were seeing if we could get it on Amazon, and luckily within almost just the first year, we got it on Amazon.”

Today, Mehta has a team that helps package the games and Amazon helps fulfill shipping.

The business venture has taken Mehta to schools, libraries and companies like Facebook, Microsoft and Intel, where she has held workshops for employers and their kids about how to get young people involved with coding.

But it was her trip to Google, and the opportunity to meet Google’s chief cultural officer, Stacy Sullivan, that left the strongest impression on the 10-year-old. “She said if I grew up I could probably work at Google if I like. And then she also said ‘Oh but you’ll probably have your own company by then,’” says Mehta. “She inspired me to work harder and it was just a great moment in my life.”

Mehta has also gotten words of encouragement from former first lady Michelle Obama, who wrote the girl a letter in 2016 offering her words of support. “It was really cool receiving a letter from her,” says Mehta. “She just told me to keep working harder and that I’m an inspiration to all.”

For now, Mehta is focused on making CoderBunnyz a success and doing well in school. She says her dream college is Stanford University, and that her dream job is being an entrepreneur.

“I would say I already have it now, because I am an entrepreneur,” she says. “But I want to expand on that and I want to become an entrepreneur that helps people and does good for the community.”

Please follow and like us:

Chrome for Android exploit tricks users with fake address bar, here’s how to avoid it

April 30, 2019 Posted by News, Programming 0 thoughts on “Chrome for Android exploit tricks users with fake address bar, here’s how to avoid it”

Generally speaking, we’ve come to trust our browser’s address bar to know whether a site we’re on is legitimate or not. A developer has demonstrated an exploit that can make you believe you’re on a legitimate website by showing a fake version of Chrome for Android’s full address bar.

Posted to his personal blog, developer Jim Fisher was able to publicly demonstrate that a website can easily replace Chrome for Android’s address bar and tabs UI, using only a handful of web design tricks.

Essentially, when you scroll down any page in Chrome for Android, the top UI with your address bar and tabs button are hidden from view. What Fisher found was that you could “jail” the scrolling of the page, which allows you to scroll back up the page without Chrome for Android showing its UI again.

Next, when you try to scroll up, the page can display an image of a fake address bar at the top of the screen, where Chrome for Android’s UI normally is, with a completely different URL, including the lock icon that tells you whether a page is “secure.”

To help give an idea of what this looks like, Fisher included a visual demonstration of the address bar exploit in action. In the exploit video, you can see the real address bar that shows “” get swapped for a fake one that says “”

One of the more concerning aspects of the exploit is that you can’t easily leave the page without access to Chrome for Android’s address bar. It should be as easy as hitting the “Back” button on your device, but plenty of websites have shown how easy it is to override your browser’s back button (though Google does have a fix in the works).

Currently, the best way to check whether your address bar has been tampered with is to lock your phone, then unlock it again. This should force Chrome for Android to show its real address bar and leave the fake, exploited one on display too, seen below. To try the exploit out for yourself and learn more about how it works, be sure to check out Fisher’s full blog post in Chrome for Android.


Please follow and like us:

Top 5 Features of Kotlin Programming For Android Development

April 29, 2019 Posted by Programming 0 thoughts on “Top 5 Features of Kotlin Programming For Android Development”

Kotlin is a programming language that offers robustness of Java in a better and more efficient package. Though adoption of Kotlin by Developers increased a lot in recent years, Java is still ruling many areas of Android app development.

Kotlin is designed by JetBrains and come to overcome a number of disadvantages associated with Java. While it’s obvious that the legacy of Java is not going to fade away anytime soon, Kotlin will continue to dominate the Android development industry in the upcoming time.

Kotlin is more clear, concise and comes with an array of tools and frameworks that work with Java. It reduces the number of lines of code significantly and minimizes errors. Kotlin is equipped with an advanced compiler that can check errors at compile time and runtime.

There’s always an ongoing discussion on Kotlin vs Java between Android app developers. If you are also planning to learn Kotlin but confused with the mixed suggestions, relax. Today, I am going to share the top five features of Kotlin that will help you take a decision right away.

Key Features of Kotlin Programming Language

1. Low Learning Curve and Improves Productivity

One of the best things about Kotlin programming language is its efficiency. If you know Java, learning Kotlin is super easy for you. It comes with a low learning curve and makes both grasping the knowledge and coding an app faster.

Kotlin helps developers to build an application with a minimum volume of code. With the code length being at least one-fifth less as compared to Java, it enhances productivity and increases the chances of producing high-quality applications.

2. Extension Functions

Extension functions also called Standard Library Functions can help Kotlin developers in many ways. As we all know, functions are integral parts of an object-oriented language.

Java only allows us to use functions in the regular classes and creates issues when we want to expand them further in order to access its parts. But with Kotlin, there aren’t such disadvantages.

Kotlin allows developers to use these functions as extensions. The makes the process of adding new functions super smooth. Overall, if you are tired of switching access specifiers in Java just to add or access some functions, its time to try Kotlin.

3. Lazy Loading

Lazy Loading is one of the biggest reasons why I started learning the Kotlin language. No one wants to comprise with the performance of the app. After all, high loading time and slow working ruin the user experience of any Android app.

You might have heard about Lazy Loading in web development. Similarly, Lazy loading only loads the required initial content of the app and fairly reduces the loading time.

With this feature, Kotlin allows Android developers to just give priority to the primary resources by keeping them in the main memory while slowly loading other resources from secondary memory. Overall, it decreases the launch time of an app which is a very important factor for an application’s success.

4. Null Pointer Safety

If you have the experience to build Android apps using Java, you must have encountered NullPointerException many times in your career. Though it’s there to test the quality of the software, in reality, this exception affects the efficiency and slow down the development speed.

While the beginner developers prefer to handle the situation with try/catch, the prevention usually make things complicated. Null Safety brings a lot of benefit to developers at the early stage of development. It distinguishes between references that can hold null (nullable references) and those that can not (non-null references) and ultimately results in mitigating the risk of NullPointerException during the run time.

5. Collections and Streams

If you are a Java developer, you must know that processing object collection goes through several phases. Collection objects are an important part of Java application development. Java objects get translated to a variety of presented elements through this process and cause a parallel stream of translated objects.

This affects performance and slows down the app. Kotlin is a modern programming language that knows how to deal with immutable collections. The rich functional APIs of Kotlin will automatically return as the collections and are characterized by identical functionality.


Wrap Up

These are some of the key features of Kotlin that will definitely help you take the right decision. I understand not everyone can afford to switch to other language but you can even use Kotlin alongside Java. This interoperability, low learning curve, and developer-friendly features made Kotlin a wonderful choice for Android developers.

Please follow and like us:

List of DevTools in new Microsoft Edge (Chromium)

April 29, 2019 Posted by Programming 0 thoughts on “List of DevTools in new Microsoft Edge (Chromium)”

The new Microsoft Edge is built using Chromium open source project, and if you are developer, here is the list of Dev Tools in Microsoft Edge (Chromium). A few new tools have made their entry into the DevTools list. It will make it easy and fast for developers to build, and test websites in Microsoft Edge.

List of DevTools in new Edge (Chromium)

The Microsoft Edge (Chromium) DevTools can be broadly categorized into two different categories:

  1. Core Tools
  2. Extensions.

1] Core Tools

Core Tools in Edge Chromium

Elements Panel – One of the most useful features of DevTools for web developers is the ability to “Live Edit” the HTML and CSS on a page. You can use the Elements panel to edit HTML and CSS, inspect accessibility properties, view event listeners, and set DOM mutation breakpoints.

Console – The Console tool generally logs information related to a web page, such as JavaScript, network requests, and security errors. So, the first step in troubleshooting the issues is checking the browser console.

It is for this reason; you find a dedicated Console panel in the Edge browser. Devs can use the same panel for interactive debugging, ad-hoc testing, and communicate into and out of a running web page.

Sources panel – It happens to be the single most useful tool for any JavaScript developer – the JavaScript Debugger. Using it, a developer can open and edit his code at runtime, set breakpoints, step through code, and see the state of his web site one line of JavaScript at a time.

Network Panel –  It can monitor and inspect requests and responses from the network and browser cache.

Performance Panel – It is responsible for recording runtime performance data. Runtime performance is how your page performs when it is running, as opposed to loading.

Memory Panel – Memory problems can be a primary culprit of performance issues. It can cause the page to become increasingly unresponsive and laggy over time. Memory panel can measure the use of system resources and compare heap snapshots at different states of code execution.

Application Panel – It displays several interesting web page properties. It can inspect and manage storage, databases, and caches from the panel.

Security Panel – It can check whether the page you are currently viewing is secure or not. It can also inspect its origins. Developers can use it to debug security issues and ensure that HTTPS is appropriately implemented.

Audits panel – It requires no exclusive description as it is self-explanatory. The feature lets you audit your web site. The results obtained can help you improve the quality of your website.


2] Extensions

While Edge supports extensions, there are no Extensions available for the DevTool as of now. Instead, you will need to install extensions from third-party extension store, eg. Chrome Web Store.

  • Click on the three dots or the menu icon on the top left of Edge. Click on Extensions.
  • At the bottom left corner of the Extensions page, turn on the toggle for Allow extensions from other stores.
  • Next, navigate to Chrome Web Store, and open the extension that works with DevTools, e.g., ReAct Developer tool from Facebook.
  • Click to Add to Chrome and the DevTools extension will be added to Microsoft Edge!

In simple words, this is how you install a Chrome extension on Edge. However, be warned if its pure Chrome extension it may or may not work as Microsoft has removed some of the Chromium services & features.

The new Edge browser is going to be available with the next feature update of Windows 10 if you have a website or business which is dependent on Edge, it’s better to prepare in advance.

Please follow and like us:

Google Banned A Play Store Developer With More Than Half A Billion App Installs

April 26, 2019 Posted by Programming 0 thoughts on “Google Banned A Play Store Developer With More Than Half A Billion App Installs”

Google has begun the mass removal of apps from a major Chinese Android developer following a BuzzFeed News investigation that revealed it was committing ad fraud and concealing app ownership details from users.

As of today, 46 apps from DO Global, which is partly owned by internet giant Baidu, are gone from the Play store. BuzzFeed News also found that DO Global apps no longer offer ad inventory for purchase via Google’s AdMob network, suggesting the ban has also been extended to the internet giant’s ad products.

Google would not comment specifically on the removals, but a source with knowledge of the action said the company was moving to ban DO Global overall, and that more app removals would follow.

“We actively investigate malicious behavior, and when we find violations, we take action, including the removal of a developer’s ability to monetize their app with AdMob or publish on Play,” a Google spokesperson said.

Prior to the app removals, DO Global had roughly 100 apps in the
Play store with over 600 million installs. Their removal from the Play store marks one of, if not the, biggest bans Google has ever instituted against an app developer. DO Global was a subsidiary of Baidu until it was spun out last summer; Baidu retains a 34% stake.

DO did not immediately respond to a request for comment on Google’s action, and has not commented on the revelation that its apps were committing ad fraud. It claims to have more than 250 million monthly active users for its apps, and to reach 800 million users through its ad platform.

Google removed those six apps, and claimed its internal systems had also flagged most of them for removal. Another 40 DO apps disappeared from the Play store this week, including 20 using the Do Global Games developer name, and 14 listed under Applecheer Studio. The apps listed different addresses and contact information in the store, making it difficult for the average user to see they were all owned by the same major developer.

Please follow and like us:

Top 5 C++ API design mistakes and how to avoid them

April 26, 2019 Posted by Programming 0 thoughts on “Top 5 C++ API design mistakes and how to avoid them”

For many C++ developers, API Design probably makes number 3 or 4 on their priority list. Majority of developers flock to C++ for the raw power and control it provides. Consequently, performance and optimization is what occupies the thoughts of these devs eighty percent of the time.

Of course, there are aspects of header file design that every C++ dev thinks about – but API design is so much more than just header file design. In fact, I highly recommend that every developer give some though on the design of their API, whether public facing or internal, as it can save you a lot in maintenance cost, provide a smooth upgrade path and save headaches for your customers.

Many of the mistakes cataloged below are a combination of my own experience and things I learnt from Martin Reddy’s fantastic book C++ API Design, which I highly recommend. If you really want a deep understanding of C++ API Design, you should read Martin Reddy’s book and then use the list below as more of a checklist to enforce for code review purposes.

Mistake # 1: Not putting your API in a namespace

Why is this a mistake?

Because you have no idea in which code base your API will be used, especially for external APIs. If you do not constrain your API functionality to a namespace, it might cause name conflicts with other APIs used in that system.


  1. //API – In Location.h
  2. class vector
  3. {
  4. public:
  5. vector(double x, double y, double z);
  6. private:
  7. double xCoordinate;
  8. double yCoordinate;
  9. double zCoordinate;
  10. };
  11. //Client Program
  12. #include “stdafx.h”
  13. #include “Location.h”
  14. #include <vector>
  15. using namespace std;
  16. int main()
  17. {
  18. vector<int> myVector;
  19. myVector.push_back(99);
  20. return 0;
  21. }

If someone tries to use this class in a project that also uses std::vector, they’ll get an error “error C2872: ‘vector’: ambiguous symbol“. This is because the compiler can’t decide which vector the client code is referring to – the std::vector or the vector object defined in Location.h

How to Fix this?

Always put your API in a custom namespace like:

  1. //API
  2. namespace LocationAPI
  3. {
  4. class vector
  5. {
  6. public:
  7. vector(double x, double y, double z);
  8. private:
  9. double xCoordinate;
  10. double yCoordinate;
  11. double zCoordinate;
  12. };
  13. }


The other alternative is to put a unique prefix to all your public API symbols.If following this convention we’d call our class “lvector” instead of “vector”. This method is used in OpenGL and QT.

In my opinion, this makes sense if you are developing a pure C API. It’s an additional headache to ensure that all your public symbols conform to this unique naming convention. If you’re using C++, you should just group your API functionality in a namespace and let the compiler do the heavy lifting for you.

I’d also highly encourage you to use nested namespaces for grouping functionalities or segregating public APIs from internal ones. A great example of this is the The Boost libraries which liberally makes use of nested namespaces. Inside of the root “boost” namespace, for example, boost::variant contains the public symbols for the Boost Variant API and boost::detail::variant contains the internal details for that API.

Mistake # 2: Incorporating the “using namespace ”  in the global scope of your public API headers

Why is this a mistake?

This’ll cause all the symbols in the referenced namespace to become visible in the global namespace and nullify the benefits of using namespaces in the first place.


  1. It is not possible for a consumer of your header file to undo the namespace include – thus they are forced to live with your namespace using decision, which is undesirable.
  2. It dramatically increases the chance of naming collissions that namespaces were meant to solve in the first place.
  3. It is possible that a working version of the program will fail to compile when a new version of the library is introduced. This happens if the new version introduces a name that conflicts with a name that the application is using from another library.
  4. The “using namespace” part of the code takes effect from the point where it appears in the code that included your header, meaning that any code appearing before that might get treated differently from any code appearing after that point.

How to fix this ?

1. Try to avoid putting any using namespace declarations in your header files. If you absolutely need some namespace objects to get your headers to compile, please use the fully qualified names (Eg. std::cout , std::string )in the header files.

  1. //File:MyHeader.h:
  2. class MyClass
  3. {
  4. private:
  5. Microsoft::WRL::ComPtr _parent;
  6. Microsoft::WRL::ComPtr _child;
  7. }

2. If recommendation #1 above causes too much code clutter – restrict your “using namespace” usage to within the class or namespace defined in the header file. Another option is using scoped aliases in your header files as shown below.

  1. //File:MyHeader.h:
  2. class MyClass
  3. {
  4. namespace wrl = Microsoft::WRL; // note the aliasing here !
  5. private:
  6. wrl::ComPtr _parent;
  7. wrl::ComPtr _child;
  8. }


Mistake # 3: Ignoring the Rule of Three

What is Rule of Three?

The Rule of three states that If a class defines a destructor, copy constructor or copy assignment operator then it should probably explicitly define all three, and not rely on their default implementation.

Why is Ignoring rule of three a mistake ?

If you define any of them, chances are that your class is managing a resource( memory, fileHandle, socket etc.). Thus:

  • If you write/disable either the copy constructor or the copy assignment operator, you probably need to do the same for the other: If one does “special” work, probably so should the other because the two functions should have similar effects.
  • If you explicitly write the copying functions, you probably need to write the destructor: If the “special” work in the copy constructor is to allocate or duplicate some resource (e.g., memory, file, socket), you need to deallocate it in the destructor.
  • If you explicitly write the destructor, you probably need to explicitly write or disable copying: If you have to write a nontrivial destructor, it’s often because you need to manually release a resource that the object held. If so, it is likely that those resources require careful duplication,  and then you need to pay attention to the way objects are copied and assigned, or disable copying completely.

Let’s take a look at an example – in the API below, we’ve a resource int* managed by MyArray class. We created a destructor for the class because we know that we have to deallocate the memory for the int* when we destroy the managing class. So far so good.

Now let’s assume the client of your API uses it as below.

  1. int main()
  2. {
  3. int vals[4] = { 1, 2, 3, 4 };
  4. MyArray a1(4, vals); // Object on stack – will call destructor once out of scope
  5. MyArray a2(a1); // DANGER !!! – We’re copyin the reference to the same object
  6. return 0;
  7. }

So what happened here?

The client created an instance of the class a1 on eth stack via the constructor. Then he created another instance a2 by copying from a1. When a1 goes out of scope, the destructor deletes the memory for the underlying int*. But then when a2 goes out of scope, it invokes the destructor again and tries to free the memory for the int* again [ this problem is known as a double free] which leads to a heap corruption.

Since we did not provide an copy constructor and did not mark our API as non-copyable, there was no way for the client to know that he should not copy MyArray objects.

How to Fix this?

There’s essentially a few things we can do:

  1. Provide copy constructor for the class that creates a deep copy of the underlying resource – (int* ) in this case
  2. Make the class non-copyable by deleting the copy constructor and copy assignment operator
  3. Finally, provide that info in the API header documentation.

Here’s the code to fix the issue by providing the copy constructor and copy assignment operator:


  1. // File: RuleOfThree.h
  2. class MyArray
  3. {
  4. private:
  5. int size;
  6. int* vals;
  7. public:
  8. ~MyArray();
  9. MyArray(int s, int* v);
  10. MyArray(const MyArray& a); // Copy Constructor
  11. MyArray& operator=(const MyArray& a); // Copy assignment operator
  12. };
  13. // Copy constructor
  14. MyArray::MyArray(const MyArray &v)
  15. {
  16. size = v.size;
  17. vals = new int[v.size];
  18. std::copy(v.vals, v.vals + size, checked_array_iterator<int*>(vals, size));
  19. }
  20. // Copy Assignment operator
  21. MyArray& MyArray::operator =(const MyArray &v)
  22. {
  23. if (&v != this)
  24. {
  25. size = v.size;
  26. vals = new int[v.size];
  27. std::copy(v.vals, v.vals + size, checked_array_iterator<int*>(vals, size));
  28. }
  29. return *this;
  30. }


The second way to fix this is to make the class non-copyable by deleting the copy constructor and copy assignment operator.

  1. // File: RuleOfThree.h
  2. class MyArray
  3. {
  4. private:
  5. int size;
  6. int* vals;
  7. public:
  8. ~MyArray();
  9. MyArray(int s, int* v);
  10. MyArray(const MyArray& a) = delete;
  11. MyArray& operator=(const MyArray& a) = delete;
  12. };

Now when the client tries to make a copy of the class, he’ll encounter a compile time error :  error C2280: ‘MyArray::MyArray(const MyArray &)’: attempting to reference a deleted function

Addendum for C++11:

The rule of three has now transformed into the rule of 5 to factor in the move constructor and move assignment operator. So in our case, if we’re to make the classnon-copyable and non-movable, we’ll mark the Move constructors and movbe assignment operators as deleted.

  1. class MyArray
  2. {
  3. private:
  4. int size;
  5. int* vals;
  6. public:
  7. ~MyArray();
  8. MyArray(int s, int* v);
  9. //The class is Non-Copyable
  10. MyArray(const MyArray& a) = delete;
  11. MyArray& operator=(const MyArray& a) = delete;
  12. // The class is non-movable
  13. MyArray(MyArray&& a) = delete;
  14. MyArray& operator=(MyArray&& a) = delete;
  15. };

ADDITIONAL WARNING: If you define a copy constructor for the class (including marking it as deleted), no move constructor is created for that class. So if your class just contains simple data types and you planned on using the implicitly generated move constructor, it’ll not be possible if you define a copy constructor. In that case, you must explicitly define the move constructor.

Mistake # 4: Not marking the move constructor and move assignment operator in your API as noexcept

In general, a move operation is not expected to throw. You’re basically stealing a bunch of pointers from the source object and gicing it to your destination object – which theoretically should not throw.

Why is this a mistake ?

An STL container can only use the move constructor in it’s resizing operation if that constructor does not break its strong exception safety guarantee. For example, std::vector wont use the move constructor of an your API object if that can throw an exception. This is because if an  exception is thrown in the move then the data that was being processed could be lost, whereas in a copy constructor the original will not be changed.

So if you don’t mark your MOVE CONSTRUCTOR and MOVE ASSIGNMENT OPERATOR in your API as noexcept, it can have deep performance ramifications for your client if they plan to use the STL containers. This article shows that a class that cannot be moved takes about twice the time to be placed in a vector and experience unpredictable memory spikes when compared to a class that can be moved.

How to fix it ?

Simply mark the move constructor and move assignment operator as “noexcept”

  1. class Tool
  2. {
  3. public:
  4. Tool(Tool &&) noexcept;
  5. };

Mistake # 5: Not marking non-throwable APIs as noexcept

Why is this an API Design mistake?

There are multiple ramifications of marking an API as noexcept including certain compiler optimizations such as the one for move constructors. However, from an API design perspective, if your API truly does not throw, it reduces the code complexity on your client because now they don’t need to have multiple try/catch blocks in their code. This also has two additional benefits:

  1. The client does not need to write unit tests for these exception codepaths
  2. The code coverage number for the client software is probably going to be higher due to reduced code complexity.

How to fix it ?

Just mark APIs that does not throw as noexcept.





Please follow and like us:

UI Designers Versus UX Designers: Whats The Difference?

April 25, 2019 Posted by Technology 0 thoughts on “UI Designers Versus UX Designers: Whats The Difference?”

Usually, The question is a very boring one considering the fact that the name already separates and tells who and what they are, people still need some sort of in depth explanation as to what the two meant and how they work together but to simplify this, I’ll take it one by one.

Every great and good looking websites usually go through different processes. These processes are in stages. Each stages are handled different people or experts.

Now before a website is designed, a UX Designer usually have to create an architectural rendering of the solution which will be debated upon. Do note that the UX Design processes is an open room meeting because while the UX designer proposes his solution (usually in designs based on the researches he had done), there might be objections, suggestions and additions all which he can add up right into his proposed solution.

The agreed solution is then translated to a graphical layout which can be used to develop the solution. UI/UX designers or engineers works in different companies and in different industries all around the world because they basically create a solution that is visible and people can interact with.

Their jobs demands some skills and tools to achieve while beginning this might not be as tough as being a software developer which demands going through a hardcore number 0f source codes and hours of learning, UI/UX Designers usually train themselves through creativity and researches. Okay let’s break them down one after the other.

Who is a UI Designer?

Simply put, A UI (User Interface) designer is someone that creates a graphical representation of a software solution. This means that he envisions how the software should look and so create the graphical representation of that software or solution which will then be handed over for further development by the core software team.

While the User Interface designer’s job might seams to look like that of a graphic designer, they’re two different things entirely. While majority of Graphic designers aren’t necessarily working to create a layout of a software or solution, a UI designer usually work close with the software or architectural team.

The role of a UI Designer is very important in a company especially in an IT/Software company because they stand in between the raw idea and the realization of that idea.

The job also include having an indepth knowledge of process flows of the solution being proposed so as to be able to create a lasting solution that will appeal to the end user or client when the solution is being developed by the development team after his own rendering is completed.

According to Mark Stanley, a professional UI designer who had worked for big companies during his career, said the job role of the UI Designer is usually very challenging because the UI Designer usually translate the proposed solution to what the company’s bosses (Management) and even stake holders would expect from the development team. This means that he needs to create something that not only meet up with the standards of the company, but also something that will be appealing to the end user when launched to the general public.

Mr Mark also acknowledged the fact that the tedious part of the design processes is also having to research and being updated on the latest design trends especially those being used by the competitors.

Companies such as Apple, Microsoft, Google, Facebook invests a lot to create appealing visual solutions and applications to their end users. The designs are what users interacts with and no matter how awesome the server side solution is, the front end has to be at it’s best so users can use it as often as possible.

Who is a UX Designer?

User Experience designer is that person who creates a solution based on how users/clients feels about the product. While that might sound similar to the UI designer, the UX designer’s job is less graphical but more illustrative because whatever the UX designer creates doesn’t get to the end developers but ends with the UI designer who then translates this into the graphical layout that is then translated to the working application which users interacts with.

Now, as a User Experience designer, the role is very wide and the discipline is highly demanding. Just like an architect, the UX Designer creates the process flow and how the solution will work. He creates the skeleton of the project which can be easily explained and narrated to the board of members involved in the project.

Also, a UX Designer go about making researches about the solution. He collates how user interacted with the previous or the competitors’ product (If any exists). He asks questions about from end users based on how they’d prefer to interact with a particular solution etc. While all these are being penned down, he creates a better solution in a mock-up rendering which he proposes to the team involved.

Upon approval, the solution is then sent to the UI Designer who creates the graphical rendering that is used for the end product. In most cases, a single person could be the UI and the UX designer. It all depends on the company’s standard and processes.

In major companies, the process flow goes as Business development team gets the proposals then it’s sent over to the Project Manager who proposes a solution to the client based on many reasons. The proposal is sent over to the UX Designer who conduct researches and creates Personae for the project. His solution is then translated to a graphical Interface rendering which is then developed.

Why they matter

Like I’ve said earlier, the roles of the UI/UX designers (Engineers) is very crucial especially in an IT or Software company. In most cases, developers are supposed to be working on the project realizations by writing codes and compiling those codes to meet up with deadlines.

The absence of the UI/UX designers in such settings will draw back the developmental processes because the software developers and engineers won’t have an easy process flow or graphical rendering to work with which would’ve sped up their jobs.

This is why their roles are very crucial. The experience needed to becoming a great UI/UX designer can vary but all depends on the willingness and creative capabilities of the individual in question.

While the average annual salary of a beginning UI/UX designer in the US can be around $59K  and way up to $186K, you can see the importance of these people as being of valuable importance in wherever they are.



Please follow and like us:

Top 5 Reasons to Opt for PHP Web Development

April 25, 2019 Posted by Programming 0 thoughts on “Top 5 Reasons to Opt for PHP Web Development”

The current trend for companies when it comes to IT is choosing PHP web development. According to research, almost 83 percent of web services are using PHP, and it is the preferred choice of industry stalwarts such as BlaBlaCar, Slack, and Spotify. PHP is open source and comes with a great community, and it is continuously upgrading. There is no doubt about the same.

When it comes to PHP performance and efficiency, it is getting better every day with the advancement of its frameworks. That is why many companies are opting for PHP for business software development. Whether you have a simple business website or looking for topnotch e-commerce solutions. PHP has been adopted by startups as well as big shots in the IT sector. It is one of the popular programming languages for IT firms for numerous reasons.

You should also choose a PHP development company with precision and forethought. According to an article published on, you should look for the online presence of the PHP development firm. Reach out to companies that have been in business for at least a decade and stood out from the rest. You should look at the testimonials page to figure out whether the PHP firm’s previous clients are happy with their services or not. To help you make an informed decision, here are the best five reasons to choose PHP development to meet your business’s IT goals:

  1. Versatile and Integrative

The greatest benefit of PHP coding is its flexibility and versatility, as well as the language, is integrative. It is extremely compatible with platforms like UNIX, Windows, MacOS, and Linux. Additionally, the programming language supports the primary servers including Microsoft IIS, Netscape, Apache, Xitami, iPlanet, and Caudium. Besides, PHP also supports databases such as MongoDB, MySQL, and PostgreSQL. These are only a few to mention because PHP supports 20 databases and more. That is the reason why you can leverage PHP for developing cross-platform applications. You can make the most out of infrastructure with the least expenses, thus saving you thousands of dollars in the process.

PHP also meets your integration needs because it is an embedded language. Though experts recommend using the language with HTML, you can integrate the coding language with XML, JavaScript, and many other languages. You will face no issues related to browser vulnerability, as all the scripts are assembled on the server side.

When it comes to IT projects, they undergo functionality changes at one point in time or the other. Since PHP is dynamic and versatile, you can implement it no matter what the development phase is and sans any loss of time.

  1. Budget-friendly

IT decision makers, leaders, and developers prefer PHP because it is open source and free. You will not require licensing or download fees, as PHP is distributed via general public license. Besides being easy on your budget, PHP has an active, helpful, and global community. This way, PHP is constantly improving with respect to functionality, performance, facilities, and a talent pool of IT resources. You will find numerous PHP-based solutions whose practicability has been tested many times. Therefore, you need not spend your money in creating a coding language that already exists with its features, benefits, and functionalities.

However, if you are looking for PHP developers, choose a professional team with proven skill sets and expertise.

  1. Less time-consuming

Did you know that PHP is a partly object-oriented programming language? With it, you will benefit with regard to code reusability. When it comes to reusable PHP elements, they help you save much of your time as well as development effort when building a mission-critical software or business application.

You will find numerous PHP frameworks such as CodeIgniter, Symfony, WordPress, Laravel, and Joomla. Each of them has their individual benefits and functionality, thus providing secure and quick development opportunities in respective fields.

PHP has built-in functions like accessing the POST and GET and works with URLs and HTML. When it comes to your business, PHP saves you time and money that you spend on developing applications. It means that the product you develop starts generating revenues faster than other coding languages. There is no doubt about the same.

  1. Well-documented and scalable services

When it comes to ROI, PHP scores high than the other coding platforms. The programming language lets you launch numerous modules of the application while making the required changes during the development stage. With PHP, you can build and support scalable IT projects and constantly produce numerous pages with varied settings. It makes PHP the preferred choice of many for its outstanding documentation and transparency options. The developers will require little time to comprehend what is occurring during coding, provided a trained programmer with knowledge and experience in PHP professionally writes it.

Besides, you can safely arrange iterative development with less foot-dragging if you decide to change the coder or the whole development team.

  1. Easy maintenance and updates

Owing to PHP’s easily understandable syntax, you can modify the code freely and with ease. There is no doubt about the same. When your development team is working on a PHP project, they will face not many problems and challenges. You can easily adapt the projects to innovative apps quickly and affordably, and foray into the market for meeting new business needs.

Owing to its open source benefit, new functionalities, realizing the emerging requirements of businesses, crop up and would cost you nothing. Moreover, PHP is developed consistently and has distinct codes, which makes maintenance, support, and updates super easy by any development team, not implying the one developer or team that has developed the specific project.

However, you must always hire trained and experienced PHP developers for the best results. You need your software product to function seamlessly with easy upgrades and less maintenance.


The development and improvement of PHP have been remarkable in the last couple of years. The best business benefits of the language are compatibility, cost-effectiveness, scalability, simplicity, and user-friendly features and options.



Please follow and like us:

Essential Computer Science Resources

April 24, 2019 Posted by Programming 0 thoughts on “Essential Computer Science Resources”

A curated list of Great Computer Science multiple languages resources found on the Web.

I would like to ask you to open an issue if any of the material exposed here is infringing some kind of copyright.

Thank you for your support!

Please follow and like us:

Survey: Most Loved/Dreaded Programming Languages In 2019

April 24, 2019 Posted by Programming 0 thoughts on “Survey: Most Loved/Dreaded Programming Languages In 2019”



The Developer Survey results for 2019 by Stack Overflow are out now. Like every other year, the Q&A site for coding has conducted a survey for the most loved, dreaded and wanted programming languages this year too.

Rust has been ranked as the most loved language whereas VBA had to take up the unpleasant position of most dreaded language in 2019. Meanwhile, Python, which continues to see a constant rise in its popularity, has been crowned the most wanted language by developers.

For those who don’t know, the Developer Survey is Stack Overflow’s annual report and by far the largest and most comprehensive survey of people who code around the world. Nearly 90,000 programmers took part in the Developer Survey for 2019 to share their opinions on multiple aspects related to coding and programming jobs.

For the fourth consecutive year, Rust remains the most loved programming language among developers. The love for Rust is closely followed by Python, which is also one of the fastest-growing languages.

In fact, Python even snatched the position of most-asked about language from JavaScript on Stack Overflow this year. This indicates that more developers want to work with these languages compared to others in the list.

VBA and Objective-C are the most dreaded languages this year followed by a strong 75.2% and 68.7%. The position of most dreaded language here means that most of the developers who are currently working with these languages have no interest in continuing with it.

As discussed previously, Python is the most wanted language for the third year in a row. This indicates that developers who aren’t even familiar with Python yet, have expressed a desire to learn it. This can be attributed to the fact that many technologies like Machine Learning, Data Analytics, Web Development, Automation, Robotics, etc. require knowledge of Python.

Please follow and like us: