Just a teaser for something that I hope will be of interest to all of you cross-platform .Net devs
I started developing a tool (working name ‘Protopad’) recently, and initially for internal use, as part of a (also eventually open sourced and free) larger toolchain/framework for Xamarin/.Net based cross-platform (mobile) development. There is no project page yet (will put one up soon on GitHub, once the code is sufficiently cleaned up and some more core functionality added), but I have attached screenshots. In part the tool is inspired by LinqPad, but instead it focuses on interactively running your code on remote (mobile) devices or simulators.
Main features of Protopad (as of now):
- Real-time interactive development / prototyping with full access to the entire c# language and .Net/Mono framework on mobile devices, including iPhone/iPad (simulator)!
- Ability to fully interact with running apps on a code-level, inspect their state directly without a debugger, without having to open Visual Studio or Xamarin Studio, and change their operation by mixing in new code on the fly. All without building, deploying, relaunching etc.. it’s immediate.
- Advanced code editor with full IntelliPrompt etc support for .Net/Xamarin.iOS/Xamarin.Android/etc frameworks (automatically deduced from the device you connect to)
Friendly indication of compile- and runtime-errors:
Ability to inspect any object/value inline by using a “.Dump()” extension method – the result of which is presented as an interactive, collapsible nested data view that includes optimized displays for collections, objects and value types.
- Ability to Dump a Bitmap (or UIImage) and see this in ProtoPad’s interactive result view – very useful for image processing.
- Ability to send any (device framework compatible) assembly to the device, and have it be accessible from code you send immediately
- Auto-discovers running “Protopad-enabled” apps on devices/simulators on your local network (through network multicast functionality), and allows you to select and connect to them
- A simple, light-weight assembly that you can use to add Protopad functionality to any of your existing .Net (iOS/Android/etc) apps, so that you can easily deep-inspect that app without breakpoints/pausing etc, and even modify it on the fly to rapidly prototype changes.
- Friendly statusbar indicator of the local filesystem location of the connected app (when running on a simulator), so that you can find and access your live running app’s files easily (see screenshot 1, having the OS/X simulator files location mapped to a Windows share makes it really easy to prototype functionality that interacts with the iOS filesystem!)
- Easily clear your app’s main view with one click (so you can do quick full interface make-overs)
In screenshot 1 you can plainly see how this setup works – on the left Protopad, with code that I just sent (with one click) to the running iOS simulator on the right (running on an old headless Mac Mini, connected through TeamViewer so that we can easily isolate the simulator window). The top half of ProtoPad is the code editor with a toolbar for letting this code interact with the app. The bottom half is the Result View – any Dumped value/object/image is displayed there in a friendly manner. Working like this feels like magic, especially in the restricted iOS space. You can discover the Cocoa/Xamarin.iOS frameworks through autocompletion easily, experiment directly with any type of code or snippet and see the result immediately (within milliseconds)
- ProtoPad editor/client app for Mac OS/X (Windows only for now, sorry, working on it!)
- Windows RT and Windows Phone compatibility
- Ability to connect to an SQLite database used by the app, inspect and change its data and schema on the fly
- Direct access to app files (useful for non-simulator sessions, or when you do not want to set up network shares for this)
- Snippet repository and potentially integration with snippets on the Xamarin website?
- And more to come..
I will make ProtoPad (both client and server components) available for free and in open source form. Similar to LinqPad, I am considering a small fee for use of autocompletion functionality in the editor (and supporting this effort in general). Curious for feedback on what, if any, amount you would find reasonable for that.