Tuesday, March 29, 2011

We've Been Acquired

It was actually months ago, and nobody even noticed (as far as I know).

The 2cloud Project is proud to have been acquired by Second Bit, LLC. This is an overly-formal and mildly ridiculous way to fold the project into the company that my partner and I established in December.

What does this mean?

In practical terms, nothing, really. It means (most importantly) if you want to sue the project, you are suing a company and cannot take my house. I was pretty pumped about that. It means that the company is paying for the server, so it's separated from my finances. Even that's not much of a change though, because the company gets its money from freelance work I do. The most noticeable change you'll see is that Tino Galizio, the CFO and manager for Second Bit, will join the 2cloud Project team as an advisor, responding to support requests and joining discussions about the project's future with the rest of the team.

What won't change is our commitment to free, open source software. We won't be installing ads, we won't suddenly start charging you for it. We're even keeping the 2cloud Project team separate from Second Bit-- Dylan is not an employee of ours (though he does work with us now and then), but he'll remain our lead UX designer.

When did this happen?

You may or may not have noticed that the extension and install pages sported a Second Bit link in the footer from January 1st on. The Second Bit acquisition of the project was supposed to be announced on the first. Due to my inability to get a Second Bit website up in time, it was delayed until a future date. Three months passed as I worked to get the 2cloud Project website online, patch problems in the Chrome extension, and complete client work, but we finally got our website up late last week. We're pretty proud of it. Technically, since January 1st, android2cloud (and then the 2cloud Project) has been a Second Bit product. We just didn't say much about it.

What is Second Bit?

Second Bit, LLC is a software development and consultation company. We write software for clients, write software products on our own volition (like the 2cloud Project), and help advise people on software when necessary. You can see the about page to get more information on the company.

What about donations?

Donations, from this point forward, will be paid to the Second Bit account, not to me personally. This is only fair, as Second Bit is springing for the server (which is still not covered by donations). I, personally, appreciate every donation made to the company, and would prefer the donations go to the company instead of me, personally. Also, if you'd like to donate to the project, hiring the company is a great way to supply money for the project while getting a tangible return. Just saying.

Thanks for all your support, everyone. Feel free to take to the help forums to ask any questions about the acquisition that haven't been answered here. Just post them in the questions forum (not the problems or suggestions forum) please.

Paddy Foran
The 2cloud Project Lead Developer

Monday, March 14, 2011

Say Hello to the 2cloud Project

Since July 12, 2010, we've had the same name and the same terrible, stitched-together-by-a-developer-with-no-design-sense icon. Both were pretty limited in that they only applied to Android. With a focus on expanding to other platforms and becoming a bit more device-agnostic setting the pace for the future, the team got together and decided that a rebranding effort was in order.

So, I'd like to introduce the 2cloud Project.

The 2cloud Project is the new umbrella project that software with the capabilities that android2cloud has will be launched under. The Chrome extension has been renamed 2cloud for Chrome or the Chrome client for the 2cloud Project, whichever you prefer. :) android2cloud will remain android2cloud.

First, I'd like to thank Dylan Staley. Not only did he volunteer to make our icon pretty (and really, the icons he came up with are gorgeous), he also came up with a killer new tagline for the project: Tap. Share. Anywhere.

Second, I'd like to welcome Dylan to the 2cloud Project team. He graciously agreed to take on a permanent post as our designer and UX expert. His next project will be tackling our mobile and/or Chrome interfaces, whenever he gets the time to do so. I'm pretty pumped about that.

Third, I'd like to announce our web presence. We've owned android2cloud.org for forever, but we've finally put some content up for it now. Likewise, we've purchased and launched 2cloudproject.com. Both sites have some pretty good information on them, so I encourage checking them out. Our designs were created by the talented Eternity. For her efforts, we've included her in our sponsors list.

Fourth, I'd like to announce that we're on Convore. If you'd like to chat about the project, head on over to our Convore room and chat us up. We'll try to make a habit of being in there to answer questions and talk with you guys.

And now, some questions I think you'll have.

What exactly is changing?

Nothing. Everything. Basically, a lot of names and icons, and not a whole lot else. We've launched a @2cloudproject Twitter account, but the @android2cloud account will remain. @2cloudproject will post news relevant to the entire project, while @android2cloud will be exclusively for the Android client. So yes, there will be very little difference between them right now.

