Current Visual Studio 2008 Version: 2.0 Last Updated: 1-31-2010
Current Visual Studio 2010 Version: {coming soon}
Introduction
Modern programming languages have long provided developers the capability to create code libraries that can be reused across multiple applications. Heck, even Microsoft’s BC7 had the capability to create run-time loadable libraries.
Most developers and software shops create their own code libraries and consume that code in their applications. The code reuse makes them more productive, reduces test costs and unifies across developers, how their applications are coded.
Code libraries that provide foundational components, services and functionality become known as frameworks.
The Visual Studio 2008 Ocean v2 framework provides the following:
- Feature rich business object base class
- Rule based business entity validation
- Rule based business entity data case correction for formatting
- SQL Server data stack
- simplifies data layer code
- provides business entity loader
- built in concurrency checks
- connection string manager
- connection management
- three companion stored procedures
- WPF
- Aero functions for creating glass
- Behaviors for routing keys to ICommands
- Collection of commonly used converters
- AJAX Style Loading ComboBox, CheckListBox, Validation Summary (Form Notification) custom controls
- DataConext Spy (thank you Josh Smith)
- MVVM
- View Manager Services – provides non-linear application navigation, full featured MDI replacement
- View Model UI Services – provides application modal services like, dialogs (messages, file open, file save) and logging capabilities
- RelayCommand (thank you Josh Smith)
- Messenger (thank you Josh Smith)
- Bases classes for ViewModels and Views
- UIValidationError – provides a way to capture data entry type exceptions in the UI and communicate them to the ViewModel; see this blog post.
- Password generation services
- BLL(Of T) – can replace boiler maker business logic layers. See BBQ Shack for implementation.
- DAL(Of T) – can replace boiler maker data access layers. See BBQ Shack for implementation.
When Visual Studio 2010 RTM is released, I’ll publish a release of Ocean v3 and at least one sample line of business application demonstrating its feature set. The sample application will be written in both VB.NET and C#. That release will also have the SQL Server Compact 2008 data stack and will use it.
Background
In March of 2008 I published my work on declarative business object validation rules and case correction rules in this Code Project article. My motivation was to provide a business object coding technique that would facilitate application code generation and that generated code would be easy to read and understand.
That same API also need to be flexible enough so that developers would not be locked into a single coding pattern. That goal was accomplished by allowing rules to be added using attributes or code.
In September of 2008 I went on a cruise to Alaska and wrote Ocean v1. I wrote about the cruise and Ocean in this blog post. A few days after the cruise I started working for Microsoft on the Cider Team. (WPF & Silverlight Designer Team)
In September of 2009 I went on another cruise to Alaska and wrote Ocean v2. I used the BBQ Shack application as my proving ground for Ocean by demonstrating that Ocean’s code is a cross platform allowing business objects to be shared between WPF, Silverlight and .NET 2.0 assemblies. I wrote this cross platform capability up in this blog post. Ocean v2 supports Visual Studio 2008 and Silverlight 3.
In November of 2009 I went on a cruise to Hawaii and wrote Ocean for Visual Studio 2010 and started working on Crank. Crank is a metadata driven code generation application that can generate code for any framework and not just Ocean. Crank uses the new super cool T4 templates I wrote about in this blog post. Crank is written in C#, yes, I know Dark Side, etc. Crank was my 3rd C# application. Programming for a week on a ship without Internet access brought me back to the old days of coding.
As of January 2010 Ocean is written in VB.NET. I don’t have any plans to convert it to C#. I would need a real compelling reason to allocate the time to do this.
Changes from Ocean v1 and v2
Between Ocean v1 and v2, Microsoft started shipping .NET framework code that included a Validation namespace. In order to prevent developers from dealing with namespace collisions or using aliased namespaces, I changed the Ocean.OceanFramework.Validation namespace to Ocean.OceanFramework.OceanValidation.
I corrected two spelling errors in Ocean’s public API’s.
A few changes were made to the BusinessEntityBase class to better support multi-threaded applications.
Expected Changes from Ocean v2 to v3
In Ocean v2 WPF & Silverlight share code by using the file linking feature of Visual Studio 2008.
In Ocean v3 with Visual Studio 2010, WPF & Silverlight can share a single Silverlight assembly. This code sharing feature is available in Visual Studio 2010 with Silverlight 3 and above. When I initially release Ocean v3, it will only have WPF code. Once Silverlight 4 RTM’s, I’ll ship Ocean v3.1. This change will not have any public API changes. To use the new assembly, simply replace the reference.
In the mean time, if you need the functionality of the Ocean v3, OceanFramework in Silverlight, simply create a new Silverlight class library, and import all the code from the Ocean v3, OceanFramework WPF version and recompile. This blog post covers assembly sharing.
I have not yet made a final decision about the View Manager Services for Silverlight. I know that I can use this functionality in Silverlight, I’m just not sure I want to pull the few WPF specific features out. For now, Ocean v2 ships with the View Manager Services in the Ocean.OceanFrameworkWPF assembly. I may move this code to the Ocean.OceanFramework assembly when Silverlight 4 RTM’s. If I don’t move it, I’ll ship it as part of the Ocean.OceanFrameworkSiverlight assembly.
Feature Examples
The BBQ Shack application is the best demonstration of the Ocean framework. It demonstrates WPF & Silverlight code sharing and uses almost all features in the framework library.
- BBQ Shack (this is part of the below downloads)
I also wrote a small Ocean Feature Demo application that is a shell MVVM application that shows how to use the View Manager Services and View Model UI Services. This very simple application doesn’t do anything except demonstrate one technique for application navigation and solving the MDI question that almost all developers new to WPF ask about.
- Ocean Feature Demo (this is part of the below downloads)
Documentation
Over time I’ll add more documentation for Ocean. This is one of the reasons I’ve held off not publishing this, but I realized it would simply be better to publish this now along with the two above examples.
I know many have been waiting and I apologize for not publishing sooner.
System Requirements
- Visual Studio 2008 with SP1 (I have not tried BBQ Shack on Visual Studio 2010)
- Silverlight 3 Developer Version (not Silverlight 3 Beta, not Silverlight 4 Beta)
- Note: If you cannot create a Silverlight application in Visual Studio, you do not have the Silverlight Developer version installed.
- SQL Server 2008 or SQL Server 2008 Express
Downloads
Sky Drive BBQ Shack Source Code, Database and Ocean v2 (opens page where three zip files are located.)
If you just want Ocean v2, you can simply select the Ocean zip file on the above down page.
If you want the BBQ Shack, you must download all three of the zip files. The BBQShack and Ocean zip files should be unziped in the same folder, like your \Projects folder. After unzipping the folders will look like this:
…\Projects\BBQShack
…\Projects\Ocean
Doing this will ensure that the Ocean projects can be found by the BBQ Shack solution.
After unzipping the above download zip files, you will have these folders in your projects folder.






