PDA

View Full Version : Next step programming for mac?




liptonlover
May 19, 2008, 09:16 AM
Hi everyone! My family has used macs for years, before I was born. But Unfortunately when my dad got me into programming, and he started teaching me because I was so interested, he was teaching me BASIC. He had/has a powerful BASIC compiler, maybe you've heard of blitzmax? But as my programming knowledge in general progressed I was finding out that BASIC isn't the way to go if you're serious about programming, and I am. So here's my programming experience:

simplest html (img tag, the usual for forums.)
5-6 years of "advanced" BASIC, using blitzmax.
3 years of advanced BASIC including GUI on the palm platform.
I've been working on learning C, and ObjC/cocoa with a variety of websites, tutorials, books, etc. and I'm coming pretty far with C it should only be a matter of time.
I know my way around xcode and IB, I can make extremely simple apps.

I'd say I'm a pretty experienced palm programmer for the tool I was using though through my discoveries I found that C is the way to go even if it is harder.
So now where do I go? I have ordered the latest cocoa programming for the mac os x from big nerd ranch, and I'm using cocoalab's tutorial and will look into their links soon. But I really want to dig deep. I get frustrated when I can do something well but I have no idea WHY it works like that. Any good books or websites?
Thanks in advance! Nate



yeroen
May 19, 2008, 10:16 AM
Since you're learning C, I'd suggest you learn your way around UNIX and the UNIX C API's.

adrian.oconnor
May 19, 2008, 10:38 AM
Hmmm. I don't suppose I'll have any answers for you, but I'll share my experience anyway (FWIW).

For a long time I was at about the level you seem to be at (strangely, I too learned with Blitz Basic - but that was the original Amiga version and it was 1993!). I knew how to code, but I wasn't very good, and I stayed that way for about 6 years.

