-
Exploring Joyent Slingshot
Apr 20, 2007 - 3 min read
Last Friday, I received the Slingshot SDK (Software Developer Kit). About an hour later, I had a copy of my Rails application running in an off-line, fully self-contained environment. Of course, that was only the beginning, but it did right away show that you could use Slingshot to quickly deploy stand alone Rails applications. Slingshot provides the database (sqlite), the browser (Webkit in OS X and IE7’s engine in Windows), and the server, all in one application window. All you need to supply is the code. No one had talked about that use of Slingshot on the weblogs and forums (that I saw), but it was the first thing that came to mind when I saw it face to face. My application was not ready for data synchronization. First, I hadn’t upgraded it to Rails 1.2 yet (it was frozen to a slightly pre-1.2 edge release). Second, all of the models to be synched need to have created_at and updated_at data – mine did not. Third, my live app is currently sitting on a shared TextDrive server, and a shared server is not the place to be playing with something like this. Joyent is helping me with the third problem by providing me with a small accelerator for the duration of the pre-release testing period. An email mix-up on my part kept me from accessing the accelerator until late Wednesday. Yesterday, I logged in for the first time and found myself sitting at the business end of a console prompt in Solaris for the first time in 15 years or so. I’ve been a shared host sort of guy since I’ve been on the internet, just before the World Wide Web was invented. Having my own server computer, getting it up and running from scratch, has not been something I’ve ever done. Still, by this morning, I had everything installed, Apache was proxying to four Mongrel instances, and a scratch copy of my Rails app was being served smokin’ fast. The documentation to get all this going is still spotty (accelerators are still a new offering, and the early adopters tend to already know what they’re doing), but I was able to piece enough together to get off the ground. I’ve already frozen my application to Rails 1.2, so that step is out of the way. Now, I have to add created_at and updated_at columns to all my tables, and at that point I can begin adding code to support extraction for offline use and full data synchronization. I’m still not sure what that’s going to entail (I’ve been reading all about accelerators instead of Slingshot these last few days).
- So It Goes Apr 12, 2007 - 1 min read
-
Successful Phone Call
Apr 4, 2007 - 1 min read
I talked with David Young of Joyent and Jeff Mancuso of Magnetk (the developer of Slingshot). They asked me some details about locallygrown.net and possible offline use cases for it. We all agreed that it could very well be a good match for Slingshot, so the project will proceed. They’ll be sending me a developer’s kit next week that will get me started. I did learn that I decide (at the controller level) what data (and controllers and actions) get taken offline and how the data gets merged back in. Slingshot provides the framework to get it done but I tell it how to do it. I like that. Locallygrown.net is now sitting on a shared hosting server (don’t worry… I’m a good neighbor, or at least try to be). I’ll be migrating it over to a Joyent Accelerator, essentially a dedicated server running the Solaris operating system. This will allow for future growth, among other things. Since the move will be tied to getting Slingshot running, I’ll document that process here as well.
-
A new series of posts
Apr 3, 2007 - 2 min read
Regular readers (all four of you) know that over the past two years I’ve picked up a new programming language, Ruby on Rails. I’ve been using it for every bit of web programming I’ve done over the past two years. Most recently, I used it to build my farmers market system, LocallyGrown.net (my own Athens market). LocallyGrown is getting a lot of attention, and I truly feel it can revolutionize how small farms get thier produce on people’s plates. The web hosting company I use, Joyent, has announced an exciting innovation for Rails applications that will allow developers to make their online programs work offline, with data synchronization when the user connects back up. This could be very useful for LocallyGrown, as market managers could take their online market with them on a laptop to the physical market, even if there is no wi-fi or other network connection on site. Joyent has offered to give me early access to this framework, which they’re calling Slingshot. I don’t yet know how it works technically, and it may actually not be a good fit for LocallyGrown. The project kicks off with a coference call with the Joyent folks in the morning, and then we’ll take it from there. One interesting thing about this early access program: I’m required to write about my experience with it, both good and bad, here on my weblog. So, this entry is the first in a series of entries that will document just that. I’ve created a new category, “Joyent Slingshot”, so all of these entries will be grouped together for easy access. More to come!
-
The Food Chain (as understood by a two year old)
Mar 26, 2007 - 1 min read
Cows gives us milk cows gives us milk hi ho derry oh cows gives us milk Chickens gives us eggs chickens gives us eggs hi ho derry oh chickens gives us eggs Horses… horses… horses… Horses gives us… fish! horses gives us fish hi ho derry oh horses gives us fish
-
Dylan Hears a Who!
Feb 27, 2007 - 1 min read
Dylan Hears a Who! I’ve been meaning to post about some of the fine, fine music I’ve found here and there on the ’net recently. I just started listening to this a few moments ago, and had to rush here to tell you all about it. This is far, far better than it had any right to be.
-
Look over there -- I've been writing!
Feb 12, 2007 - 1 min read
Just because I’ve not been posting here doesn’t mean I’ve not been doing things, you know? I’ve got all these other weblogs here and there, so now this page will go and collect everything I write elsewhere (when it has the means to do so) and stick them over in the sidebar over there to the right. Below the pictures. It’d be great if somehow I could get it to copy each of them verbatim as a new entry here, so it’d all be integrated, and you could comment, and so forth, but so far I’ve not found a way to do that. So, in the meantime, just have a look over there, under the stale pictures (I really need to start taking more of those), and above the “My Status” block, and you’ll see what I’ve been writing elsewhere.
-
Just a few more weeks...
Dec 22, 2006 - 5 min read
Here’s a letter I sent out to my mailing list last night: -– Hello again! It’s Eric, the fellow working on the on-line farmers’ market software you were at one time interested in. It’s been a few weeks since I’ve written you, so I though it was time for an update. The system has come a long way since the last time. It’s not fully functional, but you can right now do a lot of the “grunt” work of getting your market online. I’m still on track to move my own market completely to the new system in early to mid January. Here’s what you can already do using my system:: * You can create your market at a unique locally grown address (i.e. http://myfarmersmarket.locallygrown.net ) * Your market comes with a welcome page, an Frequently Asked Questions system, and a weblog (news page), all out of the box and all fully configurable and ready for your own content. * Users can create accounts at your market. There are three levels: Market Manager (you, and anyone else you want to promote), Growers (all sellers through the market are called growers), and Customers. * Any number of growers can join the market. Unsolicited requests require approval from a market manager before they are listed and can begin selling. * Growers get their own “About” page and a photo gallery, with unlimited photos and captions. * Market Managers and Growers can organize product categories and list products, giving them full descriptions, images, prices, etc. You can build your product category structure from scratch, or just automatically use the categories I’ve been using at my market for the last five years and go from there. * Market manager and growers can quickly adjust availability, pricing, and other items at any time. Growers can only edit their own products, but Market Managers can edit everything. * Membership is flexible. You can charge customers an annual membership (you set the amount). You can charge growers a fee to join the market and charge a fee to sell their products (either as a variable percentage of sales, set per grower, or as a flat fee per item). * Pricing is flexible. Growers set their own prices. The market can tack on a surcharge for each item. The customer sees the total of the two. The Grower gets the sales price, minus any surcharge, minus any sales percentage. It’s hard to succinctly describe, but should be easy in practice. All of that is working as of right now. Here’s what I’m still working on: * Automatic sending of the availability email. Each week I send out an email to our customers with a little chatty news section followed by the complete listing of products for that week. They go to the website to place their orders, but they enjoy getting the email as a reminder. So, the new system will allow you to type the chatty news section through the weblog, and by checking a box it will email all your customers the weblog entry plus the product listing. * Ordering system. This should come online very soon, probably within a couple days. Customers can place their own orders, and market managers can place orders for customers unable to do so themselves. Confirmation emails go out to both the customer and the market manager. * Order processing. The market manager should be able to edit and adjust individual orders and individual items within the order. This includes price adjustments, credits, etc. * Grower harvest notification. The growers can see the orders for their products in real time through the website, but at the end of the ordering window, the website will automatically send emails out to the growers letting them know of the orders, what needs to be harvested, etc. * Label generation. Labels for each grower will be automatically generated as PDF documents formatted for printing to several standard Avery label sizes. The growers can print them on their own using their own printer (or the market manager can do it for them). * “Delivery Day” reports. PDFs will be created for processing grower drop-offs/pickups, invoices for the customer, and packing lists for those putting orders together. * After-pickup adjustments. Customer orders can be adjusted after the fact to account for rejections, shortages, credits, etc. * Minor stylesheet issues. Internet Explorer, always difficult for web designers to work with, is not displaying some pages as nicely as it should. This is particularly true of the photo galleries. I’ll fix that. And that about sums it up. You can see what we’ve done with our market at http://athens.locallygrown.net – feel free to look around, “tour” our member farms (They’re used to me doing everything for them, but I’m walking them through uploading photos, etc.), and browse our product listings. Some other markets have already begun putting their markets together using what I have in place so far. Cumberland Co-op in Tennessee is the farthest along – you can find their site at http://sewanee.locallygrown.net Feel free to create a site for your market to get the ball rolling and see for yourself how it works. Just go to http://www.locallygrown.net and click on “Our Markets” to get started. And as always, if you have any questions, feature requests, etc., please let me know. Over the last five years I’ve seen how our system has revolutionized marketing for small growers and farmers markets in general in our area, and I know it can do the same for yours.
-
The LocallyGrown.net model
Oct 23, 2006 - 4 min read
What are the characteristics of a LocallyGrown.net farmers’ market? The produce is local to the market. Every market may have a different idea of what that means. For our market in Athens, GA, nothing comes from further away than about 100 miles. The system won’t prevent you from selling something that traveled 1000 miles, but that goes against what I’m trying to accomplish here. The growers set their own prices. The system is meant to emulate many aspects of a traditional “booths and tables†farmers’ market. The customers are buying directly from the grower, at prices set by the grower. The grower describes what it available, supplies photos of the items, and sets the purchase price. The customer has choices. Just like at a traditional farmers’ market, the customer can browse everything that is available from all of the different growers. The customer can choose exactly what to buy, how much to buy, and from what grower to buy. The customer has time to decide. Unlike a traditional market that may be only open for a couple hours (with all the good stuff gone soon after opening), LocallyGrown.net markets are usually open for business for two days—long enough to fully browse the site and plan menus for the week. Availability is flexible. The growers estimate how much of each item that will be able to harvest a week ahead of time. This takes both skill and practice. Even so, unpredictable factors—such as whether or not it is sunny on a Wednesday morning—can make the difference between having a bumper crop or a very small harvest. So, the site will allow customers to keep on ordering an item even if sales have passed the estimated availability. The item might not be there when the order is put together, but then again, it just might be. The produce is harvested to order. After the ordering window has closed, the growers are notified of all of their orders for the week. They usually have a day or so to go out and harvest exactly what was ordered, package it, and deliver to the pick-up site. The produce is not coming off from a shelf somewhere, but is coming straight from the field to the customer. Of course, this doesn’t apply for some items. Garlic, for example, is often cured for a while before sale. Jams and other preserves may be made in batches. Honey is processed seasonally and then stored. Soap is made in batches. You get the idea, but most things will indeed be harvested to order. Payment is taken when the orders are picked up. Most markets will have a set time and location for customers to pick up their orders. Payment is not made in advance through the website but is instead made in person when the order is picked up. This is because adjusting the amount owed for an order will be a common occurrence. Maybe something ran short due to bad weather, or maybe there were extra items available on the table when the customer arrived, or maybe the grower decided to adjust the price down at the last minute to account for an imperfection. In any case, it is much easier to do this in person rather than going back and trying to issue credits and adjustments through the website. One aspect to this, however, is that if a customer places an order but for whatever reason does not arrive to pick it up, the customer is still responsible for paying for that order. Since everything is harvested to order, the growers still had to work to put the order together, and should therefor still get paid for that effort. That is what makes a LocallyGrown.net market. There are other details on how the site works, but in a nutshell, that is what sets our markets apart from buying clubs, CSAs, and traditional farmers’ markets. Over five years in Athens, GA, the system evolved that included the best points from all of those while minimizing the downsides for the customers, the growers, and the community. FromThe LocallyGrown.net Weblog, now making its first public appearance. Don’t Slashdot it yet though – it’s not quite ready for the masses.
-
Locally Grown Update
Oct 16, 2006 - 1 min read
I’m making some serious strides in my efforts to let other groups painlessly replicate the farmers’ coop we have here. I’ve more or less finished the part that lets one create a new online market (including a weblog, FAQ section, and photo gallery), lets growers join the market (and fully describe their farm, including a photo gallery), and lets customers register at the market. To do is the (rather sizable) task of letting the growers list their wares, the customers to place orders, and the backend to process the orders. But, I’m right on schedule. Here’s a video that was shot during a market pickup last season by Georgia Organics that describes what we do and why other communities will want to follow in our footsteps:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177