vendredi 30 novembre 2012

Rich content creation apps on Android and iOS

As I reflect on the various tools available for students today, I've been exploring the relevance of certain tools in the context of flexible content creation in and outside of the classroom.

No hasty conclusions yet, but one of the parameters I believe should influence choice, apart from the obvious one of getting students and teachers to explore the tools themselves, is the capabilities such mobile tools should support, not only for current uses, which may or may not be very transformative, but also aiming for an environment which promotes rich learning environments.

It seems clear, in light of all the 21st Century skills we keep discussing, that allowing for the most creative flexibility for our students is a key component in our future decisions.

Secondly, teacher comfort with the capabilities of the technology, for their own use as well as for suggesting some of the paths students can take with technology, will allow for deeper and richer technology use.

So, my reflexion is about the various ways we can offer a content-creation environment, tools and practices and figuring out the most cost-effective way to achieve this, without sacrificing what will allow the transformation of our learning environments.

This reflexion is continuing, but as I was exploring a few tools and ideas today, I came upon this post from the excellent Fraser Speirs, which mentions the "GarageBand test". A quick, informative read.

I was already trying to compare the environments offered by the Nexus 7, iPad, iPad mini and others in the context of content creation and collaboration. This gave me the idea to look at the top paid apps on Google Play and the iOS App Store. I figured either would offer the best tools for each platform that people are willing to pay for.

The results are quite interesting:

Here is the list on the App Store as of Nov 30, 2012 (Canada store)
1. Angry Birds Star Wars
2. Pages
3. The Room
4. GarageBand
5. Bad Piggies HD
6. Sky Gamblers
7. Offroad Legends
8. Minecraft
9. Wreck-it Ralph
10. Angry Birds Space
11. iMovie
12. Numbers
13. GoodReader
14. iPhoto
15. Tetris for iPad
16. Keynote
17. Mickey Mouse Clubhouse
18. Where's my water
19. Walking dead: the game
20. Scrabble

Here is the list on Google Play
1. Swiftkey 3 tablet Keyboard
2. Minecraft: Pocket edition
3, Angry Birds Star Wars HD
4. Wreck-it Ralph
5. The Amazing Spider-Man
6. DocumentsToGo Full Version Key
7. Camera Zoom FX
8. Quickoffice Pro
9. Tunein Radio Pro
10. Officesuite Pro 6+ (PDF + HD)
11. SwiftKey 3 Keyboard
12. Where's my water?
13. Poweramp Full Version unlocker
14. Titanium Backup Pro Key
15. HD Widgets
16. Beautiful Widgets
17. Grimm's Snow White
18. ezPDF Reader PDF Annotate Form
19. Devil's Attorney
20. Grand Theft Auto

I've bolded the content creation tools. It became quite obvious that at least in the Paid category, there was a lot more diversity in the available tools to create rich content.

But not only that, but the quality of the apps are worlds apart.

Even at the word-processing level, Pages offers a lot more in the lines of rich content, than say, Officesuite Pro 6+ which seems to be the best one for Android. Manipulating objects, fonts, tables, inserting shapes and lines and overall useability and responsiveness of the app is so much better and easier. Not perfect, not for professional word-processing experts, but great for students and teachers for most day-to-day work.

But when you start exploring the other tools, like Keynote or Numbers, the Office suites on Android are simply inadequate compared to the Apple apps. Of course, education customers also get to pay the same price for either Pages+Numbers+Keynote or Officesuite Pro, but they get a lot more for the price.

Then, the big important part: rich content. GarageBand, iMovie and iPhoto are in this list and they offer such great creation environements. You can do 80% of what the equivalent tools do on a Mac on some of these. iMovie is the exception. It is a nice product for quick movies, but far from being as complete as the Mac counterpart. And there are many other such tools. I'd love to see some stats on the percentage of content-creation apps on all platforms... think of drawing apps, sketching, music creation, misuc notation, photography, 3D, graphing calculators, astronomy and science, etc.

