Altabel Group's Blog

Archive for June 2015

At one time, universities and colleges were institutes of higher learning for those who were passionate about acquiring knowledge. Today, education discussions tend to to center around how much individuals can make with their degree. Thanks to the Internet there are still places that offer open learning initiatives designed to help a new generation of technologists succeed.

Let’s start reviewing the free online courses to grow your tech skills.

1. Data visualization

Those who can take different types of data and visualize it in a way that helps provide clarity and insight are in demand. The big data machine is picking up steam. In fact, according to recent data from Dice, big data skills rank highly among those most in demand by employers.

This four-week free course offered by the University of Illinois through Coursera provides a foundation in elementary graphics programming, human perception and cognition, basic visualization, visualizing relationships and information. The course is offered from July 20th – August 15th, 2015 and requires roughly 4-6 hours per week of study time.

2. Programming for everybody (Python)

This beginner’s course is a gentle introduction into the world of Python programming. It’s meant to be a first programming course, and as a result the focus is more so on understanding the concepts. There are no prerequisites and no advanced math skills are required so if you’ve ever wanted to learn how to code or are just interested in the simple intuitive programming syntax that Python offers now is the time to take advantage of this opportunity to learn.This 10-week free course is offered from October 5th to December14th 2015. It requires 2-4 hours a week of study time. All textbooks and resources are free.

3. Begin programming: build your first mobile game

A crash course in programming, this offering from Future Learn aims to teach the beginnings of Java, taking students through the basics of programming by modifying a small Java game (code provided) that can run on your desktop or your Android devices.

Over the seven-week course has started on June 1 , 2015 students will be introduced to the basic constructs of Java that are similar to many programming languages. The course consists of video introductions, on-screen examples, Java game code, downloadable guides, articles and group discussions. It requires roughly four hours of study per week.

You could join the course in progress or register to a new one (date TBA).

4. Introduction to Linux

Have you always wanted to learn more about Linux but never had the extra cash to inveset. This course offered through edX might be just what you’re looking for. The Linux Foundation partnered with edX to offer this free Introduction to the Linux that covers familiarity with the graphical interface and command line as well as a look at all the major Linux distributions. The course gives an over view of the day to day working environment of a Linux administrator and covers pertinent tools and skills.

The designers of the course estimate that a total of 40- 60 hours of study are required to accurately cover the material. Students have the option of auditing the course, at no cost. You get access to course materials, tests, assignments and activities. Those who audit and complete the course will receive a certificate of achievement, but for those wanting to add it as a bullet point on their resume there is a verified certificate available for a fee.

5. Google Analytics Academy

With the proliferation of the Web, online shopping and social media marketing, competition for organic search traffic has gone through the roof. Understanding your website’s analytics can help you make better data-based decisions while at the same time improving the customer experience. Google knows this and would love for you to use its product, Google Analytics. So much so that they’ve created this online learning center that offers courses to help you better use the hidden data located within your site.

The courses highlighted here are all free and are good examples of how the digital revolution is bringing education to the masses around the globe.

 1176dce

Romanas Lauks
Romanas.Lauks@altabel.com
Skype ID: romanas_lauks
Marketing Manager (LI page)
Altabel Group – Professional Software Development

Last year Apple introduced Swift, its own programming language, which was focused on making it easier to build apps. Many reviews have praised Swift as the strong alternative of Objective C and even it will replace ‘C’ for embedded coding on entire Apple platform including Mac, iOS handheld devices, and wearable devices in near future. There must be some valid reasons behind. Let’s explore that why Swift is praised more.

1

  1. Ease in Code and Comprehend