The next real breakthrough came when I actually got a job programming. At that time I was working on a helpdesk fixing problems with Windows Server. I got the programming job on the back of learning SQL and HTML to the point that I re-wrote the front end to our ticket-tracking system (and did a vastly better job than the $40K system that I replaced, though that wasn't difficult because it was a terrible system). Someone in the company saw what I had done and I was quickly transfered to the development team. After that I quickly became, IMHO, a pretty good developer.

I immediately realised why I hadn't progressed to this level before - I hadn't had 'real' (and achievable) projects to work on. Working towards something is the thing that drives me, as a programmer. Since getting that job I've written dozens of applications and hundreds of smaller utilities and sub-projects; the common theme of all of these projects is that they all had a genuine purpose and reason for being.

Now I plan carefully even projects that I do for fun. If I don't, I write a few hundred lines of code and then lose steam. Getting ideas isn't easy, especially if all you want to do is write the next Photoshop or Flash or some other massive application (which is an impossible dream). You should consider what would be useful to you - maybe a new way of visualising and playing your albums in iTunes (like a simple app that can show a zoomed-out view of your album artwork for easy selection). That kind of project is challenging yet achievable, and you'll learn a lot from it. Plus you can keep extending it - Apple Remote Support, Different browse modes (by artist/category/popularity) and so on.

One piece of advice I would give is to learn SQL. Being good at SQL has been a major benefit in my career, and it gave me a new way of thinking about data. I think I would have benefited from this even if I was writing single user apps or even games (not least of all because SQLite/CoreData uses SQL!). It's a fantastic tool to have at your disposal.

I'd also recommend reading books on English language (really!) and on design (all kinds of design, not just software). So many developers create a bad impression because they write clumsy sentences or can't choose a nice colour scheme or interface layout. If you can add that extra layer of polish it not only helps your software be successful, but it makes you feel better too!

I didn't really use books to learn (though of course I bought them and use them for reference), I just hacked away.

liptonlover
May 19, 2008, 10:49 AM
my goal when I'm at a professional level is to be working on smaller stuff and to be working on games. So I don't know how much SQL will help me, though I don't really know what it is. And are you saying my english is bad? :D

Nutter
May 19, 2008, 10:50 AM
I get frustrated when I can do something well but I have no idea WHY it works like that.

I know exactly what you mean. I had the same problem while I was learning, and the more Cocoa material I covered, the more confused I became.

This all cleared up for me when I took a step back and learned about the language (C/Objective-C) in detail. Once you know exactly how the language works, Cocoa becomes less magical and mysterious.

I would advise you to get Programming in Objective-C (http://www.amazon.com/Programming-Objective-C-Developers-Library-Stephen/dp/0672325861/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1211208533&sr=8-1) by Steve Kochan, and work through it before you start on the Hillegass book you just bought.

yeroen
May 19, 2008, 10:53 AM
For game and game engine development, it's all C++ and OpenGL (or DirectX on Windows). Eventually, you'll also have to be comfortable with linear algebra, i.e. matrix math.

wrldwzrd89
May 19, 2008, 10:58 AM
my goal when I'm at a professional level is to be working on smaller stuff and to be working on games. So I don't know how much SQL will help me, though I don't really know what it is. And are you saying my english is bad? :D
SQL is important if you're working on any sort of database, since SQL is the primary way of communicating with most databases. For example, a web-based game that uses PHP for the front-end scripting and MySQL for the back-end database would be far easier to make if you have SQL experience.

liptonlover
May 19, 2008, 12:45 PM
thanks for all the help so far!
@ nutter - I'm trying to avoid buying books if possible, the only reason I'm getting cocoa programming for the mac os x is because my dad has an older version so he knows it is a good book... unfortunately that one is a bit outdated and when I tried using it things were changed too much. I will definitely look into that book though, thanks for the link!

@ yeroen - ugh... 3D. in my limited experience 3D is a bit much for me to think about right now. Strategy is my all time favorite genre, so at least at first my goal is simple strategy. My favorite games are the simple graphics that allow for massive strategy, having hordes of soldiers or whatever. I'm also trying to avoid C++ at least for now, my goal is C and cocoa/ObjC. On a brighter note I know how to use blender3D as a noob, so at least I'm familiar with 3D models and such.

@ wrldwzrd89 - Internet is another thing lower priority wise.

Here is my roadmap so far just to make it clear.

C
ObjC/Cocoa
C++ or 3D or both
Internet

edit: I forgot another thing... my ultimate goal platform wise is portable platforms. I have always loved palms, though I'm through with them now and I think the iphone and itouch are the future and I love them anyways... so that's the platform I'm planning on using/developing for.

Thanks again for all the help so far!

adrian.oconnor
May 19, 2008, 01:44 PM
my goal when I'm at a professional level is to be working on smaller stuff and to be working on games. So I don't know how much SQL will help me, though I don't really know what it is. And are you saying my english is bad? :D

Not at all! However, I think you'd be amazed at some of the clumsy English I come across. I don't think many programmers realise the importance of clarity and readability. That applies equally to code-comments too.

I think SQL is an awesome technology to have in your toolkit. SQLite (part of the iPhone dev kit) could even provide a nice engine for storing all of your data in a large-scale mobile strategy game - it'd give you a way of managing more data than the iPhone alone could ordinarily manage in a 'classic' application (one that kept everything in memory) and also let you persist the state of the game while the app isn't running. But you're right in so far as it probably wouldn't help you much right now. Do bear it in mind though - it changes the way you 'see' data.

yeroen is right that a career in game development will require C++ and an understanding of the kind of maths used in 3D (matrixes, trigonometry). If you want some sample code to wallow through, try downloading and compiling the Irllicht engine and its samples. That said, a lot of future games are going to be heavily scripted (in terms of programming, not story line - games will always be shallow and badly written ;)) in Python and other dynamic languages.

liptonlover
May 19, 2008, 01:52 PM
speaking of comments... I really gotta work on my comments I never use comments :D
I guess SQL will be in my future then with any luck... I'll definitely look into that when I have a chance.
Can someone tell me in short what C++ is? I know it's a "superset" of C, but since I'm still learning what C is, I'm not sure what C++ adds. It seems to me C should be able to do anything as long as it has the right libraries...

wrldwzrd89
May 19, 2008, 01:57 PM
speaking of comments... I really gotta work on my comments I never use comments :D
I guess SQL will be in my future then with any luck... I'll definitely look into that when I have a chance.
Can someone tell me in short what C++ is? I know it's a "superset" of C, but since I'm still learning what C is, I'm not sure what C++ adds. It seems to me C should be able to do anything as long as it has the right libraries...
C++ is C, with object-oriented programming support (OOP). I strongly suggest you learn it - it'll prove useful for larger projects, making them easier to manage.

lee1210
May 19, 2008, 01:58 PM
This is more of a general comment on game development and SQL.

For game development, and I could be way off here, but the way I understand it the hard math is in the physics engine and rendering engine/graphics libraries. The higher level code will generally be making calls to these subsystems. So you could likely work on a game without having to be at the same level as those that write the low-level systems. If you *want* to be the one working on the low level systems, than the math, and OpenGL, etc. are extremely important.

Next, regarding SQL, if you are the only developer on a small system, you will be writing a lot of your own SQL. Once you're on a larger team, on a more complex system, hopefully there is some form of abstraction from the database and the actual queries are automatically generated or more advanced queries are written by a DBA. I definitely don't think it would ever hurt to know SQL, but if you are a "cog" in a bigger project you are unlikely to be writing a lot of your own SQL. I'm not familiar with ORMs for Cocoa, and I don't know if you'd be able to use them for the iPhone anyway, so for that purpose you probably will have to write your own SQL.

-Lee

liptonlover
May 19, 2008, 02:14 PM
Then why do people say C++ is so hard? I'm familiar with OOL's. I could certainly use MORE experience with them, but it doesn't sound that hard then.

3D and SQL are waaaaay beyond me right now. For now I'll work on C and ObjC/Cocoa and possibly C++. So does anyone have any good links? Here's my links in case any of you are interested.

http://www.cocoalab.com/
http://osx.hyperjeff.net/reference/CocoaArticles.php
http://www.cocoadev.com/
http://www.cocoadevcentral.com/
http://www.cocoabuilder.com/archive/bydate
http://www.stepwise.com/

I got all these from the last chapter of cocoalab's excellent pdf tutorial. I made my first working cocoa app with it, I had problems with my programs from other tutorials.

Cromulent
May 19, 2008, 02:42 PM
Then why do people say C++ is so hard?

Because of the complexity of some of the programming concepts involved. You can write simple C++ programs but it is capable of an awful lot more.

liptonlover
May 19, 2008, 02:48 PM
so on the surface it's just OO but you CAN make it more complicated than that?

It seems to me C should count as an OO... you can make objects using struct.

Cromulent
May 19, 2008, 02:56 PM
It seems to me C should count as an OO... you can make objects using struct.

There is more to object orientated programming than just objects. But, yes it is possible to hack a pseudo OO program in C using structs, pointers and function pointers (as well as a few other things). It would probably just be easier to use C++ though.

I was talking more about things like metaprogramming.

yeroen
May 19, 2008, 03:10 PM
so on the surface it's just OO but you CAN make it more complicated than that?

It seems to me C should count as an OO... you can make objects using struct.

In some sense, you're correct. For example, Xt/Motif (whatever that is, right?) is an 'object oriented' widget set and API that's entirely in C. But in Xt/Motif, and in C, the OO aspect depends on programmer convention, i.e. it isn't enforced by the language itself.

liptonlover
May 19, 2008, 03:24 PM
ok up until now I've been able to get away with my fairly limited programming dictionary... but what's metaprogramming, Xt/motif, and API? API is only a little familiar I've heard of it...

yeroen
May 19, 2008, 03:32 PM
metaprogramming = programs that write programs, e.g. "template metaprogramming" in C++ or more mundanely, any compiler

Xt/Motif = A GUI widget set and API (=application programming interface) for the X11 windowing system. I wouldn't linger over it too much. If you ever need to write GUI apps on X11 (for Linux, BSD, OS X), you'd use Qt or GTK these days, and probably something entirely different 10 years from now when and if you do this professionally.


Wikipedia is a very good resource for all of this (unlike G.W. Bush, or strangely enough Olivia Newton John (http://www.avclub.com/content/feature/the_scandal_of_olivia_newton/), the articles for the above topics aren't too controversial and so are not subject to an edit war).

adrian.oconnor
May 19, 2008, 03:47 PM
I definitely don't think it would ever hurt to know SQL, but if you are a "cog" in a bigger project you are unlikely to be writing a lot of your own SQL.

If you enjoy programming I don't think there's ever a need to take a job where you are just a cog. Besides, those kinds of projects so often fail, or at best grind to a disappointing end, and that's no fun. I understand that a lot of commercial game programmers are treated like cogs, but that's not my field so I can't say.

As for the split between business programmers and DBAs, I personally believe that a good programmer will almost certainly write better SQL than a good DBA. A DBA's strength should be their ability to maintain the database in a good clean, secure and (hopefully) very responsive state. I'm pleased that in the last few years I've seen this shift take place - a (big) company I recently worked at have a large team of DBAs that no longer write SQL at all (unless specifically asked to). Looking at legacy code that they now have to maintain, this change is a Very Good Thing.

Sorry to drag things so far off topic...

liptonlover
May 19, 2008, 03:56 PM
it's fine this is interesting :)
If I ever join some company in the computer world of my own free will and not because I need work, it will be pixar or apple. I don't want to be treated like a cog in any other company :D otherwise I want to try and make it on my own or with my own small company. Yeroen have you ever joined in one of those editing wars? They can be fun :P

edit: And programming is one of my few true passions, with flying, piano and to a lesser extent 3D modeling.

lee1210
May 19, 2008, 05:17 PM
<snip>flying piano</snip>

Now you've really got me interested...

-Lee

liptonlover
May 19, 2008, 06:20 PM
don't you just love those typos..... :cool: edited.

lee1210
May 19, 2008, 06:24 PM
What a difference a comma makes. I was legitimately wondering what "flying piano" was. :)

-Lee

liptonlover
May 19, 2008, 08:37 PM
hehehehe case and point, good grammar and english matters. It made sense when I typed it but when you pointed it out I saw its double meaning lol.

Eric5h5
May 19, 2008, 09:07 PM
hehehehe case and point, good grammar and english matters.

The phrase is "case in point"...speaking of good grammar and English. ;)

Game programming is moving more and more toward using middleware, since it's gotten so complex. So unless you're going to be working on an actual engine for some reason, it's getting more likely you'd do some kind of scripting in a higher-level language instead of programming in C++. Check out Unity (www.unity3d.com), where you can make 3D games with a physics engine and so on using managed code, so all the freakishly hard stuff is taken care of for you and you don't have to study for years before you can do anything cool.

--Eric

Mac Player
May 20, 2008, 04:58 AM
Then why do people say C++ is so hard? I'm familiar with OOL's. I could certainly use MORE experience with them, but it doesn't sound that hard then.

Its hard because while coding or reading the code you have to pay attention to a bunch of little and stupid things which have nothing to do with the actual problem you are trying to solve. This is specially true when you receive large chunks of c++ code you need to integrate in your project.

yeroen
May 20, 2008, 08:15 AM
Its hard because while coding or reading the code you have to pay attention to a bunch of little and stupid things which have nothing to do with the actual problem you are trying to solve. This is specially true when you receive large chunks of c++ code you need to integrate in your project.

That's true of any programming language. Every language has its snags and thorns on which to get caught, even fashionable Java.

liptonlover
May 20, 2008, 08:45 AM
@ eric5h5 - Rofl my bad :D
I hate hate HATE where games are going. I shouldn't be forced to do things in 3D to make my way :mad: but anyways I'm downloading the unity trial, I'll see how that goes. I'm familiar with blender3D so it shouldn't be too hard to get used to.... question though: What's C#?

liptonlover
May 20, 2008, 08:47 AM
@ eric5h5 - Rofl my bad :D
I hate hate HATE where games are going. I shouldn't be forced to do things in 3D to make my way :mad: but anyways I'm downloading the unity trial, I'll see how that goes. I'm familiar with blender3D so it shouldn't be too hard to get used to.... question though: What's C#?

@ Mac player - Ok :) thanks!