If there are any more and better creation apps for Android out there, I'm very interested in finding out. This is by no means an extensive seach, but I find it quite telling. But please, leave comments if you have interesting alternatives and suggestions! Perhaps the free apps on Android offer richer environments? I do hear that Evernote is better on an Android tablet... but that's one case. Are there more?

samedi 15 septembre 2012

iCloud, UIManagedDocument and library-type apps

So I've been programming for a number of years now, and as with many other topics, the more you know, the more you realize you don't know. Perhaps a lot less if you are Aaron Hillegass, Joe Conway, Paul Hegarty or Ray Wenderlich and many more excellent Objective-C gurus from which I have learned various pieces of great knowledge over the years.

So much to learn, just following the changes in the Mac and iOS APIs!

Understanding APIs per se are not the greatest challenge though. Most of the time, you can figure out how to use those after looking around a bit. What I find challenging is discovering the best practices for various types of apps. Making the best assumptions before I start a project. By now, I've refactored so much code because of initial choices that I've stopped counting.

Like I said, I'm no expert. I've been programming for the Mac for many years, learning as I went, relearning all the time. At a slow pace at first and accelerating over the last couple of years as I jumped onto the iOS bandwagon, followed some courses and built a couple of intro courses myself.

Anyhow, I'm learning Core Data, UIManagedDocument, iCloud and some other little pieces of info around this these days and boy, it is not easy to figure out how to approach this. So I'm publicly posting this in order to:

1. Clarify my thoughts (nothing better than to explain to make sure you understand)
2. Get some reactions from peers on where I might be wrong, better approaches, etc.

This, I am sure, will be a great learning experience.

The goal
I'm building an app which will sync its single-document via iCloud (if available) on multiple iOS devices.

The tools
UIManagedDocument, to make things easy following both Paul Hegarty's suggestion in the CS193P Stanford course and the WWDC 2011 Core Data and UIDocument/UIManagedDocument sessions
CoreData (automatically part of the above)
A Library-Style app (a single instance of UIManagedDocument)
iCloud to optionally store this document

The Journey
So I read and listened to the CS193P lessons, WWDC sessions, re-read Joe Conway's excellent course, Ray Wenderlich's great tutorials and perused Stack Overflow to make up my mind on hw to approach this and started first migrating my current work-in-progress app to Core Data instead of a local monolithic archive. That wen't well. Now, I'm moving this to iCloud... If the service was always on, thre would be no issue, but the user being able to toggle it at any time is causing the questions I currently have.

Once all is running in iCloud, it's fairly straightforward. User creates data in one place, it appears on the other device. Almost no work once UIManagedDocument is used. Even conflicts are pretty much resolved automagically.

Now, what if the user decides to start using the app without iCloud, either because iCloud is not enabled, unavailable or turned off in my apps prefs (a best-practice according to Apple's documentation). Then, the app should create a local version, right? Cool.

Update: Some apps actually ask you up front if you wish to use iCloud or not. I might assume so on first run if iCloud is on, but leave it off if the user enables iCloud later.

Cloudy after sunshine
When iCloud later is turned on via the device settings or in the App, I figure unless it was specifically turned off for the app itself (via my apps prefs), this is an indication the user want to migrate their data to iCloud, so I'll assume I can move existing data to iCloud using the appropriate calls to NSFileManager. Pretty well documented. not so cloudy at this point I guess. This is all well if the user never had iCloud on when using this app before. No data exists yet. What if there is something though? I guess I'll have to check first if there is some data in iCloud and ask the user which data they want, the now local data or the potentially older iCloud data. Am I missing something? Sounds like the old MobileMe syncing UI... Or does UIManagedDocument handle this and try to sync the data, sending notifications or setting the state of the document accordingly?

Update: I'm pondering this. Should I auto-migrate the data with no warning or ask the user? How about a message which says "I notice you've enabled iCloud, would you like me to move your existing local data to iCloud? Then, what if there is already a version on iCloud?

Clearing up the sky

Then, what should I do if the user disables iCloud in the app or for the whole device after creating some data? If it is for the device (via Settings), they get a warning that local iCloud files will get deleted. They stay on iCloud, and can potentially be re-accessed later. In such a case, I could just create a new empty local database on the next launch, since there is no way I can move it back... That I know. Am I wrong? Would I get some last notification perhaps?

Update: I notice some apps seem to simply keep the iCloud version as their local version. Not sure how... I'll have to read some more.

Second Update: Don't always trust what others have done... some apps say things, but they don't actually work :-)

