Magazine

Apple Worldwide Developers Conference WWDC 2018 Recap

Posted on the 22 June 2018 by Nodes Agency @Nodes_apps

In the beginning of June 2018 the Apple Worldwide Developers Conference took place, and Apple came with a good amount of announcements. Among those were a lot of topics in the areas of apps and mobile.

Apple describes this conference as:

“When technology connects with creativity, incredible ideas come to life. This summer, we invite thousands of talented minds from around the world to join us and turn their ideas into reality.”

In this video you can get our views on the announcements and which announcements we find the most important for App Developers and App owners from our Lead Developer & Head of Development, Steffen D. Sommer, and our Senior Vapor & iOS Developer, Siemen Sikkema.

Transcript

Siemen: Hi and welcome to our WWDC 2018 recap. My name is Siemen, I’m a Senior Vapor & iOS Developer here in Nodes.

Steffen: My name is Steffen and I’m the Lead Vapor Developer here at Nodes. I’m really excited to be talking about WWDC today. It’s one of my favorite events during the year.

Siemen: Yeah. We watched it at a local streaming event and Apple announced a lot. Some people say Apple didn’t announce a lot of high-profile features but there was a lot of focus on improvements, and I liked it a lot personally.

Steffen: Yeah, so a lot of announcements, a lot of stuff to digest, and we decided to focus on the stuff that we find important for app developers as well as owners.

Siemen: So, first up the performance. With the iOS 12, there was a lot of focus on performance. Also, on older devices, devices going all the way back to 2013, so the iPhone 5s for example, and the improvements are the faster animations, app launch time, keyboard appearing is much faster now. And, a big part of why this is possible is because of the faster CPU ramp up and ramp down. When you request an action that takes a lot of power, then the CPU goes up to its full speed right away and makes everything feels a lot snappier.

Steffen: I guess it’s relevant if you think about battery consumption, but I don’t think they said it explicitly but I think the promises that it’s behaving at least as it was before they change the CPUs shortly. That’s my assumption.

Siemen: Surely, they didn’t make it worse.

Steffen: Yeah.

Siemen: And then there’s been very positive initial reports also from people here it Nodes, who have used the betas, older as well as newer devices are all a lot faster, feel better use and we expect this to to result in a very fast adoption of iOS 12. People will really want to install this because it makes phones faster instead of slower which has happened in the past.

Steffen: Yeah.

Siemen: So, that’s good for us.

Steffen: It’s nice to kind of stop the old conspiracy theories around ever wanting to make it slower for you to buy newer devices and so on. Now, they actually taking care of the older devices as well. I think that’s a good move from them.

So, one of the things we want to cover today is Siri and, at least more interestingly to me is serious shortcuts. So, first up Siri was improved, so they added more languages—I think we’re at around 40 languages now.

They also expanded the knowledge space of Siri, so that means that it now will know stuff about Motorsports, it will know about celebrities, it will know about facts about foods. So, you can say, “hey Siri, is this healthy to me?” But, to me at least, more important or more interesting was these shortcuts.

So, back in 2017 Q1, Apple bought the Workflow app, and I think it was more targeted Pro users a iOS, but it was a pretty big app and they also an Apple design on what as far as I remember.

But they bought them back in Q1 2017, and a lot of people, including me, have been waiting to see what would come out of this acquisition. And we’re kind of slowly seeing that now.

So, they’re introducing a shortcuts app which is very similar to the workflow app, at least that’s how I see it right now. So, the idea is that you are able to combine a set of actions into a shortcut which was previously a workflow and you can kind of run that chain of actions in one go.

You can also associate a custom voice command. So, we don’t have the full Siri dynamic way of interacting with different apps right now, so this is kind of the first step towards that, as I see it.

So, if I have a chain of actions, for example, I want to go surfing, then it could pull down the weather report, it could look at the wind condition, it could create a reminder to put on lotion when I hit the beach.

So, a lot of cool stuff, but it’s worth noticing that this is a static voice command—there’s no placeholders, there’s no variables, it’s just ‘do this when I say this.’

Siemen: Yeah. So, if you open your podcast app, you can start a specific podcast for example, or you would have to have different shortcuts for each podcast.

Steffen: Right. And the example on the slide shows that one has set up a shortcut that opens up a specific website when he when the person says “iPhonehacks.” So, some other stuff related to shortcuts which also got announced, so, one thing is the actual shortcut app, but how do you actually get stuff into that app?

