• pacco

    Hi all,

    Pythonista 2.0 has finally arrived and there is much rejoicing!

    For me, Pythonista was initially a quick and easy way to become more proficient with the language -- it allowed tinkering and experimenting at odd moments from wherever I happened to be. Later, it provided an easy way to explore much of the Python standard library. Even later, I began to use it to prototype utility scripts for backend servers and simple network security testing.

    My point is that (like many of you), Pythonista has become one of my more/most important apps on my device and I'm very happy that Pythonista 2.0 is finally here.

    I also have to believe that there are many of us here who gladly would have paid for version 2.0 (either as an IAP or as a completely separate app).[1] Since omz has graciously chosen not to do either with this release, I have a modest proposal for any who feel that he deserves a show of appreciation for all his efforts on version 2.0:

    • Consider gifting the app to a new user through iTunes.

    While simply buying another copy of Pythonista with another iTunes account would accomplish the same thing, how about gifting it toward someone who you think just might be interested in learning programming? Maybe one of your kids, a spouse, a coworker? (And if you're feeling especially generous, maybe include a copy of a Python book to get them started. e.g., 'Python for Kids', 'Hello! Python', 'Learn Python the Hard Way', etc. or whatever helped you first learn the language) While some of you may have started programming in school or even on the job, I'd hazard to guess that many of us are developers today because someone else took the time to introduce us to the concept and provided the proper degree of encouragement. Why not use this as an opportunity to pass that on?

    Anyhow, it's simply a suggestion for those of us who feel we've gotten way more out of this app than the modest price it was purchased for. I understand that not everyone reading this may feel the same way. However, you still might consider another way to help omz and Pythonista that will cost you nothing: If you haven't already done so, why not post a detailed and honest review of Pythonista in the App Store?

    Thanks,
    Pacco
    [Who has no relationship with Pythonista, nor its developer]

    [1] While major app updates like this are a great deal to existing customers (free upgrades for the life of the original app), it's also been acknowledged that it can make sustained development for the App Store difficult as revenue comes solely from new purchases.

    posted in Pythonista read more
  • pacco

    Yep! (Or at least it's in the US Apps Store)

    Updating now.

    Thanks omz for all your hard work and effort behind this new version! I'm also impressed that you decided to offer it as a free/upgrade as there are a significant changes to the app. [more comments about this in another post]

    I realize over the years Apple has gradually relaxed a number restrictions on what is accepted to be published on the App Store, but to some degree I'm still amazed at what Pythonista is able to achieve on a non-JB device. Greatly looking forward to exploring the new features (e.g., ctypes!)

    Another quick note: I'm also just paranoid enough that immediately after updating the app, I'm going to sync to iTunes so I can keep a safe copy of the v2.0 Pythonista.ipa file. (Just in case Apple changes their mind on this release, for whatever reason. Sadly, there is some historical precedent in their allowing certain apps into the AppStore then later deciding they violate policy and pulling them).

    posted in Pythonista read more
  • pacco

    Agreed -- my point was simply that there are often a collection of different methods for detection, depending on the nature of the JB. Some of those techniques rely on positive as well as negative test results.

    Whatever the case, that's a neat script you came up with!

    posted in Pythonista read more
  • pacco

    Neat! (Of course, I don't have any JB devices to actually test it on at the moment...)

    A lot of MDM vendors will do these types of tests in their software agents as many institutions using their products won't allow jailbroken devices (even BYOD) to be enrolled.

    Another similar jailbreak test I've read about was to write a dummy file to certain normally-protected parts of the filesystem. If the write succeeded, then the device was likely jailbroken.

    posted in Pythonista read more
  • pacco

    Apologies -- I'm not actually running the Pythonista beta. However, I did want to add that I've been seeing this behavior ('Copy' and other commands missing from selected/contextual popup) in several other apps ever since upgrading to iOS9 -- so I assume it's either a outright iOS bug or Apple made a subtle change in one of their APIs that only triggers the problem in certain situations.

    posted in Pythonista read more
  • pacco

    @tony, that's awesome!

    If I weren't in the middle of such a heavy work week, I'd definitely ask about the details. For now, I just have this link to pass along. (Caveat: I haven't actually tried it).

    http://stackoverflow.com/questions/7664189/how-to-recompile-the-python-2-5-bytecode-to-2-7

    posted in Pythonista read more
  • pacco

    Specifically:

    I've been writing small test servers in Pythonista and connect to them using Safari or some other client app on the same device. I've noticed that network performance of the server is impacted pretty heavily if it tries to print anything to the console while it's running in the background. While one obvious solution is to just write all messages to a logfile instead of the console, I was wondering if there are any iOS methods surfaced in Pythonista to tell if it's running in the foreground/background?

    Thanks,<br>
    Pacco

    posted in Pythonista read more
  • pacco

    @ccc -- you're right, of course. I was thinking of the OpenSSL wrapper module that some of these proxy servers depend on. (I believe it wraps the external openssl binary, which isn't an option for Pythonista for the obvious reasons)<br>

    @Tizzy -- I still haven't gotten proxpy working, but I realized I'd forgotten to install the local proxpy root CA on the iOS device I was testing with. (It installs under Settings app->Profiles, like any other mobileconfig). Will continue messing with it as time allows...

    posted in Pythonista read more
  • pacco

    Thanks for the feedback all. I even appreciate omz chiming in -- I did suspect it might take some ctypes-fu to determine an app's state but thought there might have been an easier way.

    Clearly, this isn't a high-priority issue as I suspect running server apps on Pythonista isn't a huge use case. But it does make me wonder why console printing would slow things down? Is it simply because the app is in a backgrounded state or is it because it's offscreen? (i.e., console output has to be written to some sort of image backing store that's slower than a live render, etc)

    Thanks,<br>
    Pacco

    posted in Pythonista read more
  • pacco

    What an incredible coincidence! I was just playing with various Python-based http proxies the day before (which also relates to a recent question on this forum about running server apps in the background). I've found several several http (tcp/80) proxies that work ok with Pythonista:

    <blockquote>
    https://evilzone.org/scripting-languages/(python)-proxy-server-19-lines-of-code!/<br>
    http://infomesh.net/2002/bproxy<br>
    http://python-proxy.googlecode.com/svn/trunk/PythonProxy.py<br>
    https://gist.github.com/voorloopnul/415cb75a3e4f766dc590#file-proxy-py<br>
    </blockquote>

    But haven't been able to get any SSL-based ones working either. The one I'm currently looking at is <a href="http://code.google.com/p/proxpy/">proxpy</a> but I suspect it has a dependency on OpenSSL (either the lib or a binary) which clearly is not available in Pythonista. If you make any progress with mitmproxy (or any other) please update this thread -- I'm very interested in this as well.

    Sidenote: One interesting discovery made while playing with the proxy servers -- iOS (8.3 anyway) uses this URL http://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml to check if any new OS updates are available. It's also interesting/depressing to see just how many apps on your device call home using various analytic frameworks...

    Edit: Fixed bad markdown for URLs.

    posted in Pythonista read more

Internal error.

Oops! Looks like something went wrong!