If the user turns iCloud off in my app's prefs, then I can handle moving the data locally which is really changing the location of the file, as only the log of changes gets stored in iCloud after the first move there. So if I did this, the user would still have their latest data. Will users actually turn off iCloud in their apps before turning it off completely? Will they perhaps be aware enough of all this not to turn it off?

And on top of all this, when the user creates a new file, I must not forget to delete any logs which would have stayed in iCloud, otherwise it will be impossible to sync anymore using this app. I got this from Rich Warren's book, Creating iOS 5 Apps: Develop and Design. It was probably in multiple other places, but I was ready for that info when I was reading his tutorial on UIManagedDocument.

So that's where I am... Trying to make sure I do this right both in the way I use the Frameworks and objects, as well as the user experience. As I discover more, I'll update and fix this so it can become an overview on how to best approach this scenario.

More updates: Found more info in the documentation in "Designing for Core Data in iCloud" especially in "Design the Launch Sequence for Your iCloud Core Data App" which help sunderstand how to structure this. Basically, you keep info in the UserDefaults so you can make the right choice later if iCloud availability changes or the user changes their mind.

- Renaud



vendredi 27 avril 2012

Réinitialiser git pour un projet Xcode existant

Je ne suis pas un expert du "Source control", mais j'aime bien explorer... et c'est évidemment un outil précieux!

Mais il m'est arrivé rgulièrement de devoir repartir mon "repository" git à zéro... souvent après refactorisation de mon code, ou pour manque de connaissances sur la façon de réparer certaines erreurs.

Je note donc ici les étapes de base pour y arriver.

1. Quitter Xcode
2. Via le Terminal, naviguer dans le dossier de votre projet
3. déplacer le sous-dossier .git vers un autre endroit (juste au cas)
mv .git ../git_backup
4. Git ne doit pas prendre compte du document qui gère l'interface de Xcode... il faut donc lui dire de l'ignorer. Pour ce faire, on trouve d'abord le document en question en tapant
find .
Le résultat affichera tous les documents et sous-dossiers du projet, dont un se terminant par UserInterfaceState.xcuserstate comme ceci:
 MonApp.xcodeproj/project.xcworkspace/xcuserdata/renaud.xcuserdatad/UserInterfaceState.xcuserstate
5. Enregistrons ce docuemtn dans le fichier .gitignore avant de démarrer l'archive Git
echo atBox.xcodeproj/project.xcworkspace/xcuserdata/renaud.xcuserdatad/UserInterfaceState.xcuserstate > .gitignore
6. Initialisons git pour ce répertoire
git init
7. Ajoutons tous les documents (le .xcuserstate sera ignoré)
git add .
8. Faisons le Commit initial
git commit -m "Nous sommes sous contrôle!"
9. On démarre Xcode, on ouvre notre projet et on continue avec git comme si on partait à neuf.
 
 
 
 

jeudi 9 février 2012

Of education and motivation

This blog post was motivated by John Siracusa's Hypercritical podcast episode 52 http://5by5.tv/hypercritical/52 in which he discusses why technology, the iPad and especially electronic textbooks will not change education in a major way. I do not disagree with this, but I wanted to add some information to put some of this in perspective and help change the discussion to another level. This is all something which has been close to my heart for may years now, as I have worked in the education world with great partners for about 18 years, helping teachers, pedagogical consultats, principals and technicians struggle and grow in their implementation of Apple technology in the educational system and especially the classroom.

I am not a teacher or claim to have all the answers, but I know great teachers and think I understand the global idea of what makes technology work in this context and where it can play an important role. 

Also, the context in Quebec is different from many other systems to a certain extent. By no means exclusive, the Quebec education system is quite progressive in its approach, until a few years ago at least, and tends to at least attempt to answer the needs of students in developing the appropriate skills for their future needs. It tries to anyhow. Wether it attains these goals is another discussion altogether.