So, the way they’re referring to it is by donating shortcuts, so your app can kind of donate shortcuts. So, that can be actions inside of your app, you can do that by using user activity.

You can also you use a new intent, which is a custom intent where you get a bit more flexibility, a bit more functionality. And Siri is now also able to suggest shortcuts.

So, let’s say you have a shortcut that you go surfing each day at 5 p.m. then Siri will start suggesting running that shortcut at 5 p.m. each day on your log.

Siemen: Yeah, if you do it at the same time every day, then it sees a pattern.

Steffen: Right.

Siemen: But, as a developer, you have to open it up to be suggestible.

Steffen: Right. Yeah. So, as an app, you can either say that this action just happened so I use it just plays in order on a coffee, but it could also suggest future action that might happen, and that kind of hints to Siri what she can suggest.

It’s also worth noticing or mentioning that these shortcuts are also controlled by the Apple watch and also the Home Pod, but you need to have your iPhone on the same Wi-Fi.

Siemen: Yes.

Steffen: There will also be some more serious suggestions on the search screen. So, we are used to having the app suggestions today, now it will be expanded to also include shortcuts. I guess that’s expected.

Siemen: Yeah.

Steffen: It makes sense.

Siemen: So, ARKit 2.0 was announced, a new version. They announced an ARKit 1.0 last year and in the middle 1.5. The new features of this one are, first of all, persistence.

Meaning, if you use your AR app in a certain place, you look through your devices, you see the real world but you also see virtual content above it.

You place an item on the table, for example, it’s now possible is for the system to save the whole scene and you can come back later to it and go and continue where you left off.

And, some of that same technology is used for the next big feature which is Shared Experiences, where you can use the same you can multiple people can enjoy the same scene at the same time.

So, the whole world map that Siri builds is shared in real time between devices if they’re are on a same network or close together. And, Apple made this slingshot game where you play together to toss these blocks. None of these blocks exists in the real world, they’re all virtual.

Steffen: Right, and it seems like you can also add spectators.

Siemen: Yeah.

Steffen: So, even though there are playing you can add more people that just spectate and sees the virtual world.

Siemen: Yeah. Another thing they improved or added, I guess, is object detection. Because before, it was possible to detect images, next to 2D images, and interact with them in a way like you could have a photo and you could maybe play something on it, and if you move the photo the object would move along with it.

So, this was possible from 1.5, but the object detection, the 3D object detection is new. So, as a developer, you have to scan your objects that you’re interested in and then they become available to the app, so the app can actually detect individual items.

So, in this example, there is a little Egyptian head, and after you scan it, the app will be able to recognize it.

Steffen: Yeah. I think the demo they did at stages at the keynote about the Legos set was really nice, and it kind of shows you how you can tie all of this together; to buy a Lego set and it’s able to recognize the object, you’re able to augment the experience and you can play together with somebody else, you can persist it you can pick up Lego as well. I think it was really nice.

Siemen: Yeah, it was really cool. I spent a lot of time on that part as well. The last thing, a big thing of ARKit 2.0 is the Quick Look for which they introduced a new file format USDZ, which actually the file format is created by Pixar which contains all the information that you need for an AR experience.

And these objects will be possible it will be possible for them to be opened in all kinds of apps like system apps but also third-party apps. And you could, for example, think of a situation where you go to Safari, you go to a web shop, and you look at a product that you’re interested in, you could download one of these objects and then you could place this object in your in your home. So, you could see if you actually like it, you can see how it fits with your surroundings.

Steffen: And it will be great to see all the platforms outside of Apple kind of adopting this file format. That would be great for everybody, I think

Siemen: Absolutely.

Steffen: So, I think AR is a hot topic in the recent years, and the same as machine learning, so of course they also bumped machine learning framework Core ML to new media version 2.0, and they made it faster and they made all so the model is significantly smaller. And when we talk about building in models in in apps, I think it’s very important to think about size.

Siemen: Yes, yes.

Steffen: I think it makes a lot of sense to try and work on this. So, I think they mentioned 75% smaller models.

Siemen: Yeah.

Steffen: Yeah. And, they also introduced another tool called Create ML. So, earlier, when you had to create these models for your application, you had to rely on third-party tools.

