iPhone graphic design advice for developers [closed] - iphone

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I'm a developer who is making an app without a graphic designer for the first time. I am competent at making user interfaces that fits conventions and the Apple Human Interface Guidelines, but when it comes adding that extra layer of decoration to make the app sexy, I'm totally inexperienced.
Does anyone have any pointers or resources for helping developers such as myself act like graphic designers, in particular for iPhone apps?
I have a technical knowledge of photoshop, without having an artistic ability with it. I like to believe that I have a good eye for judging aesthetics, but I've never been good at creating something aesthetically pleasing from scratch.

"Acting as" requires being one, so learn the basics of graphic design. One popular book for beginners is The Non-Designer's Design Book. It's not about Photoshop, it's about recognizing why a design works to improve your judgement. There is more logic behind it than you may think. Usually being pleasing is the same as conveying useful information, "design is how it works as much as how it looks".
Review screenshots of existing iOS apps: Pttrns, Well Placed Pixels, Beautiful Pixels, or keep your own collection using LittleSnapper and CandyBar.
Unfortunately most tutorials are step by step instructions to reach a goal, but they don't bother much in why or how combining certain effects works. Then there are a lot of subtleties which you will have to dig in blog posts. Erik Tjernlund posted a good link (flyosity.com), here is another (bjango.com). These details create immediate trust from the user. There are plenty of tutorial sites on Google, but learning PS is a long-term goal.
An (offtopic) option now is to buy professional services. Example, Articles from Sophia Teutschler got help from the IconFactory. It's cost effective to invest your time in what you do best to pay for what they do best.

I really like Mike Rundle's (#flyosity) blog post – "Crafting Subtle & Realistic User Interfaces" – as a good, hands-on introduction on how to think about creating beautiful user interfaces. Follow some of his advice and your apps will automatically look much better.
To get inspiration, I highly recommend the Pttrns site. Look at how different apps solve common tasks.
My last advice is to practice a lot. My experience is that using the most commonly used tools (Photoshop and Illustrator) doesn't come naturally for us developers. Seeing a professional using these tools can sometimes be a real eye-opener. Especially workflow and how they use the tools to guide them in the creative process.

I am frequently visiting this website: http://app.itize.us/wp/
Not for directly copying others design or functionality but I always get ideas on how to design GUI elements here, often by mixing many of the different styles. I will also recommend you to just play with all of the different layer options you get when you double-click a layer in Photoshop, learned a lot by doing that!

The Web Designers Guide to iOS Apps is excellent but it does focus on NimbleKit. If you're not using NK the design discussions are still valuable.

You can follow tutorials here. I am not vary much familiar about photoshop/illustrator but may be these tutorials be helpful.

Having a "good eye" and knowing what looks nice is good, but if you don't have that initial "vision" then you will be spending a lot of time playing around until you stumble on the design that looks good and even then you may never reach that point.
As developers, we are very good at following the guidelines put down by Apple and making sure that we follow those - after all it's a nice logical set of rules to follow and that's exactly what we do when we write code - follow logical rules.
Unfortunately the design side of things doesn't have rules that we can follow. Yes, we may be technical at using Photoshop or some other drawing application, but when it comes to actually having that spark of inspiration, that's not something we can just click a button for.
Looking at other applications is one way to go. But then you may end up having an app that looks like another app or a collection of a number of apps and then you may have problems with a fluid user interaction.
My own approach to this problem was to go out and find someone who is really good at doing that art stuff and working with them. I struggled for a long time designing my own stuff, but looking back, it was obvious it was a developer (me) doing the design. I'm not sure what it is, but there's an extra something that these graphic artists seem to be able to do that I just can't get and that makes all the difference.
But the flip side to this is that he can't code. Sometimes it's best to just stick to what you're best at.

Related

What Is The Best Order To Learn Beginner To Advanced Flutter Material?