With this in mind, here is what I agree with and another angle to explore.

John Siracusa starts in this one discussion stating that the two topmost important things for the education system are physical and emotional security. Based on the well-known scale of human needs, this makes sense of course and I willce rtainly not challenge this. I would even add that being well-fed plays an equally important role here, but we'll lump all these basic needs before the rest. Agreed.

John then goes on and states that the third most important item is having "good teachers". this is where I felt I could add to the conversation. 

I feel this is not the whole story and is way too vague to really mean anything. What does "good teacher" mean? A person who can explain something clearly? Who can make a classroom lively and fun? A teacher who helps their students achieve success in standardized testing? Or success in their lives? And how do they become "good", did they learn this during their university education? In class as they built experience?

And what role does/can technology play in this? Any role? No role?

I'll try to bring some useful info to the table here. But first, a bit of background on students and kids.

Kids are different. Very.
Many people still assume that the way things worked when they were kids still apply today. That what supposedly worked for us as kids will work with today's kids. But the world has changed tremendously. When I was a kid in school, some 25-40 years ago, new knowledge was to be found in only a few places: home with our parents and siblings, at school with our teachers, at the library with books and a bit on tv, with some educational or semi-educational shows.

Kids are motivated to learn, it's in they DNA. So they always look for ways to learn when they are motivated. When I was a kid, French tv shows, although cute, were not as motivating to me, as the hollywood-inspired superhero comics that played on American channels in English. So I learned English... by watching Sesame Street and leveraging my parents and playing with anglophone kids. I was bilingual before even going to school, and years before I even attended an English class in grade 4 (at the time).

In general, kids don't really like wasting their time listening to stuff they can source easily like dates and data. Do you?

In general, kids don't like making the effort when they are not properly motivated. Do you?

Now, I understand this is not based on factual data per se, it is just observation and my own understanding of kids. Please contradict at will if you think it makes no sense. This is all for conversation's sake.

Good teaching is not something that is taught in Colleges and Universities per se.

Ok, we did not define what a "good teacher" is. I would like to offer my definition. A good teacher is one who can motivate their students to learn the proper information and skills required to succeed now and later. Or something to that effect. They understand what their students need to learn and why, and will use various strategies to help them reach those goals. If the teacher motivates the student, then, the student has many more chances to actually learn something. Without motivation, there is less learning of value. 

Motivation is the actual driver of learning with kids today. They will learn what they need to learn when they decide they "want" to learn it. You can sing and dance in front of them, use technology or not, use one textbook or another, but if they do not see value in what you are trying to convey, they will do one of two things. Learn it anyway, despite your efforts, because the "have to" (or else: parent reprimand, detention, failure, etc.) or, they will not succeed, or succeed just enough to pass. Their motivation in learning will be spent on things they value: achieving an expertise in a video game, learning to play a musical instrument for their own pleasure or to impress, ahem, girls, learning to draw or write, practicing a sport, whatever they enjoy. All else is a waste of their time, according to them. They do not see the value.

A "good" teacher might have the skill to show them and convince them of the value of the knowledge and skills they are trying to teach them. If they succeed, their students will be more motivated and enjoy learning. If not, as good as they are at "explaining things", they will mostly fail. Either at motivating their students profoundly, or, at passing on relevant skills for them to succeed in life. Achieving good results on standardized testing is pretty much irrelevant at this point. Depending on where in the world you are, standardized testing is to my knowledge still strongly biased to knowledge retention in most subject areas. And if this is how we are measuring success, then we are failing to measure the skills we should be passing on to our kids.

21st century skills
This expression has been used over and over and has become a marketing term in many ways. But the essence is still good. What will today's kids need to be able to do in tomorrow's jobs. Or, still true, which skills did we teach kids 10 years ago which are the most used in the jobs they have today? Well, learning historical dates by heart is probably not the most relevant, and, unfortunately, this is still being done widely across the world today. Learning data which can now be found anywhere.

