View from Bernal Hill this afternoon.
View from Bernal Hill this afternoon.
Here’s how to share a picture to Facebook, Twitter and so forth from MonoDroid:
A fun mix of Java and C#. The directory got me to start with so check to see if the ExternalCacheDir is available and if not fall back to the internal CacheDir. Frustratingly Facebook doesn’t pick up on the text associated with an image regardless of the intent ExtraWhatever specified.
I’ve just released a WebCam app for Android. It’s based on WebCamSaver but allows you to control the webcam – you tap the edges of the screen to pan, pinch to zoom in and out. A fun little time waster.
This is the first app I’ve released using Xamarin’s MonoDroid framework. This integrates nicely into Visual Studio and allows you to program an Android app in C#. This is fantastic for productivity and code reuse and I enjoyed the process a lot more than previous work I’ve done in Java / Eclipse. The main drawback is that the framework adds around 5MB (significant for mobile) and the documentation isn’t always the best, especially when you search for something and find out you’ve been dumped into iOS reference material. Digging around the sample code and cross-referencing the official Android documentation helps a lot. I’m going to take a stab at something a little more ambitious next…
When jarsigner says "Key Associated with [alias] not a private key" it almost certainly meant to say that you got your password wrong.
Here’s a quick code snippet that configures SmtpClient to send email using Gmail’s SMTP server:
This can be frustratingly difficult to get right so I’ll run through each setting quickly.
DeliveryMethod: Set to SmtpDeliveryMethod.Network, the alternatives are copying the email to a directory for pickup by a different application. We want to connect directly to Gmail.
UseDefaultCredentials: False, as we’ll be providing our own credentials later. Setting properties in the right order is apparently important for SmtpClient, although the Microsoft documentation doesn’t mention this. Make sure you set UseDefaultCredentials to false before setting the Credentials property.
EnableSsl: True. SSL or TLS is required.
Host: smtp.gmail.com for this example. Note that this server restricts you to sending 2,000 emails per day. There is a less restrictive option for G Suite customers (smtp-relay.gmail.com) and a more restrictive server that can only send messages to Gmail or G Suite addresses (aspmx.l.google.com).
Port: Google says to use 465 for SSL and 587 for TLS. I’ve found that 587 with EnableSSL set to true works fine.
Credentials: Your Gmail address and password in a NetworkCredential. If your account has 2 step (multi factor) authentication then this won’t work. You can generate an app password easily and use this instead of your regular password. It’s also possible to use OAuth.
In the comments below Shika Helmy suggests also setting the Timeout property to 20000.
You can now use smtp.Send() to send the email.
Because it’s likely to be your personal account and there is a 2,000 message cap on sending I’d only recommend using this for small scale projects. You don’t want to get your Gmail account blocked. For higher volume I’d look at using SendGrid or similar.
One last note - while I’ve used SmtpClient for all sorts of trivial email needs over the years the latest Microsoft documentation marks it obsolete and warns:
SmtpClient and its network of types are poorly designed, we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead
Hope this expanded article helps. I still come back here periodically to cut and paste rather than mess up the property order again...
A friend pointed me at the SHIELD (PDF) act today. This bill would make unsuccessful patent trolls pay defendants’ legal bills. It’s not as good as my radical plan to fix patents, but it’s a step in the right direction. If you care, let your congressperson know. Here’s the note I just sent to mine:
Dear Rep. Pelosi,
I'm writing to let you know that I support the SHIELD act Introduced by Rep. Peter DeFazio (D-OR) and co-sponsored by Rep. Jason Chaffetz (R-UT). As an entrepreneur and professional software developer I have personally experienced the job destroying effects of ill founded patent litigation. Any step to reduce this drag on our industry is a welcome step.
No, thank you HSA Bank for not giving me a choice and then cheekily pinching $2 on every debit swipe.
A personal anti-adventure, gripping and poignant and pedestrian.
Solid, unexpected third installment. Don't read if you haven't read the first two.
'robot revolution would end quickly, because the robots would all break down or get stuck against walls' - http://t.co/X4AFepMI
Aspam, Aomori, Japan - looks like Blade Runner. http://t.co/UePboKyJ
[text: “what the fuck, it worked the first time”,... http://t.co/chCeMv8M
4 of 5 stars to The Sense of an Ending by Julian Barnes http://t.co/lV8ZrNHL
I side 90% with Jill Stein... http://t.co/zCNzugqD
Naples, Florida, USA snapshot from Catfood WebCams on Android. http://t.co/HACOmEhr
Testing a webcam share from Android... http://t.co/Ha94fZoW
Thanks for the Cash Mr. Bubble Man: http://t.co/ZonD58yD
With More Original Programming On The Way, Netflix TV Viewing Is On The Rise http://t.co/Q8oCNZUv -- missing the point, lack of content
Hubble discovers new Pluto moon http://t.co/kRB95fLu -- Promote Pluto back to a planet immediately!
Amanda Palmer's awesome stop-motion music video [NSFW]: http://t.co/XfGBC9NY
ITHCWY: Hummingbird http://t.co/CHtA5fV3
ITHCWY: Twitter's API has got too painful for me: I've developed a bunch of stupid, niche and vaguely promising… http://t.co/J6Y0EZ62
IT class warfare — It’s not just IBM http://t.co/bK0Nr2lG
Naming Pets http://t.co/syC0kgWa
BBC News - Brian Cox: bank bailout costlier than UK science 'since Jesus' http://t.co/1RSN5g5Z -- amaaaaazzzziiiinnnnngg
"A conversation with my 12 year old self" (video) http://t.co/zYOEKDnN -- freaky
ITHCWY: Shrubbery: A missed opportunity to demand that violators shall provide... another shrubbery! (At the Old… http://t.co/lBSQaDmI
Probably the Higgs: http://t.co/yspWoQlv
ITHCWY: House of Lords - time for Legislative Service?: I've mulled the idea of having an upper chamber randomly… http://t.co/6C5cQjz2
You Might Be A Smanker If… http://t.co/L91rDvqV
Cisco locks customers out of their own routers, only lets them back in if they agree to being spied upon and monetized http://t.co/2QIdw42P
Bouncy, bouncy druids, not available outside the UK: http://t.co/mw7XcKth
Patent troll http://t.co/AY3FIg8W
Operated by the knights who say NI! http://t.co/TkMndo7c
I've developed a bunch of stupid, niche and vaguely promising apps on top of the Twitter API. During that time I've slogged through various painful and rapid shifts like changing IDs, authentication schemes and diktats handed down on which parts of the ecosystem Twitter would like to control. I've had to roll my own OAuth and even re-word a blog post to Twitter Support's satisfaction to get a blocked application unblocked again. It's been a pretty frustrating experience but worth rolling with the punches until the past week.
Twitter suspended Cleat, a tool for posting from the command line. So I emailed to ask why, too much effort for them to explain the rationale at the time they're putting the suspension in place I guess. I got an auto-response asking for information they must have already had and I replied to this. A few days later I still hadn't heard back so I emailed again and the ticket had been automatically closed.
So far just the standard fuck-off-and-die support that you'd expect from a growing company that no longer wants to talk to it's users. But the auto-reply directed me to https://support.twitter.com/forms/ to file a new ticket. None of the options there relate to developers or a suspended application. I tried filing a ticket under 'deactivated account' which seemed the closest.
That form has a hard-coded 'With love,' valediction. Whoever thought that was cute should go through the process of trying to get help a few times.
This attempt auto-responded to say that my account was not suspended, and would I like to fuck-off-and-die or got back to the forms center?
So I tried another form that actually seemed to submit but haven't heard anything back.