Today's my last day as an employee at my job of 6 years. I'll become a consultant starting Monday so if they need me, it'll be hourly billing. I'm just reviewing my emails today and reassigning my regular responsibilities.
I'll be consulting for my current job itself. Voluntarily going from fixed salary to hourly consulting gig. No daily responsibility, fewer hours, much higher hourly pay. I'm pretty certain I'll end up being significantly more productive because I will get to pick my own projects and not have to deal with meetings, obligations, or personal issues with coworkers. I'm giving up a double-sized corner office at a growing company but I'm getting my time and desire to code back.
Yes, but these will be billable meetings that will result in actual product. Previously, it was meetings that took away time from coding and was instead wasted dealing with typical office conflicts.
Awesome. Congrats to both of you! I just "took the plunge" about a month ago!
One piece of advice: take a second to enjoy the day and eachother. If yours is a surprise like mine was, it's easy to get lost in the nervousness/planning.
I am working on stuffing my face with burgers and chips prior to going back to the land of noodles and raw fish. Plus customer support emails, since birthdays and bridal showers don't stop just because I am on vacation.
I would be interested to know how much time you spend doing customer support; or, rather, whether you have tried to automate any of this using existing tools (like getsatisfaction, or even just a faq). Or since - as you have written in the past - your customers are not particularly techno-savvy, are these tools of limited use to you, and emails are the only way to go? This might be of interest to companies with similar customers.
I spend between 0 and 20 minutes a day on customer support for BCC, with most days (particularly in the summer) closer to zero.
Previously I used something which macroed responses (20% of the issues are 80% of the time, always) but I forgot to reinstall it, and support these days is fast enough that I don't really care enough to install it again.
My biggest tricks for decreasing the number are a) switching to a web app versus a downloadable app (< 10% the support burden, seriously), b) aggressively rewriting anything I need to on the interface to answer common questions before they arrive in my inbox, and c) optimizing the admin controls for common support queries.
I have a support page ("FAQ? Is that Arabic?") and some self-help support tools, like a password reminder system and a Registration Key lookup. (Support issue #1 for four years running.) My impression is that they help enough to justify creating them, but they're palliatives rather than solutions. I have no desire to use GetSatisfaction or any other third party which will confuse my customers to no positive purpose.
Working on redesigning Notifo's website. I started by nuking all the css from the last design, removing divs I didn't like, reorganizing the site with a page div, some wrappers for header and footer so I could stretch them out 100%. Worked on the logo a bit to get a slicker look that blended in with the background, in addition to a subtle letterpress effect.
I still have lots left to redesign in terms of content pages, in addition to adding a few new sections to the site but I've been tinkering around with some typography recently. I really want to use TypeKit but last night Chad and I found that - possibly related - scrolling on the site is incredibly slow when TypeKit is enabled than when it's not, or when using a Google WebFont instead.
Using lots of CSS3 throughout - combined with Sass it makes it super easy. for example, my box-shadow mixin:
It's late evening at the moment, and tomorrow is the birthday party for one of my boys; a Pirate Party, arrrr.
At the moment I'm cutting out eyepatches so we can play pin the eyepatch on the pirate. Next up I've been assigned to draw treasure maps. Should be a fun day
Well... I took the entire week off from my day job, so I could work on my startup project.
Some background: My stuff is all open-source, and I'd been working on it under a name that I'd picked out 2+ years ago. But development had kinda stalled out a while back, and I'd never aggressively promoted the project and tried to solicit much outside help. So I started working on it hard again earlier this year, but changed directions fairly substantially. Switched to coding in Groovy/Grails at the same time, and have made tremendous progress.
What I've done this week:
1. Write a pile of Groovy code, making fixes and tweaks to the actual project.
2. Renamed the open-source project, and started moving the development from java.net to a combination of Google Code and GitHub.
3. Spun up two new slices at Slicehost, and started building two new servers: One for infrastructure "stuff" (Bugzilla, Hudson, etc.) and one for a demo site where the public demo will live.
4. Started working on the "Community" section of my company website, which will contain information about the open-source side of things. I'm setting up something similar to the what JBoss has; with their site divided into "JBoss.com" and "JBoss.org" where the .org site is aimed towards developers and users of the open-source code
5. Need to rewrite all of the copy on the company website to reflect the new focus. I'm basically reusing a company name and domain I'd setup to use for doing consulting / freelance development... so the website talks about all of that, instead of the product I'm working on.
The goal is to have all of the code moved to Google Code / GitHub, have the public demo up and running, have Bugzilla installed and setup, and have all the new website copy done, before I go back to work on Monday.
Creating a PHP application for my employer that will allow us to deploy small 5 page websites for clients quicker than ever. We found we had to turn down a lot of jobs because the money didn't add up to the time required, but this will fix that issue.
Something I do for fun. Children's stories.
I need to update the site, but yeah I am behind as I have been really busy on my job. It should say "September" or better, "sometime soon..." :P
I am the opposite, I am starting my gig on Monday and getting ready for it. 2 laptops 1 guy, and an exercise ball. The label is "CTO" but the job description is "make someone's dream come true, on time and under budget". Back to the grind, Skype, GotoMeeting, blackberry, and a 45 minute commute to Reston, initially 6-days/wk.
On the plus side, I have 8-devs and 2 graphic designers. Fun times! :-D
Working on a Silverlight app for my employer. I inherited this app from previous contractors and some of the stuff they did is pretty scary, so last night was the tipping point and I've decided to start ripping out all the bad stuff.
I'm also torn on Silverlight in general and seriously considering rewriting the app from scratch in an HTML framework (debating between Rails and ASP.NET MVC, even if that debate may seem like a silly one to some :) )
I totally have the flexibility in that if I showed up with a Rails version of the app my boss would be all for it. But I don't have the flexibility to do it on company time. I am currently studying Rails 3 and getting a feel for how long I think it'd take to do this. I think a clean, well written Rails version of the app would make my life so much easier in the long run.
Silverlight is an interesting beast. All in all I am finding it feels like writing a webapp in C# and a very strange "version" of HTML :) Especially when you use the Navigation Framework, the app becomes so website like it's ridiculous. I hate to think Microsoft wasted all that money, but I'm having a hard time coming up with Silverlight's strengths. Especially considering we are having issues with the Mac plugin, the promise of "write once" seems to not be met either. Granted it's two plugins versus half a dozen browsers (we don't support Moonlight at all), but still, if I'm going to be fighting how different platforms render my app, I might as well take advantage of the most ubiquitous and open platform there is.
I can admit XAML was well conceived for layout flexibility and visual effects. But at the end of the day, that benefit is so small it's hardly worth considering.
What's wrong with Silverlight? Just curious about your experience. I'm doing ASP.NET web forms at work and would much rather use Silverlight for a few things.
There's not that much "wrong" with Silverlight. But I honestly can't find much "right" with it either. It just feels like Microsoft forked off and created this new platform that at the end of the day doesn't offer much benefit over HTML/JS/CSS. Granted, MS started Silverlight well before HTML5 started coming into form.
Absolutely, C# is far more pleasant than JS and XAML is a nice alternative to HTML+CSS. All in all XAML was well thought out IMO. And since I'm knee deep in Silverlight right now, it's easy to forget how frustrating HTML/CSS/JS can be across all browsers. It's also easy to forget how difficult it is to test JavaScript code.
My problems with Silverlight are:
-- I really don't think it's going to become a dominate player, making my investment in Silverlight skills not nearly as effective as if I had taken this time to continue brushing up on my webapp abilities.
-- It has its own CLR, making a lot of the .NET tool stack incompatible. There is still not an ideal way to test Silverlight components and especially no ideal way to integrate tests into your build tools. Silverlight is waaaaaaay behind here. There is a lot of people out there trying to solve this problem, but so far all the solutions (I've tried most of them) have serious drawbacks. Jeff Wilcox's Silverlight test framework is the best one so far, but it's very slow, cumbersome and buggy.
-- Silverlight is incompatible with mobile devices. I have no hope of ever making this app work on the iPhone, Android or Blackberries. I suppose there is hope it will work on a Windows 7 Phone, but that's not enough. My Boss doesn't think this will ever matter to us, I'm not so sure. If we ever do decide we want a mobile version of our app, then at least the frontend of it will have to be completely rewritten from scratch.
-- Absolutely everything in Silverlight is asynchronous. This isn't a real problem, per se, and is a good boon sometimes, but there are times when it's a pain in the butt.
-- We have found the Mac Silverlight plugin and the PC Silverlight plugins have significant differences. Currently our app has serious flicker issues when ran on a Mac. We're not doing anything hacky, home brew, anything like that. The stuff that looks bad on the Mac is pure Silverlight code the way Silverlight was intended to work. I simply think the Mac plugin has more bugs and is a lower priority. I have no idea where Moonlight stands, but I have a feeling similar issues would occur. If I have to fight to get my app to run across all Silverlight plugins adequately, then IMO a major selling point of Silverlight is gone and I might as well just use HTML and fight to get it to to work across all browsers. At least dealing with browser issues is a common problem with a lot of solutions out there (a framework like Rails will even hide a lot of it). Dealing with Silverlight plugin issues? My only resource is the Silverlight forums and Microsoft Connect. I'm not nearly as hopeful there.
-- We are forced to use the Microsoft stack. Yes you can host a XAP file in Apache on Linux, no problem. But if your Silverlight app needs to work with data, there's a very good chance you are going to choose WCF RIA Services (which we did). Bam, use IIS to host the app now or take the gamble with Mono. Not a gamble I want to take. I much prefer Apache over IIS.
-- And ultimately, my real problem is as I write this app I just don't see any huge compelling features of Silverlight that makes all this worth it. Just about anything Silverlight can do, an equivalent modern webapp can do as well. Yes Silverlight does allow you to do this from the comforts of Visual Studio, C#, Blend and XAML. Much nicer waters to swim in than JS, without a doubt. But I just don't think I care. I think I'd rather deal with the current state of HTML/JS/CSS and end up with an app that potentially could be used on any device (within reason), can be hosted in Apache running on Linux, and can be a far lighter experience for the end user to boot.
I'm doing a Silverlight app as well (project management/code editor tool--does it sound like a solved problem? Why, yes, it is!). I concur with much that has been written, but here's a few other comments...
If you are working with RIA/WCF Services and the Entity Framework, if your app isn't straight up CRUD, data access gets a bit kludgey really quickly. The asynchronous calls from the client don't help.
I also agree with another comment that points out that there is little that Silverlight can do that a good JS-driven UI can't. We grudgingly moved to Silverlight because it allowed some degree of interoperability with our main product (which runs on PDAs and tablet PCs--data collection devices)--the web app will allow users to build UI flows for the devices, and thus we can use the controls already defined for the devices in the Silverlight app. I suppose that's one on of the selling points of XAML, but I haven't done enough work on the UI to make an informed decision about it.
My experience with Silverlight has been different. I like it enough that I'm actively looking for a full time Silverlight job now.
-- HTML/CSS/JS cross browser issues are a huge problem. As a web dev I waste an INSANE amount of time dealing with them. Silverlight solves that issue (I've never seen the mac issues you spoke about though).
-- Javascript debugging is horrible. Firebug helps but it's not even close to using Visual Studio to step through a problem.
-- C# is a great language. I can use Ruby/Python/F# as well. The backend and the UI can both be developed in the same language.
-- It's a stateful environment. This one takes a mindset change but makes life so much easier than a stateless webapp. This one is huge IMHO.
-- XAML and the layout/databinding system are awesome. I don't need a phd in css and a pile of hacks to make a complex layout. Efficient and elegant layout are huge for productivity.
-- I like to unit test and it allows me to do model-view-viewmodel. Almost everything I write is testable and it feels elegant.
-- It's easy to make apps look good. The styling system is well done.
-- It's easy for ux challenged folks to make some decent looking animations and real ux guys can seriously impress. The animation system is awesome and Blend is a great tool for ux. The ux and animation support in Silverlight is something traditional webapps can't do.
Microsoft as a company deserves the bashing that it gets but it's developer division is top notch. Silverlight/WPF and the tooling to support it have a good lead on everyone else. I don't know that Silverlight will become a dominant player but I do think that people are underestimating windows phone. Silverlight/XNA are better than what Apple/Google are offering for mobile development. I also have a feeling that you'll see Silverlight on Android before long. Apple is going to be peering over there walls as Microsoft and Google pull away.
> I like to unit test and it allows me to do model-view-viewmodel. Almost everything I write is testable and it feels elegant.
What are you using for testing? How well does it integrate with Visual Studio, how easy is it to debug a test, and how well does it integrate with your build tools? Silverlight's lack of proper testing environments is one of the biggest strikes I have against it. I'd love to rectify that.
I'm using Visual Studio unit tests (mstest) to test my viewmodels. Nunit would work too. I use model-view-viewmodel so I have very little (or no) code in the codebehind. If you want to take testing further look at the silverlight unit test framework in the silverlight toolkit. I haven't tried that but it seems to get updated with every version of the toolkit.
I like C# but XAML drives me nuts. Getting binding to work is like pulling teeth. I've taken to prototyping stuff in Flex because MXML binding is ridiculously simpler, although there's a bunch of C# stuff I'd love to get back...
I dislike what INotifyPropertyChanged imposes on my code. I also hate that faulty binding can't be found at compile time, but that might be expecting too much. I also dislike how binding is all or nothing, this isn't possible Text="{Binding PercentageOfFailure}%" But that also might be asking too much and even the idea that my view model should be formatting my data is a valid one.
That's why I like binding in Flex -- making something bindable is as simple as plopping [Bindable] in front of it. And binding also isn't all or nothing, you can easily do something like text="{loan.interestRate}%". It also has code completion for anything you put in the binding, although not quite as robust as elsewhere.
Flex 4 is pretty interesting -- they separated layout from the core of container components. So for example in XAML you have Grid, Canvas, Stack, etc. In Flex 4 you just have Group, which then has a layout property -- there's a few basic ones like basic(canvas) vertical, horizontal, and tile, but you can easily code your own... and then switch them on the fly.
Flex is basically a really damn good system for UI coding and design, but the ActionScript that backs it up is pretty weak compared to C#. If I could mix C# with MXML I would be in coding heaven...
Fixing my son's newly bought second-hand bike. This is probably his last intermediate bike until I can buy him a brand new adult-size bike that will accompany him after that.
The rear wheel seems to be quite badly out of alignment. Part of it is bent to one side for about 1 cm and after fixing that down to 1 mm or less by trimming the spokes, there's still considerable vertical misalignment left.
Due to the horizontal misalignment the spokes and nipples don't have equally distributed configuration reserve, so it's pretty difficult to compensate against the slightly oval shape of the rim. While it's fun to fix things, I think I'll just go for a new wheel.
Other than that, the bike was a good find. The power transmission was in good shape (chains and gears ok, the derailleur and the gear changer work ok, ball bearings are ok) and it worked out of the box. I only replaced one braking cable and repainted one section of the body, and I think I'll go with that. Oh, I paid 15€ for it, and the good old ones are of a ten-fold better make than the cheapest bikes you can buy new.
That was last week for me. You have my utmost sympathy, but at least you can browse HN in the meantime. I was once stuck doing that without anything to read and no browsing capabilities. It was mindnumbing, but I was at least being paid.
Learning OpenGL ES (and computer graphics concepts in general for that matter) while trying to make a 3D iPhone game for my graphics class this summer.
Trying to figure out how to get my mom out of these cash advance schemes and chronic overdrafts due to her lack of understanding of how banking works. Then reworking her finances into something manageable so she can manage to buy groceries.
Got some google maps integration going for one of my web app ideas this morning while on the train. Hoping to knock out the remaining stuff on the way home.
What am I not working on? Anything related to my day job, even though I'm at the office while I type this.
Starting to get the word out for GISQuery.com, a Q&A site for GIS professionals using OSQA. Having an interesting time getting the word out on this one since I need participation for the site to grow.
Learning CodeIngniter as a PHP framework to help get a few other ideas off the ground (a revamped 140Pl.us and a new beer website). I am getting tired of trying to build highly functioning sites from scratch so I thought I'd try a framework.
Why create this site when a GIS site is quickly approaching beta on stack exchange. I'd imagine most people would use that site over GISQuery.com, and the quality of Q&A sites is directly related to the size of the community.
This is a good question. I think StackOverflow is great for what it is, but I think the success has come from the founders being rooted in the topic at hand.
Now that StackExchange has changed its view and are attempting to start other topics in the same vain, I feel that there is room for someone more invested in the topic to moderate a Q&A type website. I have no fear that the "Web Applications" "Gaming" and "Pro Webmasters" topics are going to work great, but I am interested to see how "Food and Cooking" is going to go.
Also, I am a big proponent of letting the website try and live. The GIS StackExchange committal project has been going on for almost a month and it's only at 81% there. Hopefully my connections in the GIS world can get GISQuery more than 500 people interested in it.
I'd be curious to hear what you think of CodeIgniter, I have heard good things. We've been using CakePHP for about 3 years now, and would highly recommend it as a general purpose PHP framework.
I used CakePHP for a small project about a year and a half ago. I was totally frustrated by the lack of accurate up-to-date documentation and tutorials. Granted, it was my first time working with MVC, but a few months later I went to RoR and picked it up in no time flat.
Have the docs and tutorials improved at all for Cake?
I am not going to lie, I chose CodeIgniter over CakePHP because I found some cool video tutorials on CodeIgniter the day I was most interested and went from there. So far, I like it; but, that might just be liking the MVC model.
Codeigniter is great, I have built small micro cms setups and large, advanced apps with it, and it's been easy to use every step of the way. Forums are good, docs are great, lightweight.
I like symfony as well but as of late I've found several things in the documentation to be segmented - such that you need to read around in several parts to find the secret recipe that actually works. I'm planning to contribute to the docs soon hopefully but with a brand new baby boy I haven't had a tremendous amount of time.
I've discovered Kohana recently and it looks promising and the only HMVC Framework I know. As for the Symfony doc, I think it is wonderful ... offering free online books is one of the main reason for its popularity.
Today I released my three-day project "I Write Like". You paste some text, it analyzes it and tells you what famous writer you write like. Link: http://iwl.me
I just spent about 15 minutes messing around with this. Very neat. I then made the unfortunate decision to show it to my girlfriend, who is now angry at me that it said she writes like Dan Brown.
I'd be curious to know how large the pool of authors is.
This is a lot of fun but the great variety of results I received left me without any sense of who I may actually write like. I analyzed a series of correspondence, all written within several weeks, and similar in tone, and I was told that I write like: Dan Brown, James Joyce, Isaac Asimov, Stephen King and Douglas Adams. Anyway, I love the concept. Please add Robert Louis Stevenson (Strange Case) to your collection. Thank you for the narcissistic pleasure :D
Cool. A couple suggestions: When you get your result, make the name clickable, and go to some sensible place, like a Wikipedia page, or such. Also, to be able to see a listing of all possible names, and perhaps a few stats (how many people get each name as a result, etc.) would be cool. :)
Nice idea. I'd be intrigued to know what features of the writing (other than vocabulary) you're comparing. [some advanced work in this area, plus a perfect UI, could be a really interesting project to work on, and something you could sell]
It is a fun app. It mostly said I write like Issac Assimov except when I gave it a bunch of python code it said I write like Edgar Allen Poe. I guess this is a clear signal that I should drastically improve my Python programming skills.
Ha, I had an idea for an easter egg that would tell you that you write like Guido van Rossum if you put some Python code there, but decided against it to avoid false positives :-)
The same thing I do every day, try to take over the world---okay, not really, currently work on SWIX, working on updating some payments stuff, and setting up redis to prototype some new features.
Some feedback: the stick figures are slightly confusing. It took me 10 seconds before I figured out they weren't talking on the phone while hunched over on a seat.
The REPL and debugger for GNU Guile, an implementation of Scheme. I'm trying to integrate the two, so when you get an error, you're just dropped into a new recursive REPL that happens to have a debugger too, so you can inspect the stack from there.
Stayed up all night chatting politics with a friend in SF to preempt jetlag from flying to Poland, proceeded to fly to Poland, slept on plane 1/2, fixed niggly bug on plane 2/2, touched down in Warsaw, went to the Chopin museum, had some vegan pierogis. Now shipping three updates and heading to bed lamely early on a Friday night as said preemptive jetlag strike was only marginally successful.
An Android app that turns the phone into a simple SMS gateway, allowing you to deploy SMS apps anywhere in the world the phone works (without having to install complex hardware/software, deal with service providers etc)
>Is it for people with phones who can sms but aren't able to get on the internet?
That's correct. There are millions, perhaps billions of these, especially in developing regions. They don't own computers or modern phones, but they do have simple cellphones with SMS capability.
From the developer's side, deploying an SMS based service - esp in places with no TextMarks etc support - is significantly harder than just launching a website. You need to either get access to the cell provider's SMS gateway (often requires money/connections) or set up your own cell modem/phone connected to a server running SMS gateway software (non trivial - NGOs sometimes fly devs in just to set it up).
This project allows you to replace all this with just an Android phone with this app installed.
Well, hopefully. Haven't been field tested yet... If anyone wants to beta test this on some non-mission critical SMS app I'd love to work with you.
Today I am recovering from my first actual mixed martial arts class. My wife and I (recently reconciled, if you're following my posts) went, and she learned her first jab, (vicious) right cross, uppercut, left hook, front kick, body kick, armbar, rear naked choke and a kimura that's still got my arm a little weak.
I used to train in a number of martial arts like, 20 years ago, but now I'm 33, about 25-30 pounds overweight, and VERY out of shape, and decided to jump back in 100%.
Joined a Team Lloyd Irvin dojo (Ivey League MMA) and did the MMA basics course, which nearly killed me during the warm up, but I and my wife kept going through the entire class.
We'll be going back Saturday, and my 8 year old daughter is enrolled as well after watching the other kids enjoy kicking the snot out of the instructors.
Thanks! Moving into contracting has been sort of a revelation for me. I'm working where I want to, when I want to, and—as long as I can respond to my clients in a reasonable timeframe—when I want to.
The only 'downside' is that I don't know if I could ever go back into a traditional corporate environment at this point.
I had a really similar experience after I quit my corporate job. As a lot of people here have noted before, it's a lot easier to get into the startup mentality if you've left the corporate world and contracting works for you.
I took the theme, converted it into Haml and SCSS, and slapped it on top of a Rails app.
It also manages my client proposals. I'm planning on adding time tracking, invoicing, and other features I need to manage client accounts sometime in future (Basecamp integration, LH integration, etc.). I might end up turning it into a SaaS product down the road. Not sure yet.
I hate getting nickeled and dimed by 37Signals, Proposable, Blinksale, and all of the other SaaS products I need to use, and would rather have everything integrated into a single stack.
1. Improved my stock trading environment. I moved into active trading of leveraged ETFs recently(FAS and FAZ regularly move 4% or more in a day, opening the possibility of a living income even on a modest portfolio), and I was using the E*Trade web interface, but it had some nasty limitations and glitches, so I finally bit the bullet and moved up to their $100/mo "Pro" system, which has the arsenal of charting tools I was looking for.
2. Worked on the lexer for my scripting language project. It's all hand-rolled because that's how I've always done it - and I stick to simple syntax anyway. I'm actually doing this because I'm stalling a bit on the runtime model. I've established most of the core ideas for that, but not having done something so complex before, it's easier to nibble away at the edges that I understand first.
Working on polishing a new WordPress theme. I am not a designer per se, but it is very difficult to come across simple and neat themes for websites. So I designed one for myself and now I am giving it away as a free theme.
I always wanted to do more things with him. He thought he'd never would see the cabin again, but this will be his final trip up there. I'm going to spend some days, breathing in mountain air and doing some thinking.
Same project I've been working on for the better part of 3 months, unfortunately: a web based chat using GWT to replace a flash based one. The primary reasons are: we wanted to control the source code and remove dependecy on third-party products and becase we want the chat to work on iPad so flash is out.
Running into tons of stumbling blocks primarily around keeping the app near realtime and stable. It's GWT on the front-end, but .NET webservices on the backend. The existing flash based system has a custom server service and periodically dumps logs into SQL Server. We started off trying to write directly to SQL with our version but it wasn't fast enough and we were running into too many contention issues. Now we're throwing Memcached in the middle and it's much faster, but we're not entirely out of the woods.
I'm thoroughly convinced HTTP just shouldn't be used for chat applications.
The client interface is up to you, but no need to re-invent the serverside part:
From http://xmpp.org/extensions/xep-0124.html
This specification defines a transport protocol that emulates the semantics of a long-lived, bidirectional TCP connection between two entities (such as a client and a server) by efficiently using multiple synchronous HTTP request/response pairs without requiring the use of frequent polling or chunked responses.
Drop in an existing XMPP chat server (or write your own if you must) and you should be good to go. A lot of high-volume sites are using this implementation for their web-based chat services.
As an aside: If you're not willing to make that substantial kind of change to your system at this point, I would at least recommend basing your messaging system on something that's designed to do it (i.e. a message queue) as opposed to a relational database. RabbitMQ has had quite good reviews from what I've seen, with clustering and persistence available.
That's a good question. I suppose it's because even with Memcached taking the load off the database, we still have other issues. For example, because we're dealing with stateless connections here, it's hard to know if a client is still connected to the chat. We're polling from the client to the webservice every few seconds to 'pull' new messages and also tell the server, "Hey, I'm still alive". In order to determine if the client has left we have to monitor the polling to see if there are gaps in the poll times. Some gaps are allowed of course, because of slower connections or connection timeouts, so it gets a little tricky trying to determine if a client is still on the other end. I attribute that to HTTP, but maybe it isn't entirely to blame. If we were dealing with sockets directly, I would know the client is disconnected as soon as the connection was terminated.
To get new messages, you could simply use long polling so it becomes push instead of pull. For checking if the user is online (I'm assuming your clients are running in web browsers), you can use the onbeforeunload to send a HTTP request that the user is leaving. Of course, you still have to poll at regular intervals because the user might have put his computer to sleep which wouldn't trigger onbeforeunload but your interval can now even be as high as 60 seconds because most clients will trigger onbeforeunload.
I did this at the end of 2008. Try adding the fact that the chat service was on a different domain and they wanted to use it like a web service doing cross domain requests WITHOUT Flash.
Client side image resizing for an image uploader, part of a larger web app build. Saves a ton of time/bandwidth/CPU. So far its turned really well.
Its pretty easy actually, thanks to the most recent beta of SWFUpload. If you want to implement yourself, make sure to grab the patched .swf or you may have trouble queueing uploads.
Answering support mails, thinking how to scale app to at least 1000 simultaneous connections, preparing presentation to brief Forrester, contacted some more bloggers, watched Mixergy interview on how to sell to Fortune 500 companies, finalizing on new feature: test result segmentation.
I am working on an open source automated testing framework called aost tellurium....trying to figure how to record the structure of a popup window. A link to the project: http://code.google.com/p/aost/
a hacker news rss filter written in haskell that uses redis to store feed information.
i've found a few filters that are like "only show feeditems which have 10+ votes" etc. I'm going for something a little more complicated - most popular n posts by hour, day, week and month.
Basically, seeing the Top 'N' posts for a given time period. Like a digest of the Top 20 posts for the previous 24 hours delivered by email or RSS. I want an option to retrieve some/all of the comments for these stories as well.
Does something like this exist already? RSS is not an optimal delivery method for crowd sourced news sites like HN, Reddit, etc.
yeah basically you want some sort of digest, unfortunately weekly is often too slow to contribute, so dayly is pretty good. I personally don't mind if its done via rss.
Today I am trying to crunch 3 years of failed maintenance on a lab of 24 machines into a single day.
None of which were even registered on the domain!
Updating group policy information, pointing the machines to the WSUS server, installing updated antivirus, installing new DeepFreeze client-- tedious work that should have been done by previous techs/admins-- so I'm cleaning up a mess.
This will be my summer. Get this school ironed out before the students come back.
Oh, and I'm learning Python in-between-- it's that structured procrastination thing. :)
What possessed me to try and tackle this on a per-machine basis? Why did I not just image one and roll it out? I wouldn't have time for HN and coding! :)
Work: Tuesday, international flight to a customer to gather requirements for new product version - enough work for a year. Thursday, try to integrate WordPress and Facebook Connect and curse loudly - the architects who return either a userID or a WP_Error object and the plugin writers who just (int) $result without checking if it's an error.
Free time: reverse engineering a C++ game and extending it. http://img180.imageshack.us/img180/9215/devenv.png - IDA to rev/eng it, Eclipse C++ with a custom build tool to compile, Rose Tyler background just because.
Last night, I set up IMAP, TLS/SSL, and webmail on a server for myself, to liberate myself from third parties (i.e. GMail) having a searchable corpus of my email history.
In addition to that, I recently adjusted my fork of RVM[1] to work with Gentoo again (installed and managed systemwide as root, with users read-only).
Also, for the past week or two, I've been helping with RDBI[2], a new project aiming to be to database access what Rack is to web servers and web frameworks.
Today I am working on my strategic procrastination project - an Android game. I got bored with my regular project, a Data Deduplication file system, and decided to have some fun with learning Android development.
I had a bit of inspiration a couple nights ago and decided to rework an old abandoned project and turn it into a service.
It's an automated crash logging thing that will collect info from your webapp every time it throws, ball it up and send it off to an API at our site. Then, on a schedule, we'll hit your site with the exact HTTP Request that broke it the first time.
So yeah, I'm hoping to get it "Show HN"-able inside of a week. The collection API is working, as is the regression piece. All it needs is some pretty reports and a bunch of documentation.
Work: Finished some batch jobs and starting a new semi-interesting web project. It'll be a welcome change from the boring admin/infrastructure stuff I've been doing :)
I was working on this till 2am San Francisco time, so I guess technically it was today.
I started writing a Node.js client to consume the EVE-online api. They have no json support, so it means eating XML. I was able to plug in node-xml(http://github.com/robrighter/node-xml) and start getting usable data from the xml right before bedtime, so I consider that a short-term goal accomplished.
Trying several approaches to get a screenshot of a known rect on the screen that has a flash video in it (that is loaded from an external site) with the click of a button and then save/stream the resulting image to a PHP script to be saved to the server. The end users are not very technically savvy so teaching them Jing or even image cropping is out of the question. Currently experimenting with Flash and Java appplet solutions.
I'm working on automating slang term variant creation on OnlineSlangDictionary.com . For example, making the main entry "blow (one) away" also available under
blow him away
blow her away
blow them away
etc.
It's an unfortunate tax I have to pay to search engines. Luckily it'll pay off additionally when I switch from Google Custom Search to a real custom search solution, and it'll be useful for a few upcoming special projects.
Are you using any parsing tools? Like the stanford NLP?
Not yet. Right now it's just boring search-and-replace ("(one)" => "me", "you", "him", "her", ...) complicated by the fact that the site has a lot of moving parts. (I started it in 1996.)
I'll be looking into Stanford NLP, Python NLTK, etc. in the near future for the aforementioned "special projects".
I am currently developing an API for the stanford NLP so that other web apps can easily use that parsing and word tagging tool.
I'd be quite interested in that! Do you have a website / blog / some way we can keep up with your progress?
Cool website. I like the idea of the "where is this slang used" feature.
So my customer has a critical production database that was hit by excessive locking issue on a table that slowed everything to a halt. It looks like an abuse of existing feature, so I worked on collecting enough information to help the developers find the broken feature and abusing users.
This also seems to be impacting parts of the app that shouldn't be touching that table, and I'm trying to figure out why that is happening.
Trying to figure out some core animation tricks in order to be able to create fully customizable buttons/shapes on iPhone/iPad without the need to use PNGs.
I'm the biz cofounder at Timetric, so I've spent quite a bit of time on local and transatlantic phonecalls and taking meetings.
We're a really technical company, though; the three of us who founded it met as postdoc researchers doing materials simulation. That means we all can code, though my cofounders are way stronger than I am, but today I've got the chance to do some programming. Internal editorial-awareness tools, mostly.
Today I'm working on fleshing out some ideas for some business models for my startup, Syphir. Here's a pic of the desk in my bedroom, aka my development environment: http://img199.imageshack.us/img199/9176/developmentenvironme.... A lot of screen real estate, but today most of my work will be done with a pen and a pad :)
Porting all the JavaScript in our main web application (written years ago) over to jQuery so we can use some nifty plugins. Been working on it all week.
Spent the day chipping away at log analysis, but using it as an excuse to get my hands dirty with freebase and mongodb. Now it's evening. I'm sitting alone in the office, becoming more alert as the temperature drops, thinking about the open data movement. Drafting something that might become a blog-post or an article, but mainly just as a framework to get my head around it all, and figure out where I fit in.
I'm building an immutable filesystem of sorts on top of a distributed key-value store, and am about to benchmark Riak to see how it might fare (as the underlying key-value store). I'm also looking to do some visualization for execution tracing of a product using Simile Timeline, but I'm wrestling with incomplete documentation (the default DateTime resolution of 1 millisecond is not sufficient).
Producing a predictive model for student retention: aiming to assign a score to a student on whether or not a newly admitted student will complete their first semester through final semester (graduate).
Using SAS Enterprise Miner's various tools to compare a few different methods for producing the model.
Also fighting off some reporter who is desperate for open records data but unable to pay the $45 fee required for data access.
Got bored with real work so I'm working on a thing that prints Python tracebacks:
1) in colour
2) in colums, function | line num | file name
3) stripping file name directories
4) Only printing code line on the top N frames (because the rest is just noise).
There may be something like this already, but it's a good excuse to learn more about Python tracebacks.
Trying to convert some gnarly test fixtures into a Machinist file in JRuby on Rails. After that, 10% time, but probably still on test-related topics. If I don't think of anything that needs it more, installing Cucumber and getting it hooked up to our build server, so we can use it for testing.
This is all in JRuby, and my editor of choice is emacs.
Continuing work on my summer research project. I'm building a high-precision 3D scanner for meshing out dissected rat eyes in transgenic opthalmology studies. We've nearly got all the components talking and controlled and I'm also close to finishing the first parts of the de-noising and data analysis programs.
Trying to get Sign Inventory location data (stop signs, traffic lights, etc) from the city of Rockville, MD. So far it's a losing battle. Integrating TIGER data into my GIS the rest of the time (Geodjango is fun).
1) At a coffee shop revising mockups and finishing new design work for a client's business site. Adobe Fireworks or pure HTML\CSS, I hate Photoshop for web stuff.
2) Researching apartments\courses\requirements for Illinois Urbana-Champaign (Decided to go back to school for a CS degree, previously studied cog psych)
Telecom companies are great at hiding their cost structure. With just one company, I had a preliminary call, plus a conference call and I'm still waiting for their price sheet.
As far as my work is concerned, I'm doing quasi-issue-tracking that's tightly integrated with our IT platform. In Delphi, I shall add.
My side project is still in the conceptual phase, so I'll tell ypu this: I hope to add my entire town to OpenStreetMap by this summer. I've just started.
I'm working on methods for automatically identifying tokens that act as noise in a non-statistical text-classification system. I suspect the noise filter will end up looking a bit like a Bayesian classifier.
No screenshots today, but it's easy enough to find screenshots of Emacs+Slime.
Finishing touches (I hope!) to an automated aggregation & report system written in Perl which produces multiple excel files (group level) & PDF reports (sub-group level) using clients customer insight data which are sent to relevant stakeholders each week.
Today is my last day at work in Connecticut -- in two weeks I'll be moving to San Francisco and seeking a new position. (Anybody looking for a solid, well-rounded front-end guy who wants to dive into more stuff? I'm huge on detail and a quick learner.)
Writing btree_balance_split. If I manage to get that finished today, I'll move on to btree_balance_merge. I hope to have btree_balance finished by the end of the weekend, at which point I'll write btree_mutate and finally have a key-value store.
Finalizing a budget, Creating job postings, Ordering company signage, Helping plan a company trip, Fixing exceptions in a Ruby/Rails application, Mapping out an asynchronous cache proxy solution that speaks JMS, Riding on Amtrak for 3 hours
Sorry for the late reply. Yeah, this is for a more classic auction house.
It's called "open outcry", I think. The kind with an auctioneer, a room full of people with paddles and the object (or a photo of it) up front.
It's an English auction with a pre-defined bid ladder, and people can also pre-register with a maximum (hidden) bid, according to which the clerk will bid for them.
We are streaming their auctions online, and now they want people to be able to bid at home as well. Christie's (in England) already does this.
We think it might become a big deal when smaller auction houses in small towns can have this - today, the prices are not as high as they "should", since the market is local. If we can open it up, more people, and more knowledgeable people, will bid and more of the money will flow to the original seller (or so I think).
It's a fairly simple server on Tornado, which receives the bids etc and passes messages with long-polling, with a memcache backend for scaling.
Optimizing the map tile rendering stack for our mapping platform (http://www.cellmaps.com). Finding the right streets to render in the whole world. Needs to be faster.
Just fixed a semi-critical bug that allowed an invalid email address to be entered in and "try" to send (without any try/catch) thus crashing the application. The application has been live for several years. Doh!
I've been working on improving keytweet.com's algorithm. I develop our python code in idle on windows. The goal is increase the number of relevant results that are related to the popular topics in your feed.
Nice. Cash base is pretty cool. I really like the simplicity of the interface. Would be cool if it were tied to your credit card, so expenses get automatically displayed.
Thanks! Unfortunately, services like Mint work only in some countries, not in all. I live in Romania and I built CashBase for my personal needs, initially, since there aren't any Mint-like services available.
Looks like my morning is going to be figuring out the status of a few clients we have, afternoon is going to be hacking on one or more of them. Murphy willing I can work on GSOC this evening in peace.
A business proposal, a report on fisheries in France, a marketing plan, part of a grant proposal, some reviews for Amazon, a few blogs - and I'm going crazy ready to shoot a partridge in a pear tree.
Not to hijack, but setting up a local server (MAMP or XAMP) and building/breaking things has helped me in learning a few languages. Its worth a night to do it.
I'm readying up a Lisp to PHP compiler for release of the next version. Ideally it'll be done soon today while I add finishing touches to the website and do some final testing.
Finishing my dating app. Planning to launch for testing early next week. I know dating is a saturated market, but I'm trying to approach it on a different angle. Wish me luck!
Working on a custom AMI I put together for Amazon's EC2 that is designed specifically to power a rails framework I built. Having some fun with their EBS volumes, very useful.
Making user controls work in a MOSS 2007 Document library. So now front end people can just edit the control without re-building parts and re-deploying. It's actually fun :)
Automating AMI creation across all four Amazon regions so it can be part of continuous integration. Goal is to integrate continuous deployment with EC2 auto scaling groups.
Finishing first week (of eight) doing some fairly boring contract C# work (aggregating logs over low bandwidth to a webservice) to earn some money between university terms.
On vacation, during which time I usually refactor my timetables/strategies for the upcoming year (which I usually have to re-do after summer ends and I get serious again).
Creating config files for a universal report loader. Then hopefully deprecating the over 100 scripts which exist to do the same thing as the universal loader.
Finishing up a milestone build of an iPhone game for a client, and if I have any time in the day after that I'm going to keep digging into CouchDB/Couchrest.
Specializer which propagates argument types through a dynamically typed function and gives me back a statically typed one. Polyvariant type inference ftw.
oh, interesting. I wanted to use redis for log-parsing, but was scared by the prospect of keeping everything in ram. Ended up using mongodb instead, but I'd be interested to hear how you get on with redis.
If you know what stats you want to collect before parsing, the memory usage is very low. The most resource intensive part in this application is loading the filtered logs for all machines into a sorted set (which is necessary to get all the events in chronological order). That key is only temporary though.
That said, Redis 2.x supports virtual memory so it's less of a problem for a longer-term data-store.
Tokyo Tyrant is poorly documented, virtually unmaintained, and has a small community. In addition I've seen strange replication errors and locking when doing expensive operations.
As an alternative I needed something simple, resource efficient, well maintained (antirez is an excellent maintainer), documented, easily deployed, easily configured, and seemingly stable. It also needed to scale down to small virtual machines. Cassandra and MongoDB was evaluated, but drew the short straw.
My only complaint with Redis is its lack of features for high availability out of the box. Thankfully this is going to be addressed in the next release.