We're also changing our mailing lists, and adding two more. As a reminder, we've had the discussion list and the beta list. Here's the new layout:

  • 2cloud: A discussion list for the project as a whole.
  • 2cloud-announce: A mailing list for just announcements. Only our project members will be able to start topics in this list, and it will only be used for announcing new platforms, server downtime, policy changes, the like. This is the android2cloud mailing list, renamed; so if you were registered to the old one, you're registered on this one.
  • 2cloud-beta: A mailing list for beta testers. This is the android2cloud-beta mailing list renamed, so everyone is still registered. Very little is changing about how this list functions.
  • 2cloud-dev: A brand new mailing list, this will serve as a discussion forum and congregating place for developers on the project. If you want to build your own client or server implementation, would like to contribute to our client or server implementations, or would just like to find out more about the source code and technologies behind our platform, this is the list for you.
What about the blog?

We still haven't come to a decision on that. One idea was to move this entire blog to blog.2cloudproject.com, rebrand it as the 2cloud Project blog, and call it a day. Another idea was starting a separate blog and maintaining both, or letting this one die. For now, we're just going to leave the blog as it is. We'd love to hear your thoughts and ideas in the comments, on Twitter, or in the 2cloud mailing list, however.

The help site is missing!?

No, the help site is ok. It just moved to http://help.2cloudproject.com. We'll be setting up a redirect for help.android2cloud.org shortly, to help anyone who has gotten confused.

I don't like the new name/the new icon. Will you change it back?

No. But we have no objection to you doing so. We are open source. Just dig through our repositories, and you can build a de-re-branded application for whatever platform you like.

We're pretty excited about this. We hope you guys are, too. Let us know in the comments if we missed any questions, and we'll do our best to answer them.

Tuesday, March 8, 2011

App Engine Error

Just a quick update: App Engine appears to have had some bad breakfast, and is currently puking all over itself. Imports are throwing 500 errors left and right, and we have no idea why-- we didn't break anything, we swear.

Our server is down for the count at the moment, but with any luck, Google will have it up and running again shortly. Sorry for the inconvenience. We'll let you know if we get more information.

Monday, March 7, 2011

On Notifications

We need a better way of keeping in touch with you guys. We have a Google Group, we have this blog, we have a Twitter account, but we only reach a fraction of our users with those. Sometimes, we need to put a message in front of everyone.

It's just tricky to do that in a respectful and friendly way. We want your help. Just fill out this quick survey, a few questions about what you'd feel comfortable with, and we'll do our best to stay in touch, but out of the way.

On a related note, we just sent out an email to 232 people who haven't updated the Chrome extension since before January 1st. If any of you are interested, the body of the message is online, here. You'll notice we moved our deadline for blacklisting users to Friday-- we really don't want to have to do that.

Sunday, March 6, 2011

2.0.4 Landing (For Reals This Time)

Just wanted to let anyone who may be following the blog that android2cloud version 2.0.4 just landed in the Chrome Web Store. This is identical to the extension that was in public beta for the last week or so. It should fix any issues you have with links reopening. To clarify that:
  • You should uninstall version 2.0.3 or have it auto-update. You should never run two installations of the Chrome extension at the same time. Ever. I can't even begin to predict how that would affect performance.
  • You should uninstall the public beta version (which will not update automatically) and install the release version. You should never run two installations of the Chrome extension at the same time. Ever. You should  also always install the extension from the Web Store, if possible, because that will keep you up to date with new releases automatically.
  • You should see the links pop open one last time when you install version 2.0.4. I'm sorry. If I could prevent that, I would. After the first time 2.0.4 sees them, though, they should never open again.
For those that care about the technical details, I offer a post-mortem of the unfortunate situation.

This situation was created entirely from my own folly. For some unknown reason, Chrome disliked the mechanism I had worked out for android2cloud originally, which was storing the ID of the last link that Chrome received, then sending that to the server when it connected to have the server send back all the links received since that ID. In theory, it should have worked. In practice, it didn't. And I still have no idea why. I thought it would be easier to simply modify the database schema to hold a "received" field for each link. Now, when Chrome received links, it would phone home to the server and say "yup, got it!" at which point, the server would mark it as read in the database. So every time Chrome connected to the server, it asked the server for the links that hadn't been marked as read in the database.