@ Yeroen - I don't know.... I think blitzmax does a pretty good job avoiding that. Then again.... I never got too far with blitzmax in reality. I could do a lot but there was loads left to go.

wrldwzrd89
May 20, 2008, 08:47 AM
@ eric5h5 - Rofl my bad :D
I hate hate HATE where games are going. I shouldn't be forced to do things in 3D to make my way :mad: but anyways I'm downloading the unity trial, I'll see how that goes. I'm familiar with blender3D so it shouldn't be too hard to get used to.... question though: What's C#?
C# is one of the .NET languages Microsoft maintains. It is a "native" language of the .NET framework and Microsoft's Visual Studio development tools. Also supported by that framework/dev tools are Visual Basic .NET and C++.

liptonlover
May 20, 2008, 08:49 AM
So to use unity to make apps I'm going to have to learn that or one of the other languages they mentioned?

yeroen
May 20, 2008, 09:43 AM
C# is, in a nutshell, Microsoft's version of Java.

liptonlover
May 20, 2008, 10:27 AM
:mad: I don't know java....

wrldwzrd89
May 20, 2008, 10:37 AM
:mad: I don't know java....
Don't worry. If you know C, and especially if you know C++, you'll pick up Java VERY quickly. C++ and Java have a lot in common, but also some important differences.