You can now use a tool made by ML called Create ML. So, you can stay within your Swift Programming Language, you can stay within XCode, so you can use playgrounds to actually create and train and evaluate these models. And, there’s even a certain builder types inside of this framework that allows you to make the creation of the model more interactive, so you can drag and drop your images, you can look at all of this in playground. I think this is really nice.

Siemen: Absolutely.

Steffen: So, another big thing this year’s event is Notifications. So, there’s a lot of new stuff in notifications coming in iOS 12. First up, you have that notifications finally gets grouped, or stacked, as they call it. So, basically, by default if you receive five or more notifications from the same app, they will be grouped together on the lock screen. This means that it will be able to kind of dismiss them all at once, which makes a lot of sense. I’ve been waiting to this feature for a long time.

Siemen: It’s such a such a mess on your lock screen there.

Steffen: Right.

Siemen: And it’s gonna be much improved.

Steffen: Yeah. And there’s a couple of ways you can kind of indicate to the OS as an app developer how these stacks should behave. So, first of, we have Thread IDs; it’s not a new thing we already saw that in it was iOS 10, iOS 11, but now you can use thread IDs to indicate to the OS how notification should be grouped.

So, let’s say you have a chat application, and you want the different conversations you have going on being groups instead of all of them being grouped in one. So, you as an app developer, you as an app can now hint that through the OS.

Siemen: Right. For each conversation, you have a different ID, so the system knows how it should be grouped.

Steffen: Right. It is worth noticing that the user is able to go in in settings and turn this off and just say “I only want them to be grouped by the app,” or turn it off completely, that’s also possible. You can also customize the summaries, so if you have a stack or group there’s a small text below saying that you have five or more messages, game requests whatever it might be, you can customize that.

Siemen: It’s not done over here.

Steffen: Right. You can now also manage your notifications from the lock screen. So, it’s not anything new in terms of APIs or anything, it’s just a convenience for the user of the OS basically. So, this is just, I don’t want to say shortcuts, but it’s quick ways of handling settings related to notifications.

So, basically when you get notification on the lock screen, you are now able to swipe and click manage, this will bring up a new sheet where you can turn off the notification completely.

So, I think this has been a topic for quite a couple of years now, that we need to care about what notifications we send out to the user so they don’t turn them off, and I think this becomes even more relevant now because it’s simply just easier to turn them off.

Siemen: Yeah, so easy to just stop any notification from an app. So, the moment you annoy a user you might lose them through that channel at least.

Steffen: Right. And on the same sheet, you can also say that you want the notification delivered quietly. So, it’s not a new type of notification, this is just a quick way for you, of the user of the OS, to kind of turn off banners and lockscreen. So, it means the notification will goes directly to the Notification Center.

Last but not the least, related to notifications, Siri is now also able to suggest how you manage your notifications, so based on how you interact with your notifications.

Do you open them, do you always dismiss them, then so you will now suggest how you manage notifications coming from that specific app. You are also able to customize the locations even further.

We already have that a possibility today but it becomes even more powerful now. You can also have more interactive controls, button, switches and so on.

Siemen: Yeah, and images, you can make it look very much custom to the app.

Steffen: Right. Last but not the least, there was an interesting announcement… I guess it’s a new notification type. So, it’s a critical notification, a critical alert.

This type of notification will bypass any ‘do not disturb you’ set up, and it will bypass the physical mute button on your phone, and the notification has to play a sound.

So, this seems kind of contradicting the whole’ do not disturb yeah screen time way’ of we’re going right now, but it does make sense for some apps; health apps, if you have alarm system set up using Home Kit, this makes sense.

It’s worth noting that you have to, as an app development, you need to fill out a form to get approved to do this, and also the user of your app needs to approve this notification.

Siemen: So, there’s been some improvements to the App Store, or changes. None of these has any developer SDK related changes but they’re mostly in the new guidelines. So, besides subscription apps, there are now also trials for non-subscription apps.

Steffen: Finally.

Siemen: Yes, absolutely. So, it’s nothing that’s technically new, but it’s just now allowed. And the way Apple suggests that you do this is by creating an in-app purchase that is free for like a first, let’s say, month of the usage of the app.

So, that unlocks the actual features, without it you can do nothing or a very limited set of things. And that’s free, but then after the user can, if they like it, they can buy an actual in-app purchase to unlock it indefinitely.