Which should work, in theory, right? Right.

Except I was foolish, and didn't think things through fully. I assumed that simply turning around and giving the server back the same data we received would be the easiest way to go about things-- minimise the requests to the server, prevent parsing errors from mucking up the "mark as read" transaction, that sort of thing. What I didn't take into account was that, because it was an OAuth request, all the data got stored in the URL. Which is more than mildly annoying-- it actually broke the "mark as read" transaction by making the URL too long if you had a bunch of links. So the server never got the message to mark the links as read, and dutifully sent them back to Chrome every time Chrome connected.

The solution I came up with was simply parsing out the IDs of the links received, and sending those back to the server. That truncated the request nicely and, therefore, the server got the message that the links were received. This solution is not bulletproof, obviously, but it works as a quick patch until I can get the much more thought out 2.1 out the door.

Sorry for the issues. I'll try to do less foolish things in the future.

Wednesday, March 2, 2011

Show Us Some Love, Google

Wow, 4 days, 4 posts. We're really pushing with this, aren't we?

Google Summer of Code 2011 has started accepting applications for mentoring organisations. For those of you who don't know what GSoC is, it's a program Google runs for open source organisations and students in college. The program strives to let students 'flip bits not burgers' by paying accepted students $5,000 to work for a summer on a project for an open source organisation. Google also donates $500 to the organisation itself, as the organisation is expected to mentor the students.

Normally, larger organisations end up being mentors for GSoC, but (perhaps with some hubris), I'm submitting android2cloud as a mentoring organisation for the 2011 GSoC. I've spoken with two Google engineers, and they've agreed to serve as references for the project, and haven't told me I'm crazy, so I remain optimistically skeptical about our chances of being accepted. Certainly the community-focused work we've been doing can't hurt.

Part of the GSoC Mentoring Organisation application requires a list of suggested project ideas. Our team certainly has some of those, but this is an open source application. We believe you guys drive and define android2cloud, not some elitist team. So we've opened a wiki page, here. Take a look at the instructions, log in, and add your ideas. Who knows? Even if Google doesn't select them, we may get them done over the summer.

And if any of you out there are college students with Python, Java, and/or Javascript proficiency, we'd love an application from you, should we be accepted.

Tuesday, March 1, 2011

Upgrade or Perish

Hey everyone, pretty important announcement.

Since we upgraded to version 2.0 on January 1st, we were supposed to be seeing a huge dip in the number of requests our public server served each day. We were supposed to regain all the CPU we were losing to polling. I keep saying "supposed to" because, in reality, we didn't.

It seems there are some people (quite a few people?) out there who aren't actually using the app, didn't install it from the Chrome Web Store, and haven't uninstalled it or upgraded it since December. Which is two months ago. We're still getting millions of HTTP requests to URLs that haven't been in use since version 2.0 launched. These requests are eating up a significant portion (more than 10%) of our daily CPU, and for no good reason. As it exists right now, the application gives you a friendly message if you load one of those URLs-- try it yourself. I do have a list of IPs that are making server requests the most, which would indicate polling. So here's the deal:

Starting on March 7th, I will be blacklisting 25 IPs a day that are still polling the server. This is not an easy decision for me to make, because blacklisting people means that they will not be able to access the service in any way anymore. But I need to protect the main server for the use of the majority, and this minority of users who will not upgrade in a timely manner (two months is surely enough time) is making the user experience worse for everyone.

Of course, should these users, upon being blacklisted, email me, I will take that as proof that they are going to be updating their Chrome extension to no longer poll our server and will happily remove them from the blacklist. I don't think anyone will, as these people haven't even noticed the extension stopped working months ago.

Please, if you have any questions, comments, or concerns, feel free to get in touch. I can always be reached through the help forums or at paddy at android2cloud.org.

I'm tinkering with an idea for a notification system that would help solve issues like these (as I'm sure the people who are polling our servers don't read the blog, follow the Twitter account, or subscribe to the mailing list), but it's a little more intrusive than I'm comfortable with. I'll be sending out a poll or feedback form about it a bit later to try and gauge the users' feelings on how it should be handled, so I'd love if you would respond for me. It will give me information that will help make your experience better.

As always, you have my thanks.

EDIT: The Chrome extension can be found here: link If you install from the Web Store, you will automatically be updated to the latest and greatest versions.