liptonlover
May 20, 2008, 10:48 AM
ok this is getting too complicated now. Right now I just want to focus on C and ObjC/Cocoa lol. I'll keep all this stuff in mind and fool around with unity, but I can't go learning 100 languages at once :P

Eric5h5
May 20, 2008, 05:19 PM
So to use unity to make apps I'm going to have to learn that or one of the other languages they mentioned?

Yes, but don't worry about the "learning 100 languages" thing. If you learn one language, you've got the basics for all the others covered. The rest of it is just syntax, and a lot of languages have quite a few similarities to C anyway.

--Eric

lee1210
May 20, 2008, 05:38 PM
Yes, but don't worry about the "learning 100 languages" thing. If you learn one language, you've got the basics for all the others covered. The rest of it is just syntax, and a lot of languages have quite a few similarities to C anyway.

--Eric

Everyone else is throwing their 2 cents in, so I'll toss out a slight footnote to this.

Practically every procedural language is easy to learn once you've learned one (i.e. C to Fortran to ASM).

Practically every OO-procedural language is easy to learn once you've learned one (i.e. C++ to Java to C#).

Practically every functional language is easy to learn once you've learned one (Lisp to Haskell to OCaml).

Outside of these categories (someone will, assuredly correct me on this) I don't know of a lot of others. I guess you could say that once you know one hardware description language it's easy to learn the others (VHDL to Verilog).

