Altabel Group's Blog

Archive for May 2012

A lot of experienced PHP programmers see frameworks as tools for “weak” programmers that don’t understand how to write good, clean code. Whether this is true or not is up for debate, but the fact of the matter is that PHP frameworks are a tool that can be used to save time and tighten up one’s coding.

Zend is the leader among other frameworks. It is natural: it has been created by the developers of PHP language themselves and supports enterprise-solutions. Nevertheless, in the category “Breakthrough of the year” a young, but very ambitious framework Yii has won. I’ve decided to take a deeper look at this breakthrough, basing on our developers’ experience.

Yii is a framework for web programming of general purpose, that can be used for development of almost any kind of web-applications. Due to the presence of the advanced caching means, Yii is especially good for development of applications with a big traffic flow, such as portals, forums, content management systems (CMS), E-commerce systems etc.

Yii isespecially good for being flexible, practic and fast.

True, there is a simpler CodeIgniter. It is very fast and handy tool, for the beginners, in particular (there is plenty of documentation). But our experience has shown a very interesting pattern – solution of many tasks in CodeIgniter takes much more time, than solution of the same tasks in Yii. There was no task, that has been solved faster in CodeIgniter.
True, there is a more famous Zend framework. It has lots of various modules (almost for all cases), very elaborate architecture. But it is essentially slower, bigger, “heavier” than Yii. It suffers from some kind of “verbiage” – long class names, for example. What I mean is that it looks “heavy” even visually.
But if you need, you can use modules from Zend Framework, working in Yii.

Yii is a very fast, modern and flexible framework. It has many pluses:
– high speed of development
– high speed of work
– module, components and widgets support
– integration with Javascript framework jQuery
– comfortable work with database: it can be used either as Data Access Objects, or as Active Record
– convenient and flexible caching system and system of cache validating, memcached/xCache support
– handy built-in code generator Gii

Nowadays, there are many various PHP frameworks, and every developer decides for himself, which framework to use or not to use at all. Our programmers have marked out Yii pluses, though at the same time it doesn’t mean, that other frameworks are not useful at all.

Which framework do you use and why? I would love to see your comments here.

Kind regards,

Nadya Klim

Nadya Klim
Nadya.Klim@altabel.com
Business Development Manager
Altabel Group – Professional Software Development

I’ve been wondering, why lots of PHP-programmers invent their own wheels (CMS, CMF, ORM etc.?), when there are a number of ready practices, ready PHP classes. Almost all typical tasks, that you can face to in web-development, have been already realized in the frameworks.

Let’s draw a simplified parallel. Just imagine that you need to build a house.

If you build it without any framework using plain PHP, you will get a formless hut, shaped of natural clay. Probably it turned out to be lasting, but once you need to make some changes into the construction, it will cause you much headache, and even small changes in one part of the house will entail negative consequences in the other part.

If you build it with clay, though with the help of previously developed special clay frames (your functions library), you will build the house faster. But don’t forget that, firstly, you will have to develop these frames, and it will take you not one year of hard work.

In this case the best option seems to build the house using store-bought bricks or even the whole slabs. PHP frameworks are associated either with ready bricks, or with slabs. In case of using slabs the house construction takes less time, though every so often you have to file them by sizes. There are some moments in case with bricks as well, but it is much easier to reconstruct the house, built from typical “bricks”. Though, firstly, you will have to study brick types, sizes etc. The same is with PHP frameworks.

There has been held a survey, according to which 40% of PHP developers either write in plain PHP, or do not use typical solutions, such as web development frameworks. Why don’t they? Let’s read, and analyze the comments of the respondents, to understand why so many programmers prefer to discover the continents again.

