Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial commit of the unlucky projects
- Loading branch information
1 parent
6e0d092
commit e162210
Showing
1,653 changed files
with
706,602 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#ignore thumbnails created by windows | ||
Thumbs.db | ||
#Ignore files build by Visual Studio | ||
*.obj | ||
*.pdb | ||
*.user | ||
*.aps | ||
*.pch | ||
*.vspscc | ||
*_i.c | ||
*_p.c | ||
*.ncb | ||
*.suo | ||
*.tlb | ||
*.tlh | ||
*.bak | ||
*.cache | ||
*.ilk | ||
*.log | ||
[Bb]in | ||
[Dd]ebug*/ | ||
*.lib | ||
*.sbr | ||
obj/ | ||
[Rr]elease*/ | ||
_ReSharper*/ | ||
[Tt]est[Rr]esult* | ||
deploy.config | ||
Examples*/ | ||
*.vsmdi | ||
*.pidb | ||
*.userprefs | ||
*.testrunconfig | ||
publish.xml | ||
TestResults | ||
*.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
ArtApp | ||
-------------------------------------- | ||
Copyright (c) 2012 Daniel Crenna | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in | ||
all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
THE SOFTWARE. | ||
|
||
|
||
Third Party Licenses | ||
-------------------- | ||
1. SSToolkit - A fair number of useful components and vignette images were | ||
sourced from this great library under the following license: | ||
|
||
Copyright (c) 2008-2012 Sam Soffes | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining | ||
a copy of this software and associated documentation files (the | ||
"Software"), to deal in the Software without restriction, including | ||
without limitation the rights to use, copy, modify, merge, publish, | ||
distribute, sublicense, and/or sell copies of the Software, and to | ||
permit persons to whom the Software is furnished to do so, subject to | ||
the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be | ||
included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
|
||
2. MAConfirmButton - I ported the essential bits of this simple but elegant | ||
reproduction of the iOS App Store "Buy" button: | ||
|
||
Copyright (c) 2011 Mike Ahmarani | ||
|
||
Permission is hereby granted, free of charge, to any person | ||
obtaining a copy of this software and associated documentation | ||
files (the "Software"), to deal in the Software without | ||
restriction, including without limitation the rights to use, | ||
copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the | ||
Software is furnished to do so, subject to the following | ||
conditions: | ||
|
||
The above copyright notice and this permission notice shall be | ||
included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
OTHER DEALINGS IN THE SOFTWARE. | ||
|
||
3. MonoTouch.Dialog - I used a bare minimum extract of MonoTouch.Dialog | ||
licensed under the terms of the MIT X11 license. | ||
|
||
4. TweetStation - I referenced a few classes for the biography views from | ||
Miguel de Icaza's TweetStation project, as well as the built-in web view | ||
controller, licensed under the terms of the | ||
MIT X11 license. | ||
|
||
5. iDevRecipes - I ported the custom tab bar implementation from Peter Boctor's | ||
excellent iDevRecipes site, unfortunately I can't find any explicit license terms | ||
on [the GitHub project page](https://github.com/boctor/idev-recipes) | ||
|
||
6. Glyphish - Tab bar and web browser icons are attributed to [Glyphish](http://glyphish.com). | ||
Two background images are part of Glyphish Backgrounds, and are watermarked. You must | ||
purchase Glyphish Backgrounds to use the unwatermarked versions or provide your own replacements. | ||
|
||
7. NYXImagesKit - Some gradient code was cobbled together from sources in this toolkit under | ||
the license below: | ||
|
||
Copyright 2011 Benjamin Godard. All rights reserved. | ||
|
||
Redistribution and use in source and binary forms, with or without modification, are | ||
permitted provided that the following conditions are met: | ||
|
||
1. Redistributions of source code must retain the above copyright notice, this list of | ||
conditions and the following disclaimer. | ||
|
||
2. Redistributions in binary form must reproduce the above copyright notice, this list | ||
of conditions and the following disclaimer in the documentation and/or other materials | ||
provided with the distribution. | ||
|
||
THIS SOFTWARE IS PROVIDED BY BENJAMIN GODARD ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BENJAMIN GODARD OR | ||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | ||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
|
||
The views and conclusions contained in the software and documentation are those of the | ||
authors and should not be interpreted as representing official policies, either expressed | ||
or implied, of Benjamin Godard. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
![screenshot](https://github.com/danielcrenna/artapp/raw/master/screenshot.jpg) | ||
|
||
artapp | ||
====== | ||
A beautiful art showcase app for iPhone, built with [MonoTouch](http://xamarin.com/monotouch). | ||
|
||
_Artists and Galleries_: If you really want an app that looks like this one but don't know how to program, and | ||
don't have any friends that program, [get in touch](mailto:daniel.crenna@gmail.com) and we can work something out | ||
at a reasonable rate to get your app in the store. | ||
|
||
Introduction | ||
============ | ||
Not every great idea becomes a business. I had the idea for a mobile art showcase application which could be purchased | ||
by subscription, similar to how [MobileRoadie](http://mobileroadie.com)'s business model works with recording artists, | ||
authors, and other A-listers. But rather than a canned mobile CMS, I wanted artists to stand out from the crowd with | ||
a unique, virtual gallery experience. Above all, it had to be beautiful, which is why I enlisted the great [Gilbert | ||
Guttmann](http://gttmnn.com/), a fantastic artist and person, that I was lucky to meet and work with during my short | ||
stint at [Wildbit](http://wildbit.com). | ||
|
||
With that vision I went to work, choosing MonoTouch as my development platform mostly due to my lightning speed in | ||
C# and the compressed time I would be able to work on this project (which was in twenty minute doses due to my other, | ||
far more important side project of raising a child). Since MonoTouch is not free, that might be a sticking point | ||
for this particular offering, but I can tell you that even if you're an Objective-C developer on the main, MonoTouch | ||
is a fantastic framework and beyond a few small details, you can translate Objective-C to C# line by line, as it is | ||
not a simulator or translation layer between you and Cocoa, it's pure interop against native iOS APIs. | ||
|
||
Launching | ||
========= | ||
Teaming up with the insanely talented [Meaghan Ogilvie](http://meaghanogilvie.com) of Toronto, a photographer with | ||
a penchant for underwater photography, we launched Meaghan's [own application](http://itunes.apple.com/us/app/meaghan-ogilvie/id504171885?ls=1&mt=8) shortly after [The Artist Project](http://theartistproject.com/), an | ||
independent fine art exhibition in March 2012. The application was well received by many independent artists, and | ||
our value proposition seemed sound: developing an iPhone application is a costly venture for anyone, especially one | ||
of high quality, and providing this service at an ultra affordable price for artists meant they could stand out in | ||
a crowd, showcase their work, and ultimately get greater exposure, a better portfolio, and more art sales. | ||
Art shows are an expensive proposition, with no guarantee of success. We wanted a grass roots way to achieve the | ||
same results through a digital medium. | ||
|
||
Learning | ||
======== | ||
After conducting customer interviews and talking to over a hundred artists about a service like this one, and other | ||
more successful technologists that I respect, it became clear to me that solving the problem of artist exposure is | ||
not the same proposition as solving the problem of increasing demand for an artist's work, which is the the ultimate | ||
goal. Artists want to sell more of their art, so they can make more art over the long run. Giving them another channel | ||
in which to shout into the void is not the best answer I can come up with. I've got a slow hunch about what a better | ||
answer could be. | ||
|
||
Aftermath | ||
========= | ||
Deciding to re-think the problem, I was left with shuttering this incarnation, but there were a lot of challenges | ||
that were solved in this application I was proud of, from a visual perspective as well as technical. It would be a | ||
shame to toss it in the can and move along, especially if there was still some value, for artists, or programmers, or | ||
both, that could be salvaged from the remains, such as: | ||
|
||
* It's an example of a real, professionally developed iOS application using MonoTouch, that made it to the App Store. | ||
* It's a beautiful app that can be repurposed for other artists, and galleries, by their programmer friends, for free. | ||
* It's designed to be very simple to switch out content, just add images, a new JSON manifest, and you're good to go. | ||
* Some of the technical challenges (like transparent nav bars) are tricky to solve in MonoTouch; this is a great cheat sheet. | ||
|
||
Future | ||
====== | ||
You can use this freely, under the MIT License, to help out your favorite artist or gallery by making them a slick | ||
iPhone application (making it work with an iPad should be simply a matter of adjusting cartesian coordinates, since | ||
the assets are already high resolution, but I didn't have the time to get it into the codebase, sorry). You could | ||
even decide I'm insane for giving this away and try to fill the void (if you do that, and you succeed, please buy | ||
all of Meaghan's collected works and install them in your swanky new startup office). You could use it to learn iOS | ||
if you know C# and aren't ready to switch to Objective-C whole hog. You could print out the source code and use the | ||
other side as note paper. | ||
|
||
|
||
Nitty Gritty | ||
============ | ||
* This application is provided as-is. I'll happily take patches but I can't respond to issues. Whatever warts that | ||
came with it, made it into the App Store, and there definitely are warts (some embarassing if you really want to | ||
go hunt for them; code you write to ship is sometimes not the intellectual cornucopia you're capable of, nor should | ||
it be). | ||
* I cut a vast majority of the features attempting to develop the minimum viable product, so any extensions are up to you. | ||
* You get to use Gilbert's layered PSD files as part of this open source license, but, it should go without saying, Meaghan's | ||
fine art is not part of that license, and her work remains fully her own. | ||
* Some of the assets, namely icons and two backgrounds, are purchased from [Glyphish](http://glyphish.com), so you need to own those _very reasonably | ||
priced_ assets if you want to publish your own apps using this code base. Glyphish is a force of good in the universe. Support it! | ||
|
||
Art needs technology, and vice versa. Here's some code to help artists. I hope you'll use it. | ||
|
||
Daniel Crenna |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using MonoTouch.Foundation; | ||
using MonoTouch.UIKit; | ||
using System.Diagnostics; | ||
using System.Drawing; | ||
using System.IO; | ||
using MonoTouch.CoreGraphics; | ||
using MonoTouch.ObjCRuntime; | ||
|
||
namespace ArtApp | ||
{ | ||
[Preserve] | ||
public partial class AppDelegate : UIApplicationDelegate | ||
{ | ||
private static UINavigationController _navigationController; | ||
public static UINavigationController NavigationController | ||
{ | ||
get | ||
{ | ||
return _navigationController; | ||
} | ||
} | ||
|
||
public static CustomNavigationBar NavigationBar | ||
{ | ||
get | ||
{ | ||
return NavigationController.NavigationBar as CustomNavigationBar; | ||
} | ||
} | ||
|
||
private static UIWindow _window; | ||
public static UIWindow ApplicationWindow | ||
{ | ||
get | ||
{ | ||
return _window; | ||
} | ||
} | ||
|
||
public override bool FinishedLaunching (UIApplication app, NSDictionary options) | ||
{ | ||
CheckBundleVersion(); | ||
|
||
// Required to set background color behind flip transition | ||
// http://stackoverflow.com/questions/4252350/change-background-color-of-uimodaltransitionstylefliphorizontal | ||
_window = window; | ||
_window.BackgroundColor = UIColor.Black; | ||
_navigationController = navigationController; | ||
_navigationController.View.BackgroundColor = UIColor.Black; | ||
|
||
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackOpaque; | ||
|
||
window.RootViewController = navigationController; | ||
window.MakeKeyAndVisible(); | ||
|
||
return true; | ||
} | ||
|
||
private static void CheckBundleVersion() | ||
{ | ||
// Drop a version nugget and clear the disk cache if one didn't previously exist, or it's not the same | ||
var version = AppGlobal.BundleVersion; | ||
|
||
string appdir = NSBundle.MainBundle.BundleUrl.Path; | ||
string cache = Path.GetFullPath (Path.Combine (appdir, "..", "Library", "Caches")); | ||
|
||
var versionPath = Path.Combine(cache, "v.txt"); | ||
var dumpDiskCache = false; | ||
|
||
if(!File.Exists(versionPath)) | ||
{ | ||
dumpDiskCache = true; | ||
File.WriteAllText(versionPath, version); | ||
} | ||
else | ||
{ | ||
var versionOnDisk = File.ReadAllText(versionPath); | ||
if(!version.Equals(versionOnDisk)) | ||
{ | ||
dumpDiskCache = true; | ||
File.WriteAllText(versionPath, version); | ||
} | ||
} | ||
|
||
if(dumpDiskCache) | ||
{ | ||
ImageCache.Clear(); | ||
ImageCache.DumpDiskCache(); | ||
} | ||
} | ||
|
||
// http://stackoverflow.com/questions/9368498/monotouch-items-saved-to-library-caches-never-staying-around | ||
private void DisplayCachesContent() | ||
{ | ||
string appdir = NSBundle.MainBundle.BundleUrl.Path; | ||
string cache = Path.GetFullPath (Path.Combine (appdir, "..", "Library", "Caches")); | ||
Console.WriteLine ("Files:"); | ||
int i = 0; | ||
foreach (string file in Directory.GetFiles(cache, "*.*", SearchOption.AllDirectories)) | ||
{ | ||
Console.WriteLine ("{0}. {1}", i++, file); | ||
} | ||
} | ||
|
||
public override void OnActivated(UIApplication application) | ||
{ | ||
// Required for iOS 3.0 | ||
} | ||
|
||
public override void ReceiveMemoryWarning (UIApplication application) | ||
{ | ||
ImageCache.Clear(); | ||
} | ||
} | ||
} |
Oops, something went wrong.