ASM might be an exception, as knowing a slightly higher-level language like C doesn't always open the door to any style of ASM. A RISC ISA is probably going to be easier than a CISC ISA, etc.

I would focus on one paradigm at a time, but you will never finish learning any one language, so don't be too concerned with branching out.

-Lee

Mac Player
May 20, 2008, 05:40 PM
That's true of any programming language. Every language has its snags and thorns on which to get caught, even fashionable Java.

Yes but C++ has too many pitfalls.

liptonlover
May 21, 2008, 08:34 AM
now can someone please just define procedural language and functional language? I have an idea what they could be but I just want to be sure. :)

wrldwzrd89
May 21, 2008, 08:59 AM
I just learned what these are yesterday so I'd be glad to define them for you.

Procedural languages organize statements into procedures, which can call each other or themselves (this is called recursion). C is a good example of a procedural language.

Functional languages are a subset of procedural languages, which focus on mathematical expressions.

adrian.oconnor
May 21, 2008, 09:24 AM
now can someone please just define procedural language and functional language? I have an idea what they could be but I just want to be sure. :)

What are you doing still posting here?! You should have shut yourself away in a darkened room by now to work on your strategy-game masterpiece (in C, I think you decided)! It won't write itself! ;)

Procedural is 'normal' programming, with variables and operations that act, one after another, on those variables. It's what you think of as 'programming'. Functional programming tends to be focused on returning the same value every time, without side effects. It's an odd concept, but it's perfect for mathematics.

I've never really played with functional languages, but there are some Eriksson videos on Google Video that demonstrate Erlang (a functional language they wrote for their phone systems). They are worth watching, not least of all because they all have terrible 70's era haircuts, but also because it's nice to see how they approached their specific problem.

I know I haven't really explained functional programming that well here, but that's because I don't really understand it myself. Maybe someone else who has done a lot of tricky academic math can provide a nice car analogy :)

liptonlover
May 21, 2008, 10:56 AM
I'm still working on learning C... I finally ordered cocoa programming for mac os x *deep breath* so that'll come soon.... then I can get started from there. I thought hard about it and I don't think I need to get into 3D of any sort to make a decent living in programming... I live by my own saying... "it's not the graphics that make a great game great... it's what's going on BEHIND those graphics." *wonders if someone else already coined that*
So anyways... Looking at my collection of games I have plenty that aren't 3D... in fact more than half AREN'T 3D. They're either fake 3D or overhead view, all easily done without getting into 3D. Also some things just can't be done in 3D very well. Like take risk for example. It's fine as an overhead game. Adding 3D might look cool but it just adds to the complexity of controls and makes more work for me.

