13 ms·
Guys, the author here. This is my first open source project and I worked really hard on it for 5 months. I think it's really cool, and I hope you guys like it.
by gliechtenstein 10y ago
Guys, the author here. This is my first open source project and I worked really hard on it for 5 months.
I think it's really cool, and I hope you guys like it. I would appreciate any kind of feedback!
- jamesmcintyre 10y agoThis is awesome! Thanks for doing the work to make the project accessible to everyone!
- shakna 10y agoWhat's the local fallback like? Does this continue to work at all if the client does something like change networks? I quite like the look from the limited glance over. (Probably going in my list for the next tiny thing I have to build).
- gliechtenstein 10y agoThere's a $cache action where you can store any JSON object into cache associated with the current url and reuse it later https://jasonette.github.io/documentation/actions/#cache-vs-local-variable https://jasonette.github.io/documentation/actions/#cache-vs-... Also there's an undocumented mode called "offline", where the JSON loads from the server once and after that it always loads from the initially fetched JSON stored locally. You just need to set "head": {"offline": "true} Hope this answers the question!
- joelhaasnoot 10y agoIt'd be even better if you could ship a version to the App Store with an embedded JSON. That way you'll always have some version of your app. Or does it do that already?
- gliechtenstein 10y agoWhy would you want to have a version of your app? I think one of the coolest part is it works like a website but natively. If you wanted to version apps, I think you could version it at git level, or just think of it as an API deployment. No?
- CJKinni 10y agoI didn't ask the question, but had the same thought. Basically, what if the first time someone loads your app, they don't have a network connection? After the first load, it sounds like I can handle the issue with the cache, but I care a lot about a good experience the first time someone opens the app. Still, very cool!
- joelhaasnoot 10y agoThis indeed: there are more cases than you think where someone downloads your app but has no internet connection when using it. And that could be the first time. Shipping a JSON file ensures the end user will always have something. That something could be as simple as a message "I'm loading data, internet connection is required".
- gliechtenstein 10y agoCurrently, it is possible to set a data-uri as the root url (in a correct format https://en.wikipedia.org/wiki/Data_URI_scheme https://en.wikipedia.org/wiki/Data_URI_scheme) I think that's one way you could handle this situation. Or one could fork the code and change a couple of lines to make this work, technically it would be just a couple of lines of code, but I think policy-wise it needs to be thought out. Please follow the project and feel free to start an issue thread, we can discuss further! :)
- shakna 10y agoVersioning means you can use Continuous Deployment easier. Once all the tests pass for your new feature, it gets shipped, but not before.
- 10y ago
- yNeolh 10y agoReally cool, I always thought about something like this, but yours is more powerful that I have ever thought XD. The thing about this Is you can make IDEs and UI designers "easily" because you already have the engine. So good job ;) With this you could hide some porn apps in appStore so I don't know how "legal" it is, but that's just a minor problem ;)
- ayumu722 10y agothis is weird man, I had a similar idea like about a year ago, and just started coding some prototypes of it this week, my original idea was to scan a QR code and then you'll be presented with a native app, and I needed a way to code the elements of the app, and i didn't want to waste time writing a parser, so I used Json too lol. I was coding for android, maybe we should join forces ;)
- saganus 10y agoThis is very interesting. However I'm no iOS developer, so could you give me a cursory explanation on how it works? I mean, I can imagine creating a framework that has "empty" screens, and then just loading data into them, but this seems like it can do much more. So for example, if I want an app with say 4 screens, and GPS access (if supported) and a few buttons, do you have all those objects already in memory and just copy them and inject the data to show on screen? Or maybe it's too early and I'm missing something. Very neat though!
- gliechtenstein 10y agoAlmost correct. To be precise, it doesn't have the objects in memory, it instantiates all the native components on demand based on the JSON recipe. And all of them of course go away once you close that view.
- mitchtbaum 10y ago>> how it works > it instantiates .. components on demand In general, to wrap your information engine around how information engines wrap around components, check out this marvelous design pattern: https://en.wikipedia.org/wiki/Visitor_pattern https://en.wikipedia.org/wiki/Visitor_pattern , like here https://github.com/Jasonette/JASONETTE-iOS/blob/develop/app/Jasonette/JasonComponentFactory.m#L54 https://github.com/Jasonette/JASONETTE-iOS/blob/develop/app/...
- saganus 10y agoAha! thanks to both of you for the answer. I've read about the Visitor pattern before, but did not link it to an engine like this.
- hiou 10y agoThis is fantastic. Thank you for taking the time to create it. This looks like an amazingly simple way to create a prototype.
- gliechtenstein 10y agoThank you! Why stop at prototype though? All you need is a couple of more lines to actually make it work (make network requests, call native functions, react to user interaction etc) :)
- nbrogi 10y agoIt's great. I can definitely see an use for this.
- nthcolumn 10y agoI don't haz Apple but it looks great.
- profalseidol 10y agoGreat, but too bad, it's for getting into the jail. edit: just in case, i am just criticizing the support of Apple's monopoly.
- rahkiin 10y agoWhat monopoly? There are many times more android devices than iOS devices.
- profalseidol 10y agoGreat, but too bad, it's for getting into the jail.
- ikeboy 10y agoDoes this break any of Apple's rules?
- gliechtenstein 10y agonope!
- JoelMcCracken 10y agoCan you explain how it doesn't? I immediately think of embedding an interpreter in this thing for real, general application development. Congrats on shipping. This thing is cool.
- gliechtenstein 10y agoThank you! I think this thread is relevant: https://news.ycombinator.com/item?id=12879487 https://news.ycombinator.com/item?id=12879487
- djsumdog 10y agoI've heard Android pulling apps that try to update themselves outside of the store. I was thinking this would be a great way to get by the update process in general, since you could cache the json if off-line or pull a new version if you're online. Of course with that extreme of a view, web views would break the rules too. :-P In any case, it's a cool project. I hope to see more production stuff using it.
- primitivesuave 10y agoI think it's really cool too. I especially love open-source projects like this that just work. I also appreciate your significant effort to make extensive and helpful documentation. Out of curiosity, what prompted you to start building this?
- gliechtenstein 10y agoI didn't start from a grandeur goal, but had an existing app on the appstore and was frustrated with every single aspect of the app development process. So I started implementing little by little just to make it easier, and ended up with an app that's actually a precursor to Jasonette. I extracted Jasonette out from that app so others can use it too :)
- Ecio78 10y agoHi Ethan, it looks very interesting, one feedback and one question: Feedback: you should try to slow down the gif demos, at least in my Chrome/laptop they are quite fast and the viewer can't really appreciate it completely Question: I see that XCode is required, I don't have a Mac only an iPhone). Any possible way to use Jasonette without a Mac? I've seen some services like Mac in a cloud but I was more thinking about alternative methods. For example, as the only setup required is to provide the URL, couldn't you create a generic Jasonette test/dev app where you can provide the url and do the testing/development directly only on the json side?
- downandout 10y agoYou can run the latest MacOS in VMware on Windows. It works perfectly - Google "VMware Unlocker" as a starting point. This setup actually runs faster than the older Mac Mini I bought specifically to develop for iOS, and it's obviously much more convenient to be able to use a Mac from Windows whenever needed. Both Xcode and a $99 Apple Developer subscription are required if you wish to distribute the app anyway, so I'd suggest you go the VMware route if you don't want to buy Mac hardware or use a cloud service.
- Ecio78 10y agoI heard that running MacOS on a non-Apple hardware was not considered a legal solution. Am I wrong? I thought my idea of having a test Jasonette app where you put the url from the app after the boot to do your testing could be very easily doable and way not it could allow also to test the various existing apps that OP created: he could create a test app that downloads a list of his demo apps (so it is always up to date), show a dropdown or similar to choose the demo app + allow you to specify your own custom test url using the keyboard of the device. In this way you have both a demo and a test application :)
- downandout 10y agoIANAL but I'm fairly certain that given Apple's resources, if they wanted to stop this practice, they'd have obliterated VMWare Unlocker from the map. It's been around for years, they certainly know about it, and they haven't done anything about it. So if not expressly legal, they certainly don't seem to have a problem with it.
- ovao 10y agoCongratulations on your first OSS project! It definitely seems I could use this.
- gavanwoolery 10y agoI worked in mobile development for a while and had this idea in the back of my head during that time. I am glad to see that you have implemented it! Most frameworks walk the ugly line of having one foot in a standard stack (like a web stack) and one foot in the native-mobile world.
- nichochar 10y agoYour project is really cool, you should be proud :) !
- sdsk8 10y agoJust came here to say this is AWSOME, keep up the good work and i wish you the best. This is going to help a lot of people that want to prototype or even deploy a full featured app without spending months of coding.