Yii 2.0 was released into beta last April and the goal for a first stable release was set for the middle of 2014. The GitHub issue list has 300 open issues and 2913 closed while I’m writing this and both numbers are still increasing. The progress to the 2.0RC milestone was at 99%. My guess is that the team is close, but we’ll probably have to wait just a little bit longer. While we’re all waiting, lets take a look at what we can expect by looking at an already available example.A tiny bit of history
The first version of Yii became popular quite fast after it was released in 2008. It’s founder, Qiang Xue, previously worked on the Prado framework and used experience and feedback from that to build Yii.
Yii uses many ideas from other frameworks, languages and libraries: Prado, Ruby, jQuery, Symfony and Joomla are all acknowledged as sources of inspiration.
The first commits for Yii 2.0 date back to 2011 but the development picked up last year. The team did a rewrite with an aim to become the state of the art new generation PHP framework. It adopts the latest technologies and features, such as Composer, PSR, namespaces, traits, and more.
Something worth mentioning is that according to the download page Yii version 1.1 support will end on December 31, 2015, so we do get some time to start thinking about making the transition.Requirements
Continue reading %What to Expect from Yii 2.0%
Before installing software on your computer, you would probably do a bit of research on the software before loading it on your system. Since the traditional software world has a handful of established vendors, vetting out bad software is relatively easy.
WordPress plugins are often a little more difficult to screen because traditional antivirus programs can't detect web exploits. Instead users are often forced to rely on their gut or sparse comments on the web to figure out if code is safe to use.
The best option to ensure the security of WordPress plugins you use is to audit the code by hand. For most people, this time commitment is a bit excessive. By following a couple of common sense measures, you can protect yourself from many malicious WordPress plugins.Using Security Scanners
Although most security threats can't be controlled with automated tools, using a quality web security scanner is a great way to compliment common sense security measures. Sitepoint mentioned a few security plugins in their article on managed WordPress Hosting pros and cons which are worth looking at. In particular Wordfence and Sucuri SiteCheck are both solid tools which can help you spot malware which isn't visible to the average user.Going Beyond Reviews
While the WordPress Codex and many WordPress Plugin sites offer user reviews, this feature isn't reliable for a couple of reasons.
The first reason is that reviews on the WordPress Codex are often sparse and the reviews often only have star ratings rather than actual user comments. Additionally, reviews on company websites aren't trustworthy because the developer has ample opportunity to manipulate the ratings.
If you are looking for credible reviews, then you should check out independent plugin marketplaces such as Envato Market or BinPress as they are the vendors which stand out. Just make sure you pay attention to user comments which detail why they gave a product the rating they did.
Aside from relying on reviews, have a look at the plugin website and look at the support forums to get an idea of the attentiveness of the developer and quality of their code. Look to see if they have a professional support ticket system, and also try contacting the developer if you have concerns about their offering.
You also should try Googling the developer's information to see if they have a negative reputation across the Internet.
While these steps aren't foolproof, they are much better than making a blind purchase.
Continue reading %How to Protect Yourself from Rogue WordPress Plugins%
HTML Imports are a way to include external HTML documents and web components on a page without making an Ajax request or loading an iframe. Because of this capability, HTML Imports may lead to better page load times, new opportunities to reuse code, and easier integrations with some popular services like Google Maps.
At the time of writing, the HTML Imports technology is a W3C working draft, meaning that it is not yet a web standard and is not yet supported in all browsers. HTML Imports, however, can be used safely on a web page today with a polyfill like the one in Polymer.HTML Imports for Reuse, Syndication
Philosophically, software developers, including web developers, are taught not to repeat themselves, but rather to organize code in models, objects, functions, or similar so that there is a single point of truth and an easy way to reuse components. Thanks to developers Dave Thomas and Andrew Hunt, this approach is generally called DRY development or DRY programming, meaning “don’t repeat yourself.”
In a way, HTML Imports support DRY development. Here is an example. Imagine that you have three messages that are repeated on several web pages, perhaps even web pages on different domains. Rather than copying and pasting or retyping these messages for each page or project, they could be included using the HTML Imports feature.
Here is the HTML for a file called messages.html:[code language="html"] Success
Whatever you just did worked.Failure
What a disappointment.You are amazing. [/code]
To reuse the content from messages.html, first include the document via HTML Imports. This amounts to adding a <link> element with its rel attribute set to “import” and its href pointed at messages.html, like this:[code language="html"] [/code]
The script completes four tasks:
- Selecting the link element
- Importing the external HTML document
- Selecting a section (node) of the imported DOM
- Adding a duplicate of the selected node to the current page
Just like that, the success message is now included on the page, similar to how an Ajax request works.
Continue reading %An Introduction to HTML Imports (Tutorial)%
Welcome to On Our Radar, a weekly round-up of news, trends and other cool stuff from the world of web development.
This week saw the release of iOS 8, which arrived sporting a plethora of new features. Here's a (very) thorough review of Apple's latest mobile operating system, here's the TL;DR version and here are some of the best features you may not know about.
Not content with self-driving cars, balloon-carried internet, or curing death, Larry Page is now apparently planning a Google 2.0 that will build cities and airports.
HTML5 has been gaining momentum as of late. This week it achieved Proposed Recommendation status with the W3C and also got shown some love by Apple, as it became apparent that new iOS 8 features will further its development.
Continue reading %On Our Radar This Week: Polymer, Patterns and Programmers%
In one of my recent articles, The Evolution of the Hamburger icon we talked about the history of this commonly-used pattern, and about who’s using it and why. In fact, there have been many recent discussions in UX circles that have raised the unintuitive nature of the hamburger icon and issues in several cases. In […]
Continue reading %3 Old and Outdated UX Patterns (And How to Fix Them)%
This week marks the release of PhpStorm 8. It’s no secret PhpStorm has been a long personal favorite of mine after having won me over from Zend Studio, Netbeans and Sublime Text, and we’ve covered the tool extensively before, most notably with the shortcuts guide by yours truly. By following the EAPs, we also taken a look at the new features in PhpStorm 8 before it even came out. Now that the day has finally come, let’s see what else is included, and finish up with a giveaway of free licenses.
Continue reading %PhpStorm 8 Released – See What’s New and Grab a Free License%
In this article, I am going to talk about SitePrism, a testing tool that I have recently learned about and been enjoying. Here is a description of SitePrism from its' creators:
SitePrism gives you a simple, clean and semantic DSL for describing your site using the Page Object Model pattern, for use with Capybara in automated acceptance testing.
Before we go into SitePrism, let's talk about page objects, because page objects are central to understanding the philosophy behind SitePrism.
Continue reading %Testing Page Objects with SitePrism%
CCSS, or Component CSS, is an architecture that simplifies the CSS authoring experience for large web applications.
Large web applications generally have a lot of CSS files and often have many developers working on those files simultaneously. With the advent of so many frameworks, guidelines, tools, and methodologies (OOCSS, SMACSS, BEM, etc.), developers need a CSS architecture that is maintainable, manageable, and scalable.
As a frontend engineer, I believe that component-based web development is the way forward. Web components are a collection of standards that are working their way through the W3C. They allow us to bundle up markup and styles into reusable HTML elements that are truly encapsulated. What this means is we need to start thinking about component-based CSS development. While the browser makers are implementing these standards, we can use soft-encapsulation in the meantime.
Let’s take a look at exactly what CCSS is and how you can use it in you are setting up the CSS architecture for a complex web application.Elements of CCSS
Below are the major elements used either fully or in a modified way to achieve the best configuration for the CCSS architecture.SMACSS
SMACSS, created by Jonathan Snook, stands for Scalable and Modular Architecture for CSS. It is more of a style guide than a rigid framework. Read about SMACSS for background on the structure as CCSS uses it.BEM
BEM, created by developers at Yandex, stands for “Block”, “Element”, “Modifier”. It is a front-end methodology that is a new way of thinking when developing web interfaces. The guys at Yandex came up with BEM and more information can be found in Harry Roberts’ excellent article.Sass
Compass has no class definitions; it is an extension for Sass that provides a lot of utilities. It is used for general useful mixins, and sass compilation. Compass mixins should nearly always be used in cases where vendor prefixes are required. This again is a nice-to-have and Bourbon, on the first look is a great alternative.
Continue reading %Introducing CCSS (Component CSS)%
Recently an ex-journalist friend asked me about freelance writing for the web. Although he might have 10 years’ professional experience on me, his questions came from the perspective of someone who wasn’t au fait with either freelancing or web writing.
This wasn’t the first time. Since there might be some writers out there eager to make their first foray into web writing, either within a company or on a freelance basis, I wanted to cover the most common questions I’m asked. Maybe it will help you find your footing a bit faster.
Let’s start with my friend’s question.I’m a journalist. How do I find freelance work writing online?
If you have experience creating stories for print and other offline media, you don’t need to worry: the web is much the same. Research publications, find some you want to write for, come up with pitches, and send them in. Online, as offline, the money is in reliability and relationships. Good publications pay for the reliable delivery of quality content.
The things to focus on are finding what you consider good publications that reflect the areas and issues you want to cover, and pitching well to them. Use the same approach you would offline: introduce yourself, present a clear, concise outline of your idea, and link to a few other things you’ve done that relate or support your pitch. If you haven’t pitched in a while, and need a refresher, try this article outlining the 7 Principles of Pitching, and have a look at this piece on how not to pitch.
Part of my approach has been to ask friends for recommendations of sites they like, and since many of my friends are readers, this turns up some gold. But I also look through social media and other links for places I want to pitch to, and to spark ideas I can offer existing contacts.I’m writing for a content mill! Cool huh?
Another variation on this question is, “Have you hard of [content spinning software]? That’s what I use!”
Everyone has their talents, but I’d have to say that this kind of writing isn’t for me and as a consequence I can’t really see how a writer who wants to produce quality content can make any money (or get any satisfaction) out of content milling. Maybe you can do both, for now. But as search engines continue to penalise sites that use this kind of content, those “opportunities” are likely to fade. If you want a career in writing online, you’ll need to think beyond content milling and build broader skills.
Continue reading %6 Common Questions About Writing for the Web, Answered%
How many times has a client, manager, or colleague from a different department asked you to deliver something because it’s trendy?
They’ve seen it, they want it. Relevance, be damned.
How often has this trend been completely unsuitable for your website project? Saying “no” and explaining why a trend makes no sense for your website can be a challenge, so it’s helpful to understand what value a trend can add, and how to apply it effectively in your circumstances.
Parallax scrolling as a web design trend was born from the 2D video game world, originally as a hack for the platform to create a sense of depth in a scene. Noticing the rise in parallax scrolling over the last two years, a designer recently decided to apply the style to his newest web project: a landing page for a small line of retail products.
While scrolling, lifestyle shots of the products should move slowly in the background while descriptions of the products should move quickly in the foreground, producing a parallax effect. In practice, however, the parallax scrolling would, by its nature, prevent the faster-moving descriptions from lining up with their slow-moving photos.
This highlights what can go wrong when applying a popular technique because it’s trendy instead of using it because it’s right for the job. So let’s look at when it can be helpful.Creating Depth with Parallax
Animals use motion parallax to determine their distance from an object — picture a bird bobbing its head up and down to figure out how close they are to animals in their surroundings. When you scroll a web page, the parallax effect creates the illusion of depth because your direct action (scrolling, rather than bobbing your head) affects the relative position of elements, just like moving through the real world does.
This interaction leads to feeling like you’re a part of the scene, immersing you in the content, enticing you to explore further. Scrolling allows you to actively engage with what you’re seeing, and be immediately rewarded with the unveiling of more visual content:
As such, the parallax effect is an excellent technique to use in visual story telling. It’s highly engaging, encourages interaction, and lets you guide your user through a story. In practical terms, this could be a:
Continue reading %The Perils and Perks of Designing with Parallax%
One of the (few) things I don’t like about Laravel is that you cannot move the validation code from your controller to your models easily. When I write software I like to apply the “fat models, skinny controllers” principle. So, for me, writing the validation code in the controller is not a good thing.
To solve this, I’d like to introduce Ardent, a great package for Laravel 4. To be more precise, Ardent presents itself as “Self-validating smart models for Laravel Framework 4’s Eloquent ORM.” In other words: exactly what we need!
As you can imagine, it’s an extension of the Eloquent Model class, basically. This package comes with some new functionality, utilities and methods dedicated to input validation and other little things.Our Test Application
For a better understanding of the advantages you can enjoy while using Ardent, we will set up a little test application. Nothing complicated: a simple To-Do List app.
Of course, I’m not going to implement a complete application: I just want to explain some principles, so I will make some controllers and models - no views. After that, I will “translate” the code using Ardent.
Our To-Do List will count two different entities:
- status (done / not done)
A really basic project. However, if you don’t want to write code, don’t worry: I have already prepared a migration that you can use to generate the database. Use it!
Continue reading %Ardent: Laravel Models on Steroids%
There are a lot of things you can do to get new clients: Have a strong portfolio, know how to articulate the benefits you bring to the table, and of course, have an effective pitching process.
But every now and then, you just want to try something different. We've got your back for the next time you get adventurous with these 10 unconventional ways to get new clients.1. Social media: Smart searching
This is a beginner-level technique that can still yield strong results. Using Twitter and tools like Hootsuite or Tweetdeck, you can set up searches for specific keywords such as "web designer" or "WordPress developer." Check in on it a few times a day and see what questions people have about your field of expertise or what discussions are going on about working with freelancers in your field. Chime in where you can, always with the goal of being helpful, not salesy.
Virtual assistant Amy Metherell says this is how she got her first three clients, and she's still working with them to this day. "Each day, I'd go through this stream and find anyone who tweeted looking for recommendations for VAs. I'd then respond to them in a conversational way and say something like, 'Hi, I'm a VA. Maybe I can help or know someone who can.'"
Continue reading %10 Unusual Ways to Find New Clients%
There are many benefits of Sass for WordPress developers. You've probably heard many arguments for using a pre-processor by now. CSS pre-processors provide the opportunity for better code organization by using partials and nesting styles. Pre-processors help developers style faster by writing mixins and functions. Pre-processors also allow us to write more maintainable, scalable code with logic and variables.Convert a Stylesheet to Sass
The best way to start using Sass in WordPress development is to use a theme that has Sass files included. The Underscores theme is my favorite starting place for a new theme. However, if you're starting with a theme that doesn't have Sass files included, you'll need to convert the existing stylesheet to Sass.
The good news is that if you're using the .scss syntax (which I recommend), your existing CSS is all valid Sass. You can simply copy style.css to style.scss and that .scss file will compile properly.
Continue reading %Sass for WordPress Developers%
In my last article, Obvious always wins I showed how important it is that users are able to understand your website or application and can use it without any effort. The first thing to be sure of is that your interface is simple and intuitive, utilizing familiar icons, actions, and features.
One of the greatest challenges for developers is to find and implement a functional navigation menu that works well on mobile devices.
You cannot create a good user experience without a functional navigation bar. New users will look for and scan your navigation so it is crucial to give a good impression and avoid disappointing their expectations.
Among the professionals who have written on this topic, the first that deserves a mention is Brad Frost. You can discover his approaches and examples of patterns for mobile navigational menus on Brad’s website.
In this article I’ll focus on 5 of them. Think carefully about the best to use in your next projects based on your users’ needs.Top Nav or “Do Nothing” Approach
One of the most frequently used solutions for navigation is to keep it at the top. Because of its ease of implementation, it’s the one adopted by the majority of websites.
Continue reading %5 Examples of Patterns for Mobile Navigation Menus%
During the last few months the debate on the web about the best way to handle events has thrived. First, a few months ago, Google released the JsAction library; then, more recently, the Object.observe() method was introduced as part of the ECMAScript 7 specification (but already supported in Chrome 36 and Node.js Harmony).
Developers had already been taking sides on whether it is still "mandatory" to have all the logic confined to script files, or if it is acceptable or even preferable to inline selected parts of this logic into HTML. In this post, we will try to sort out this debate, going through the different patterns for error handling, and then weighting pros and cons of these alternatives.The Facts
A general, recent trend has started that moves part of the logic not just to HTML files, but within DOM elements affected by that logic. This isn't true just for event handling: a number of template-based frameworks (like Angular, Ractive, React) are emerging; they enforce the Model-View-Controller pattern in web application, and allow data-binding and reactive programming.
The introduction of the Object.observe() method in the next ECMAScript specification is another step in that direction, since it allows developers to natively apply the Publisher/Subscriber pattern to a whole new set of situations, and not just event handling. Declarative frameworks are already based on this logic, but the introduction of Object.observe() will help them gain an amazing improvement in performance.The Story So Far
For example, to change the background of your page to blue with a button click:[html] Feel Blue [/html]
The Netscape approach that in-lines event handlers had, indeed, some downsides that the event listener approach solved:
Web development today can be a whirlwind of various technologies, and even the simplest of widgets can often be complex under the hood.
The :focus pseudo-class is used to target an element that has received focus by the user (either by using the keyboard or the mouse). It is supported in every browser including IE8+. Additionally, you can apply a :focus state to any HTML element as long as you give it a tabindex attribute.Using the tabindex Attribute
HTML’s tabindex attribute indicates if an element can receive focus. It can take several values, including a negative value, zero, or a positive value. Each of these values determines what order an element should be focused on.Demo for the Tabs Widget
In the HTML, each tab is a button with the content for each tab inside of a paragraph element. Each paragraph element is hidden, then set to position: absolute so that the content will display in the same area for each tab. The first button element has the autofocus attribute, so that the first tab will be visible on the initial page load. Each tab is wrapped in a div, and each div is given a tabindex value, which allows the <div> to be focusable.
As for the CSS, each button is set to display: inline-block, allowing for the tabs to appear side by side. We apply the :focuspsuedo-class to the button and use the adjacent sibling selector to show the related paragraph element when the button is focused. I’ve also added focus styles to the tab’s container div, which means that the tab will keep its focused state until the user clicks outside the entire widget.
Styling a section post with CSS is a lesson from the course Putting It Together: Building a Website, by Guilherme Muller. Watch to see how you can use a combination of HTML and CSS to change the stylistic layout of the Latest Post area in a website, giving it a colourful, sleek and modern look. If you want to get your hands dirty with website building with HTML and CSS, this course is for you. You will learn how to use the main tools that these languages give to build a complete and complex homepage of a website, based on a professional design which we will analyze and slice in Photoshop. This is a practical course covering the main techniques web developers use for building a variety of common page elements.
Continue reading %Styling a Section Post With CSS%
For almost three years now, there has been a regular and well attended monthly PHP meetup in Zagreb, Croatia. October 2nd 2014 marks the third anniversary of this meetup, and in the spirit of last year, a one-day conference has been organized to commemorate the event.
This year’s conference, however, will be a bit different.
Continue reading %ZgPHP Conference 2014 – Free Entry%
Landing pages--those long, long pages with rivers of text, shouty headlines and big BUY NOW buttons--are controversial.
They run counter to what we're often taught: That the best way to make a sale is to win the trust of your customer and make a soft sale over time.
Landing pages, on the other hand, tend to play on fear and urgency to compel readers to hand over their email address or make a purchase.
While you might think landing pages are obnoxious, you can still learn lesson from them that will make your corporate marketing strategy more effective.
Continue reading %These Lessons from Old-School Landing Pages Can Improve Your Site%