yeroen
May 21, 2008, 11:44 AM
Of course, at 17 (that's your age, right?), there's an excellent chance that you'll ditch the idea of becoming a professional programmer before graduating college and entering the workforce to do something else entirely.

Not that that's a bad thing. Ask any of us who do this for a living, and you'll get some irreverent opinions on the nature of the profession, such as it is.

liptonlover
May 21, 2008, 12:32 PM
:rolleyes: I wish... actually I'm 14 and wish I was older, because that would mean I wouldn't have missed out on my favorite period of computer history, when 3D vector graphics were revolutionary and programmers had to work a lot harder to get their stuff working due to limited memory and slow computers. *deep breath* so anyways...
I started programming in a loose sense of the word when I was 10-11 and even though I've had lots of other passions come and go since then, I've always loved programming to death. I enjoy working on making games more than playing them and I doubt it's going to leave me any time soon :)

adrian.oconnor
May 21, 2008, 03:49 PM
I'm still working on learning C... I finally ordered cocoa programming for mac os x

Good move; I think you'll get a lot from it.

I don't think I need to get into 3D of any sort to make a decent living in programming...

You definitely do not need 3D to make a living. In fact, it's probably time for a quick reality check... The grim truth is that you can make a better living creating far more mundane stuff than fancy-pants games. I suspect that all of the professional programmers in this thread (those of us who make a living writing software) write software for businesses.

That doesn't mean it's boring - in fact, I really enjoy my work - more than any of my friends enjoy their jobs - but my particular line of software (normally document management, but right now patient management) is a world away from what I thought I wanted to do when I was younger - which was of course write games.

As it happens, writing games these days is probably a far less creative process than writing regular software (for the programmers, that is), because the teams are so huge and that leaves very little space for each individual to make their mark. If you are very arty as well as good at programming, then maybe you could still do something special as an indie game programmer, but that's rare these days.

I have plenty that aren't 3D... in fact more than half AREN'T 3D. They're either fake 3D or overhead view, all easily done without getting into 3D. Also some things just can't be done in 3D very well. Like take risk for example. It's fine as an overhead game. Adding 3D might look cool but it just adds to the complexity of controls and makes more work for me.

Even 2D is very difficult - especially if you don't have an artist creating beautiful graphics for you. I'd strongly recommend starting with nice little projects (connect 4, tic-tac-toe, that sort of stuff) while you're learning because there's nothing more demoralising than biting off more than you can chew. If you do start a project that you don't have a hope of finishing, learn from it, bin it and start something more realistic. You must write software though - it's the only way you'll truly learn.

Let us know how you get on with Cocoa Programming for Mac OS X. It's a great book.

adrian.oconnor
May 21, 2008, 03:59 PM
Sorry to spam the thread with yet more ramblings:

I wish... actually I'm 14 and wish I was older, because that would mean I wouldn't have missed out on my favorite period of computer history, when 3D vector graphics were revolutionary and programmers had to work a lot harder to get their stuff working due to limited memory and slow computers

It's easy to feel that way but don't be despondent - People will think the same about this generation in 20 years time. The truth is, good programmers still try to squeeze every last ounce of a computer, and the extra room gives you far more creative space to do some great things.

There was a certain innocence in that age, I'll grant you (although maybe it's just nostalgia), but it wasn't necessarily that great - you wouldn't have had Blender, for example, and Basic meant really, really BASIC.

This is a good time to be programming, not least of all because of the Linux revolution and open source software in general, but also because OS X is a wonderful platform to write software for. Those NextStep engineers knew a thing or two...

liptonlover
May 21, 2008, 04:31 PM
I hate having to put semi colons after statements... kinda annoying since my background is BASIC.

I never liked the idea of a blue collar job... that's why earlier I said my choice companies are apple and pixar though I suppose pixar doesn't really count as its own company any more :mad: I happen to get frustrated easily when it comes to repetitive work... and programming while wearing a suit in a cubicle will probably take all the fun out of it for me and I won't be able to stand it. I hope to be able to make my way either by myself or in a company I started.

Artistic talent isn't too hard to find... I certainly can't make my own graphics but artists for hire are around on the internet. And I know what you mean about taking a bite too big to chew... when I get a new idea (for the palm because I never did serious programming on the computer) I start visualizing all the problems, I can literally see the code in my mind and how I'll get around problems. But once I start, it always becomes harder than I think it will be.

Yeah the second version looks great from what I've seen flipping through it... too bad I couldn't use it.

I still don't think it's the same... something about back then just appeals to me which is weird seeing as I was only a baby for the end of that era.

You have a point there :cool:

I still find it funny that we're still using at the core of our macs stuff that was written years and years ago...

