Filed under code

More Pelican, or how I learned to stop worrying and start developing with others.

Pelican 3.0 is almost out the door now. It's been great working on a "real" project with other developers for what is, in retrospect, the first time ever.

Some programmers I know would rather fork a project and trudge off into the snow with the code base, then fork off their own leg and write their way back before working on someone else's code; I think at some point I caught that same fever from someone close to me. I think the phrase tossed around was; "The only thing that is worse than someone else's code is working with someone else's code." The crazy part is, after actually working with other people on a project I wish I had done it earlier.

After fitting in to someone else's product and pitching my ideas and work into it instead of trying to run in it I almost don't want to go back. Not everything I've suggested flew, some things were downright rejected and other things had to be rethought to fit it all... but it was a great experience to have a driven goal and to contribute to it. Luckily the Pelican team is also small, awesome, and very supportive so I've found it downright pleasant to work with them... I realize that not every team is as friendly and constructive as the Pelican project has been but the concept of check and balances and the feedback alone is invaluable.

Yes, there is a part of me that wants to be the solo super programmer hacker that gets an idea and sits down to write the next program that becomes the next golden standard but we can't all be Linus and honestly, who wants to maintain that project into the ground? I'm not an amazing programmer, maybe someday I will be after lots of training. My programs work but without constant learning and challenges they aren't going to be written well.

While cleaning out little bugs and documenting things over several times may not be everyone's best use of time; I feel getting used to have to test everything, double think my commits, write tests for everything is important. Normally I can be a little lazy with my commit, get it in and test it after that... but I can't just do that with a bigger project. On a personal project you can quickly develop and learn bad habits. Working with a team forces good habits, or at least as good habits as the team itself.

For big professional life time programmers I am probably preaching to the choir. Term development, code review, and focused controlled projects with deadlines are vital to putting out great projects. For all those that have been playing the part of the antisocial developer, like I was, I really recommend finding a smaller project that you can help grow, getting in on the channel, and getting your team coding on... you will be shocked how great it can be to work on a project together once ego gets set aside.

The project has sidetracked several other of my side projects, but in one of the best ways possible considering the amount of joy and constructive knowledge and experience I think I am getting from it. I still plan on learning more languages, namely lisp… but right now I am juggling working on this project and studying reversing, one of my biggest interests for the future.

As a whole sidetrack to this whole post, I think that infosec is where I am going to steer my career and reversing and malware is my current big "interest". Even if I can't grok it enough to become a professional malware analyzer or software analyzer, learning some of the lowest levels of computing and programming will help me understand all the other facets of security and infrastructure that much better. Not that infrastructure management isn't a great career, but I don't feel it's really focusing me where I want to be long term. I have days where I really regret stepping up from Sr. Systems Admin.


A little thank you goes a long way

Things like this happen sometimes

[4:27 PM] <SnowLprd> tBunnyMan: Nice work on #389. I can see how that will come in handy. :^)
[4:27 PM] <tBunnyMan> Thanks!
[4:28 PM] <tBunnyMan> I really just wanted a 404 and 50x error that matched my theme... but making it more extensible helps everyone
[4:28 PM] <tBunnyMan> I just need to finish this test case for it when work stops being annoying
[4:29 PM] <SnowLprd> Nice of you to generalize it for everyone, despite only needing it yourself for 404/50x errors.
[4:29 PM] <SnowLprd> And the test will also be most welcome! \o/
[4:32 PM] <tBunnyMan> Pelican is fairly awesome IMO, I hope I can help tweak it into epic levels.
[4:34 PM] <SnowLprd> With contributions like yours, those levels will be here in short order. :D
[4:34 PM] <tBunnyMan> haha. I'm not that good ;p Thanks for the kind words
[4:35 PM] <tBunnyMan> Catch you around. It's time to travel
[4:35 PM] <SnowLprd> Every little bit counts!
[4:35 PM] <SnowLprd> Sounds good. Cheers!
[4:36 PM] <tBunnyMan> It does. It's why I love contributing little things to big projects.

All I really was trying to do is add a very quick and simple feature I needed. This was the response I got for it! The thing is, you would be shocked how infrequently I see something like this... It's this type of additude and behavior amongst developers that makes people WANT to work with eachother and help really grow a product.

I just wanted to post a little good will and show that some people rule. Expecially SnowLprd, kylef, bbinet, and doubly so alexis!


My Contribution to Calibre


When I bought my NOOK Simple Touch™ in January of this year I rediscovered calibre E-book management. While software always felt clunky in Mac OS X you could never deny it's power and sheer amazing once you got past the UI.

Being a big fan of ReadItLater I immediately tried to have the program pump my massive reading list into my Nook. To my dismay I discovered that the plugin was hardly complete. It piped my entire ~500 article1 reading list into a several megabytes large ebook and ordered articles from newest to oldest. Running the plugin a second time… produced the same results. It hadn't even the courtesy to mark articles as read.

After digging about I found a few "close enough but incomplete" and outdated solutions along side plenty of complaints. You can't blame Calibre, the massive project's maintainers likely don't use the service like I do of at all.


A python based open source project with something that I want improved? A bunny like me only can do one thing in a situation like this; reach back to grab one of my many 'cans', learn the API Documentation for recipes, and get my money out of PyCharm.

After a few days and learning more than just Calibre api2, I put out what I called ReadItLater V3 on to my github and reposted it to Calibre Recipes MobileRead Forums. Other people picked it up and I ended up adding a few extra features per requests

All was good with the world.


A few weeks ago Read It Later officially rebranded to Pocket. This prompted me to pull up Calibre and check my plugin was working… all clear. Then, since I like to cover my bases, I pulled up Mobile Reads and dug around… and that's when I found it.

Calibre merged my version into the official trunk3.

This invigorated me to put my all into the project. However, all I really managed was the branding, some code cleanup, and docs. Pocket wasn't ready to give out their new API to small beans like me. At one point during this Calibre devs merged in someone else's but quickly pushed my latest version once I completed it.

I find myself flattered to have my code and name, even my pseudonym, in such a prestigious python project. Some of my friends felt my accomplishment was mediocre at best but I reject the haters. I've actively contributed to widely used open source. I don't get a ton of warm fuzzies from my wins but this was one of those times. I'm still stoked as hell and hope that I can do it again.

  1. I should get my reading list under control. My situation with real books looks exactly the same way, stacks and stacks of the latest up read interests. I read plenty but the information overload fills the world; the challenge of sorting fluff from gold increases daily. 

  2. mechanize Browser and Beautiful Soup are now favorites in my toolbox of handling and scraping web content, something I do more than any bunny should. 

  3. While this link only shows one part of the merge I chose it because it showed when they merged in my name to the top. Eventually they replaced the whole thing with my version.