Mathieu Tozer's Dev Blog

Cocoa, the development of Words, and other software projects (including those dang assessment tasks).




This Blog is Closed

0 comments

This blog has been closed. It represents the initial journey I took while learning my first framework, Cocoa, right from the beginning.

Since that topic is the bulk of this blog, and that part of my life is over, I'm closing the blog. I'll be starting a new code and developer related blog at http://www.mathieutozer.com/code.

Feel free to read the archives or follow along with the new blog!


0 comments

2007-08-14 19:09:36.041 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.042 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.052 XXX[2591:10b] animating to: {{50, 62}, {84.8077, 66}}

2007-08-14 19:09:36.057 XXX[2591:10b] animating to: {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.058 XXX[2591:10b] animating to: {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.060 XXX[2591:10b] {{50, 62}, {84.8077, 66}}

2007-08-14 19:09:36.087 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.134 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.168 XXX[2591:10b] {{50, 62}, {84.8077, 66}}

2007-08-14 19:09:36.169 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.169 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.211 XXX[2591:10b] {{50, 62}, {84.8077, 66}}

2007-08-14 19:09:36.212 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.214 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.261 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.261 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.262 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.294 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.294 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.295 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.304 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.310 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.316 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.326 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.326 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.328 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.330 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.330 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.331 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.335 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.336 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.336 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.358 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.359 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.360 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}

2007-08-14 19:09:36.362 XXX[2591:10b] {{0, 62}, {84.8077, 66}}

2007-08-14 19:09:36.363 XXX[2591:10b] {{134.808, 62}, {84.8077, 66}}

2007-08-14 19:09:36.364 XXX[2591:10b] {{219.615, 62}, {84.8077, 66}}



etc etc helped me fix that curious bug.


0 comments

ZINGLES!!! ZINGLE ZINGLE ZINGLE!!! IT WORKED!!!!


0 comments

skitchWFGgG9


0 comments

About to code something into my project which could either go really well or really bad.


0 comments

Thinking it would have been better to not have been so drunk while talking to all those gods and gurus in San Francisco?


0 comments

It's funny how I tend to hold my breath while using my own software.

*Just work please work don't crash please please please!*


WWDC2006 Student Sunday notes from the Pixar Guy

0 comments

I took these notes at student sunday last year. There's some truisms in there that I like. Thought to share. Sorry about the fragmented nature of them, I was heavily jet lagged! Oh and the guy who was speaking ended up doing a talk in 07 (a similar one). Amazing guy.

-BEGIN-

and that other people can't. It's about giving power to the users of systems.

You're taking things that were in a pipeline, and brining them all together.

Tools are about power.

It's a redistribution of power that works (win/win).

You make a bad thing go away. When you do that, you know you're made a good tool.

Leverage
Passion
It's about following your bliss. Write what you know!
You should be trying to write a real app.

Challenge yourself, but not too much. You want to get better, but be realistic.
Know what you write!

Pick something you know about so you can get better at it.

Join the justice league.

Be world class at something, so you know how it feels.
Pixar hire people because they're really good at one thing.

Have just one thing (even for the interview's sake).

If you've never been really good at something, then you don't know what you feel like, and if you work with people who are better than you, you get better yourself.
Acknowledge your ego, exercise humility.

Play well with you.

Be someone people want to work with.
You know what you don't like in others, don't do that to them.
Become the person you aspire to be.
Learn the skills you need
Meet the people that person would know.
Take the long view

Identify problems by type.

"Yes, it's stupid, fix it"

Or, Actually, it's subtle, and a feature, not a bug.

That was a problem at the last place you worked, not here.

"Nail in the head". Identify problems that you should just not work on.

Just walk away! It's one of the most valuable things you can learn as an engineer. Engineers about the right solutions to something. About elegance.

Criticism.
Seek it out, early and often.
Get it from people who respect you, otherwise you won't get the truth.
Make sure your application is pull not push.
Support promotes ownership, ownership promotes elegance.
If you've only got one idea, you're only going to defend it.

Your first real app
Scalpel, not swiss army knife
assume it will crash, and code accordingly

Labels:


Smart Lists Revisited

0 comments

Thanks to the weeks spent implementing them when I was brand new to cocoa, the word "SmartGroups" strikes mortal fear into mine heart.

--

Luckily my experience has improved and I managed to implement a working system in a few hours! This was for a seperate pet project I did on Sunday.


Grokking NSBezierPaths

0 comments

Bezier path drawing (I like to think of it as painting!) - I think I'm finally starting to get it! The possibilities aren't exactly endless, but the power it provides through the simple cocoa interface is exciting, and makes me want to draw more with it!

Labels:


Quote

0 comments

Gunna try and start blogging again.

Here's a nice quite I found:

Of software and sorcery
#
A computational process is indeed much like a sorcerer’s idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer’s spells.
—Abelson and Sussman, Structure and Interpretation of Computer Programs (1984)

Labels:


The Craft Of Designing and Building Software

0 comments

I learned from MacPaint that in order to get a piece of software to be smooth, you must start over a number of times. You need to test it on a lot of different people and have them use the program. A lot of what I would do was just watch Susan Kare using it.

"What is it that you'd like to be able to do?" I would ask her, "What's the most frustrating thing about this?"

Then I would go back and see what I could do about that. I think that the more user testing a piece of software has, the smoother it can become. The process of software design really is one where you start with a vague notion of what you're trying to make, and that vague notion slowly congeals and gets better defined. As you work with it more, it gets to the point where it is something, but as you try it you realize, "You know, I've kind of missed the mark here. This is sort of what I want to do, but what I really want is more like that!"

For example, first you pit it and pat it, and you realize it's some kind of a table. Then you throwaway all of the code and build a table from scratch, and you've got a clear, clean model. Then you start pitting it and patting it, and adding things that people want and it gets a little lopsided and difficult, and you realize after a while, "You know, what I'm really building here is more like a cobbler's bench." That's when you have to put it aside and build a cobbler's bench deliberately, and craft it to be right for a cobbler's bench. You iterate like that, testing, and then being willing to set aside and build from scratch again. So much software today doesn't get that luxury. Partly because the Macintosh hardware wasn't quite ready yet, I got that luxury. Too many pieces of software today ship when their first prototype is built, and then it's much harder for them to evolve, because they have to keep everybody happy by keeping all of the features the way people have become familiar with.

The original Mac only had 128 k-bytes of memory. Alan Kay referred to it as a "Ferrari with a one-pint gas tank." It was particularly challenging to design a painting program that would do a lot with a small amount of memory, as a copy of the whole screen had to be kept in a buffer to allow the undo command. Bill remembers the worst-case scenario, when you typed using one of the bigger fonts, you had an undo buffer and a selection going at the same time, leaving only 138 bytes free. He knew he could only succeed under those conditions by rigorous testing. Large parts of the Macintosh were rewritten in Assembly language for no other reason than compactness; and later they had to be rewritten again in a high-level language to be more maintainable.

Bill Atkinson, as quoted in Designing Interactions, by Bill Moggridge, page 102 - 103.

Labels:


+RSS | dev blog | Portfolio

About me

My status

Last posts

  • my del.icio.us
  • my flickr