[...] Ocean [...]
[...] recently published a huge body of excellent work. He has been working for quite some time on Ocean, a code generation system that blows my mind, and BBQ Shack, a great line-of-business WPF and [...]
Hi,
I was studying Ocean and BBQ Shack for last two days, I have a few doubts, Please clear them if you have some time to spare. I tried most of your blog posts and codeproject articles but unfortunatly i didn’t get any answer. The doubts are
1. I have created my business entities as EDM (Entity Data Model). how do i implement validation to these entity classes using Ocean.
2. Even if i have my data objects as Entities, do i have to create duplicate data objects for implementing validation ?
thanks in advance.
Vilsad
Vilsad,
I reply to all comments on my blog and Code Project articles. Please send me any URL’s for messages you have left without responses. I would like to track down the problem.
EDM could be a problem. EDM owns the creation of the entities which is one reason I don’t use it and have not invested any time working with it.
Are you doing Silverlight or WPF? If Silverlight, I know that RIA services can work with the DataAnnotations validation attributes.
EDM does offer the ability for you to have partial classes. So you “could” add business rules in code instead of using attributes.
Another approach you could take would be to pass the entity object to a validation class that did the validation instead of the entity.
Personally, I like being able to have an entity validate itself, no matter which tier it is currently in., UI, Business or Data Layers. This is why I wrote Ocean.
Maybe in the future, EDM will provide the ability for developers to provide a T4 template for the generating the EDM Entities.
I wish I had a better answer. Perhaps the EDM Team does.
Cheers,
Karl
thank you for the quick reply, I am doing WPF, i am proceeding with validating the Entity at data layer itself using partial classes. have you got any documentation / tutorial for ocean ?
One again thank you for the reply.
Regards
Vilsad
Vilsad,
I have not had time to publish docs. I’m in the middle of another huge project that generates applicaitons from Metedata. This is also part of Ocean.
Once this is done, I’ll release it and docs.
But to wire up validation in code as opposed to using attributes, have a look at the BusinessEntityBase class. It has many methods you can override to add validation rules.
Have a look at ccc_CharacterCasingCheck.vb. Look at the very bottom of the file. The validation rule is being added in code.
Question: If your validation is in the data layer, how will the UI take advantage of the rules at runtime?
Cheers,
Karl
Karl, am I right in thinking that, ocean only works with sql server at this point? If so, do you expect that it will offer support for other dbs in the future?
The only SQL Server dependent part is the OceanFrameworkSQL.
The rest has no dependency on SQL Server.
I would be very easy to use other databases or modify the code in the DataAccess class to work with other databases.
Cheers,
Karl
Hi Karl
This may be a little off topic but I do have a (general) question
i noticed that you mentioned you would not normally store the connections string in the config file for a production application.
What do you consider a good alternative?
How would you go about allowing the user to configure their own configurations?
I have a number of applications in production and always struggle with this.
Bill,
I never allow the user to “see” the real connection strings. If you do, they can use just about any tool to connect to the database.
I have a very complex technique that I use to hides connection strings from the users, does allow them to connection the applicaiton to different databases and also works with Report Builder and Reporting Services. This also works for remote and local users. By remote, I mean users getting all their data over the Internet. Not sure I can share this.
One technique you “could” try is to use a web service to list the options for choosing.
Just keep in mind, the number of services that require a connection string like the database, reporting services, report builder, others.
Karl
Thanks Karl
I don’t let them see them either, I was just wondering if you had a solution that would allow them to change the connection “On the Fly”
It seems an Item that all apps need but is never really discussed
Your apps are really great and I learn alot from them
Keep up the Great work
[...] goal for this blog post and the BBQ Shack application is to demonstrate the features in Ocean v2, while at the same time provide a real world MVVM line of business example. Trying to reign [...]
I don’t know just a little correction in your great article
In November of 2010 I went on a cruise to Hawaii and wrote Ocean for Visual Studio 2010…