Validating that data, is a crucial skill. Is the data I've found good data? Can I cross-reference it with other data t ensure it is accurate? That skill is widely more important. Motivating kids to learn this skill is not trivial. They may not see the value of it. And this is where a good teacher can play a critical role. Putting skills in context to motivate students to learn the skill.

Unfortunately, many teachers "enjoy" explaining. Some enjoy playing the role of the holders of knowledge and want to share this with their students. They might be really "good" at this too, even fun to listen to. I had a great History teacher who was fascinating. I cannot for the life of me remember most of what he said though. He was one of the favorite teachers on everybody's list though.

So if a "good teacher" is one who helps students develop the relevant skills they need to succedd in life (and not necessarily standardized testing), then yes, good teachers are certainly at the top of the list and we need as many of them as we can get. Let's make some more!

Colleges and universities

In Quebec, like in a few other countries, we have tried to change the educational system and realized it is quite difficult. Changing the paradigm from a teacher-centric model to a student-centric model, where the teacher plays the role of a mentor has been challenging to say the least. Materials are harder to come by, more effort is required on the teacher's part because of this, no "step-by-step" techniques to motivate students or even to build activities for students. Textbooks are not always quite adapted, especially if they are old, or teachers did not get the correct training to use the modern textbooks built with the new education paradigm and they use them the same way they used the old textbooks, as rote-learning resources.

On top of this, Faculties of Education and Ministries of Education may not have put in place all the resources and means to support this huge change. For example, standardized testing might have used simple multiple-choice questions to measure knowledge retention instead of adapting testing to measure skills in applying this knowlege. It is a difficult thing to change. It is changing, albeit slowly. But in Quebec at least, we are progressing or at least we have been for a few years... things are complicated now, but again, that's another discussion.

On top of this, education programs do not teach future teachers how to be "good" teachers per se. You might have some talent in motivating your students, simply because of your nature. But "how to teach", "how to explain", "how to motivate" are not things your really learn about in a university course. You do not learn how to be a good pedagogue in education programs. You may learn some of the psychological theory on different types of learners and how to adapt a lesson to them, and that's good, but we are only starting to see some courses on proper steps to explain different types of information. New teachers learn some of the techniques, but inherently, they may or may not have a natural talent perceived as that of a "good teacher". It's a start though. But you may understand this and still not be what you would qualify as a "good teacher". You might be totally appropriate, build clear lessons, apply the textbooks appropriately, but your students may not be motivated.

Even the ability to "explain" something clearly, is not innate, nor taught in school and is most probably lacking in many teachers. These are skills one develops on their own, over time. An experieced teacher, concerned with their student's motivation will work on this skillset over time as they realize they might not have been efficient the first or second time around. That's fine, this is how these skills are developped.

But truly motivating kids to learn is not something you learn in Univerity courses. Motivation 101 is not, to my knowlede, a course in any program.

So we have to live with the fact that there are good teachers and better teachers and others that have other qualities. Some are not motivated themselves for may reasons. Many of which have to do with conditions in their school, difficulties with the number of kids they are in charge of, number of compartmental issues they need to deal with, etc. What I mean to say here is that the fact that they cannot develop the best qualities is very often tied to the world they live in which is not helping them. 

So, up untilnow, I say the same as you: we need more "good" teachers.

But here is what I think might be different. I believe technology can play a role in increasing student motivation and get them to develop the appropriate skills for their future jobs and success, in spite of the teachers or at least, in spite of where teachers are at on the road to becomming "good teachers".

You need guts
In Quebec, in 2003, the Director General (superintendent equivalent) of a small mostly rural school board made a choice and took a stance. He knew that it was difficult to change teacher practice to a role more appropriate to motivating kids and helping them develop the right skill set for the future. He knew that if he tried to convince these teachers to change, he would most probably fail, or that it would take forever. So what he did is implement a one-to-one laptop program where every child in the board from grade 3 to grade 11 (just under 6000 of them) would get their own Apple iBook (and eventually MacBook).