I'm in the process of learning to become a better Flutter developer. I've taken a couple of intro courses on Udemy, and I've even built/released my first app.
While building my app, I realized I don't understand architecture.
My ultimate goal is to learn how to build apps as a professional developer would.
In the countless hours of research I've done, I've realized that professional developers:
Separate code into layers (ie. Presentation, Domain, Data)
Write their own tests
Likely a list of other things I don't know yet
understand.
While trying to learn these materials, I continually face the same problem. Every time I try to learn something new, I encounter something I don't understand.
For example, I might be trying to learn an architectural pattern, and out of the blue, I read terms like "dependency injection," "lazy singleton," or "repository." Because I have no idea what those things are, I get stuck.
I've tried to dig into the source code of professional apps, but it's way over my head. There's a massive gap between "I finished a couple of Udemy courses" and "I work as a senior engineer."
So, if you're an advanced developer, I have three questions.
If you had to teach a complete beginner to become a professional flutter developer, what material would you have them learn?
What reputable resources would you use to teach each topic?
In what order would you teach the material—to ensure the student could understand each new topic?
I know this is a broad question, so I'll narrow the scope. Ideally, I want to build apps like the team at Very Good Ventures does. For context, they use flutter_bloc, a Presentation, Domain, and Data type architecture (see picture), and write their own tests. And, as I mentioned above, likely a list of other things I don't yet understand :)
Architecture Pattern
Finally, I know I probably sound lazy. I certainly could read a million articles in an attempt to piece everything together. But, ideally, I was hoping to find a more effective path. So, that's why I'm asking the experts.
Thank you for your time,
Chris
I would suggest using GPT3 and codex. Give them all of the context you have, and ask your question. They have already read all of those articles plus looked at a lot of code. Because flutter is so new probably it is likely less represented in the data sets. However, I have been able to ask some forter questions and receive answers.
Flutter can be best thought by flutter's creators, no other resources can teach you better,
Just follow flutter official documentation,
All the examples are carefully designed with best coding practices and patterns,
https://docs.flutter.dev/

Which language for my dissertation project? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 12 years ago.
Improve this question
I am doing my dissertation project on NP-Hard Problems: I am going to implement various algorithms for problems such as the partition, the subset sum, the knapsack, etc and then compare the results, the running time, etc. Also, I am going to see what happens with the algorithms when you modify the problem (how does the algorithm behave on the reduced problem, etc).
Now I picked this topic as my project because I am interested in theoretical computer science but I am also not sure if I want to go on as an academic/researcher or join a company/startup and this project has both a theoretical and a practical (actual coding) side.
My question is, which programming language should I use? Should I stick to what I feel more familiar with (Java and maybe Python), or should I go with the web languages (HTML, CSS, PHP, RoR, etc), having in mind that web development skills are on high demand nowadays?
EDIT: HTML and CSS would be obviously used just for the UI.
I want my project to be something that will impress in an interview (for either a job or a masters course) and I am not confident that "yet another project in Java" can do that. I understand that as long as the work on it is good and the result is satisfactory I should be ok but if, let's say, using Ruby can give me some points I am totally going with that. In the same time, I understand that deciding which language to use is part of the project so I am not willing to complicate things just to try and look cool.
Thanks in advance!
EDIT: In case this changes any of the answers, this is a undergrad. dissertation project, not a PhD one.
First of all this is a subjective question, not perfectly suitable for SO, but we forgive you :)
Contrary to popular opinion here (looking at the previous answers), if you're trying to solve NP-Hard problems, I would definitely not write the programs in C or C++. Mainly because dynamic programming methods tend to look like absolute dog poop when written in low-level languages. For example, here's someone's dynamic programming solution to the knapsack problem: http://www.joshuarobinson.net/docs/knapsack.html.
It's well-written and well-formed, but barely readable simply due to the sheer amount of malloc, memcpy, and free you need to do. Go with Java or Python, no question about it. You want people to actually read (and maybe even enjoy?) your dissertation, I would assume.
Don't write it in PHP or Ruby because those languages aren't particularly applicable to computer science theory. With that said, if you're applying for a web-dev job and you're trying to impress your future employees with a knapsack problem or dynamic programming NP-Hard solvers, it's like shooting a sparrow with a cannonball.
If your project's subject is impressive, no one will care what language it's in. Do it in the language you feel is appropriate for the task. Knowing how to make the appropriate language choice and defending that choice should be more impressive than "OMG I used RoR XSL ActionScript CSS!!!"
Also, how long do anticipate this project will take? If you go with a language that's flashy and trendy today, do you know it will still be cool and popular when this project wraps up? Just saying in another way, popularity is not the reason to choose the language for something like this.
if you can invest effort and time, then i recommend c/c++. it will be an impressive add-on skill.
My language of preference would be Python. You could use Django and, in my opinion, it would be very applicable to things that are being done in the industry (especially with startups). Plus, you can't beat Python when it comes to readability and speed of development.
I would have thought that Python would be doing too much clever stuff under the hood to really be able to measure relative performance accurately.
Wouldn't it be better to use a lower-level language like C? Employers would respect you more for that than using something because it's "cool".
The languages you know look fine to me. The old saw is that a CS PhD makes you unemployable anyway, so I wouldn't worry about it. :-)
The other ones you mentioned are mostly specialized web presentation languages. I'm not real sure how one even goes about implementing the knapsack problem using CSS...
Well, as much as this might look fine on the web page, it seems to me that Java would do a better job doing what you need.
PHP, HTML and CSS knowledge is good for job finding, but not applicable very much on the subject you picked.
Also, I noticed a bunch of answers, so I guess this is a question very much related to personal taste and opinion. Hm... You asked for it, anyways ;)
Since you're already familiar with Python, I'd recommend using it. You can use the popular scipy and numpy libraries for your project. You'll probably find something of use in them.
That would be the core, or backend part of your project. When this part is finished, you should think about polish and presentation. You don't want to have an impressive looking presentation with wrong calculations.