• “I’m lazy to learn something new”. The most popular answer. Well, I have nothing to say here.
• “I’ll manage everything by myself. I don’t need these frameworks”. Some programmers consider themselves to be genius, who will write a solid source, and debug faster on their own, than the whole community do.
• “I’ve already had my groundwork, which are completed as a framework. I just don’t have enough strength and time to publish them”. By the way, there are lots of such people. At the same time, your own solution will never be standardized, it will never be comparable with any of other products, and it is the programmer who develops it, who can leave his job later, and his solution will become the employer’s headache.
• “Frameworks are too slow, they are humongous”. Here we can say, that literate caching is the solution. Moreover, there is a possibility in smart frameworks, like Yii or Zend to optimize everything you need.
• “A framework doesn’t work with the latest technologies, like PHP 5.3, and I want to”. Well, in this case you can turn your attention to Zend Framework 2 and Symfony 2.
• “Frameworks are not universal”. I can’t understand this comment at all. Frameworks were thought to be universal tools. They are much more universal than CMS. Here is an example: there are 5 components in Symfony, ZF is modular from the very beginning, thus it is possible to change the structure, and even the components of the internal arrangement.
• “Frameworks are too universal, you will have to spend much time to adapt them”. And writing the code grassroots will take you less time? This is true only for small tasks, but once various demands appear, the customer changes the conditions, the design changes, and you have no architecture, then you understand that it would have been better to work in the framework.
• “Frameworks make the structure much more complicated”. That is not true, as framework gives you a carcass, set of tools. Naturally, you will have to spend some time to study how it works, but once you do this, you will see, how your work is simplified.
• “I don’t like exterior frameworks, on the reason I like writing in plain PHP”. Well, in this case, let’s write applications in assembler, why not? In my point of view, by saying this, some programmers just cover their reluctance to learn a new PHP dialect as a framework.
• “Oldclients, oldprojects. There is a need to support them”. If you are not able to persuade the client to pay for the transition (which is more likely to happen), then you have no choice but to support.
• “Frameworks are good to practice at the initial stage, when your experience doesn’t allow you to write more complicated things”. Consequently, they give you superiority in the speed of development that is really important. The understanding, why we need standards comes with experience.
• “Why do I need frameworks, if I have CMS, which is sufficient for me”. Probably, you don’t need a framework in this case. Though if CMS is not enough (new demands, specification changes), you’ll have to think the question over again.

Now, you, please, share your thoughts about PHP frameworks? I’m eager to read about your experience, because, as you know, the truth emerges while arguing :-)

Kind regards,

Nadya Klim

Nadya Klim
Nadya.Klim@altabel.com
Business Development Manager
Altabel Group – Professional Software Development

Google is pregnant again?

Perhaps you have heard this statement. Also you could hear that the “baby” has been created to substitute Java… and number of similar statements… But What is NOOP?!
Some people are reporting it to be Google new language, which is not quite technically correct. Noop is being developed by a group of independent developers as a side project, a few of which happen to work at Google.
Noop is built on the Java Virtual Machine and is syntactically similar to Java. What it adds, though, is dependency injection and testability functionality built directly into the language…

What is the status of NOOP?

Development on the language is still at an early phase, but many hope that they release something to the public in the near future. There is no binary to download, although, the source code is available from their online repository.

Why this language?

The experience shows that developers often create code that’s hard to test and maintain, without realizing this. On a large software project, this can create problems later on for the whole team. While analyzing this problem, it was found that the root cause in many cases was language features – like globally visible state, misused subclassing, obligatory and redundant boilerplate, and API’s that are easily misused. The language seeks to apply the wealth of lessons of language development over the past 20 years and optimize on cleanliness, testability, ease-of-modification, and readability.

Also we should consider the following factors why to choose/try this language:
1) Dependency Injection changed the way we write software. Spring overtook EJB’s in thoughtful enterprises, and Guice and PicoContainer are an important part of many well-written applications today.

2) Automated testing, especially Unit Testing, is also a crucial part of building reliable software that you can feel confident about supporting and changing over its lifetime. Any decent software shop should be writing some tests, the best ones are test-driven and have good code coverage.

3) Immutability and minimal variable scope are encouraged by making final/const behavior the default and providing easy access to a functional style. Testability is encouraged by providing Dependency Injection at the language level and a compact constructor injection syntax.

In conclusion I would like to notice that this language experiment attempts to blend the best lessons of languages old and new and syntactically encourages what we believe to be good coding practices. However only time will tell whether it will last or merely be another fad language which the programming world is littered with. In any case this language might be worth taking a look at… ;-)