Swift isn’t built on C so it is free from all C class languages related warts:

  • If you want to introduce new Objective C type or object-related keyword in Objective C, you have to use @ symbol in each case. Swift is capable to unify all keywords by removing extra @ symbols to de-clutter the code documents.
  • Swift doesn’t follow legacy conventions therefore programmers can easily avoid excessive semicolons that need to indicate end of line.
  • You can avoid use of parenthesis to surround conditional expressions particularly inside if/else statements.
  • Swift uses industry standard comma-separated list of parameters within parenthesis.
  • Swift is a natural type language so its readability resembles to the English so modern programmers certainly love it.
  1. Ease in Maintenance
  • Swift fundamentally avoid double file creation in order to improve the build time and programming efficiencies.
  • Xcode and the LLVM compiler are capable to figure out dependencies as well as perform incremental builds automatically for Swift programming
  • Swift programmers don’t have to follow C paradigm to create two files by separating table of content and body because (.swift) combines both (.h) and (.m).
  • In Swift, you don’t need to synchronize method names and comments between files.
  • Xcode and the LLVM compiler can reduce the work load of programmers behind the scene because it demand less bookkeeping to cuts out boilerplate work and improves the quality of Swift code along with productivity.
  1. Swift requires less code 
  • Swift reduces the amount of code that is required for repetitive statements and string manipulation. In Objective-C, working with text strings requires many steps to combine two pieces of information. Swift adopts modern programming language features like adding two strings together with a “+” operator. Support for combining characters and strings like this is fundamental for any programming language that displays text to a user on a screen.
  • The type system in Swift reduces the complexity of code statements — as the compiler can figure out types. As an example, Objective-C requires programmers to memorize special string tokens (%s, %d, %@) and provide a comma-separated list of variables to replace each token. Swift supports string interpolation, which eliminates the need to memorize tokens and allows programmers to insert variables directly inline to a user-facing string, such as a label or button title. The type inferencing system and string interpolation mitigate a common source of crashes that are common in Objective-C.
  • Swift relieves you from bookkeeping work, translating into less code to write (code that is now less error prone) because of its inline support for manipulating text strings and data.
  1. Ease in Memory Management

Memory management is quick and without memory leakage:

  • Swift unifies the language in a way that Objective-C never has. The support for Automatic Reference Counting (ARC) is complete across the procedural and object-oriented code paths. In Objective-C, ARC is supported within the Cocoa APIs and object-oriented code; it isn’t available, for procedural C code and APIs like Core Graphics. This means it becomes the programmer’s responsibility to handle memory management when working with the Core Graphics APIs and other low-level APIs available on iOS. The huge memory leaks that a programmer can have in Objective-C are impossible in Swift.
  • Because ARC handles all memory management at compile time, the brainpower that would have gone toward memory management can instead be focused on core app logic and new features. Because ARC in Swift works across both procedural and object-oriented code, it requires no more mental context switches for programmers, even as they write code that touches lower-level APIs – a problem with the current version of Objective-C.
  1. Ease in Debugging
  • Debugging process is instant and rapid, because Swift allows generating a compiler error along with ongoing writing of the code in document.
  1. Fast Performance

Swift has memory-bound GEMM algorithm with sequential access of large arrays. Therefore, along with FFT and Mandelbrot algorithm, it improves overall performance many folds:

  • According to Primate Labs (GeekBench performance tool), Swift was approaching the performance characteristics of C++ for compute-bound tasks in December 2014 using the Mandelbrot algorithm.
  • In February 2015 the Xcode 6.3 Beta improved Swift’s performance of the GEMM algorithm – a memory-bound algorithm with sequential access of large arrays – by a factor of 1.4. The initial FFT implementation – a memory-bound algorithm with random access of large arrays – had a 2.6-fold performance improvement.
  • Further improvements were observed in Swift by applying best practices, resulting in an 8.5-fold boost for FFT algorithm performance (leaving C++ with only a 1.1-time performance gain). The enhancements also enabled Swift to outperform C++ for the Mandelbrot algorithm by a factor of a mere 1.03.
  • Swift is nearly on par with C++ for both the FFT and Mandelbrot algorithms. According to Primate Labs, the GEMM algorithm performance suggests the Swift compiler cannot vectorize code the C++ compiler can – an easy performance gain that could be achieved in the next version of Swift.
  1. Encouraging Interactive Coding
  • Swift has highly interactive tool for seasoned /experienced programmers in form of Playground so programmers can write an algorithm while instantly obtaining feedback.
  • The Playgrounds were partially inspired by the work of former Apple employee Brett Victor. Playgrounds enable programmers to test out a new algorithm or graphics routine, say 5 to 20 lines of code, without having to create an entire iPhone app.
  • Apple has added inline code execution to Playgrounds to help programmers create a chunk of code or write an algorithm while getting feedback along the way. This feedback loop can improve the speed at which code can be written because the mental model that a traditional programmer needs can be replaced with data visualizations in Playgrounds. Programming is an iterative process, and any strain that can be reduced or used to complement the creative process will make programmers more productive and free them to solve bigger problems, rather than focusing on boring details that traditional compilers have imposed on programmers.

To draw the conclusion, one can say that, Swift is full-featured and  highly approachable  programming language to allow iPhone developers to create next generation iPhone apps as well as iPhone apps that supporting solely the Apple Watch and other wearable devices applications in cost-effective  and with ease ways. If you have any app idea for such next generation iPhone application developmentAltabel Group has solid team of iPhone app developers with expertise in Swift and other latest modern iOS development techniques, tools and technologies.

 

