- Category: Developer News
At Extly we are very proud to announce that this year we are Silver Sponsor of the Joomla Day Madrid 2018.
Next Saturday, November 17, 2018, will take place in the Casa del Corazón Foundation (Madrid), the Joomla Day Madrid 2018. The event will be the most significant meeting in Spanish of Joomleros, and whether you have a website or if you are going to start on a project, you can not miss the JoomlaDay Madrid 2018. Here will meet the best professionals who will teach us their strategies and best practices to have a professional website: Design, SEO, WPO, Security, Marketing ... Also, this year It will be the first time that the Joomla certification exam is taken in Spanish AND in Spain.
If you are interested, make your pre-registration here.
About Extly, we are web developers, experts in the management of corporate solutions, mobile applications and market the following outstanding extensions:
For whom arrive early, there are going to be two activities on Friday before the main event, you can participate in the PBF or take the Joomla Certification Exam:
- Joomla Pizza, Bugs & Fun: The activity where Joomla enthusiasts meet to improve Joomla. This is not only to improve the Joomla code but also the documentation and translation. About this pre-event activity, please check it, here.
- The Joomla! Certification Program ensures the competence of Joomla! professionals through a documented measurement of skills and knowledge. To prepare the exam, please check it here. Remember that the exam is available in Spanish, but it can also be taken English, German, French and Italian.
Los esperamos en Madrid!
- Category: Developer News
En Extly estamos muy orgullosos de anunciar que este año somos Patrocinador Plata del Joomla Day Madrid 2018.
El próximo Sábado, 17 de Noviembre de 2018 tendrá lugar, en Fundación Casa del Corazón (Madrid), el Joomla Day Madrid 2018. El evento será el mayor encuentro en español de Joomleros, y si tienes página web como si vas a comenzar a realizar tu proyecto, no puedes perderte el JoomlaDay Madrid 2018. Aquí se darán cita los mejores profesionales que nos enseñarán sus estrategias y sus trucos para tener un sitio web profesional: Diseño, SEO, WPO, Seguridad, Marketing... Además, este año será la primera vez que se realice el examen de certificación de Joomla.
Si estás interesado, realiza tu pre-inscripción aquí.
Acerca de Extly, somo desarrolladores de web, expertos en gestión de soluciones corporativas, aplicaciones móviles y comercializamos las siguientes extensiones destacadas.
- Category: Developer News
It lurks in the shadows…creating hidden trees…playing by a set of its own rules…it’s…
But, what exactly is Shadow DOM? Put simply, Shadow DOM is an API that is part of the Web Component model. It helps to isolate component internals, protecting users from breaking changes and global CSS.
I’d like to think we here at Ionic know a thing or two about Shadow DOM, as we recently made the move to using it in Ionic 4, and with that, received a lot of questions from the community on just what the heck it is. There’s a lot of information (and misinformation) floating around about Shadow DOM, so let’s go through the API and see what it actually does.
What is Shadow DOM?
Shadow DOM sounds like it could be a complicated API, but it’s actually built on two simple ideas, isolation and location. Need to create a bit of DOM that is isolated from the global scope? Shadow DOM is here to help. Need to specify the exact location of a piece of DOM? Shadow DOMs scope API is what you need!
It can be helpful to think of components that use Shadow DOM as modules for HTML. Markup and styles are isolated to their own DOM tree, and removed from the global context. This enables us to unlock some pretty incredible benefits:
- Isolated DOM
- Isolated CSS
- Simplified CSS Rules
Typically, Shadow DOM is associated with Custom Elements, but you can still use
Shadow DOM with regular HTML elements. In fact, most browsers
use Shadow DOM without you even noticing. For example, every
time you use video tag, you’re actually using an element that
has Shadow DOM. Think about it, devs just need to write the
<video> element, supply a video source, and
set a few attributes on the HTML.
<video src="https://some-video.mp4" controls></video>
But parts of the video element, like video controls, are automatically created. Developers don’t actually have to provide their own play button, progress bar, volume control, they’re automatically provided. This is Shadow DOM in action!
Now let’s use this bit of Ionic markup:
<ion-content> <ion-item> Hello World </ion-item> <ion-button> I'm a button </ion-button></ion-content>
This markup is pretty simple, all we’re doing is rendering an item and a button. Nothing too special right? Well, let’s look at the dev tools
Woah, where did all this come from? This is Shadow DOM working
in Ionic’s components. All the internals of
ion-button can be
abstracted away from the user, meaning all they need to know is
the tag name, and is automatically handled by the browser. In
For Slots, we can provide all the entry points up front. For
ion-item has three slots, Start, End, and
the default. By using Shadow DOM, we can keep their location
right where we want them to be, vs having users write their
markup in a specific order. So there could be an item written
<ion-item> <ion-icon name="home" slot="end"></ion-icon> Hello World </ion-item>
And Shadow DOM and slots would know how to correctly render this.
Ok, so what’s the big deal? Ionic v3 already did something similar using Angular’s Content Projection. While Angular’s Content Projection is available, V4’s approach uses standardized APIs that all browser vendors have agreed on. Meaning, there’s no extra code needed at run time. By using the Shadow DOM, we get all the benefits of content projection, but built into the browser.
From a component author’s perspective, we can now author Ionic’s components in a way to prevents most breaking changes. Since we can control where and how a component’s content can be rendered, we’re able to prevent many mistakes and harden user’s code.
With the component’s internal markup isolated, updates and improvements can be made to any component, without the end user needing to update their code.
This is the real reason why Shadow DOM is being used in Ionic.
It’s one of the many new exciting features under the hood in Ionic 4, and makes maintaining the Framework much easier. And as a result, we’ve been able to drastically reduce the amount of CSS code required for users’ apps because of its simplicity. Less code === Faster apps.
On top of that, devs building with Ionic don’t need to worry about potential breaking changes. Smaller CSS that is easier to maintain, and markup that has fewer breaking changes… what’s not to love about Shadow DOM?!
In a future post, we’ll look at how theming is done in V4 now that all of Ionic’s styles are isolated…
Spoiler, it’s CSS Variables
- Category: Developer News
The new documentation comes in hand with the release XT Search for Algolia v1.4. XT Search is our brand new solution to empower the user experience of an Instant Search, powered by Algolia service. It just works to create an awesome search experience. Check it in our demo site, or on this leading case. The latest version comes with multi-connector sitewide search and connectors for Joomla Articles, K2, SobiPro and JCalPro (more connectors are coming, check the roadmap here).
In this screenshot, the new search engine of the documentation is shown working amazingly fast.
On the long haul, it will allow us to create and publish the tutorials and videos in shorter periods.
To the moon!
- Category: Developer News
Two weeks ago, I decided to make a companion app for the popular game, Pokemon GO. While my days were spent working on new products at Ionic (like Identity Vault), my early mornings, nights, and weekends were spent hacking on GO Ranger.
Here’s what happened:
- Day 1: I was live on Firebase Hosting as a web app with a few rudimentary features.
- Day 3: The amazing co-founder of Ionic and designer, Ben, made me a logo and I ordered some custom T-Shirts.
- Day 9: I launched several new features throughout the next week of development, testing them with some early users and making tweaks.
- Day 13: I was live on the iOS App Store and Google Play Store.
- Day 14: I posted my app to the most popular Pokemon GO subreddit as well as my local communities.
- Day 16: GO Ranger had been downloaded over 40,000 times in over 110 countries.
- Day 17: The app started trending at #6 on Google Play, is rated 4.9/5 Stars with 50 reviews on iOS, and 4.3/5 Stars with 200+ reviews on Android.
So how did I pull it off? What are some tips to make sure your app launch is successful?
Use a Framework
If you want to launch quickly and iterate your way to success, you should NOT be spending time reinventing the wheel. You should ALWAYS find a framework that helps you get to where you want to be faster, and hopefully one that utilizes technology you already have experience with.
Since I have the most experience with Ionic and web technologies (I do work here after all), I chose Ionic. Not only did I not have to care about how navigation or mobile design paradigms work, but the UI & UX from Ionic provided everything I needed for GO Ranger out of the box.
And hey, GO Ranger got a good amount of comments about it’s buttery-smooth performance!
Focus on Pain
One of the most important aspects of an apps success is to make sure it’s solving pain for your users. In GO Rangers case, some of this pain is quite literal!
Pokemon GO throws events called “Community Days” which are 3 hours long and happen once per month. During the last event, one of my friends told me that the event started at 12pm, which didn’t give me enough time to go home and grab my walking shoes. It turns out the event started at 1pm, but because I showed up early I wound up walking FOURTEEN MILES in…sandals. Ouch. Talk about real pain.
Some might say the opposite would have been worse. If I would have showed up an hour late to the event, I would have missed out on 1/3rd of it!
Clearly there was something here. So the first feature I made was an Event list that shows you both actively ongoing events and upcoming events automatically converted to your timezone with countdown timers.
Just this one feature has resonated greatly with the Pokemon GO community, a lot of Trainers feel this pain!
On top of that, a very popular thing the Pokemon GO community does is make infographics that show current information. For instance, you might have 10 different infographics with different information about how to defeat Mewtwo in a raid.
GO Ranger aims to bring all of the information most commonly found in infographics into an actual dynamic interface that you can click and explore, that is always kept up to date. Now you don’t have to worry about finding the latest infographics and saving them to the photos on your phone!
Launch to a Community
One of the most important factors to whether or not an app is successful is your ability to find an active user base. In my case, Pokemon GO Trainers! If you can go to where your users already are, you’re going to have a much easier time launching.
Here’s how I handled finding other Pokemon GO Trainers that would like to use GO Ranger:
1. Find an active community
Where do your potential users hang out? If you’re a target user, where do YOU hang out? Thankfully for Pokemon GO this is fairly easy, there are several popular Reddit communities that people (including myself) frequent in order to get the latest information about the game and hang out with each other.
In my case r/PokemonGO is the biggest community, with almost 1 Million members, of which over 5000 are normally active at any given point in time.
Just to give you some more ideas, other popular “launch” communities are ProductHunt or Hacker News in the tech community. Also, communities aren’t always websites, sometimes your potential users are at coffee shops or conferences, etc. Go where they are!
2. Be a part of that community
It’s a bad idea to immediately join a community and start peddling your wares. You should be interacting with the community (even if it’s behind the scenes). You’ll be much more successful if you can RELATE to the community as well, if YOU can feel their pain.
Walk fourteen miles in their shoes. Or sandals.
The easiest way to do this is to be building apps that solve your own problems. When you’re part of the target demographic, you can relate to the pain much easier. That’s not to say that you always have to be in your target demographic, it just means you’ll have to do more work in that case.
3. Iterate with the community
You might think you have a great app idea, but you need to make sure that it resonates with your target demographic as fast as possible. Before I even had anything to show for my work, I posted a topic in the community asking people “What do you look up frequently?”
I was trying to get a handle on the information that people wanted easily accessible at their fingertips that would work great for GO Ranger to include.
Once I launched the web version on Firebase, I shared it with a few members of the community before the official launch to make sure that I hit-the-mark on solving their pains.
The big day is here! You’ve iterated with users and you’re ready to hit the big red launch button. Make sure you’re authentic in your launch post, that you’re following all the rules, and that you’re hitting your biggest pain points first.
Here’s my launch post.
5. Don’t stop iterating!
Hopefully you’re going to receive A LOT of responses. It took me multiple days to go through all of the feedback, and I tried to respond directly to as many people as possible. I even organized the feedback into a spreadsheet so I could better account for what was receiving the most upvotes.
Most of the feedback was about things that were inaccurate in my app or bugs. Squash the most important bugs first (GO Ranger had issues on 20% of Android devices, which we fixed within 24 hours), then move on to the most requested features.
One of the bad parts of making a mobile app though is that it’s often VERY hard to change things and ship quickly. In order to make this easier not only for myself, but to deliver better updates faster to my users, I used Ionic Deploy to automatically update my app whenever I push new versions. Deploy V5 includes some very nice new features like differential updates that make sure your updates are downloaded quickly to your users.
The work doesn’t stop here
Yes, launches are quite often one of the most exciting experiences you’ll encounter. I love watching Google Analytics to see how many people are live looking at my app right now (at one point there were 390 simultaneous users).
However, the real work comes from continuing to solve pain, from continuing to put in the work. Yes, GO Ranger got over 40,000 uniques in just a few days, but it’s settled down to about 9000 Daily-Active-Users.
And those ones that stick around? Those are the ones that I want to continue to help.
It’s a two way street. Together we’ll be making Pokemon GO Trainers from all around the world have a better experience with the game.
Long story short: Keep solving more pain, better!