Can I learn the iPhone SDK and complete an app by September? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I'm wondering if it's realistically possible to learn the iPhone SDK and complete an app by the end of this summer. The app shouldn't be too difficult, it would just interact with my site's API and essentially just fetch, create, and edit resources. I already have a little experience with the SDK (and I'm comfortable with Objective-C), so I'm not completely new to it. Although here I things I don't know how to do and what I'd need to learn:
Log in to my site using basic http authentication and store the user's username/password for all future requests
Implement a toolbar at the bottom to navigate between different views
Fetch and parse xml into list items
Do POST/PUT requests to create/edit a resource on my server
Are there any good resources available to learn how to do those tasks above? Thanks!
You mentioned creating/editing resources on your server. If you're running Ruby on Rails on the backend, you might find Objective Resource interesting, an Objective-C interface into Active Resource:
http://iphoneonrails.com/
But back to your original question, it all depends on how polished you want the app to be. My advice is, ignore if you can do it and just get started learning. Start with the (free) Stanford iTunes U course podcast.
I learned and published in 3 months. The question is are you comfortable with Objective C (which you are) and are you familiar with cocoa and the MVC pattern?
Basically, unless you are totally new to programming, go for it!
I wrote an Android game in two weeks with out knowing Java or the Android API or that much about game programming.. But I had to copy and paste a lot of stuff from documentation examples and other available source code. It is theoretically possible to learn enough to write an iphone app in that time and build it. But it is up to you to focus and see it through, that is the hard part.
Yes - I've even done it.
I had an internship for 2 months last summer and I managed to learn objective-c and create and polish a fairly complex app within that time.
The way I did it was just to throw myself into it. I knew what needed to be done so I jumped into it. I had a quick look at some open source code for various things to see how other people did it then apply those rules to my own code.
2 important things to remember:
Google and stackoverflow are your friend, if your having trouble with something google and stackoverflow will normally have an answer.
Option, Command and double click on something in your code will open up the apple developer documents and do a search for the thing you double clicked on. This gives a really easy way to check for methods and properties in Cocoa classes.
Yes you can.
My suggestion, learn the basics first. Grab a book - I recommend "Beginning iPhone 3 Development" by Jeff LaMarche & David Mark - read most of the chapters (a few of the later ones you can probably leave for another time if you don't need them yet, but do all the earlier ones) and get your head around the essentials. Do the exercises and code as much as possible. There are plenty of learning resources around the internet too.
Then tackle your app while continuing learning. By this point you'll have fallen across & bookmarked a few relevant web links or grabbed a book or two specific to your app's needs, and it should all fall into place.
Good luck! :-)
Yes!
Other than the advice people gave, you can also check out the iPhone Application Programming course on Open Courseware. But, I warn you, it's a 45h course.
Maybe you can spend a week or so to study the Wordpress source ...
I'm doing pretty much the same thing on OSX development. This is how I tackle it:
Buy relevant books. Amazon and SO provide with the right choices, then buy alot of them and see which one fits. I found that having a good book or two and occasionally reading them outside of your programming environment can really enforce you learning proces.
Work through at least one book, the others are for elaborating on what you have learned.
Start writing you app. This can even be after only a mere week of learning the SDK. Start with globally planning the thing, and dividing it in concrete to-do's. Consider every to-do a challenge and tackle accordingly. You will very quickly learn this way.
After a while your knowledge has expanded enough to reflect. When you just started writing the app, you inevitably made some mistakes. Now is the time to fix them and let your experience work its way.
And as previously mentioned, go nuts with google and SO. Of course, posting here proves your ability to use these tools properly. Above all, have fun.
It's possible.
Don't bother investing too many resources into books, especially if you want to save money. Stanford University have put up an excellent series of lectures for free from their iphone course that will get you up to speed with iPhone development, with a few assignments to do on the side (this is good because it offers some structure to your learning)
You can find this on iTunes (it might be reasonable to skip the 'introduction to objective-c' lectures if you're already familiar with the language)
Also it might be worth pointing out that if you want to develop an app on an iPx device you need to get a Developer License which will cost you a bit of money for membership. Although working off the simulator is completely free but doesn't replace trying your app out on a physical device.
ANother suggestions is to look for opesource projects and try to use them as your training exercise. Example:
http://sourceforge.net/projects/mtgr8-a3/
http://sourceforge.net/projects/mtgr8-jigsaw/
You can get a lot of help from iTunes U. Here is a very recent class which is packed full of useful information.
https://podcasts.apple.com/us/podcast/advanced-iphone-development-spring-2010/id407243032
There is also a class from Stanford University but I find it moves along slower, but it does cover a lot of material.
https://podcasts.apple.com/us/podcast/iphone-application-development-winter-2010/id384233225
If you search for "iPhone Application Development" on iTunes you will find other classes as well. I find that these classes, along with all of the available documentation and sample code from Apple, is a great way to learn Objective-C, Xcode and iPhone development.
3 months - full time - sure. Then the next year or so can be spent realising all the little things you did wrong and getting better. But don't let that hold you back, you can certainly do something functional in that time and it's the best way to learn.
I would not start with a book but use iTunes University. The first course available from Stanford was called CS193P Web Page (iTunes link) and it's a great place to start - seeing things done on video is easier for me than reading. More recent classes are also available though they do not publish every semester's class.

Resources how to architect a iPhone application?

What resources can you recommend for learning how to architect a iPhone application?
Background of the question is that most of the resources explain the usage of a single class or concept (and i appreciate that a lot to learn something about the specific topic) but as far as i can see they lack unfortunately to describe how to put things together for typical real world applications.
This won't give you a ton of help with architecting large applications, but I found this site to be really useful for finding good examples for working with animations and all the ViewController stuff: http://appsamuck.com/
You should focus your search on best practices, as a lot of the details that go behind proper architecture are found in getting those general fundamentals right.
Otherwise, if you want to know how "typical real world applications" are designed, you should go and find some open source projects and download them. There will undoubtedly be a variation in quality but it should give you a general idea of how apps get built.
Overall I don't think you'll see a general tutorial on how to build an iPhone app because all applications are different. They solve different problems under different requirements for different kinds of users. You'll probably find that the answer to your question can only be found by trying to build something on your own.

Is programming knowledge necessary for an user experience designer?

We have a user experience designer in our team who has no programming background. He is expected to design screens within Eclipse as a development environment. His (valid) complaint is that every time he designs a specific screen and gives it to development - they tell him what is not possible technically using either SWT or GEF. So, he wants me to teach him basics of SWT/GEF so that he can make informed decisions and maybe even try out certain things in eclipse (as opposed to using Photoshop) before proposing designs to save time.
My personal belief is that design should not be constrained by technical possibilities and in theory, everything that the designer dreams of (at least the practical things) should be possible technically - albeit with workarounds or a little hacking.
So, my question is this - how important do you think is programming knowledge for user interface design? And if it is, how do you go about teaching someone with absolutely no programming experience the graphical frameworks on various platforms?
In principle, I agree with you. Programming knowledge shouldn't be necessary to be a skilled designer of UIs and work flows. However, knowing the abilities and limitations of the technology in use can help a UI designer work more effectively with the programming staff.
Where programming knowledge can help is if the development staff is blowing smoke that something cannot be done when it can be, some knowledge of the tools being used can help refute that. If the development staff is correct that something cannot be done, then knowledge of the tools can help the UI designer find an appropriate solution that meets the design goals and is achievable.
With a properly cooperative development staff, the UI designer would need very little (if any) knowledge about the specific GUI tools being used.
I've been on the developer side of this where I was being asked to do something impossible or impractical. I always worked with the designers to find a happy middle that met the design goals. Sometimes what I thought was impossible was in fact possible. Sometimes we had to do things a different way. A few things had to be put off as "possible, but too much effort." (Such as an SWT based application that became a Windows task bar. Definitely possible, but impractical for the project in question as it would require native code.)
What is most important is that both sides realize that they are on the same team.
Its very important..
Not knowing about:
technology in general
the technology you have chosen to dedicate your time investing into to produce the end product
Will result in a complete waste of time for everyone..
Even the end user needs to learn a bit about the technology employed in able to use whatever product we make..
Someone who drives a car will always need to know how to fill in the gas and know the basics of what a car is and what it can do, software works in a similar fashion.
Its like asking someone who doesn't know that cars (the ones of today) need wheels to make a drawing of your next release model.
The way to make them more aware of the technology is:
Show him/her similar products to the ones you should be making
Show him/her stand alone implementations of the building blocks you might consider using
But by all means...this doesn't mean you should stifle their creativity..have them draw away what they dream, just make them that little bit aware of reality as needs be in order to have something done in this lifetime
So, my question is this - how important do you think is
programming knowledge for user
interface design?
I think a basic knowledge of the standard user interface for the platform is required (text fields, combo boxes, radio buttons, etc). A good designer should be familiar with the capabilities and limitations of these GUI components, from a developer's point of view. So I guess some basic programming knowledge would be useful.
My personal belief is that design
should not be constrained by technical
possibilities and in theory,
everything that the designer dreams of
(at least the practical things) should
be possible technically - albeit with
workarounds or a little hacking.
I think there are important qualifications here --- each OS has guidelines on what constitutes good GUI design, and it's beneficial for your product that you follow them because the user has a certain mental model of how he or she should interact with applications on that platform. (Having said that, there may be good reasons for breaking some design conventions, e.g. in games, specialized graphics/music applications.)
how do you go about teaching someone
with absolutely no programming
experience the graphical frameworks on
various platforms?
Each toolkit makes available a whole bunch of small sample programs to demonstrate the use of different components --- this is probably a good first step to acquaint oneself with them.
Is not as important as common sense in my opinion.
It helps of course. But if the designer is asking for something that could be done ( because some other application uses it ) the development lead should at least present a workaround.
Programming knowledge probably not, but limitations on the chosen platform certainly.
I think it's better to learn up front, but if your UI designer is forced to learn on the fly, make sure that each time he is turned away, it's explained why something can't be done rather than just a flat refusal. This will keep him from getting as frustrated as he might otherwise be because he'll be able to form at least some logical framework for what he can and can't do.
I think the designer should be aware of the features and limitations that the tools he's using offer, and he should be aware of the limitations and the deadline of the current project that those guys are making.
He should also be aware of the background processing that's going on to show the screen UI, and all these things will come only if he has some rudimentary knowledge of programming.
He doesn't have to dabble in the depth of OOP, learn SQL, know the intricacies of reflection or anything fancy like that. He just has to know his platform well, and that I think is a requirement even for the designers.
The very core of "design" is to find a way to achieve a desired result within the constraints. If you don't anything about a part of the constraints that affects your goal, then you can't design.
It all depends on your tools.
Edit: What I mean is there are tools that are designed for designers, and tools for programmers. Eclipse, for one is not a designer tool. Photoshop is. Flash maybe, Flex not. I wouldn't require a Flash designer to program, but a Flex designer does need to program.
As for telling them about the limits of your tools it depends, really good creative designers will embrace those limits and make incredible work, mediocre designers will perceive the limits as roadblocks and stop being creative and just following the rules with fear.
I have given it some thought and based on the answers given previously, i have reached certain conclusions:
A preliminary knowledge about what is possible and what are the constraints while designing on a given platform is mandatory. This means that the graphics designer should be aware of the following:
The basic design guidelines on that platform
The standard UI toolkit / widgets provided on that platform (for ex: textboxes, drop-down lists, etc)
What is not possible (or is too cumbersome) on a given platform (for ex: creating translucent modal dialogs while fading out the background in Eclipse)
This amount of knowledge might not require the designer to dabble in programming.
The second level is where the designer is making an attempt to either create new widgets or to (knowingly) go against the set standards for a given platform. For instance, if the design includes graphs or the need to depict special relationships or a unique combination of text, graphics and images that is not implicitly supported by any standard toolsets. In this case, the designer should be aware of the technical possibilities and the limits of a given platform. In this case, i would argue that the designer should be able to write a little code and try out a few things to ascertain what might be within the realms of possibility.