Gutsy thing to do, technically, politically and pedagogically. Maine had started their initiative, Henrico County as well, each with varying degrees of success and failure. But this board, the Eastern Townships School Board, and this Director General, Ron Canuel, were the first to do it for so many grade levels, and became the first major one in Canada as well. And to this day, although they are exploring various models of technology integration because they are evolving, they are still unique.

The goal was certainly to change Education in their classrooms, but the means was different. They were forcing change on their teachers by placing them in front of a classroom full of computers. There was nowhere to go but to change. You simply cannot teach the same way when technology is so pervasive. You cannot control your students the same way, and you certainly are not the center of knowledge in this situation. You must become a mentor and change your focus. You must allow kids to create content. And the more they create with the tools that they like, the more the teacher can can concentrate on the skills they are developping.

Were all teachers amazing on day one? Not by far. But, as opposed to how things were happenning elsewhere, at least they had the majority of teachers using technology and changing their practice at the same time. Now that was the best achievement attained by the first phase of this project. 

Over time, as they used the technology, teachers started transforming their methods. instead of using the computers as a replacement for pen and paper, they moved on to leveraging the technology, then to transforming the kinds of activities they were doing to develop skills and now, some of them are at a level where they are innovating in new and interesting ways. And new teachers come into the system with their "traditional" methods and start the process at that level and start evolving.

One things though, student motivation has certainly increased, drop-out rates lowered and even standardized testing on basic skills like reading, writing and math have increased as well! Once motivated in general, kids get engaged more and learn more.

There is certainly a long way to go still. But this shows another point of view where technology, if well applied, can bring change or support change. It is only part of the equation, but it is important.

You can get all sorts of figures and data from their web site at www.etsb.qc.ca including research results.

The iPad is a game changer. Really.
Where the iPad plays a role is simplicity itself. I really mean it this way... "simplicity" is the key. Let me explain: the reason the Mac has been successful with educators for a long time has always been because it was simpler. More teachers could solve issues with technology with Macs because they were easier to manage. You could share files easily without a server in the eighties, you could print to your printer without complicated configurations, you could explore without messing up your system. So many good teachers were using the Mac because it was easier to master. Other excellent teacher were using other tools. Even Linux machines, with success. They had the expertise to solve their issues, try things out, etc, with these more complex tools. That's all fine. But "more" teachers were able to do motivating projects with their kids with Macs "because" they were simpler to master without having to rely as much on IT departments. That helped Apple in education. Macs were by no means the only possible tool to be successful with technology, but it made it possible for a much wider number of teachers to be successful with technology then Windows ever could and Linux probably ever will. Because the Mac, mostly, just works to create really advanced motivating projects like movies, music, slideshows, books, whatever. Even word processing is much more fun with Pages than with Word.

With the advent of the iPad, you will agree that what makes the iPad successful is that even more people can figure it out. Regular people. People who can figure out their phone, can figure out the iPad. That's a lot more people than the number who could master even the Mac. For teachers this is an amazing opportunity. Most teachers are not motivated to use technology because of issues, because they cannot figure out how to resolve them on their own, because they are shy to show their students they do not know as much as them, etc. With the iPad, a larger proportion of teachers feel they can allow their kids to use them and use them themselves because nothing can really go wrong. There are issues, like sharing documents with students, creating content is not as strong, etc, but if they can find out how the tool can help and if it is available, then "more" teachers will use it.

Which means more teachers will allow it in their class, more teachers will figure out ways to leverage them, than with any tool before it. Especially the CD-ROM. Those were a big pain. Unreliable, drivers to install, requires a big computer, speakers, cables, configuration, all that. You really neede to want to use them. And then, the content was not based on developing good skills most of the time. 

Now, textbooks are not an answer to fix education. Technology is not an answer in itself. Changing all the pieces is necessary, like teaching practice, textbooks (or other materials), tools which are simple and flexible and which encourage motivation and student engagement. But one thing is for sure, you need an environment which encourages "good teaching". You need testing and assessment which encourages the right skill set to be developed. You need teachers that motivate. You need tools which help kids be motivated. Replacing the tools with electronic version makes little difference. Electronic whiteboards, computers, tablets, they make no difference by themselves unless you do a massive change like the Eastern Townships School Board did. And even then you need to focus on how teachers become better teachers and encourage the proper model of teaching once these tools are made available.