Steffen: Alright, I guess it’s worth noticing that this means that you will have, as an app developer, you will have to figure out how you want to handle trials. It’s not something that comes out of the box, from the OS or from the app store automatic.

Siemen: No, it’s suggested way of doing this, and you have to convince the user to actually do that, to activate that in-app purchase in the beginning, and then do it again later. It wasn’t possible before, or not allowed before, and nowadays, so that’s great.

Related to that are also are guideline changes related to multi-platform apps. So, if you have an account that’s shared across different ecosystems like your iOS device but also an Android device or Steam, then you are now allowed to use content in subscriptions and related things, purchases basically, that you bought on the other platforms.

This was not allowed before. There’s some restriction to this, because all the purchases that you can do in the other platforms have to also be possible on iOS as an in-app purchase.

Steffen: Right. I wonder how that would work.

Seimen: Yeah, how can they check whether like that all of those purchases are actually offered in iOS and how are they going to check it. I think it’s a bit of a gray scenario there. Yeah, I guess Wednesday, once they catch you they will wave a finger at you.

And lastly on the App Store changes. The App Store itself will now be more personalized. So, today, my App Store or your App Store looks the same, content-wise.

They might change it every day or every week, but it looks the same for everyone, but now it will be more personalized. So, depending on the apps that you have and the apps that you actually use, you will see different content.

And I think that’s really interesting because if you have an app that has a competitor. Users of that competing app are more likely to see your app now featured on the on their App Store because the Siri or the App Store, I guess, know things that you might be interested in it. So, that’s a nice way of entering into the markets that have maybe, like, or monopoly by other carriers or something.

Steffen: Yeah. And I guess as a user, it’s also better. I would like a personalized App Store.

Siemen: Yeah, if there’s something better out there that you don’t you know about. Then why not?

So, Watch OS got a new version as well, no. 5. Some big improvements for audio apps, so think of like Ebook… no, audiobook, audiobook apps, or playlists, or things like that, podcast apps. So, the syncing is now improved, it’s much faster, it uses less battery and everything. So, to get your content on the watch is as now just basically supported finally by the OS.

Steffen: It was, I guess, was one of the reason for why a lot of apps pulled off they’re Watch OS apps in the past.

Siemen: Yeah. Yeah. Yeah. Absolutely.

Steffen: So, it was possible it was just very bad.

Siemen: Yeah. It was very bad. It uses Bluetooth, and it took forever, and it was a bad experience. So, in overcast, for example, it worked there for a while but they just pulled the feature and it still keeps getting emails, and “oh my god, I need that feature.” But now, it will actually be possible.

Also for audio is background mode, so the audio can just keep playing if you’re doing other things on the watch. It’s just essential if you have an audio app, so it’s great that it’s finally there.

And also, very nice is volume control; so, before you could not change, not within the app at least, change the volume of the audio that you were listening to, and now that’s possible.

So, if you listen to a podcast and you go outside, it’s a bit louder, you can hear it so well so you could now quickly adjust even if you’re in the same app. That’s really nice.

Steffen: And just to emphasize this a little bit, so it’s not like we’re gonna see a Spotify app right tomorrow that streams music. It will most likely, if they decide to make a Watch OS app, it will most likely just be syncing playlists for offline.

Siemen: Yeah. For offline usage because streaming so far is only available to Apple music. That will still be the case.

So, then there’s also WebKit support for the first time. So, meaning, you can actually see small tiny websites on your on your watch.

Steffen: Yeah. At the event, we were watching WWDC, there was a lot of tear and laugh and clapping when they announced this.

Siemen: Yeah. Mixed reactions I guess. But I guess it might make sense for menus of restaurants, or like simple lists kind of, or an app but you don’t want a full app.

Steffen: Right. Yeah and I guess it also lowers the barrier for offering this functionality.

Siemen: Mm-hmm, absolutely. Also, the notifications and shortcuts, those improvements are also coming to watch OS, and yeah, like they should. It make sense for them to be there as well.

Another OS, Mac OS, got a new version 10.14 with the name Mojave.

Steffen: Mojito, Mojave, there’s lot of people are going to say that in a wrong way.

Siemen: Like previous releases as well.

Steffen: “Yosemyte”, Yosemite, we’re back to all that again.

