Adrian Ababei

Adrian Ababei

Adrian is our CEO, a full stack Drupal web developer with no less than 14 years of experience in designing, implementing and supporting interactive websites and applications. Completing his Drupal expertise with project management skills, as well, he's the one ensuring that we deliver all the Optasy's projects on time, within budget with no compromise on quality whatsoever.

Back to Blog Posts
What Are the Must-Have Drupal Development Tools? Top 8
Drupal development is gaining more and more traction on the web development scene and for good reasons – Drupal is a highly robust yet flexible platform which makes it a great choice for web development projects, e commerce websites and other tech related needs. Drupal development requires lots of programming skills and attention to details so we’ve set out to find the best Drupal development tools for you to use and review. Here is our list of 8 essential Drupal development tools:   Drush for Drupal development Drush is one of the most sought after Drupal development tools – it’s considered the command line and scripting interface for Drupal. While it may take some time to get used to it, Drush is an excellent multipurpose tool used to install, maintain and develop Drupal websites. That being said, Drush is a great time saver for Drupal developers and it also helps with building custom modules and themes.   Coder for Drupal development With the Coder module Drupal developers can follow Drupal’s coding standards more closely. This module is composed of two sub-modules, Coder Review and Coder Upgrade.   Coder review allows Drupal developers to verify if a module or part of code is up to Drupal’s coding standards or not – it also allows users to know if anything needs changing. Coder upgrade helps Drupal developers upgrade modules or themes to a new version of Drupal. Coder is currently available for Drupal 6 and 7.   Backup and Migrate in Drupal Backup and Migrate makes database backups much easier to create. Just click the admin interface or run the Drush command to order a backup. This module can be configured to send your backup to Dropbox or Amazon S3.   Masquerade for Drupal development Sometimes Drupal development can be a hassle – you have to become a different user to test something in Drupal. The Masquerade module is the perfect solution for this purpose simply because it allows Drupal developers to switch between users easily. This module is perfect when a user reports a bug and another developer is supposed to replicate the same conditions and fix it.   Drupal Project Lookup Drupal Project Lookup is a Chrome extension that’s very handy for Drupal development – the extension helps users save a lot of time when looking for project pages on drupal.org. All you need to do is type pml and the project name and you’re there!   Dreditor Dreditor helps Drupal developers review patches and comment on different issues on drupal.org. Dreditor’s features include auto-completion when adding comments in drupal.org, templates for commit messages and the patch reviewer button.   Features Turn on configuration in the modules in order to source control and deploy them properly. You shouldn’t make too many changes on the live website but instead you should try to make changes on your local server. But how can you deploy modules on a live website? Simply use Features – this is an incredibly useful module which will help you along with any Drupal development project.   Diff for Drupal development Drupal developers who use Features are most likely using Diff as well. Sometimes features may get overridden and the information from the database may not match with the code – This is a perfect time to use Diff. With the Diff module Drupal developers will see any difference with ease – you’ll also be able to see changes between revisions of different nodes and modules, effectively saving you a lot of time. Considering these aspects, Diff is one of the most important Drupal development tools.   Conclusions These are some of the best Drupal development tools available today – not only do these tools speed up your workflow but you’ll be able to achieve better and greater results as well. ... Read more
Adrian Ababei / Sep 29'2016
Six Reasons Why it's Better to Work With an Agency Instead of a Freelancer
There’s an age-old question that once in a while pops in a manager’s mind: Should we hire a freelancer or go with a specialized agency? Here are six reasons why it’s better to go with an agency instead of a freelancer. Number one: you save money in the long run Freelancers are quite popular nowadays simply because they tend to charge less than a full agency but as the old saying goes, “you get what you paid for”. Unfortunately, the price factor is often decisive in the freelancer vs. agency battle, leaving some customers unsatisfied with the work they receive. This is not necessarily the fault of the freelancer or the manager; it’s a combination of factors that can lead to dissatisfaction, such as quality of work, time necessary to complete the tasks, dependability and general return of investment. One of the most important aspects to consider is the project itself: Is it a big project? Does it require multiple skills? How fast do you want it to be implemented? Pound for pound, you get a bigger ROI by working with an agency than working with a freelancer when tackling bigger projects. For example, small changes to a website can be done by a freelancer but if you want to build a website, it’s always better to go with an agency. To sum it up: Go with a freelancer if you have smaller tasks like a simple logo change, go with an agency if you need multiple specialized services   Number two: you save time   Working with an agency instead of a freelancer can save you valuable time, simply because agencies tend to have 5 or more employees working together to achieve a common goal. Most freelancers have regular 9 to 5 jobs and freelance on the side during the weekends. Agencies can ensure that different portions of your project are tackled simultaneously by different employees with appropriate skill sets. To sum it up: If you have a time-sensitive project, it’s a good idea to work with an agency. If time’s not an issue, you can hire a freelancer.   Number three: You can expect better results   All agencies, big or small have a reputation to live up to. A freelancer doesn’t need that because he can jump from one project to another without any loss of image. That being said, you can expect better results from an agency than from a freelancer. Another aspect you need to keep in mind when getting a price quote from an agency is that you’re being offered talent from multiple experts in one place. Sure, you can hire multiple freelancers as well but in 90% of the cases it’s better to work with an agency with integrated IT services and their own project management. To sum it up: If you don’t want to become a project manager for three or more freelancers, it’s better to let the agency handle the extra work in managing teams so you can simply sit back and enjoy the results.   Number four: Delays are rare when working with an agency   Most agencies have five or more employees and use clever management to ensure they respect deadlines. On the other hand, freelancers work only when they are able to – this can often lead to hiccups along the way and as we all know the speed of delivery can either make or break a project. To sum it up: Agencies always respect deadlines; freelancers are not always able to.   Number five: You get more talent for your buck   At a glance your average website will require multiple talent or multiple experts from different fields of work: you’ll need a programmer, a graphics artist, a copywriter, a content writer, a SEO expert and a marketing expert. You want to get the most out of your investment and as such you want to hire people that are talented and dedicated to their work. Of course, you can find freelancers which are talented in one or two fields but in the end this will leave wide gaps in your project – a graphics artist may not be a great SEO expert and a marketing expert may not be a very good programmer. If you’re thinking of hiring all these separate experts for a project then you’re in for a surprise: digital project management is difficult and time consuming. To sum it up: As a rule of thumb, it’s better to work with specialized individuals. If you don’t have ample time to spare on project management, it’s better to let the agency handle it for you.   Number six: You are a client, not a side job   As mentioned before, most freelancers have regular nine to five jobs and do other projects on the side or in the weekends. Sometimes they will be unavailable to answer your calls or e-mails, sometimes delays can happen due to their regular job. A freelancer will never abandon his or her regular job for your project; you won’t be a priority to them. On the other hand, for an agency you will always be a priority, from quote to completion. To sum it up: If you want priority and quick delivery, talk to an agency.   Both agencies and freelancers have their advantages and disadvantages when it comes to online projects but in the end it all depends on what your ultimate goals are and the size of the project. ... Read more
Adrian Ababei / Aug 16'2016
Here Is How You Can Boost Your Conversion Rate by 22%
Dynatrace, a leading company in the application performance management field states that the average loading site for a website has increased over the years instead of decreasing, as previously expected. Websites are getting slower, not faster On average, websites are 7% slower than last year and this figure is growing fast. This phenomenon is especially prevalent in developed countries and it’s currently driving conversion rates down by up to 22%. The reasons behind this phenomenon seems to be complex design trends implemented by both agencies and freelancers in the developed world. Dynatrace tested over 300 leading websites based in the USA, Australia, Spain, France, Germany and in the UK for the past 12 months. These response tests were done every 10 minutes for the past year and the figures are staggering. Slower websites, lower sales Other research related to website loading time states that 90% of users expect their website to load in three seconds or less. A whopping 46% of these users will abandon their page if it takes longer than 3 seconds to load. As such, it’s extremely important to have a fast-loading web page as this can also have an impact on your revenues.   Dave Anderson from Dynatrace states: “While lags in performance are concerning, they also present a big opportunity to measure response times more closely and link it back to revenue. Take a leaf out of Nordstrom’s book – it has measured that a mere 0.5 second slow-down in site load time equates to an 11% reduction in site conversion. This is precisely where retailers need to focus internal conversations: looking at site performance and how it impacts revenue.” And the opposite is true as well – increase your website speed by just one second and your conversion rate will get a 22% boost!   Websites from the Scandinavian countries and from China made improvements over the past year but they are still far from countries such as the US or UK. France had a 20% speed increase over the last year, moving to the second place in the world, close behind Spain.   Last year, the UK boasted the world’s fastest websites but in 2016 moved into third place. Australia currently has the slowest websites in the western world with an average of 8.2 seconds loading time. It remains to be seen if this shift will have repercussions on their economy overall.   Country  2015 response times  2016 response times  % change in homepage response times (2015 – 2016)  % change in average no. of third party hosts (2015 – 2016)  % change in average no. objects (2015 – 2016)  % change in average page size (2015 – 2016)  Global  4.2 secs  4.5 secs  +7.14%  +18%  +7%  +8%  Spain  3.1secs  3.3 secs  +6.45%  -5%  +5%  -13%  France  4.4 secs  3.5 secs  -20.45%  +20%  +15%  +25%  United Kingdom  2.9 secs  3.7 secs  +27.59%  +22%  +15%  +18%  United States  3.4 secs  3.9 secs  +14.70%  +12%  +7%  +5%  Germany  3.7 secs  4.3 secs  +16.21%  +5%  +8%  +18%  Norden  5.2 secs  4.4 secs  -15.38%  +16%  -17%  +5%  China  5.8 secs  4.9 secs  -15.52%  +15%  +7%  +18%  Australia  5.4 secs  8.2 secs  +51.85%  +27%  +13%  +6%    In 2016 most designers integrated complex design schemes into their projects. Most of these included a large number of interactive objects, bigger images and video. Dynatrace uses Apple’s website as a best-practice example. Apple’s websites are some of the fastest in the world without limiting user experience in any way or form. Keeping it simple works When it comes to websites, the old saying „less is more” applies perfectly and bigger isn’t always better. A smaller number of objects, smaller pages and optimized images can not only improve your overall user experience, but your revenue as well. Considering these factors, optimizing your website’s speed is well worth the investment. ... Read more
Adrian Ababei / Jul 01'2016
HTML5 security - Cross domain messaging
HTML5 is a technology for the next generation web applications and has come with a lot of new features to the web. In the mobile app world HTML5 applications are widely used. Besides a lot of features, HTML5 has brought to the table various attack vectors. Before talking about security concepts of cross domaing messaging, we need to understand the basics of the HTML implementation of cross domaing messaging. Cross domain messaging Because of the same origin policy restrictions before HTML5, sending messages between Windows was only possible if both Windows used the same protocol, port, and host. With the introduction of HTML5, all those restrictions are gone and we can now pass messages across domains without having to worry about Same Origin Policy restrictions. HTML5 has a new method called postMessage(). Using this, we can pass messages between windows regardless of their origin. Below is the syntax of postMessage(). Sending window otherWindow.postMessage(message, targetOrigin, [transfer]); ‘otherWindow’ is a reference to another window. ‘Message’ is the message to be passed to the receiving window. ‘targetOrigin’ refers tothe URL of the receiving window. If we don’t have any specific preference, we can specify it as “*”. Specifying “*” as ‘targetOrigin’ has some security implications we will discuss in later sections of this article. ‘Transfer’ is optional. Receiving window When otherWindow.postMessage() is executed, a messageEvent will be dispatched at the receiver window. We can receive the message dispatched by the sender using the following code snippet. window.addEventListener("message",receiveMessage, false); function receiveMessage(event){ if (event.origin !== "https://goo.gl/Brmfny") return; // ... } From the above code snippet, we can access the data and origin of this message as shown below. ‘event.origin’ gives the origin of the message (the URI from which we are receiving this message). ‘event.data’ gives the actual message being sent. Now, we have got some basic knowledge of what cross domain messaging in HTML5 is and how it is implemented in the applications. Let us now see the security implications of cross domain messaging. For demonstration purposes, we have set up the following lab. A: https://goo.gl/SN1Ow B: https://goo.gl/MTtd As we can see, we have two different ports on the above two URLs. The first URL is running on port 8387 and the second URL is on the default port 80. So, it is obvious that they have two different origins, since the port numbers are different. In our lab setup, A is the message sender and B is the receiving window. We are going to load the second URL https://goo.gl/MTtd as an iframe in the first URL. I can send messages from the domain https://goo.gl/SN1Ow to the domain https://goo.gl/MTtd using the postMessage method. We can check it by clicking the “Send Message” button as shown below. The iframe which is loaded into the first URL is from a different origin, but we are able to send a message to it using HTML5’s postMessage() method. Now, let us look at some scenarios where this postMessage() implementation can introduce vulnerabilities into our applications. Case one Code at sender: receiver.postMessage('Hi There..!', '*');< When the sender has the above code where he specifies the target origin with a wildcard “*”, an unintended recipient (window) can receive this message from the sender. Since the receiving window is listening for incoming messages, anyone can load it into an iframe and can listen for the messages coming to it. So, it is a bad idea to give a wildcard when passing sensitive data to the receiving windows. How to fix this: It is possible to fix this just by adding the specific target in the target field. So, in this case https://goo.gl/MTtd is the only origin that can receive this message. This is as shown below. receiver.postMessage('Hi There..!', ' two Code at receiving window: function receiveMessage(e) { do something..! } In the above code, we are receiving the message from the sender and directly processing it without checking who sent this message. It is always important to check the origin of the message to prevent receiving messages from unauthorised senders. How to fix this: function receiveMessage(e) { if (e.origin !== "") return; do something..! } Always validate the origin from which you want to receive the messages. In our case, we want to receive messages only from . So, we are making a simple check to see if the message is coming from using the property event.origin. If this is not matching, we won’t receive the message. Case three The next attack vector is the infamous cross site scripting. Both the sender as well as receiver should always validate the messages being passed. If the data is inserted into HTML DOM without proper validation, then the application becomes vulnerable to DOM based cross site scripting. The following code snippet shows how an application may become vulnerable when a malicious message is received from the attacker and it is inserted into the receiver’s HTML DOM using innerHTML property. Sender receiver.postMessage("< img src='x' onerror=alert(1); >", ' receiveMessage(e) { if (e.origin !== "") return; messageEle.innerHTML = "Message from localhost:8387: " + e.data; } When the above code is executed, it causes an XSS in the receiving window as shown in the figure below. How to fix this: The easiest way to fix this issue is to assign the data value to an element using textContent rather than using innerHTML. This is done as shown below. Sender: receiver.postMessage("< img src='x' onerror=alert(1); >", ' receiveMessage(e) { if ( e.origin !== "") return; element.textContent = " Message from localhost:8387: " + e.data; } When the above code is executed, we should see the text displayed in the receiving frame as “data” rather than code. Source: http://www.developer-tech.com ... Read more
Adrian Ababei / Jun 29'2016
How to Write a Clean and Scalable Angular 2 Application: Best Practices for Angular 2
Angular 2 is becoming more popular worldwide and because of that, people are starting to learn how to use it. It doesn’t matter if you’re a beginner or an advanced coder, there are some practices you should follow when using Angular 2. CLI/Boilerplate If you’re just starting with Angular 2, use angular-cli (npm i angular-cli -g). It’s based on ember-cli. You can generate a good example with ng init project-name. This command will initialize a new Angular 2 application. This application should already be following all the best practices from the official Angular 2 style guide. Besides that, it installs the required npm dependencies. It also creates unit testing and e2e testing scripts. Long story short, it does everything that is required to start a new Angular 2 application. If you don’t like the directory structure or system.js you can use the best starter kit angular2-webpack-starter or other boilerplates. Build the app Angular2 uses Rollup to build bundle there is next-generation ES6 module bundler. A good example is browserify or webpack, because there are more loaders and plugins available for support Rollup feature set eg: rollup-loader and rollupify. Rollup can make smaller code however webpack and browserify have rollup-loader or browserify rollupify transformer which you can use to shrink your bundle. In the near future, it is going to be recommended to use @angular/compiler(-cli) and @angular/platform-browser which was made with template compiler, precompiled templates, and styles. Follow this example to speed up your bundle by more than nine times! Server side (universal) rendering Universal means rendering pages on both the server and client side. It usually implies the use of frontend JavaScript and Node.js because they allow for the re-usage of libraries, allowing browser JavaScript code to be run in the Node.js environment with very little modification. As a result of this interchangeability. If you want to use Typescript in Nodejs, we don’t suggest using ts-node or any node module which hacks the require.extension. Use “browserify  – node” or webpack with the right configuration to generate server side build. IDE/Editor We use Sublime and official Microsoft plugin but we think atom and vscode (unofficial editor of Angular 2) is also ideal for development, but much slower than Sublime. If you prefer complex IDE then use webstorm which has Angular 2 Support. Linting We suggest using tslint, it’s the best when using typescript with codelyzer and ng2lint. Valor-software has a very useful lint project, tslint-config-valor contains all rules explicitly. Documentation We use typedoc for generating the documentation, there’s a great little tool that allows us to generate HTML documentation based in our TypeScript files similar to what JavaDoc does. This will compile all the documentation (classes, namespaces, functions, etc.), it will be put under the doc folder in the current directory where that command is ran. Testing Karma has an over complicated architecture. We suggest using only jasmine (mocha isn’t working yet). Never run tests on ts files, first you need to compile. Unfortunately ts-node is really slow, even with the newest versions. Our tests run with ts-node 10s long and with compiles js only 1s. TypeScript vs ES6 We use typescript in an Angular 2 based application, and we usually use rxjs too (it is also written by typescript). When you write code, which most often depends on node modules: express, node libs and middlewares use ES6, a lot of packages don’t have typing definition (d.ts). Typescript compiler (tsc) compile the fastest code, but sometimes not the standard way. Naming Conventions Naming standards help developers to understand each other’s code better and keep everything tidy. There are naming conventions for file and folder names as well as for class names and selectors. Some examples: – File and folder names should use dash-case and have a suffix which refers to their functionality, like: *.component.ts, *.service.ts *.interface.ts – Selectors should also use dash-case and have a prefix, which functions as a namespace. – Classes (components, services, directives, etc.) and interfaces should use camelCase and have a suffix which refers to the type of the class, like: *Component, *Service, etc. Directory and File Structure Directory and file structures are really difficult to keep standardized. The demands always change project by project. In the official style guide you use shared folder (for common components, styles etc.). Redux Someday your application will grow up so you have to make a good architecture not only for a big set of components and services. You must handle the states and actions. I think redux is the best container for your app, because all frontend developers know it. Performance It is important to know that if you have a component that only expects immutable data to be passed in via a property, you can further optimize rendering speed by adding changeDetection: ChangeDetectionStrategy.OnPush to the component. Reactivity Rxjs is a great library and it is much better to depend on library, than a framework. Frameworks change very often, but libraries have a more stable API. Use @ngrx extension like @ngrx/store and@ngrx/router to make a better use of reactivity. Router Don’t use the deprecated router (@angular/router-deprecated), Angular 2 is in release candidate status but also has a deprecated router too. We suggest the use of the new router (@angular/router) or @ngrx/router reactive solution, which is the greatest yet. Angular 2 is in release candidate status, but this practice will be useful in the future. ... Read more
Adrian Ababei / Jun 27'2016
How to Design a Color Blind Accessible Website: 13 Easy Tips
In today’s day and age having a colour blind accessible website is not optional, it’s a must. Colour Blind Awareness statistics state that up to 4.5% of the population suffer from colour blindness, which may not seem a high number but here are the facts: Why build a colour blind accessible website?   At the moment there are around 3.435.598.500 internet users in the world and this figure is growing rapidly. If we do the math, around 154.601.932 internet users are colour blind – this means they might have a hard time viewing and using your website. That’s a huge chunk of the population! Before you start thinking about costs and figures, let me lay it out for you: designing colour blind accessible websites doesn’t make it more expensive, on the contrary: considering the fact that you cater to ~155 million people will pay out big time in the long run.   What is color blindness? Colour blindness comes in all shapes and sizes. Some individuals may have trouble differentiating between certain colour combinations, some may not see certain colours clearly and some users can get different colours mixed up. Other factors such as glare, screen size, lighting or the quality of the screen can also influence user experience which can ultimately reduce your sales or bounce rate. As mentioned before, designing colour blind accessible websites won’t be more expensive or take ample amounts of time. Here are 13 tips on how to design or change your website in order to improve user experience: 1. Text readability Text size, background colour and text colour are factors which ultimately influence text readability. When designing a colour blind accessible website programmers need to follow specific accessibility guidelines in order to ensure user experience for individuals with colour vision deficiency. 2. Text & Background images Trying to place text over images can be difficult at times simply because the image can lack contrast with the text. A good idea is to reduce the image’s opacity which in turn can make the text easier to read by increasing the contrast. If meddling with the image is not an option, you can change the contrast of your text to achieve the desired effect. 3. Colour swatches, pickers or filters A great and simple solution to this problem is to add text labels next to the colours themselves. This little trick can also help users which don’t suffer from colour blindness as well. 4. Add descriptions to your pictures Adding descriptions to your pictures removes any guesswork for colour blind individuals. It can also help people with other eye problems. 5. Recognizing links In order for a website to be colour blind friendly, links need to be easily spottable without using any text colour. Users suffering from achromatopsia can’t see colour so it’s a good idea to add some specific text before placing a link – eg. “Click here to learn more.” 6. Colour combos Colour blind individuals see the world differently. They also see websites differently. Certain colour combinations should be avoided in order to improve user experience: • Green-black • Green-grey • Blue-grey • Light green-yellow • Green-blue • Blue-purple • Green-brown • Green-red 7. Colour-blind friendly forms Using placeholders without labels can also be problematic for some users as most colour blind individuals will not be able to see the text due to its low contrast. It’s a good idea to have forms with labels for each input line. 8. Primary buttons Designers often use colours to differentiate primary buttons. This is not necessarily a bad idea but in order to improve user experience other things such as icons, borders, size, placement and contrast can be changed in order to make them more noticeable. 9. Alerts and messaging Error messages are usually coloured red and success messages are usually coloured in green. Although most people won’t have any trouble in seeing these messages correctly, it’s a good idea to add prefix texts such as “Operation failed” or “Task failed” to your messages and alerts - It’s a whole lot easier to read and understand. 10. Required form fields Obligatory form fields should be differentiated through other means than colour alone: • Removal of optional fields • Marking certain fields with text – “required” • Marking certain fields with an asterisk 11. Colour blind friendly graphs Graphs are usually made up of different segments of colour. Placing text within each segment can make your website more colour blind friendly. On the other hand, if the segments are too small or narrow for text, you can just use a key to denote different segments. 12. Zooming is a very helpful feature when building a colour blind accessible website Zooming can improve readability for most users, not just colour blind individuals. While some designers choose to disable zooming on their websites, it’s a good idea to leave this essential accessibility feature on. 13. Relative font sizes Browsers can increase text size in order to improve readability but this is not always the case. This function can be disabled if the font size is measured in pixels for example. The key to building a colour blind accessible website is using a relative font size unit such as ems – this will help users avoid headaches caused by tiny text. It’s time for testing! How can you see if your modifications are done properly? Here’s a small list of tools which you can use: 1. Check My Colours – Simply enter your website’s URL and get some feedback 2. Colour Contrast Checker by Web Aim – Enter two colours and see if they can work together 3. I Want To See Like The Colour Blind – Name says it all. Also my personal favourite. 4. Colour Oracle – colour blindness simulator which can work on Linux, Mac and Windows. Conclusion Always remember that between looking good and functionality, most visitors would prefer the latter. ... Read more
Adrian Ababei / Jun 24'2016
How to Improve Your Page Loading Speed: 4 Tips on Designing a Website for High Performance
Website loading speed is closely related to user experience, and for good reasons – time is also more valuable than ever. Why would anyone want to waste time on a slow loading website when they can just jump ships and go to a different website? Users generally want a site that loads in 2 seconds max and a mobile website that loads in 3 seconds max, any longer than that and they will jump ships. Designers are taking more and more steps in order to ensure faster loading time but how can you create a fast loading website without removing any of its flashy features? Here are four tips on designing a website without any loading issues. Minimalistic design still works Fewer elements means less loading times and ultimately better user experience on your website. It’s a good idea to integrate a minimalistic design to your project thus making it easier and more pleasurable to use. If you’re building a website from scratch it’s a good idea to use smart design from the get-go, as it will save you a lot of time and effort in the future. It’s actually easier to build a fast website from scratch than modifying a website to become faster. Minimalistic features which reduce loading time include but are not limited to: • Using just one type of font on your website • Smaller or optimized images • Shorter web forms • More negative space • Use of hamburger menus instead of navigation bars Probably the best example of minimalism design work is Wikipedia. No wonder it’s so popular! Most searches on Wikipedia take under a second to complete and present results. The perception of performance is also important in design work The idea behind this is that you don’t necessarily need to build an extremely fast website; you just need to create a website that’s perceived to be fast in order to keep your users happy. If you are trying to optimize a website’s loading time, you don’t need to implement complex tech solutions in order to do it – you can just change the design in order to make the interface seem faster to the end-user. Google actually wants your website to be fast One of Google’s missions is to make the Internet faster – and your website is a part of that! As such, Google offers ample support to developers in building faster websites. You can go and check Google Devs’ „Make the Web Faster” page. This page will be the backbone of your optimization efforts as you can get multiple tools and tricks to help you on your way. One interesting tool and my personal favourite is the Page Speed Insights – here you can actually see what’s making your site slower than the competition and how to fix it. Detail reports, recommendations, tips & tricks – it’s all there. Simply put your URL into the required field and you’ll get a list of things to fix in order to improve your website speed as well as user experience. The more issues you fix, the faster and better your website will be! Simple enough? Let’s move on. Lazy loading is a thing Lazy loading means that your website’s objects are not rendered until it’s necessary to render them. Basically, objects will begin to load when users are on that specific part of the page. By using this technique your website will require fewer resources to function properly, thus making it much faster than a regular website which loads all objects at once. This technique is a must for long scrolling pages but it also works for regular pages as well. By implementing all these tips and techniques you can ensure a fully functional website with a great user experience to boot. ... Read more
Adrian Ababei / Jun 22'2016
CodePen and JavaScript: Powerful When Used Separately So... What If You Used Them Together?
A lot of devs are now using CodePen for a variety of front end web development tasks and tricks. CodePen can be used to create Pens which are made up of JavaScript, CSS and HTML. A great thing about CodePen is that you can see your results immediately, effectively making this tool indispensable for any front end dev. But what can we do if we combine JavaScript and CodePen? 1. Add any library you need in one place You can add custom settings to any Pen you create: you can set the External JavaScript you need or want to use. Just go to the Quick Add dropdown to do it or simply start typing the required library and a variety of choices will appear. This way you’ll be able to find thousands of CDN hosted libraries. 2. Write in ES2015 Practice your ES2015 skills with CodePen by simply enabling the Babel JavaScript pre-processor. Now you’re able to use ES2015’s features and Babel will process them into an older version of JavaScript, enabling it to work everywhere. You can also do it without using Babel whatsoever but it may lead to browser support issues. 3. You can use the console for debugging and output With CodePen, you can also use your browser’s DevTools if you set its context to demo. CodePen also features a built-in console which you can use. Keep in mind that your URL might change when you close or open different code panels. There are four numbers which stand for HTML, CSS, JS and Console respectively so the URL parameter ?editors=0001 stands for Console open while the others are closed. Replacing the last number with a 2 maximizes the console. This way you can share a Pen when the output is intentionally set only for the console. 4. Use JSX and React Babel also supports JXSX so if you add ReactDOM and React you’ll be able to build in react as well. Apart from Babel, CodePen also offers LiveScript, TypeScript and CoffeeScript. TypeScript is able to process the JSX as well. 5. You can also include other pens as resources Using JavaScript for another Pen is also possible by simply dropping the URL of your other Pen in the External JavaScript function and that’s all there is to it. You’ll be able to create multiple Pens that use the same JavaScript – this way it will be easier to update it when necessary. This little trick also works for CSS in the same way. When it comes to HTML you can include the Pen URL in triple brackets within the HTML itself. 6. Get Ajax from other Pens With CodePen you can use other Pens as resources and you can access the code from Pens located at certain URLs. If you want to access just JavaScript from another pen, you can add .js to the end of the URL you’re targeting. This technique can be especially useful when storing data in another Pen so you won’t have to meddle with the JavaScript code in the Pen you’re currently working on. 7. Learn new stuff with CodePen Devs can use CodePen as a learning tool as well – it’s real code which you can write, edit but also see the results of. You can create Pens for learning purposes specifically but our favourite is the Professor Mode which allows other devs to watch you code in real time and give pointers through the built in chat system. Collab Mode is another useful tool which can be used for teaching purposes – this mode allows multiple people to work on a Pen concurrently for hands-on teaching. 8. You can see coding errors in real time Another feature we love about CodePen is that you can see any errors in your code right in the editor itself. This feature also works for JavaScript – the lines with errors will be highlighted and a special icon will be revealed. Clicking the icon will reveal the error message which is a huge help in understanding the problem and fixing it. CodePen also tries to prevent executing infinite loops which can lock your browser and prevent you from saving your Pen. 9. Lint your JavaScript CodePen can check your JavaScript code with JS Hint as well. This is a tool which detects potential problems or errors in your code. Use this tool to uncover non execution stopping errors most devs tend to miss. If the error message doesn’t provide enough help for you to fix it, there are built-in “Google it” links to find more information. CodePen also lints your JavaScript which is great because if you’re using a pre-processor, it will lint the code for linting warnings. If JS Hint finds any issues it will show you the problems directly in the code. 10. Clean code – easier work CodePen also has a feature which can help to clean up your code. This feature works with JSX as well.   ... Read more
Adrian Ababei / Jun 20'2016
Google’s Springboard: Main Reasons Why You’d Want to Use It
  Your very own digital assistant Google offers two new services for its enterprise customers, the most notable being Google Springboard – your very own digital assistant especially designed for enterprise companies which use Google’s services for business purposes. Springboard has been in testing with a small number of customers until now but it’s been finally released so you can enjoy more power at your fingertips. Google Springboard features a single search interface which uses artificial intelligence to gather and sort information from Google’s other products such as Google Docs, Calendar, Gmail, Google Drive and more. Prabhakar Raghavan, VP of Engineering for Google Apps states „the average knowledge worker [currently] spends the equivalent of one full day a week searching for and gathering information.” Apart from its improved search capabilities, Springboard also provides users with “useful and actionable information and recommendations” which they can use to solve tasks and assignments throughout their day. Google Sites gets better as well Google Sites also boasts a new design as well as a few interesting features. Google Sites is Google’s information portal used to house internal company information such as newsletters, reports and so on. Google Sites users can now use the improved drag and drop interface for easier use and editing can be done in real time by different parties. Google Sites also became friendlier towards different kinds of screen – now it can support any screen from a 30 inch monitor to a smart phone or laptop. Conclusions It will be interesting to see the users’ reaction to these new apps. It remains to be seen if Google’s Springboard can fully replace a personal assistant, but I guess we’ll see the answer to that in the future – Google plans to expand and improve Springboard with more useful features.       ... Read more
Adrian Ababei / Jun 14'2016