Svetlana Pozdnyakova

Business Development Manager

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Building software applications can be a complex, time consuming process, however utilizing a framework can help you develop projects faster (by reusing generic components and modules), and work better (building on one unified structural foundation). Using a framework also facilitates scalability and long-term maintenance by complying with development standards, keeping your code organized and allowing your application to evolve and grow over time.

PHP frameworks help you to write clean and reusable code. It follows the MVC pattern, ensuring a clear separation of logic and presentation. But there is a much discussion all around because some prefer performance, some prefer better documentation, some prefer amount of built-in functions etc.

Zend Framework 2 and Symfony 2 are the two frameworks that are often compared. Which one is more functional? Which one is more preferable in terms of productivity? Which one is better for general understanding? Let’s try to find the answers together.

Zend Framework 2

Zend Framework 2 is an open-source framework for developing web applications, using object-oriented code. The components in the standard library form a powerful an extensible framework when combined, offering a robust, high performance MVC implementation. It’s easily extensible, adapting to your needs, with a modular base so you can use building blocks in combination with other applications or frameworks.

Using the ZendService you can implement client libraries to access the most popular web services available. As Zend is a collection of classes, you can just load the components you need, to take advantage of the components as individual libraries, instead of the framework as a whole, cutting down on unnecessary project bloat. With no model implementation you are free to implement the framework and components in whatever way you need, free of predefined restraints.

Zend Framework 2 advantages:

– Modularity is perfected in it – it has beautiful ways to make your code modular and forces you into good design patterns to make it so;
– Some things are very well thought out: for example for each session container you can define its time-to-live and number of hops (page requests) it will last;
– Modules exist for a lot of things, which is always nice. However, most modules aren’t very mature so you won’t find a solution to every problem there, or you will have to reinvent the wheel because module’s author didn’t write it in the way that you would like;
– Things are abstracted away beautifully in this framework, which means you have a lot of control over everything.

Zend Framework 2 disadvantages are the following:

– There is no ORM implemented out of the box. While there is a solid query builder and ways to interact with database, if you want ORM you need to use third party modules;
– Documentation is written in a tutorialish manner, meaning information is dumbed down and simplified and lacks a lot of important stuff;
– So, the only way to really learn it is to browse the code. Zend does a great job of abstracting things away and letting you program by contract, but try digging into its code and you will find it hard to follow. The execution of code isn’t linear, it rather depends on events and forces you to adhere, so it’s very hard to follow what part of code is calling which event and what kind of magic happens to every object in the execution flow.

Symfony 2

Available in its version 2, Symfony is an excellent PHP Framework for creating websites and web applications. It has been built on top of Symfony components such as Drupal, Ez Publish and phpBB. Backed by a huge community of Symfony fans, it is believed that the framework will go to a whole new level in the forthcoming years.

Symfony is used to build high end web applications at reduced costs and development times. It is a native PHP 5 framework and makes use of the latest PHP 5. It helps streamline web application development by automating similar patterns in development. This essentially means that every time the same function is required, you need not re-invent the wheel. A framework makes the code more structured, better and maintainable.

Symfony2 has been tried and tested for a host of real world applications and business websites. The high demanding e-businesses or ecommerce businesses also prefer Symfony as a framework for development. Well, Symfony is also compatible with a number of databases that are used at the backend including MySQL, PostgreSQL, Oracle, and Microsoft SQL Server.

The advantages of Symfony 2 are:

– Symfony is feature rich. Both Zend and Symfony have a kitchen-sink approach, but Zend is much lower level;
– Symfony is expandable. Everything is presented as a bundle in Symfony. Each bundle adds functionality to the framework. These frameworks can be used for other projects too and functionalities can be added as per business requirements. Businesses benefit from the ability to add as many features and innovative features as required;
– It’s fast and takes us less system resources. Symfony was built to be fast. It is said that Symfony2 is three times faster than its predecessor Symfony 1.4 and Zend Framework too. It’s also a known fact that Symfony2 takes 2 times less memory. These are great performance statistics and businesses can easily take advantage of these to create high performing apps and ease business processes and work more efficiently;
– Symfony 2 is also known for its stability and sustainability. The framework is robust and can be used to create large enterprise websites too;
– The structure and code is very intuitive.

As for Symfony 2 disadvantages, we can say that Symfony 2 takes learning. Documentation is quite useful, but very tutorialish. You can’t dive into development without spending some hours reading first so you can figure out how to do it properly.