Thank you for your attention and you are welcome with your comments!

Best regards,
Elvira Golyak
Altabel Group – professional software development

When you hear .NET, the first idea that comes to your mind will probably be internet or networked applications. Although this is absolutely true, there are many more types of applications to create with .NET.

So here is a more or less full list of various types of application that we can develop on .NET.

•ASP.Net Web applications are programs that used to run inside some web server to fulfill the user requests over the http. ASP.NET Web applications can range from simple Web sites that consist of HTML pages to advanced enterprise applications that run on local and remote networks. These enterprise applications also provide components for exchanging data using XML. This type includes dynamic and data driven browser based applications. (Ex: Hotmail and Google).

•Web services are “web callable” functionality available via industry standards like HTTP, XML and SOAP.

•Windows applications are form based standard Windows desktop applications for common day to day tasks. (Ex: Microsoft word). Run only under Windows environment. These applications consume the services provided by the Windows operating system.

•Windows services are long-running executable applications that run on the system as a background process. These applications do not interfere with the working of the other processes that run on the same computer. Windows services execute within separate Windows sessions created specifically for each Windows service. These services do not have a graphic user interface and are ideal for running on the server. Windows services were earlier called NT services.

•Console applications are light weight programs run inside the command prompt (DOS) window. They are commonly used for test applications.

•Mobile applications can run on multiple mobile devices, such as Pocket PCs, mobile phones, or personal digital assistants. These applications provide ubiquitous access to data from mobile devices. The .NET Framework automatically makes changes to these applications to enable them to run on multiple browsers, depending on the mobile device.

•Class libraries are components that you create once and reuse a number of times in multiple applications. Class libraries allow you to define several classes, along with their methods and interfaces, in one file. These libraries compile to .dll files and facilitate rapid development of new applications because of reusability of code. To access the functionality of the classes in a class library from your application, you need to include a reference to that library in your program.

All types of .NET applications use one or more .NET compliant languages for their design and development. The .NET Framework includes various technologies, such as ASP.NET, VB.NET, VC++.NET, and ADO.NET. вставить предложение The .NET Framework includes various technologies, such as ASP.NET, С#.NET, VB.NET, VC++.NET, and ADO.NET. You use ASP.NET to build Web applications and services, VB.NET and VC++.NET to create Windows applications, and ADO.NET for flexible access to databases.

Can you add the above mentioned list with more types of applications? What applications do you usually develop using .Net? And why do you prefer .Net to any other technology for a particular type of application?

Thanks for sharing your experience with us!

Kind regards,
Aliona Kavalevich – Business Development Manager (LI page)
Aliona.Kavalevich@altabel.com
Altabel Group – Professional Software Development

It seems online marketplaces are cropping up everywhere. The most successful examples are of course Amazon’s Marketplace, eBay, Apple’s App Store, and Valve’s Steamworks. In 2011 E-commerce displayed resilient growth and is supposed to grow steadily in 2012
One of the leading technology-focused research and consulting firm, Forrester, recently provided a report on European e-commerce and its future development across 17 major European markets. Overall, online European retail sales are forecast to grow 12.2 percent annually, reaching a total value of 230.4 billion U.S. dollars by 2016.

While e-commerce is set to increase across all major European markets, the highest compound annual growth rates will be seen in countries like Spain and Italy where consumers so far have been more resilient to embrace online shopping.Although the U.K. and Germany will remain Europe’s two largest online economies through 2016, Sweden and the Netherlands come out on top as the countries with the highest percentage of online shoppers by 2016, with 86% and 85% Judging by the reports of the total online population making purchases through this channel, respectively.

So it turns out that e-commerce can be considered a quite perspective sector. So what trends will influence and fuel the e-commerce sphere in the next years