liptonlover
May 23, 2008, 08:17 AM
Exciting moment! Last night I finished the tutorial from cocoalab.com which I highly recommend to beginners. As I said previously I don't have a C background, and this tutorial is for people who want to learn ObjC but haven't learned C yet, unlike every other book/tutorial I've found. So anyways I finished it, and they have this simple app where you have two buttons and a label, and all the buttons do is change the value of the label to 5 or to 0, depending on which one you press. But I learned so much more than that, like pointers I finally understand... I was lost before. So from their simple application, I built on it to make a counting app, and then I added another label and button so that it saves the highest point you've made it to, even if you reset the number. I can't come close to describing how good I felt last night.

adrian.oconnor
May 23, 2008, 04:37 PM
Exciting moment! Last night I finished the tutorial from cocoalab.com ... I can't come close to describing how good I felt

Great stuff! I still get that buzz all the time when I write something new, and that's why I love programming.

pointers I finally understand...

Good :) They aren't so tricky really. People do worry about them when they're starting out, but conceptually they are very simple and it just takes a little bit of practice and familiarity.

I think you'll really like building the sample application in the Cocoa Programming for Mac OS X book. It's quite a meaty little project, but it's very well written and that makes it nice and easy to follow.

liptonlover
May 23, 2008, 04:43 PM
I'm having so much fun... I've been messing around a lot today, just trying different stuff, saving code snippets for easy future use, and using the help document a lot. *Wishes the cocoa book would hurry up and get here*

sushi
May 24, 2008, 02:49 AM
I can't come close to describing how good I felt last night.
Welcome to the wonderful world of programming!

May your journey be a fun one. :)

yeroen
May 24, 2008, 12:53 PM
Welcome to the wonderful world of programming!

May your journey be a fun one. :)

So far he's only experienced the manic phase. Soon enough it'll turn on him and, at the terminal, he'll be hurling curses and execrations that would make a sailor blush; just like the rest of us have at one time or another.

sushi
May 24, 2008, 01:30 PM
So far he's only experienced the manic phase. Soon enough it'll turn on him and, at the terminal, he'll be hurling curses and execrations that would make a sailor blush; just like the rest of us have at one time or another.
Why I never ever did that! :p

BTW, I went through a couple of these (http://www.bearspicnic.org/smack-a-mac/index.html). Saved my Mac SE a time or two back in the day.

liptonlover
May 24, 2008, 11:28 PM
@ Yeroen - Heheheh I don't swear.... :cool:

@ Sushi - That thing is cute.... I would put it on a shelf instead of beating it to death :D

sushi
May 25, 2008, 04:19 AM
@ Yeroen - Heheheh I don't swear.... :cool:
Oh, you probably will. :eek: ;)

@ Sushi - That thing is cute.... I would put it on a shelf instead of beating it to death :D
Thanks. I went through two of them. Poor guys!

At the time I was using a Mac SE for development, so it was cool to have the Smack-a-Mac sitting beside the real one. And I smacked them good at times.

adrian.oconnor
May 27, 2008, 04:23 AM
@ Yeroen - Heheheh I don't swear.... :cool:

Heh. That's possibly because:

You haven't had to write code to parse a badly designed XML schema...
You haven't had to track down a memory leak caused by middle-ware (that you have no control over) and that causes a major application to crash randomly once every few weeks...
You haven't had a subtle bug slip through testing that corrupts data (and then had to tell the customer that their data is corrupt because of a bug)...
You haven't written a beautiful piece of code, to spec, only to have a dumb-ass manager tell you that they want you to do it differently 'just because'...
You haven't been tasked with maintaining some legacy code that turns out to be 3000 lines of horrible spaghetti (which has also been copied, pasted and subtly changed in 5 different files to do 5 very similar jobs)...

I could go on, but that last one has made me start shaking a little. It had a happy ending though - some extreme refactoring turned it in to a 500 line thing of beauty :)

P.S. This is a tip for budding professional programmers: If you ever use copy and paste while programming, you're almost certainly doing something wrong. Do Not Repeat Yourself! (http://c2.com/cgi/wiki?DontRepeatYourself)

P.P.S. This /is/ a list of things that make you swear, but they don't make programming any less fun. In fact, these things just serve to make the good times even better!

deputylove8
May 27, 2008, 05:31 AM
interesting........:D

yeroen
May 27, 2008, 09:57 AM
Heh. That's possibly because:
[LIST]

You haven't had to track down a memory leak caused by middle-ware (that you have no control over) and that causes a major application to crash randomly once every few weeks...


Funny, that's exactly how I spent my memorial day.

liptonlover
May 27, 2008, 01:40 PM
awwwww... :mad:
I spent my memorial day marching in a parade :)
Everyone download my calculator from macupdate, it's called programocalc! I'd love honest not-just-being-nice reviews.