In the end, I can add that I know many great teachers. Some are great because of innate skills which drive them to motivate their kids and have a way to explain things so that it works out. But other are not great at explaining, are not entertaining per se, but they use the tools kids love and they do it in an appropriate way to motivate these kids to learn the correct skill set they need. I'm not sure if you would consider these "good teachers" according to your definition, but I certainly do. And they achieve this level by leveraging technology to allow their kids to create rich content using simple tools (like iMovie, GarageBand, iPhoto and others) which they can handle and theirs kids can handle. But always with a clear goal of helping these kids develop specific skills, learn appropriate information and be motivated to do so.

Motivation and engagement, that is the third essential element or learning and technology really does help and make a difference for "more" teachers than simply being a naturally "good" teacher. In my humble opinion.

Hope this helps fuel this important discussion on changing education for bettering the human race.

Please, my fellow educators and friends, you all know more about this than I, so chime in and corrrect my mistakes, I'll fix up the ideas and update this living document as the need arises. And please pardon my syntax and mistakes, being bilingual certainly does not mean I have good style, but I'm motivated to improve this.

- Renaud

dimanche 5 février 2012

Parenthèse: Réinstaller une App du Mac App Store

J'ai dû régler un problème et je constate que les instructions pour ce faire ne sont pas simples à trouver sur le Net.

Le problème est simple: vous désirez réinstaller une App provenant du Mac App Store, mais celuici vous indique toujours que l'App est déjà installée... ou encore, le Mac App Store vous indique que vous avez des mises à jour pour une app que vous croyez avoir effacé définitivement de votre Mac.

Vous l'effacez de votre dossier Applications, vous l'éliminez dans Launchpad (la touche option dévoile le X qui permet de l'enlever), mais le Mac App Store continue d'indiquer que l'App est toujours installée.

Que faire?

Le Mac App Store est trop intelligent parfois, et voit TOUTES les copies d'une app sur votre ou vos disques durs. Toutes.

Ainsi, si vous avez une seconde partition qui est un clone de votre disque principal, ou une ancienne version de Snow Leopard par exemple, pour des tests, du développement, etc, le MAS y retrouvera les apps déjà installées.

Pour un développeur, ça se complique davantage: À chaque fois que l'on archive son app pour la soumettre au MAS, une copie de l'App est stockée dans les archives de Xcode. Toutes ces copies de l'app sont visibles par le MAS et considèrera que l'App est installée... l'enfer.

Comme solution, j'éjecte les partitions pouvant contenir une app avant de lancer le Mac App Store et je trouve toutes les copies placées sur mon disque.

Pour ceux qui n'ont pas de craintes par rapport au terminal, voici une commande qui retrouvera toutes ces copies (je fais une recherche pour notre app: PinPoint et j'ajoute le ".app" pour éviter de trouver autre chose comme les fichiers de préférences, etc.

sudo mdfind "kMDItemFSName = PinPoint.app" 

Attention aux majuscules et minuscule, cela compte!

La commande Unix find permet aussi de le faire, habituellement plus lentement, mais évite de passer par l'index Spotlight qui pourrait être incomplet (malchance)

sudo find / -name "PinPoint.app" -print


Une fois trouvée, effacez l'app ou déplacez-la sur un volume que vous pourrez éjecter pendant l'opération de réinstallation.


En espérant que ça puisse en aider certains.

mardi 31 janvier 2012

Apprendo ergo sum

Mes cours de latin sont bien loins...  mais comme le verbe latin « apprehendere » est la source du verbe apprendre et qu'il signifie entre autres "saisir" ou "prendre", ce titre reste approprié. Depuis mes tout débuts en informatique, il y a maintenant, hum, plus de 30 ans... je fais ce que toute personne curieuse fait et je saisis au passage les explications données par mes pairs, les informations diffusées dans des périodiques (papiers ou virtuels) et j'essaie. Le simple fait d'essayer est pour moi la manière la plus efficace d'apprendre, comme pour beaucoup d'autres, surtout en informatique. C'est un domaine qui donne des résultats immédiats et ce « feedback » instantané accélère immensément les apprentissages.

Pour qui possède une curiosité naturelle de tout ce qui est technique, l'informatique offre-donc une opportunité d'apprendre à un bon rythme, tout ce qui nous passe sous les doigts et sur le clavier.

Pour ma part, c'est au travers de projets personnels que j'ai toujours su me développer avec toutes sortes de technologies. D'abord les outils de traitement de texte (Word 3 pour Mac, un bijou à l'époque), PageMaker, puis Illustrator... et au travers de celui-ci, le graphisme et le design. Et enfin, FileMaker, et par la suite la programmation via Newtonscript (eh oui) et des outils tels Hypercard et AppleScript. J'avais des bases de programmation me provenant de mes cours d'informatique à McGill bien sûr, mais je ne les avais pas réellement mises en pratique avant cela.

