Every modern software development stack has one or more well-known common libraries which is not a part of the language core. On the other hand, such general purpose package extends standard set of methods and data structures to professional level of software development. E.g., STL for C++ world. Apache Commons [https://commons.apache.org] is one of the most useful set of general libraries in Java Development. A lot of other packages and frameworks are based on them. In case of new project, Iflexion developers, first of all, to look at Guava [https://code.google.com/p/guava-libraries] — a modern professional implementation of common methods.
Guava is done by Google, freely distributed and supported by Internet giant. They even claim Guava usage in their own projects as a standard. There are 3 main programming languages are used in Google: Java, C++ and Python. Guava is based on Java 6. That makes it useful in legacy projects implemented in terms of Java 6 and needed to support this version. E.g., strings join may be done in Java 8 as String.join(“, “, strings) or by Guava Joiner.on(“, “).join(strings). Guava modules are created with design patterns in mind. There are builders, factory methods, adapters, etc. Guava available via maven/gradle. E.g., for gradle:
ES6 new features
Professional web development standards are very high nowadays. It doesn’t matter how big your team or budget. Application Security is extremely important for project of any size. Huge software companies may even have separate departments working on security tasks only. There are manual code review of existing solutions, automation of scanning for well-known vulnerabilities by special tools, writing unit and integration tests, research the cases, implementation of modern approaches. On the other hand, if you are sole developer in your startup (or even single contributor at all), you have to spend some time playing this role as well.
Sources of the harmful code
There are a lot of hype around containers as a new best technical approach for hosting, development, deployment and testing. Docker [https://www.docker.com] is the most popular container-based solution.
Nowadays, software developers have a wide range of programming languages, frameworks and other tools to be used to implement various solutions (static web site, web service, analytics database, background workers, queues, etc.). But wait, development is only half of the story. DevOps guy checks out the solution from the repo to deploy it on the server or just to test it on another machine. “Dependencies hell” and other pure technical issues may turn this process into very complicated quest with bunch of traps. On the other hand, there would be many target platforms for deployment (development PC or laptop, cloud hosting, domestic cluster, etc.). Each of platforms may have its own additional deployment and configuration steps. The problem is a huge number of cases (the cartesian product of two sets: development stacks and hosting platforms) both the software developer and the systems administrator have to care about.
Container is a solution
The idea is not absolutely new. In the middle of previous century the trucking industry had almost the same problem of 2 sets: different sizes and shapes of cargo and plenty of transportation approaches. Standard transport container was introduced as universal wrapper for any kind of goods. The trucking industry operates in terms of these standard containers. Software as a Service applies the same idea. Docker helps developer to pack any application with all its dependencies into container and be sure it can be runned anywhere. On the other hand, system administrator have to worry about container environment configuration only and be sure it can run any application within a container.
Any new idea needs rapid prototyping. In case of startup, it is both important to reduce costs and have done current development iteration as soon as possible. Generally, there are tools to help you move this way. Bootstrap [http://getbootstrap.com] is a must-have solution, when we are talking about fast web design and prototyping, but want to avoid wasting our time on standard Usability and UI design.
A lot of game development platforms and frameworks are widely used to speed up Application Development process and reduce costs. All this hype is mostly about mobile or presentation layer of the game. On the other hand, even medium game needs some community interaction and social network integration. Besides, majority of the most successful game projects are client-server solutions. Photon platform [https://www.exitgames.com] and its SDK’s may be used as server side solution.
Photon supports all major mobile and game frameworks: Unity3D, Android, iOS, Windows phone, Cocos2D, Unreal Engine, HTML5, Flash, etc. As a mature platform, Photon provides several products. All of them have free plans or licenses to try it as a solution and start Application Development.
Photon Realtime is the most useful Photon product. Technically it is game server as a service hosted in the Photon Cloud. So, you don’t need your own server machine. The cloud is distributed among several data centers around the world, to provide low latency. The solution is automatically scalable up to thousands of online players. There are 3 main activity we need for room-based multiplayer game, and Photon support all of them: Connect, Match and Play. It is possible to match together players from different sources (iOS, Google Play) with custom authentication or login via social network.
A web surfing by the browser is the most valuable way Media Content Distribution provided around the World. Technically, this process is based on HTTP networking protocol. Actually, HTTP is treated as protocol of Internet. The industry is always in motion at line of new features and challenges, so HTTP protocol is waiting for its new second version. For now, HTTP/2 [https://github.com/http2/http2-spec] is approved by its creators and going to be accepted and published as RFC standard. HTTP/2 release will have huge impact on direction of many networking techniques and implementation approaches. It would be first sufficient change in Media Content Distribution since HTTP/1.1 release in 1999.
HTTP/2 is based on Google’s SPDY protocol. As you can see, there is one more Google’s technology appears modern enough to be used as standard of future. HTTP/2 is a binary protocol instead of text HTTP/1.1. There is much better performance produced by changes in architecture: header compression, multiplexing requests, requests priorities, proactive push-responses from servers side. It supports IPv4, IPv6 and NAT. There are modern security approaches. Firefox and Chrome already have HTTP/2 support in special mode. To test new protocol you need to install HTTP/2 server. There are several server side implementations by Akamai, Google, Twitter and open source.
Apple Watch (aka iWatch) has been gone on sale. There is a huge hype around this product. Keep in mind, several years ago Apple completely changed our idea about mobile phone. Their revolutionary approaches and just the best design kicked the competitors out. This year Apple is trying to reinvent another well-known thing — a watch. There is not less ambitious idea to show the world what is the watch of XXI century. There are a lot of new opportunities in iOS Development at line of new product. Simple (sport) model costs about 300 USD.
You can feel full power of Apple Watch as a campaign device for iPhone to extend general usability for social software solutions. What we usually do to check just received new incoming message? Get the device of the pocket, unlock it, tap the button to open the message. In case of Apple Watch it needs just raise your wrist to browse the message, then lower a hand to dismiss it. A reply may be sent as a pure voice or recognized text, plus simple animation to express some emotion state.
Nowadays, search engines impose much more strong requirements for web sites to be ranked on top positions or even be parsed at all. Fast rise of mobile market pushed sites to be responsive to all kinds of screen widths and input schemas. But it’s not just about support mobile devices. For any Content Management system there is very important to load the pages as fast as possible. It’s not a recommendation anymore, but rather a rule. Google and other search engines may ignore your cool web site with a bunch of modern features just because it’s too slow.
Check loading speed online
First of all, check how fast is your page loading by Google’s PageSpeed test [https://developers.google.com/speed/pagespeed/insights/]. After several seconds you’ve got pretty complete report about issues at line of loading speed and suggestions how to improve it. If you receive green checks, congratulations, you are doing Content Management in right way. As it’s a Google’s service, so we can look at this list of points as optimization plan for Google Search Engine. On the other hand, the issues and methods to solve them are common for any search engine and for user experience as a whole. There are two separated modes (workflows) of analysis: for regular usage via PC’s browser and exploring on mobile devices like smartphones.