Cheerz
Jaweed
Jaweed,
Thanks, I’ll fix it!
Cheers,
Karl
Hi Karl,
Thanks for your great work… Can you please upload source code and database on CodeProject or some other code sharing web site
because sometime Personal Storage Sites are blocked by firewall and proxy servers..
Thanks
Jaweed Sarfraz
Jaweed,
I know that some work places block SkyDrive, but this is much easier for me.
Cheers,
Karl
Karl,
Ocean Framework really solves many of the issues I had getting started with WPF and non linear navigations. I am attempting to convert it to C#. I was just wondering if you happened to have a C# version?
If not, I would be more than happy to send my “converted” version to you.
Joel
Hi Joel,
I am finding it difficult to read the VB version
and was going down the road of converting to c#.
However ….
I would appreciate to see your converted c# version of the framework.
Let me know if you have the zip file hosted somewhere.
thank you…
sarmaad
Joel & Sarmaad,
I’m converting to C# for Windows Phone 7, then I’ll do the conversion to C# for Silverlight and WPF.
Cheers,
Karl
Joel & Sarmaad,
I’m converting to C# for Windows Phone 7, then I’ll do the conversion to C# for Silverlight and WPF.
Cheers,
Karl
Thank you for so pretty blog, especially for Ocean framework.
Where I can get c# vershion?
Taras,
I’m working on a C# version. Probably in Novenber.
Cheers,
Karl
[...] Ocean [...]
Karl,
Its the end of October, the Phone Ocean is out. Are we going to see the indicated Ocean 3/3.1 and later released in VB?
Really interested in this!
Thanks,
Brian
Brian,
It is impossible for me to maintain a VB and C# version of my code.
As you know, I’ve moved to C# a while back. Now that I’m also working in the web space, I’m glad I did. JavaScript and jQuery look more like C# than VB.
I’m going on a cruise in two weeks and will bring back Ocean 3 for the desktop (maybe silverlight 4 too) and a brand new reference application.
The fact that Ocean is in C# really won’t impact users, as the dll can be referenced.
Best,
Karl
Hi Karl and Merry Christmas..
I am interested in starting my first WPF 4.0 using MVVM VS 2010 project with your Ocean Framework. Is there an update as to when you might have the 3.x C# version published so someone might try it.
Happy Holidays
Steve
Hi Steve,
Everytime I give a date, it seems to get delayed.
I’m working on extensions for MVC3 and a very cool application that shows Ocean off. Let me see how this week goes, maybe I can post this within a week or so. I’ve been thinking about a much smaller application that demonstrates how to use the framework. Give me the next 10 days.
Best,
Karl
Hi Karl,
I know you are very busy so this would be very much appreciated.
I have looked at MVVM articles and videos for a week including your “In the Box – MVVM Training” which by the way I do like your concept of traing inside VS 2010. I have studied Josh Smith, Jason Dolinger, Billy Hollis and your own articles and videos. I think of all I have looked at, I like the Non-linear navigation aspects of the two sample apps that Billy Hollis and yourself have talked about.
Since I have come from from a WinForms programming background including the MDI interface, I find this WPF Non-linear navigation something I like to try a simple sample for at least myself.
I just want to say thanks for all the effort you guys have spent trying to help other developers.
Thanks
Steve
Steve,
I would strongly suggest reading:
http://msdn.microsoft.com/en-us/library/gg430861(v=PandP.40).aspx
This is part of Prism 4.
You can get my WPF Navigation examples here:
http://blogs.msdn.com/b/kashiffl/
This may be too much too soon, but if you are looking at navigation, I would use Prism Navigation.
Karl
Has the code been upgraded to c# yet. If so the code that is available for download is in the VB.Net carpola. Does anyone know where I can download the c# code? If so can someone send me the link to download the code in C# at steve_44@inbox.com
Steven,
I have the c# code, but have not released it yet. I have not had time to finish the example code that consumes the library yet. Currently, I’m getting pulled in several directions. I’ll need a few more weeks.
Best,
Karl
Is there any chance you could release the library as is and then possibly get users of the library to help build examples?
Very sorry, my time has been fragmented in several directions. I’ll be working on the project full time starting on 28 May (no BBQ weekend for Karl)
Cheers,
Karl
Hi Karl
Any tentative timeline for next version of Ocean or else you have become fanboy of PRISM
There is an early drop of Ocean 3 here:
https://karlshifflett.wordpress.com/2011/06/29/boise-prism-unity-wpf-mvvm-code-and-decks/
I’ve been spending 100% of my off-time looking for a lot and working with builders to get my home built. This is taking up much more time than I expected.
I have two priorities after I settle my home (actually hoping to get this settled over the next two weeks)
1. Update Mole
2. Update BBQ Shack to Prism (50% completed). This includes Ocean 3 (100 % completed)
Best,
Karl
Hey Karl,
Any update on BBQ Shack to Prims?
Jay,
I’ve started it, but was laid up for 12 weeks with neck surgery and recovery. I’ll be finishing up XAML Power Toys this week or next and will go back to Visual Studio 2010 BBQ Shack w/Prism.
Sorry for the delay. I also purchased a new Harley-Davidson Road King, so you know how my weekends have been spent.
Best,
Karl
Hey Karl,
Thank you so much for your prompt response; and sorry to hear about your surgery, I understand about back pain. Congrats on the new bike. I am trying to understand how are you going to deal with the ViewManagerService in Prism. If you can elaborate further on this area it would be great.
Jay,
I’m using Prism Region Navigation now. I was the PM for Prism 4.0 for the last 1/3 of the project and was able to contribute to the navigation API’s in Prism 4. I would suggest using them instead, although ViewManagerService is very good and fulfilled all my requirements.
Using the Prism API’s as a unit allows taking advantage of the many features regions expose.
Best,
Karl
Hey Karl,
Thank you for all the work you have put into Ocean, I’ve been studying the framework as well as BBQShack for the last few weeks and i have learned a ton. I noticed in the Ocean3 preview, the GenericLayers assembly has had a bit of a face lift. Would you happen to have any quick one off examples demonstrating the use of IService and IRepository?
Josh,
In the bootstrapper I configure the Unit container as follows:
this.Container.RegisterInstance(env, new ContainerControlledLifetimeManager());
this.Container.RegisterType(typeof(IEventResolver), typeof(EventResolver));
this.Container.RegisterType(typeof(IResolver), typeof(UnityResolver));
this.Container.RegisterType(typeof(IDialogFacade), typeof(DialogFacade), new ContainerControlledLifetimeManager());
this.Container.RegisterType(typeof(IDataAccess), typeof(DataAccess), new InjectionConstructor(Obfuscate.DecryptString(Properties.Resources.ConnectionString)));
// Synchronous data layer
this.Container.RegisterType(typeof(IRepository), typeof(Repository));
this.Container.RegisterType(typeof(IRepositoryCount), typeof(RepositoryCount));
this.Container.RegisterType(typeof(IRepositoryList), typeof(RepositoryList));
this.Container.RegisterType(typeof(IRepositoryListByKey), typeof(RepositoryListByKey));
// Asynchronous data layer
this.Container.RegisterType(typeof(IRepositoryAsync), typeof(RepositoryAsync));
this.Container.RegisterType(typeof(IRepositoryCountAsync), typeof(RepositoryCountAsync));
this.Container.RegisterType(typeof(IRepositoryListAsync), typeof(RepositoryListAsync));
this.Container.RegisterType(typeof(IRepositoryListByKeyAsync), typeof(RepositoryListByKeyAsync));
// Synchronous business layer
this.Container.RegisterType(typeof(IService), typeof(Service));
this.Container.RegisterType(typeof(IServiceCount), typeof(ServiceCount));
this.Container.RegisterType(typeof(IServiceList), typeof(ServiceList));
this.Container.RegisterType(typeof(IServiceListByKey), typeof(ServiceListByKey));
// Asynchronous business layer
this.Container.RegisterType(typeof(IServiceAsync), typeof(ServiceAsync));
this.Container.RegisterType(typeof(IServiceCountAsync), typeof(ServiceCountAsync));
this.Container.RegisterType(typeof(IServiceListAsync), typeof(ServiceListAsync));
this.Container.RegisterType(typeof(IServiceListByKeyAsync), typeof(ServiceListByKeyAsync));
this.Container.RegisterType(typeof(ILoggingService), typeof(LoggingService));
Here is the concrete implementation of the the LoggingService ctor and a method that calls a logging method that writes a log entry into the database.:
public LoggingService(IServiceAsync serviceAsync) {
if (serviceAsync == null) {
throw new ArgumentNullException(“serviceAsync”);
}
_serviceAsync = serviceAsync;
}
void WriteToDatabaseAsync(ApplicationLogEntry entry) {
_serviceAsync.InsertAsync(
entry,
r => {
if (r.AffectedRows != 1 || r.NewIdent WriteSendingExceptionToLogFile(ex, entry));
}
As you can see, configuring a container, setting up a dependency in a ctor and calling its method is SO SIMPLE. The above uses the TPL library.
When BBQShack Prism comes out, this will all seem much clearer.
Best,
Karl
That makes perfect sense! extremely simple. Thanks again for taking the time to show the community an actual real world example of this stuff.
On another note, When can we expect the Shifflett code camp cruise?
Have you encountered the following error?
If i use the code sample above, it works fine. But if in another class i need IService instead of IServiceAsync
I get the following:
The type Repository`1 has multiple constructors of length 1. Unable to disambiguate.
Josh,
I’ve not seen this, but I know what it is. Have a look at the concrete class and see what method it is having trouble disambiguating.
I’m not seeing this issue.
Best,
Karl
Josh,
OK, I was able to repro the same problem you are having. It has a simple solution.
this.Container.RegisterType(typeof(IRepository<>), typeof(Repository<>), new InjectionConstructor(typeof(IResolver<IDataAccess>)));
When you register your Repository (or other types) that have two constructors, the Unity container does not know which constructor you would like to use.
In the above line of code, I’ve told Unity to use the constructor that matches the signature of the InjectionConstructor class.
This should sort this out for you.
Best,
Karl
Karl,
I am not sure how you can have the non-linear navigation work Prism Region Navigation. I see in a previous post that you have indicated that you are about 50% done with BBQ Shack (PRISM), is there a way for you to share what you currently have completed, or a way for you to share how you are doing the non-linear navigation in PRISM, any snippet of code you can provide will be greatly appreciated.
Thank you very much for the great work and support you provide the community.
Jay,
I’ve written about it a good bit about non-linear navigation here with many code examples, both WPF and Silverlight: http://blogs.msdn.com/b/kashiffl/
Also check this out, http://karlshifflett.wordpress.com/2012/03/24/boise-code-camp-prism-ocean-3-session/
This includes a modified Prism 4 that that provides the Uri of the previous view so the new view can navigate back.
The example application that I taught from shows a high octane use of Prism region navigation.
There is a slight paradigm change between my 2008 BBQShack but its worth the effort.
Sorry, but I don’t share code before its ready. I just don’t have any extra time to … However, the above Boise Code Camp code and Ocean3 is good to go.
Best,
Karl
Karl,
I want to start by saying many thanks for all your work, and your willingness to share with the community. I am looking forward to seeing your completed BBQShack Prism project.
Can you elaborate little further if you can, on the paradigm change between the previous version and the new project please?
Jay,
I’m sorry but I just don’t have the cycles to write this up. I suggest reading the Prism 4, chapter on navigation as this explains how the new BBQ Shack will work,
Best,
Karl
Karl,
Thank you so much for all your guidance as I am working through the non-linear navigation in my PRISM application. In this post http://blogs.msdn.com/b/kashiffl/archive/2010/10/04/prism-v4-region-navigation-pipeline.aspx there is a comment by you indicating that you are going to redo the sample in UNITY and post on your blog, but I can not find it. If you have it handy can you please provide me a link for the new project.
The main issue I am struggling with, is how to hook the “ShellViewModel” to the “ShellView” using UNITY.
Any guidance or direction you can provide will be greatly appreciated.
Jay,
Have a look at the code from the Boise Code Camp here: http://karlshifflett.wordpress.com/2012/03/24/boise-code-camp-prism-ocean-3-session/
There is an application I wrote called Wpf.Demos
This is one simple technique:
public partial class ShellView : Window {
[Dependency]
public ShellViewModel ShellViewModel {
get { return this.DataContext as ShellViewModel; }
set { this.DataContext = value; }
}
public ShellView() {
InitializeComponent();
}
}
Just remember to use Unity to create your Shell as below in the bootstrapper:
protected override DependencyObject CreateShell() {
var shell = this.Container.Resolve();
Application.Current.MainWindow = shell;
Application.Current.MainWindow.Show();
return shell;
}
Best,
Karl
Hey Karl,
Thank you so much for your outstanding work on MVVM in The Box.
I have a question regarding DialogInteraction, you have created an InteractionDialogAction and InteractionDialogBase.
and you created 2 different windows for each one of those interaction types.
i have a couple of questions regarding extending this model. I want to be able to pass a view and viewmodel for each ModalInteractionDialog so it can be used across multiple (modules).
Can you provide any guidance on how to adjust this please?
Thank you in advance for your time and help
Jay,
I don’t use interactions any more to display dialog boxes. Too many moving parts. Instead I have a FormControl that is placed on all my forms. I can then display anything required from the ViewModel, like dialog boxes, etc.
I have this in production today at work and will add it to Ocean and the Prism BBQ Shack application.
The code is extensive so there is no way to properly guide you until I ship Prism BBQ Shack.
If you need to get this sorted out now and can use the Prism interactions, post a question on the Prism forum on CodePlex. They have outstanding support.
Best,
Karl
Thank you so much for your time and your answer. Is there an ETA on when you think you might have the Prism BBQ Shack done?
Semper Fi Marine….
Jay,
My weekends have become SO busy with summer here. I really want to publish this work though. I’m on vacation the rest of the week. I’ll try to schedule two nights a week when I get back to work on it.
Best,
Karl
Karl, Is it possible to pass an object as a navigation parameter?
Hi Josh,
Yes. I have modified Prism to do this.
I’ll be posting Ocean for Prism soon and it has this.
If you can’t wait, modify the Prism source to accept one. Not that difficult. Just take your time, understand all the entry points for initiating navigation and add an overload that accepts Object, then test it.
Best,
Karl
Hey Karl,
Is the Ocean for Prism will have the “FormControl” for dialog interaction with it?
Thanks
Yes it will! Currently using it in production, working great!
Cheers,
Karl
Hey Karl,
On June 14, you mentioned that you will be posting Ocean for Prism soon. Do you have an ETA?
Thank you and have a wonderful 4th of July.
I’ve been travelling a lot on weekends, don’t have an ETA yet. Have made so much progress, it will be worth the wait.
Your work on this is eagerly awaited and appreciated. There are so few examples of full “real” apps available therefore making this is a great resource.
Allan, thank you.
Hey Karl,
Hope you are having a great summer.
Was hoping you can provide some ETA on Ocean for Prism.
Have a great day.
My weekends this summer have been crazy and will be through September.
It is my hearts desire to post this, just lacking cycles.
I have it in production at work, and have made a number of improvements, so the wait (bummer) will be worth it in the long run.
Best,
Karl
Karl,
Thank you so much for your reply. I hope you have been enjoying your summer and the crazy weekends are all fun.
As llan stated we are eagerly awaiting your work, and I am sure it would be in the same high standards as all your previous work.
I want to express my gratituded as well, and I am looking forward to see the completed product.
Thanks again Karl
Hi karl,
Any updates on ocean v3? I’m eagerly waiting for it.
Sorry for the delay.
See, http://karlshifflett.wordpress.com/2013/02/23/boise-code-camp-and-ocean-3/
Best,
Karl
Hi Karl,
Thanks for Ocean 3 update. Do you have any updates on PrismBBQShack ?