Au travers de tous ces apprentissages, j'ai côtoyé des gens formidables qui ont su partager avec moi leurs propres connaissances. Je me posais des questions, ce qui me poussait à trouver des ressources et les premières ressources que l'on trouve sont nos collègues bien entendu. J'ai donc posé des questions et ensuite, suis devenu une ressource pour répondre à celles des autres. Et là, j'ai réellement commencé à apprendre!

Me plus profonds apprentissages ont été des partages en fait. Tout en partageant mes propres connaissances, je posais des questions sur l'impact de ces connaissances sur ceux à qui je les enseignais. Ainsi, en donnant des cours sur Illustrator ou Freehand dans les années 80, j'ai appris beaucoup de choses sur la séparation de couleurs et la typographie. Ce qui m'a amené à travailler chez Letraset... et en apprendre davantage.

Avec les années 2000 est arrivé Mac OS X et avec lui, l'occasion d'apprendre à programmer de vrais logiciels. J'avais vu les démonstrations éloquentes des gens de chez NeXT après leur amalgamation chez Apple et j'étais épaté! Je voulais en faire autant et Mac OS X m'en donnait l'occasion. Je m'y suis mis. Et comme projet, je me suis mis en tête de créer une interface graphique pour les commandes unix que je commençais à apprendre, et qui déstabilisaient mon monde d'expert «Mac». BatChmod est né... et vit à ce jour!

Et ça a continué comme ça... apprentissage après apprentissage. J'ai appris une foule de choses, sur la pédagogie avec des mentors comme André Daneau, Sébastien Stasse, Yves Lemay et bien d'autres qui ont eu la générosité de partager ce qu'ils apprenaient avec moi. Et surtout, de répondre à mes questions! Quelle meilleure occasion d'apprendre que le moment de la question? C'est ce que je souhaite à nos jeunes... d'avoir des questions et les moyens d'y répondre, quels qu'ils soient: humains, technologiques, réseautiques.
Bah, ils le font déjà et cela, malgré le système scolaire. Le jeunes en apprennent plus par eux-mêmes via l'Internet que via l'école à bien des égards. Si on peut trouver une meilleure façon de les encadrer et les guider la génération suivante sera d'autant mieux équipée pour grandir et améliorer le sort du monde.

Maintenant que j'ai explosé mes façons d'apprendre, pourquoi ce blogue? Simplement parce que j'ai découvert récemment que le fait d'écrire m'aidait à former mes idées de façon plus claires. Je dois bien être le dernier à l'avoir appris, mais c'est vrai. Auparavant, je n'avais pas à écrire pour cerner un sujet ou me faire un modèle mental d'une technologie ou d'un processus. Dernièrement, j'ai eu besoin de peaufiner mes capacités de programmation et je me suis rendu compte que d'écrire les étapes que je voulais suivre ou explorer des idées en les écrivant m'aidait énormément à les mettre en place par après.

Je veux donc utiliser ce blogue pour décrire des principes de programmation, ou d'autres idées afin de mieux les formuler pour moi-même. Tout simplement. Et ceci faisant, si ça peut aider d'autres personnes à apprendre quelque chose, tant mieux!

Allons-y...