Siemen: Well, people should just learn. There’s a few features, here dark mode, some people think it’s fantastic, some people think it’s just ‘why does it matter? It just looks a bit different.’ But yeah, it’s basically what you can see in the example here as well, this is what Finder will look like.

Everything is darker, no more of whites and bright backgrounds. That’s nice. A lot of pro users have been asking for this for a long time. And it’s good for working in low light conditions, and I personally actually like it because like a lot of other people, I have these little floating sediments in my eye that are floaters, they’re called.

They’re quite distracting if I look at white backgrounds. And with dark backgrounds, I don’t see them so it’s much more relaxing for me. So, it’s might seem just aesthetic, but it’s actually really nice for me.

Steffen: Yeah. I think a lot of people considered it as a small gimmick to the OS, but it’s not. A lot of people wanted it.

Siemen: Yeah. And as an owner of a Mac app, you will have to do a few changes to the app to support this, but it seems like it’s not like gonna be a crazy amount of work.

So, the App Store for Mac OS also got an update. It’s redesigned finally.

Steffen: Finally.

Siemen: Yes. So, it’s got a lot of inspiration from the iOS App Store. Besides the visual changes, there have been changes about the Sandboxing. So, Mac apps are not allowed to do everything, at least not when they’re distributed to the Mac App Store.

Certain things they just cannot do, certain access to the file system or other things, and like that actually cause certain apps or app owners to move away from the app store and distribute it themselves.

But some of these have now come back because some of these restrictions have been lifted. It’s not quite clear what those are and there’s some rumors about other restrictions that will be lifted as well, but I think it’s really good news.

Steffen: Yeah, I agree. I mean when the Mac App Store was first introduced, I remember a lot of apps coming into the app store and then over time it felt like was being down size a bit maybe from Apple side, and a lot of apps moved out again. So, it’s really good to see this coming back.

Siemen: Absolutely. So, Apple also announced a preview for the future that will be available in 2019, it’s UIKit on the Mac. This will make it very easy for developers to port their apps existing iOS apps to a Mac, and yeah, that’s I think that’s great news. It’s something that we’ve been wondering how Apple is gonna combine Mac OS and iOS in some way, but how… Clearly, they’re not gonna merge it, but this is their answer to it.

Steffen: Yeah, there was one big slide saying “No.”

Siemen: Yeah. ‘Cause they got a question “Are we gonna merge it? No.”

Steffen: But I think we need to make it clear that it doesn’t mean that you can run iOS apps on Mac OS, it just means that some of the frameworks available in iOS now will become available in Mac OS, so it will be easier to kind of port the apps.

Siemen: It will have to be a separate app, and you have to do some work as a developer. Some of the apps actually that will be coming along with Mojave by Apple, they are already built using this technology.

So, they’re using it internally but they’re still tweaking it I want to make it really good before they release it to third-party developers. Some of the examples already Stocks up and the Home Kit app—this is a picture of the Home Kits app that just came from iOS, from iPad app. With relatively little, we’re able to port it, so that’s really good.

Steffen: Yeah. Yes, I think it’s gonna be exciting to see the limitations. And, does it feel like an iOS app or does it feel like a Mac OS app?

Siemen: A purely touch-based app will not work on Mac and some frameworks will not be supported, but it’s a good step.

Steffen: I agree. So, there’s also a new Swift version coming, so a new minor version of the Swift programming language. It will ship together with the new iOS 12.

There’s a couple of changes coming. The first one being that we will now finally have a random API so that we have random frameworks. So, we do a lot of behavior development here at Nodes, and that means that we run a Swift code on Linux machines, and a thing that I think should be symbols such as creating random numbers is actually quite tedious today because you need to use a different framework depending on what platform you’re running on.

So now, we will have a unified, more Swift API for generating random numbers. And it’s even more than just random numbers, that’s convenient for fetching random elements in a collection…

Siemen: Shuffling them and…

Steffen: Yes. Also some other minor stuff.  Enums becomes iterables, so you don’t have to define all the enums. All the cases in an enum now it will be conforming through a new protocol out of the box which means that you’re now able to iterate over all the case in any enum. There’s also new compiler directives so that means that you can now, instead of writing to do in comments, you can like define a directive that’s a warning so it will show up as a warning in Xcode, as we were used to in Objective-C.

Siemen: Yeah, you could do this before. Yeah.

Steffen: There’s also some improvements to the Hashable protocol, which also makes it less tedious to roll out your own Hashing algorithm. There’s some updates to Xcode, so Xcode10 will be the new media version coming together with 4.02 in iOS 12. So, they improve the build system once again, so it’s supposed to be faster and better. There’s a… multi cursor editing support finally. I think that’s something that’s been missing in Xcode for a long time.

Siemen: Yeah, we’ve always had to use other apps if we needed something that just required a lot of repetitive typing, and this is so nice to have, and it’s a good implementation. It feels really nice.

Steffen: Yeah. So, we’ve had it all in scope but it’s not the same thing, that was very limited to the same name, variable and so on, but this is very way more flexible. You can choose how you want to use it basically. You can also run tests in parallel now, so that should speed up the time you spend on running tests. You can also define custom instruments now, so let’s say you want to measure certain parts of your app, you can also now create your own visualization of these measurements. You can save that instrument together with your project, share it with your team.

Siemen: Yeah. There was an example of inspecting network traffic and seeing which network calls were being redundant, like the same information, so that could be really nice if you really need to inspect a certain aspect of your app and visualize it.

Steffen: Yeah.

Siemen: So, and then, lastly, there is a few smaller things that we want to go over. First up is Mapkit.js  It’s Apple Maps in the browser, it’s like Google Maps but then this is all backed by Apple. And, some other few things, it’s cheaper than Google Maps.

They have higher limits like up to a certain number of requesters is free, and then there’s paid plans, and since it’s not done by a company that, like sells share data, and is in the advertising business, the usage of these maps will not result in like different advertisements in your Google searches or something.

And, it’s all based on a Web GL, and it feels really smooth it works really well. Well, kind of interesting is that, related to maps, is that for Carplay, Apple now also supports third-party maps.

So, on the one hand, for browsers, they’re doubling down on Apple maps, but also for Carplay, they’re opening up their system to not just Apple maps. And a lot of people who have cars that support this are really happy about this because Apple maps are not like sufficient for everyone so this is a great move.

Steffen: Yeah. I use Carplay, I use Appla maps, and sometimes I would like to use Google maps as well.

Siemen: So, Health Kits got some new API’s, and there’s some more data that you can now add to it, like your whole medical history. There were some collaborations with American Hospitals.

And there’s API is for opening that up to third-party developers, meaning, apps could now look into your data, if you allow it, and evaluate your health situation, make predictions or whatever.

Another new thing is the portrait segmentation API which relates to the way iPhone 10 makes pictures using that depth map. All of that information will not be open to developers, meaning the whole separation between the background and foreground, you can now use that in your apps, and you can make your own version of portrait photos, and maybe do something with the blur in the background. So that’s nice.

Well, besides all these new features is also the deprecation of OpenGL, which a lot of people didn’t like so much. But Apple says this is old technology, we shouldn’t use it anymore, Metal is the way to go. But the deprecation doesn’t mean that it’s not available anymore, OpenGL apps will still be able to run and it probably will be for a while. It’s just as a signal by Apple saying like “probably best not to make new apps with this technology.”

Steffen: “This is the way we’re going.”

Siemen: Absolutely. Password autofill is a very nice one. It opens up the existing functionality that keychain has, where it suggests which password and username you want to might want to use for logging into a website or an app. So, this is nice for apps like One password and Dashlane.

I actually have a screen shot of One password’s attempt here and it implemented it and it seems to work really well, so that’s really nice. And lastly here is that for us, it’s really nice that the app store and developer accounts have now been merged.

It will just be…what is it? App store accounts or app store? Well, it will go under one name. From the old iTunes Connect, it will now be App store Connects, and just streamlines a lot of things for us, but it’s great. Yeah.

Steffen: So, that was it from us. Thanks a lot for tuning in.

Siemen: Thanks.

Steffen: Feel free to leave a comment, if you have any feedback, any questions, if you just want to share the things you found the most exciting about this year’s event, or if we simply just said anything wrong during this presentation.

Siemen: Who knows.

Steffen: Or feel free to leave a tweet.

Siemen: Yes. Thanks for watching.

Indlægget Apple Worldwide Developers Conference WWDC 2018 Recap blev først udgivet på Nodes UK.


Back to Featured Articles on Logo Paperblog