1) T-Commerce and M-Commerce (Touch and Mobile Commerce) – In 2011, web enabled mobile devices transformed E-commerce. They opened up a new 24/7 channel to the consumer. There appeared new innovative ways to attract customers, from QR codes to location based offers. T-commerce is the trend that will be particularly exciting in 2012. Gartner predicts that by 2013, smart mobile web devices will overtake the total number of PCs in use, exceeding 1.8 billion. With 1.8 billion consumers just a click away, this too big an opportunity for retailers to miss.

2) Shopping with your social network – Getting a second opinion before committing to a purchase is nothing new, but now instead of taking a friend shopping you can take your entire social network with you. Retailers are becoming increasingly aware of the power of “the fan” and social will form an integral part of the E-commerce evolution in the next few years.

3) Online shopping gets personal – Gone are the days, when retailers tracked consumer behavior based on loyalty points. Today’s online retailers can acquire huge volumes of data on both their potential and existing customers based on user browsing habits alone. In 2012 data exchange between retailers and social networks will begin to provide solid business models for social platforms and offer new insights into the psyche of the shopper. What matters most to retailers however is how their marketing teams translate this wealth of data into meaningful and timely communications with customers.

4) Borderless shopping communities – 2012 will see the rise of the local global e-marketplace. In 2012, international marketplace models will provide sellers of all sizes around the world with the opportunity to expand their operations internationally, without the cost intensive outlay traditionally associated with establishing local delivery models, storage facilities etc. Sellers will be able to dabble in international shopping communities and dedicate resources based on real-world demand.

5) Flexible, Local shipping models – According to a report by Forrester in January 2011, shipping issues were one of the most common reasons for cart abandonment in Europe. It’s true that the internet has created a global marketplace, but local market shopping preferences must be taken into account. In 2012, flexible shopping models will be vital for growth, as evidenced by the growing popularity of the click & collect phenomenon, which accounted for 10.4% of all E-commerce sales in the UK this Christmas according to the IMRG.

That were the trends that we consider will get more and more popularity in e-commerce. What other trends can you add to the list that you think will gain popularity in the next few years?

Kind Regards,
Anna Kozik
Altabel Group – professional software development

HTML5 brings a host of new elements and attributes to allow developers to make their documents more easily understood by other systems (especially search engines!), display data more uniquely, and take on some of the load that has required complex JavaScript or browser plug-ins like Flash and Silverlight to handle. Here are some new items in HTML5 that will make it easier for you to write your Web sites.

1: video and audio
One of the biggest uses for Flash, Silverlight, and similar technologies is to get a multimedia item to play. With HTML5 supporting the new video and audio controls, those technologies are now relegated to being used for fallback status. The browser can now natively display the controls, and the content can be manipulated through JavaScript. Don’t let the codec confusion scare you away. You can specify multiple sources for content, so you can make sure that your multimedia will play regardless of what codec the user’s browser supports.

2: input type attributes
The venerable input element now has a type attribute, and browsers do some pretty slick things depending on its value. For example, set type to “datetime” and browsers can show calendar/clock controls to pick the right time, a trick that used to require JavaScript. There is a wide variety of type attributes, and learning them (and the additional attributes that go with some of them) will eliminate the need for a lot of JavaScript work.

3: canvas
The canvas tag gives HTML a bitmapped surface to work with, much like what you would use with GDI+ or the .NET Image object. While canvas isn’t perfect (layers need to be replicated by using multiple canvas objects stacked on top of each other, for example), it is a great way to build charts and graphs, which have been a traditional weak spot in HTML, as well as custom graphics. And that is just a start!

4: header and footer
The header and footer tags are two of the new semantic tags available. These two tags do not get you anything above and beyond div for the actual display. But they will reap long-term rewards for your search engine efforts, since the search engines will be able to tell the difference between “content” and things that are important to the user but that aren’t the actual content.

5: article and section
The article and section tags are two more semantic tags that will boost your search engine visibility. Articles can be composed of multiple sections, and a section can have multiple articles. Confusing? Not really. An article represents a full block of content, and a section is a piece of a bigger whole. For example, if you are looking at a blog, the front page might have a section for the listing of all the posts, and each post would be an article with a section for the actual post and another for comments.