Conclusion

Both frameworks may be utilized for large websites or web apps, and both are excellent choices to develop either one. Symfony 2 is better for general understanding because with this framework it is easy to create new projects from scratch, and you can create your first prototype really quickly and advance from there on. While Zend Framework 2 feels over-engineered, written by people who know a lot about PHP but have developed very few sites in it, Symfony 2 feels very natural and has a solution to most common problems.

Zend Framework 2 and Symfony 2 belong to the same enterprise niche. Their quality and complexity is at the same level, and both of their functionality allows for highly professional web application development. However, in Altabel Group we believe that Symfony 2 is slightly better than ZF 2, according to a number of factors mentioned in this article.

Please feel free to share with us your thoughts what you choose for your projects – Symfony 2 or Zend Framework 2.

Thank you for your attention and looking forward for your comments.

mk

Marina Karabanova
Marina.Karabanova@altabel.com
Skype ID: m.karabanova
Business Development Manager (LI page)
Altabel Group – Professional Software Development

The competition in the server side programming department is getting tougher with each month, especially with the recent popularity of NodeJS. However let`s look how everything began.

PHP appeared about 20 years ago, in 1995 and ever since then it has been a number one language for back-end developers and has gathered a big community behind it. For a long time there wasn’t any good reason why not to use PHP: it`s rather easy to use PHP, it`s supported by the majority of hosting companies and it has become the most commonly used language in terms of number of websites powered by it.

NodeJS was created in 2009 and it was very unique to all the other back end languages. It`s an efficient and scalable software platform that can execute JavaScript code on a server. NodeJS uses event-loops rather than traditional threading, which makes it faster and less memory-intensive than traditional platforms. Thus the ability to use Javascript on both the client and the server and the ability of NodeJS to run asynchronously have undoubtedly lead to the rise of NodeJS and its popularity within developers and customers.

Of course, everyone has his own truth: one coder will praise the speed of NodeJS while the other will be devoted to the stability and long history of PHP. But let`s have a look at strong sides of both for you to decide whether to concern yourself with the so popular nowadays NodeJS or not.

PHP strong sides:

– Huge community and tons of materials for all programmers, from a beginner to an advanced coder.
– Deep code base. The most popular platforms for building websites (WordPress, Drupal, Joomla) are written in PHP. Not only are the platforms open source, but so are most of their plug-ins.
– Easy to find a hosting company. PHP has been the industry standard since the stone age and any hosting company still surviving is bound to be compatible with it. For Node.JS you still need to make a little research.
– Simplicity. PHP can be run inside of the same file as html.
– Speed of coding. For most developers, writing PHP for Web apps feels faster: no compilers, no deployment, no JAR files or preprocessors — just your favorite editor and some PHP files in a directory.
– Mixing code with content. You just open up PHP tags and start writing code. No need for templates, no need for extra files or elaborate architectures.
– No client app is needed. All of the talk about using the same language in the browser and on the server is nice, but what if you don’t need to use any language on the browser? PHP is a way out.

NodeJS strong sides:

– Speed. NodeJS is blazing fast compared to PHP. This is where Node really kicks assJ.
– Separation of Concerns. NodeJS separates fundamental components up giving a clear separation of concern across controllers / routes, models and views.
– New and fresh. It’s newer in comparison to PHP and has been developed by programmers who have full knowledge and understanding of modern web applications, from the server to the client, and that means more modern features.
– Modern syntax. Javascript isn’t perfect and it may drive developers crazy, but overall it’s a modern language that supports modern syntax such as closures, and you can easily extend Javascript and make any object configured to exactly how you need it.
– JSON. NodeJS is a powerhouse for JSON. Accessing SQL is possible and there’s plenty of plugins that make it possible, but JSON is the lingua franca for interacting with many of the latest NoSQL databases.
– Gridlock. NodeJS uses a callback structure to pass logic from one asynchronous call to the next meaning we never have to worry about spawning new threads or even considering the deadlock process. Almost no function in Node directly performs I/O, so the process never block which is a major implication for scalable systems.

That is a difficult decision when it comes up to decide which language or tool to choose. But NodeJS worth considering and it`s proved by the fact that Node is getting more and more popularity every day. And what is your opinion on NodeJS, is it the future of web?

Anna Kozik

Anna Kozik
Anna.Kozik@altabel.com 
Skype ID: kozik_anna
Business Development Manager (LI page)
Altabel Group – Professional Software Development


%d bloggers like this: