Summer School 2013 in Schottland an der UWS

Im Sommer 2013 war ich für 6 Wochen in Schottland an der University of the West of Scotland (UWS) um dort eine Summer School zu absolvieren. Hier ein Bericht. Dieser erschien auch hier. Mehr Bilder auf FlickR.

Organisatorisches

Ich erfuhr von der Summer School in Schottland über eine Info-Mail von Frau Schumacher aus dem AAA der HdM. Nach ein wenig Recherche und dem lesen einiger Erfahrungsberichte im Netz war relativ schnell klar, das ich mich selbst auf den Weg nach Schottland machen möchte.

aufenthaltsraum-in-der-unterkunft

Die Anmeldung erfolgte unabhängig von der HdM über die Seite der UWS. Solange man die Anmeldefrist einhält, besteht eine relativ hohe Chance auf eine Zusage, da meist genügend Plätze zur Verfügung stehen. Man sollte sich schon vor der Anmeldung darüber Gedanken machen, welche Module man belegen möchte und mit seiner Hochschule abklären, ob die ECTS-Punkte auch angerechnet werden können.

Nach meiner Anmeldung erhielt ich relativ schnell eine Zusage per Mail. Wenige Tage später wurde ich auf Facebook direkt in eine „offizielle“ Gruppe, erstellt von den Organisatoren der Summer School, eingeladen. Dort stellten sich einige Betreuer und Dozenten vor und es wurden bereits erste von der UWS organisierte Aktivitäten angekündigt, wie beispielsweise die Besichtigung einer Whiskey-Destillerie oder einer gemeinsamen Wanderung auf den „Cobbler“.

Bezahlen muss man „nur“ die Unterkunft, da es in Schottland keine Studiengebühren gibt. Der Preis für die Unterkunft für die 6 Wochen betrug £ 770 (ca. € 910). Leider sind die Flüge nach Schottland relativ teuer, da es aus dem Süden Deutschlands keine Direktflüge gibt. Die meisten Flüge haben eine Zwischenlandung in Schiphol (nahe Amsterdam) und kosten daher etwas mehr, in meinem Fall € 350-400. Aus der Nähe Berlin gibt es aber auch Flüge für um die € 200.

Unterkunft

Seit 2013 werden die Teilnehmer der Summer School in einem neuen Wohnheim direkt neben der Universität in der Story Street untergebracht. Die neue „Residence“ wurde 2013 eröffnet und leidet daher noch unter der einen oder anderen Kinderkrankheit.

zimmer

In jedem Stockwerk befinden sich mehrere Wohnungen, welche jeweils 6 Einzelzimmer (mit eigenem Bad!) und eine großen Küche beinhalten. Die Küchen sind super als Aufenthaltsraum für mehrere Personen geeignet, allerdings wird es dabei relativ schnell unangenehm warm. Ein Öffnen des Fensters hilft da nicht, da diese nur gekippt werden können (Feuerschutz). Generell scheint Feuerschutz in Schottland eine weit höhere Priorität zu genießen als in Deutschland: Alle Türen sind Feuerschutztüren, welche automatisch zufallen. Es ist dadurch z.B. nicht möglich die Wohnung ordentlich durchzulüften oder die Zimmertür offen stehen zu lassen, um unkompliziert am sozialen Leben teilnehmen zu können. Die Feuermelder in jedem Raum führten dann auch zu mehreren Fehlalarmen mitten in der Nacht. Ein weiteres Problem: Man kann nicht die Wohnungstüre offen stehen lassen, weil man beispielsweise Gäste erwartet. Das wäre kein Problem, gäbe es eine Klingel an der Wohnungstüre. Diese wurden aber scheinbar bei der Planung vergessen. Richtig: Das bedeutet, es ist nicht möglich, seinen Nachbarn zu besuchen ohne ihn vorher per Telefon oder Internet zu kontaktieren.

Was super funktioniert hat war das W-LAN in der Unterkunft: Entweder man benutzt seinen schon vorhandenen Eduroam-Account, welchen man vorher in der HdM benutzt hat, oder meldet sich mit seinen Zugangsdaten von der UWS an. Es gibt in jedem Zimmer und in der Küche Netzwerksteckdosen und das W-LAN hat ebenfalls eine gute Abdeckung.

Leider wurde während der Summer-School aufgrund von Wartungsarbeiten am Stromnetz der Universität mehrfach der Strom am Wochenende abgestellt. Dies hatte zur Folge, dass an zwei Wochenenden das Internet komplett tot war.

Ankunft & die ersten Tage

Nach meiner Ankunft hob ich zuerst meine ersten „Pfund“ am Geldautomat ab und machte mich auf die Suche nach dem richtigen Bus in Richtung Paisley. An den Straßenverkehr muss man sich erstmal gewöhnen, denn es fahren alle auf der falschen Seite. Auch steigt man im Bus logischerweise auf der linken Seite ein. Nachdem ich dann im Bus saß, folgte erstmal Verwirrung, da die Stationen, welche der Bus anfährt, keine eigenen Namen haben. Als Neuankömmling ist es somit erstmal ziemlich schwer rauszufinden wann man den Aussteigen muss. Deswegen stieg ich dann auch zwei Stationen zu früh aus. Machte aber nix, ich nutzte die Chance und sammelte meine ersten Eindrücke von Paisley, meinem zukünftigen Zuhause für die nächsten 6 Wochen.

Mit Hilfe meines Handys fand ich dann relativ bald den Weg zur Unterkunft in der Storie Street. Der Empfang war besetzt und ich wurde freundlich begrüßt. Nachdem noch einige Unterschriften von mir eingesammelt wurden, wurde mir der Schlüssel ausgehändigt und ich wurde von einem der Janitor-Students zu meiner Wohnung gebracht.

schottische-schotten

Da ich bereits am Samstag eintraf, war in meiner Wohnung noch nichts von meinen Mitbewohnern zu sehen, da die meisten Studenten erst am Sonntag eintreffen sollten. Nachdem ich mein Bett bezogen und den Koffer ein wenig entleert hatte, machte ich mich direkt auf den Weg zum Supermarkt (Morrisons) um erstmal das Nötigste einzukaufen. Als ich zurück in der Unterkunft kam waren in der Facebook-Gruppe bereits einige dabei, die erste Unternehmung zu organisieren. Es trafen sich später alle bereits eingetroffenen Studenten im gut ausgestatteten Aufenthaltsraum der Unterkunft. Nach dem ersten Kennenlernen führte uns der Weg dann in den ersten Pub und später noch in einige der Clubs in Paisley.

Die Universität

Am Montag fand die Einführungsveranstaltung statt. Es wurden die Dozenten vorgestellt und die Gebäude gezeigt. Interessanterweise gab es auch einen kleinen Exkurs in die schottische Esskultur & es wurde ein kleines Quiz durchgeführt. Auch sah man hier zum ersten Mal alle Teilnehmer der Summer School.

Der Campus in Paisley ist relativ unübersichtlich, aber sobald man mal die wichtigsten Punkte kennt (Student Link, Starbucks) findet man sich gut zurecht.

Das Niveau der Module empfand ich als ziemlich unausgeglichen. Ich hatte mich für die Module „Business English“ und „Human Side of Technology“ entschieden. Was alle Module gemeinsam hatten: Es mussten relativ viele Hausaufgaben, praktische Aufgaben und auch Vorträge durchgeführt werden. Im Modul „Business English“ wurde am letzten Tag der Summer School sogar eine zweistündige Klausur durchgeführt und es wurden mehrere benotete Vorträge und Hausarbeiten gefordert. Das Modul „Human Side of Technology“ war im Vergleich deutlich einfacher zu absolvieren, doch auch hier ging viel Zeit für die Vorbereitung der Vorträge drauf.

Die UWS verfügt über umfangreiche Sportstätten, doch befinden sich diese etwas ausserhalb in Thornly Park (dort befindet sich das alte Wohnheim). Dorthin kommt man entweder mit dem Bus oder man läuft ca. 40 Minuten. Für relativ kleines Geld kann man dort das Fitness-Studio benutzen oder sich für eine der Teamsportarten anmelden.

Soziales

Die vorherrschende Nationalität war in diesem Jahr definitiv deutsch, weswegen in vielen Gruppen auch primär deutsch gesprochen wurde. Wer jedoch die Chance ergreifen wollte sich sprachlich weiter zu entwickeln, der hatte dazu gute Möglichkeiten. Es waren viele Nationen vertreten, darunter Spanien, Frankfreich, Holland, die tschechische Republik und sogar Russland. Dadurch war der für mich wichtige internationale Austausch definitiv gegeben.

Da es in diesem Jahr über 50 Teilnehmer an der Summer School gab, bildeten sich relativ schnell Gruppen, welche jedoch meist offen waren und man so sehr einfach Leute kennenlernen konnte.

Unternehmungen

Schottland ist sehr schönes Land. Und da wir nur 3 Tage pro Woche mit Vorlesungen beschäftigt waren, nutzten viele die Zeit für Ausflüge in die Umgebung. Neben den Städten wie Glasgow (in 20-30 Minuten mit dem Bus zu erreichen) bietet sich hierbei auch Edinburgh, die Hauptstadt von Schottland, für einen Besuch an. Diese ist mit dem CityLink Bus für wenig Geld erreichbar. Mit der Bahn & Fähre erreicht man auch sehr gut die verschiedenen Inseln in der Umgebung (Isle of Arran, Cumbrae), die sich gut für Tagestouren anbieten. Für akzeptables Geld werden auch Bustouren in die Highlands im Norden angeboten, bei denen man sich dann auch noch Loch Ness und Isle of Skye anschauen kann. Für Interessierte bietet sich unter Umständen auch ein Trip nach Dublin in Irland an, da man von Glasgow aus relativ günstig dort hin kommt. Ich persönlich hab alle erwähnten Trips gemacht und kann nur jedem ans Herz legen sich die beeindruckende Natur von Schottland auf jeden Fall anzuschauen! Ein guter Tipp ist es auch, sich für ein Wochenende einen Mietwagen zu leihen und einfach in den Norden zu fahren. Es lohnt sich!

schloss IMG_4986 ausblick

Nightlife gibt es entweder in den (kleineren) Clubs und Pubs direkt in Paisley zu erleben oder nach einer kurzen Busfahrt direkt in Glasgow. Zurück kommt man dann relativ günstig im Taxi.

Fazit

Schottland war für mich eine super Zeit, die ich nicht missen möchte, wenn auch nicht ganz billig. Aber es war jeden Cent wert. Ich habe viele Freunde kennengelernt und auch viel über mich selbst gelernt. Und ich durfte ein beeindruckendes Land mit netten Leuten kennenlernen.

Die Summer School an sich war sehr gut organisiert und es gab immer einen Ansprechpartner bei Problemen. Es war zu spüren, dass sich die Organisatoren sehr viel Mühe geben und das jedes Feedback zu Herzen genommen wird. Es gab sogar eine Abschlussfeier, ein schottisches Ceilidh, bei dem schottische Tänze gelernt werden konnten (und es war weit besser als es klingt!).

Ich kann nur jedem ans Herz legen, der sich nicht sicher ist, ob er ein Studium im Ausland „schafft“, es einfach mal mit einer Summer School zu versuchen. Danach herrscht dann definitiv Gewissheit.

The new the-skylab.de Canvas Portfolio

I launched a new the-skylab.de front-/portfolio page today. I felt inspired by the current Vodafone advertisements, so I decided to do something in the same direction.

The skyLab logo should be the central element of the page and is used to navigate. Each click brings a new scene using a rotating black area which uncovers the content. The second scene features a full-screen view to make it possible to show more content.

The new page is heavily driven by Javascript and uses some new technologies like canvas, so i decided to give you some technical background and tell you about the problems I encountered.

This is how it looks like:

skylab-animation

The Final Result

DOM vs Canvas

At first I was unsure which technology to use. I started with some testing using pure DOM technology. I created a square using a DIV element, added round corners to it and did the rotation using jQuery and CSS3 transforms.

dom

Rotating Square using a DOM Div

The result was looking ok, but it felt a bit dirty and needed a lot of unnecessary HTML glue code to work correctly. So I decided to use the new hot shit: HTML5 Canvas.

I checked the „official“ Canvas-API first, but as usual, there are a lot better Javascript-Libraries out there which make the work easier. I checked some frameworks and decided to use fabric.js. Most of the frameworks support the drawing of circles and rectangles and the rotation of those, but lack the ability of setting an origin point for the rotation. A centered rotation doesn’t help me with my concept.

Script

Then I started implementing the script. It uses the concept of „scenes“, gathered together in a „script book“. I can specify the scenes in code which includes a specific rotation of the black area (which is no longer a rectangle, it is a custom drawn triangle path now) and pre- and post-hook to execute and my script will do the rest. These hooks are used e.g. for the circle animation in the second screen.

Problems

Resizing

One big problem was the strange behavior of the actual canvas area which is used for drawing. In my case it is needed to fill the whole screen. But if you specify the size with CSS, it „scales“ the drawing area but does not increase the size of the actual canvas used to draw. This results in ugly and unsharp drawing. You need to specify the size of the canvas in the HTML tag to make it work – or, as a workaround, you can set it via Javascript. This was the solution I decided to use. Currently, I’m hooking into the resize event of the browser and I’m doing a resize of the canvas area.

Also, the page needs to have a minimum and maximum size, otherwise the black area will get to small for the content. This problem isn’t yet solved completely, because enforcing a minimum and maximum size and falling back to scroll bars is currently causing drawing issues.

Mobile

Surprisingly, the page was working great on all mobile devices (I tested iOS7 iPhone & iPad & latest Android stuff). There was only a problem that the initial zoom level was to small on the phones with smaller screens. But there is a workaround: You can set the default view port with a HTML tag like this in your head:

1
meta name="viewport" content="width=1024 height=768

Content and Images

I used a trick to create the illusion that the black circle actually uncovers the content. In fact, that’s not the case. It fades in right before the rotation animation is starting. As the text color is white, the content is invisible until it’s covered with the black background. Unfortunately, that doesn’t work with images. They would be visible before the rotation animation is complete. I arrived at the conclusion that the best workaround is to fade the images in and out with a timed delay right before and after a scene change.

Conclusion

Finally, it was as usual a lot more work than I expected. Especially it wasn’t easy to get the right timing of all animations. But in my opinion, the result is great. I did test it with some people and most of them were sure about what to do. After some initial user tests I implemented the pulsating logo which you can see when you’re initially loading the page which makes clear „I am the logo, click me!“.

A problem with the usage of Canvas is that the page will not run on old browsers. But luckily, in these days that’s a thing you can disregard more and more as every major browser is updating itself.

What do you think about the result?

O2 Blue All-In M Drosselung drosselt irgendwie

Dieser Beitrag ist keine Werbung!

O2 hat momentan wieder ein ganz attraktives Angebot für Studenten und „junge Leute“. Der O2 Blue All-In M (bitte noch längere Namen) bietet für knapp 25€ nun 1 Gigabyte Traffic. Und das auch noch mit nur monatlicher Laufzeit! Doch das Coole daran ist (zumindest auf dem Papier) folgendes:

Screenshot 2013-11-27 11.15.09

Uiui, ihr drosselt also nach einem Gigabyte nicht auf „nichts“, sondern auf 7,2 MBit/s? Das wäre ja bombig und genauso schnell wie mein jetziger Datentarif, quasi eine Flatrate mit unbegrenztem Traffic! Scrollt man ein paar cm weiter runter:

Screenshot 2013-11-27 11.17.01

Hä? Ja was den nun? Stellt man den Vertrag auf 24 Monate Laufzeit wird es noch irrsinniger:

Screenshot 2013-11-27 11.18.23 Screenshot 2013-11-27 11.18.31

Ähm, also nun ein Jahr LTE (was gut ist) und im zweiten Jahr dann 7,2 MBit/s (was schlecht ist). Und wann wird worauf gedrosselt?

Ich hab dann den Vertrag mit 24 Monaten Laufzeit abgeschlossen. Und was wurde mir dann gebucht? Folgendes:

Screenshot 2013-11-27 11.21.35

Und warum den „schlechteren“ Vertrag mit Laufzeit, welcher nach 1 Jahr auf 7,2 MBit/s zurück fällt (was eine Frechheit ist)?

Ich wurde gezwungen den Tarif mit 24 Monaten Laufzeit zu wählen, da ich aus meinem vorherigen Vertrag mit monatlicher Laufzeit nicht auf den Vertrag mit Sonderkonditionen mit ebenfalls monatlicher Laufzeit umsteigen konnte. Warum nicht einfach kündigen und neuen Vertrag abschließen? Eine Portierung der Nummer innerhalb des Unternehmens ist nicht möglich. Habt ihr aber geschickt eingefädelt.

Fazit

Alles verwirrend und scheisse. Hab keine Ahnung wann was wie gedrosselt wird. Laut einem Hotline Mitarbeiter wird im ersten Jahr LTE auf 7,2 MBit/s gedrosselt, im zweiten Jahr wie gewohnt auf „nichts“ bzw. 20 KBit/s. Hilft nur ausprobieren.

Mehrere WordPress / Joomla Installationen überwachen

Als Web-Freelancer kommt man in die Situation, dass bei seinen Kunden mehrere WordPress oder Joomla Installationen laufen, welche regelmäßig aktualisiert werden müssen. Macht man das nicht, öffnet man Exploits und Sicherheitslücken die Türe und kämpft dann irgendwann mit seltsamen Problemen. Aber wie macht man das, wenn man mehrere hundert Installationen zu verwalten hat?

Zumindest bei WordPress hat sich das Problem mehr oder weniger erledigt, da sich WordPress seit Version 3.7 selbst updated – wenn es den funktioniert. Fein!

Es gibt einige Anbieter, die sich des Problems angenommen haben, kosten jedoch alle gut Kohle. Falls jemand mehr Anbieter kennt, meldet euch und ich schreib sie auf die Liste. Die alle klinken sich via Plugin in das CMS ein und bieten eine zentrale Plattform an, über die Updates eingespielt und Plugins geupdated werden können.

Joomla

  • Hier habe ich nur watchful.li gefunden. Los gehts hier ab 5$ für 5 Seiten.

WordPress

  • Hier gibt es infiniteWP. Scheint kostenlos zu sein, allerdings kostet jegliche Funktionalität (die hier als Plugin verkauft werden) zusätzlich Geld. Und zwar jede Menge!
  • Dann gibt es noch manageWP. Kostet rund einen Dollar pro zu managender Seite.

Sonstiges

„Früher“ stand die aktuelle Version der Installation noch im HTML-Header, doch aus Sicherheitsgründen verzichten die meisten CMS mittlerweile darauf, was auch sinnvoll ist. Falls es doch noch drin steht gibt es die kleine Mac-App „CMS-Dashboard“ im Store. Diese tut jedoch nicht viel mehr als den entsprechenden Tag auszulesen und fertig.

Joomla Pharmahack / Spambot

Ich hatte in den letzten Wochen öfters mal das Problem, das mein Server auf verschiedenen Email-Spam-Listen gelandet ist und die Mailzustellung entsprechend problematisch wurde.

Ein Check des Mailserver Log ergab jedoch keine Anomalien. Es wurde zumindest über den Mailserver keine hohe Anzahl Mails verschickt. Wie kann das also sein?

Auf die Spur kam ich der Sache als ich den SMTP Port überwachte:

1
sudo lsof -i | grep smtp

Das ein oder andere Mal erwischte ich damit einen Prozess, der unter einem Hosting-Account lief. Auf diesem Account war nur eine Joomla Installation untergebracht. Und diese war wohl verseucht. Es fanden sich mehrere seltsame Nutzeraccounts und kleine, seltsame benannte PHP-Scripte im Verzeichnis. Eine kurze Analyse der Scripte offenbarte, dass diese wohl nichts anderes tun als Kommandos von „Aussen“ auszuführen. Also ein direktes eval() von POST-Content. Eine Analyse des Access-Log offenbarte, dass alle 1-2 Minuten so ein Kommando von einer unbekannten Quelle abgeschickt wurde.

Also hab ich mich mal dazwischen gehängt und das verschlüsselte Kommando abgefangen. Es war ein relativ langes Stück Programmcode welches im Prinzip einen Mail-Server emuliert. Das komplette Protokoll wurde als PHP-Script nachgebaut. Bingo!

Ein entfernen der Scripte, Updaten von Joomla und entfernen der Einfallstore schaffte Abhilfe, notfalls ein Diff über das aktuelle Verzeichnis machen. Es ist einfach ein Muss, eine CMS-Systeme auf dem aktuellen Stand zu halten. Nur wie schafft man es den Überblick zubehalten wenn man mehrere Installationen überwachen muss?

Layout overhaul

Yes, you’re eyes are not lying! After 7 years(!) the skyBlog gets a completely overhauled template. Yey!

MacBook Pro Early 2011’s are melting / graphic card problems

A few weeks ago, my MacBook Pro 2011 Early started to behave strangely. It started right after I had upgraded my system to Mavericks. I was testing the new iMovie as I was getting a black screen (of death). After a hard reset, the the grey boot screen (with the Apple logo) looked scrambled with strange line artefacts. And the machine refused to boot. I managed it to get the machine working a few last times (doing 100 reboots and trying out all boot options), but finally the machine was dead. It was clear, that the discrete graphic card has a problem. And so, the only solution was to replace the hole logic board.

So I went to the Apple Store. I had to wait 1.5 weeks to get my MacBook back and the price for it was 490€.

A quick look into the internet reveals: Apple has a problem. It looks like the number of melted MacBooks from 2011 is fast increasing:

https://discussions.apple.com/thread/4766577?start=1545&tstart=0

My flatmate, who also owns an Early 2011 MacBook, saw his MacBook fried this morning and is on his way to the Store now.

There is hope that Apple will announce an official replacement program in the future (and give a refund for the repair costs), but until then you have to pay the replacement yourself. But if you do, tell the Apple Staff that its a really common problem and their should do something about that now.

 

Install Windows/Bootcamp on MacBook Pro with Fusion Drive and no Optical Drive

Installing Windows on a Machine without a Optical Drive is a pain, because its no longer possible to boot from the Installation DVD. USB is no good workaround, because USB boot is also permitted somehow.

The case is getting more complicated when you have a FusionDrive setup as I have: I replaced my Optical Drive with a second harddisk (SSD) and formed one Volume out of it as a FusionDrive.

After Google’ing for many hours, i found a solution which actually worked on my setup.

http://huguesval.com/blog/2012/02/installing-windows-7-on-a-mac-without-superdrive-with-virtualbox/

Some Additions:

  • Even If you have an MacBook Pro 2011: Do Part 1 Step 3! I didn’t do it and after rebooting I got a blue screen
  • To trick the Boot-Camp Assistant creating the partition for you, it also works mounting the Windows Installation ISO with Toast or Daemon Tools
  • The correct installation order is: FIRST create your fusion drive, then let the BootCamp Assisstant build the Windows Partition
  • Don’t try the solution with replacing the MBR with the one created in the VM: It does not work on a FusionDrive setup
  • To avoid the complicated removal of the „system reserved“ partition as stated in the manual, do this: When you install Windows  in the VM, format the drive. A message will popup informing you that it may create some more partitions blabla. Click ok and you will see it actually created 2 partitions. Now manually remove the small 100 MB Partition and install on the other one. It will work and boot correctly.
  • WinClone is no longer free available as some stupid company bought it and did some minor updates to it. But maybe you find it somewhere. If you use the latest version, it will ask you if it should delete the cache files while creating the image. I clicked yes. On restore, I had it replace the booting-information.

Finally it worked. When I boot my mac holding ALT the boot device selection menu shows up. It displays my Mac drive two times as well as the windows drive two times. Anyone know a solution out there how to fix that?

Paying attention to details

I am currently working on an overhaul of Episodes main interface. As a Mac developer, you need to pay attention to the small things. This is what a good App makes a great App.

In the last days, I’ve spent several hours in reworking the small view on the lower left which indicates that Episodes is doing some tasks in the background. This is how its looking in current version:

old

Its okay, but its not great. The expand/collapse animation was a bit buggy as well as the progress indication itself. To improve the visual appeal I decided to invest some hours to make it perfect. This is the result. My goal was to let it look like its „below“ the surrounding  interface. I’ve also added an animation which „slides away“ the concealing panel.

panel

In the next iteration of Episodes i’m going for a borderless interface, which leads to some problems.

blank

 

What happens if the list is getting longer or the user resizes the window? A scrollbar will become visible with its bottom end hanging loose in the air. It would look pretty bad. My solution is to slowly fade in a shadow to distinguish the list from the bottom menu.

light

This makes it a lot better. Apple uses the same approach e.G. in Apple Mail and its great, but its not yet in the framework so each developer has to implement it them self and most people are doing it only half-assed.

But thats only half the deal. What happens if the progress-panel slides in? The gradients and shadows have to match in this combination also.

full

 

These are the small things which need a lot of work to make them right. Most people won’t even notice any of then. But they would, if things would look bad. Its makes an App better, as the User feels better when he uses it.