6: output
The new output tag is unique, in that it expects its content to be generated dynamically with JavaScript. It has a value attribute, which can be manipulated through the DOM with JavaScript to change what is displayed on the screen. This is much more convenient than the current ways of doing things.

7: details
It seems like every Web site needs to have an expanding/collapsing block of text. While this is easy enough to do with JavaScript or server-side code, the details tag makes it even easier. It does exactly what we’ve all been doing for years now: makes a simple block that expands and collapses the content when the header is clicked. The details tag does not have widespread support yet, but it will soon.

8: figure and figcaption
Figure is a container for content (typically images, but it can be anything), and figcaption (which gets put inside the figure tag) provides a caption or subtitle for the contents of the figure tag. For example, you could have four images representing charts of sales growth within a figure tag, and a figcaption with text like “Year-to-year sales growth, 1989 – 1993.” The images would be shown next to each other with the text running below all four.

9: progress and meter
Progress and meter are similar. You use progress for a task or a “measure how complete something is” scenario. It also has an indeterminate mode for something that has an unknown duration (like searching a database). The meter tag is for gauges and measurements of value (thermometers, quantity used, etc.). While they may look alike on the screen in many cases, they do have different semantic meanings.

10: datalist
The datalist tag acts like a combo box, where the system provides a pre-made list of suggestions, but users are free to type in their own input as well. There are tons of possible uses for this, such as a search box pre-populated with items based on the user’s history. This is another one of those things that currently requires a bunch of JavaScript (or JavaScript libraries) to handle but that can be done natively with HTML5.

What other new tags have you found especially useful? Share your HTML5 experiences in comments.

Kind Regards,
Lina Deveikyte
Altabel Group – Professional Software Development

Mobile apps that use your location to offer services are no longer new. But are they truly useful to businesses? I’ve asked this question to LI professionals to learn what they think on this point.

“Location-based applications are extremely interesting for brands and retailers because they allow those companies to direct consumers to outlets in their vicinity while simultaneously providing information about the products on offer. When these are allied to measures such as mobile coupons and vouchers, you have the combination of information and financial incentive which can be compelling for consumers.”
Shaun Caldwell
Mobile Application Development

“I think the current services and applications provide hope but need perfecting on availability of statistical information to businesses. Relational information delivered to businesses could reduce the time of business correction by providing comparative metrics to help businesses correct outlying practices. For instance: Hourly sales at a store versus count of location-based check-ins could provide analysis of similar swarm count to sales ratio for comparison of regional stores or historical counts of same store to allow business leaders to react sooner and address same store issues before they impact the bottom line. This is just one outcome, but the reality is: most business would value any and all additional information to better understand their customers actions and trends.”
Landon Gordon
Chief Technology Officer

“Speaking in terms of Gambling and ensuring mobile players are physically located within jurisdictions where gambling is legal, location based tracking is essential. Not all operators do it, but just like IP geolocation is used for internet gambling apps, eventually mobile location will become more widely used in gambling and across other industries. The only drawback for location services is privacy, and recording peoples whereabouts could become a very taboo practice and any such retained data of location history should be tightly controlled like you would credit card information or disposed of immediately after use.”
Andy Furnival
Mobile Systems Architect at IGT

“Companies that service merchants (like: Groupon and Forkfly) must think so. Silly things like becoming the “mayor” of some business with 4Square must be good marketing (on some level) for some businesses. That said, until mobile/location becomes more widely deployed/used by more than just 20-somethings it will likely remain a fringe technology.”
Gary Smith
Sr.Technical Writer with Corsair Engineering on contract at Insitu

In my opinion, location-based services can have a lot or a little to offer businesses, but all of them should be watched, because ultimately connecting customers to merchants is what any LBS has to do. And beyond the desktop, pure-play start-ups are figuring how to combine where you are into unique offerings designed to deliver real value and new customers wherever those customers may be. The LBS game is still rapidly maturing, and as more Smartphones penetrate the market, businesses would do well to consider their best LBS strategy, so they can find the customers that are seeking to find them.

Best Regards,
Kristina Kozlova
Altabel Group – Professional Software Development