lee1210
May 27, 2008, 01:59 PM
The icon is awfully small.

I can't give input other than that, as when I start it, the program crashes...

May 27 12:57:09 lee-mckeemans-computer crashdump[17221]: Calculator crashed
May 27 12:57:10 lee-mckeemans-computer crashdump[17221]: crash report written to: /Users/lee/Library/Logs/CrashReporter/Calculator.crash.log

Exception: EXC_BAD_ACCESS (0x0001)
Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000000

Thread 0 Crashed:
0 libSystem.B.dylib 0x9010c802 _malloc_initialize + 992
1 libSystem.B.dylib 0x900028d7 malloc + 29
2 com.apple.Foundation 0x927e265f _NSAPDataCreate + 26
3 com.apple.Foundation 0x927e1fdd NSPushAutoreleasePool + 37
4 com.apple.AppKit 0x9327f7c1 NSApplicationMain + 62
5 com.yourcompany.Calculator 0x00002938 main + 30
6 com.yourcompany.Calculator 0x000028ee start + 54

-Lee

liptonlover
May 27, 2008, 02:24 PM
is your os at 5.0 or higher? It won't work if it isn't. And I don't know why it insists on making the iconset so small, it's a big image...

lee1210
May 27, 2008, 03:04 PM
is your os at 5.0 or higher? It won't work if it isn't. And I don't know why it insists on making the iconset so small, it's a big image...

Ah, nope... I am still on 10.4.xx, so I guess that would do it.

For your icon, do you have a big image, but there's a lot of transparent space around it?

-Lee

adrian.oconnor
May 27, 2008, 04:11 PM
Everyone download my calculator from macupdate, it's called programocalc! I'd love honest not-just-being-nice reviews.

Nice! That's a cracking start. I have a small bug to report: I can't resize the window - I think the results field is obscuring the corner.

I'd recommend for your next step that you look at using the Segmented Control for the buttons. You could even make it so that one of the operations is always selected, and that the result updates automatically as you type the numbers into the boxes! If that sounds impossible, wait until you learn about delegates and then have a go. Segmented controls also look very good for groups of related buttons, which is what you have here.

Also, you should delete those default menu options so you have just the program default menu and help.

That's a great start though. You quite clearly have the right aptitude and a passion for programming, and that's what makes a great programmer!

liptonlover
May 27, 2008, 04:22 PM
@ lee -

sorry I meant 10.5 :D and I think I will remove some alpha settings so it can be used by older OS's.

I used grab to take a snapshot of the window, so the actual image is just that big. But when I put it through IC it turned it into a square image, so yes it does actually. Also a lot of it has an alpha value of .60, I believe there was a warning about that possibly messing it up.

@ adrian -

Not a bug, there's not point in resizing it so I set min and max size restraints. And just on a side note for future reference, if restraints aren't set the field being there does not affect dragging the window size.

Actually that's on my list of things :) I don't think it will be impossible, I'll just do it the old fashioned variables way and wait on delegates. I think it's possible, anyways...

Yeah, but I like them. It makes my calculator look more official :P

Thanks! I have been at it for years! :)

So next up is to get live updates to the result, switching to a segmented control which I just realized will save me a bit of code, and to add some simple graphics. I currently have it, though not released yet, where when you do a calculation the results window spins and then shows the result. But instead I will make it slide in like a drawer then pop out with the result.

adrian.oconnor
May 28, 2008, 04:40 AM
Not a bug, there's not point in resizing it so I set min and max size restraints. And just on a side note for future reference, if restraints aren't set the field being there does not affect dragging the window size.


Sorry. I was going off the description (and Screenshot) on MacUpdate: http://www.macupdate.com/info.php/id/27628/programocalc


Actually that's on my list of things :) I don't think it will be impossible, I'll just do it the old fashioned variables way and wait on delegates. I think it's possible, anyways...

So next up is to get live updates to the result, switching to a segmented control which I just realized will save me a bit of code, and to add some simple graphics. I currently have it, though not released yet, where when you do a calculation the results window spins and then shows the result. But instead I will make it slide in like a drawer then pop out with the result.

Pop-out drawers are a great thing. I look forward to the next version!

liptonlover
May 28, 2008, 08:22 AM
when I updated the listing they decided not to update the description apparently :mad:

just to make sure there's no confusion, I'm not using an actual drawer. I will just resize the results window, to slide it in and back out. Nothing special.