Facebook is private surveillance
I wont classify, I wont categorise and I won't tag, I will not create albums, I will just keep uploading everything everywhere. I will try face-detection with different people and my cat. You get the idea.
If enough people over use / abuse the fb with loads of insignificant info, FB's game will backfire.
Its the facial recognition that really creeps me out though, and the fact that cops always are recording cameras at community events and protests. Supplier meet consumer.
I believe that Mandrill etc give a better deliverability compared to SES.
Sendy uses SES to send the emails on our behalf - so far so good - we do a weekend update to about 1500 address (so far) and it's worked quite well.
Someday I'll script something to dumb the current user email list into sendy so I don't have to export it to csv and reimport it every weekend...
On reflection, the books I got the most out of that actually shaped my behaviour are...
THE PERSONAL MBA, JOSH KAUFMAN
Was blown away by this. Couldn't believe how much stuff I didn't know about. It covers everything you've asked about and more...
It's also written a bit like a Software Patterns/Recipes book, which I love.
I've read the MBA book about 5 times.
PITCH ANYTHING, OREN KLAFF
You'll hate reading it. It will make you cringe. It's uncomfortable.
But it changed my attitude to business, my products, and deals a LOT. Which is REALLY important.
Applying some of these techniques had amazing results in any dealings with 3rd parties (sales, partnerships, deals). That's because I'm a softie engineer, not a battle-hardened business man. I still read this before attending any significant meeting.
HOW TO BE THE LUCKIEST PERSON ALIVE, JAMES ALTUCHER
Covers everything in one way or another...
I keep coming back to the epic rule list in this book. I keep ignoring them in business, then learning the hard way that the list is right. He shares his failures and successes in a humerous way.
It's a real down-to-earth, eye opening book.
I'm reading Lean Startup, and have read Made to Stick, Letting go of the words, Ignore Everybody, Spin Selling, and tons more. All good books, but the 3 above were the biggest impact for me on all levels.
Also, Made to Stick: Why Some Ideas Survive and Others Die, by Chip and Dan Heath. This helped create more effective and compelling content. It's very high-level though.
Using bootstrap or another UI Framework would surely improve many things, from the UX/UI side. At least it will help until a pro UX can work on it a lot more.
Bootstrapping also will make you code better since the foundation of the code is well done. It also works on mobile and it's easy to catch up as well to tell other developers to manage our codebase, bootstrap has good documentation online and you can do, practically, almost all kind of UI compositions with JS.
After that, I would follow Google Pagespeed recomendations to reach the 100 points and have something like my blog wich loads in 300ms-500ms.
- You're not utilizing the whole width of the page, and the table looks pretty compressed, making it difficult to read.
- You're also not using the whole height of the page. The pagination would be more useful if there was more content. It's silly to waste that much real estate.
- The icons in the top right are too small and the third (mailing list) carries no meaning.
- Your logo in the navbar is too small, or at least the text. You probably don't need the text in the logo if you've got the heading there.
- Search is in a pretty unintuitive location - try putting it in the top right of the layout.
Edit: From a functional perspective, you've got duplicated stories on the home page currently. Same exact link, two different titles.
I haven't tried Digg or AOL Reader since they aren't available. My usage is basically a headline view of all the feeds, I have them in different catalogs. I will scroll through them to see anything worth to read, and open it up as a new tab as i go through them all.
Newsblur is very non Google Reader like. I suppose it fits some of the pattern of flows of a particular niche. But not me.
Yoleo is great except it doesn't work very well with non Unicode Feeds and it is quite slow. Unread count is overlapping. I think it is a solid app given some more time to develop. But I use Reader everyday or every 4 - 6 hours i cant afford to wait.
Feedly web works well so far. It is the closest thing to Google Reader in Headline views. The thing i dont like are performance and slow scrolling in some cases. But it generally fits me well.
The thing is, there is nothing wrong to try everything out. It is only a click of a button for your Google Login.
After trying a few other services and apps, I switched to NetNewsWire, which is a client-side Mac app that does what I want. Pretty happy so far.
Aside from this, however, I would have gone with Old Reader. Feedly is a good choice (especially with their new cloud platform), but last time I checked, they didn't let you export your feeds. If you don't mind that, Feedly is a great choice.
Minimal, self-hosted, great codebase, implements a clone of Fever's API so it can be used with any mobile client that supports Fever.
Then zap it with my DSLR. Or if it needs to be published, use Dia and export SVG/png into target document.
I occasionally write out graphviz stuff from my code using a very light weight library I wrote (C struct to stdout) if I'm trying to visualise what is in memory at a point in time. This has been invaluable whilst knocking up a simple mark-sweep GC for a project I was working on.
I've also used kivio on occasion, and graphviz, and ploticus. Again, all depending on what I'm after.
When you get to show the results to others - just use whatever you are presenting the rest of the message with - almost all "office" type products have sufficient capacity to manage that part. The clever bit is the bit you do by yourself.
http://lucidchart.com has been my favorite service as it is free for simpler projects and can be upgraded if you need more complexity. I've watched the project grow from an idea, to recruiting developers in my CS classes, to a full blown project which has exceeded my expectations. It's exciting to watch!
It's good for quick diagrams when you need to explain some of the more bizarre architectural choices in your system.
Steep learning curve, but there are plenty of examples around the Internet, and it's certainly worth the investment.
- Microsoft Visio (when available, makes nicer diagrams than above, but sucks at anything software modeling related)
- Enterprise Architect is supposedly the standard for the enterprise corp I work for.
I'll add any new ones that are included in the comments here.
Also for the corporate world where only Microsoft tools are an option, I tend to just use MS Word, you can make diagrams that are good enough to get the message across, yet everybody has access to it without requiring a special license.
It makes good looking diagrams very quickly without hampering creativity. It requires almost no effort on formatting and beautification.
I wish they had an app for the desktop. People have requested the same on their forums a few times.
I'm working on a tool to parse Objective-C into yUML at the moment- https://github.com/darkFunction/DFGrok
as far as serializing, ujson is 7x faster than simplejson in the worst cases I've seen (disclaimer: using the Python bindings.)
 https://github.com/esnme/ujson4c - "A more user friendly layer for decoding JSON in C/C++ based on [..] UltraJSON"
n.b.: There also exists a class of "simplified" JSON serializers. They implement most of the JSON specification but leave out some features (or restrictions) that make it more expensive. I don't know anything about these, perhaps another commenter can chime in.
No, no, go not to Tor, neither private mode, Nor duck-duck-go the tight-rooted, for its secretive wine; Nor suffer thy pale forehead to be kiss'd By anti-cloud sentiment, ruby grape prose of NSA; Make not your rosary in tinfoil hats, Nor let the politicians, the doomsayers-media be Your mournful Psyche. The downy social media A partner in your sorrow's mysteries; For shade to shade will come too drowsily, And drown the wakeful anguish of the soul. But when the melancholy fit shall fall Sudden from heaven like a weeping cloud, That fosters the droop-headed flowers all, And hides the green hill in an April shroud; Then glut thy sorrow on a morning HN, Or on the rainbow of the salt sand-reddit, Or on the wealth of globed nerds from afar; Or if thy mistress some rich anger shows, Imprison her harsh hand, and let her rave, And feed deep, deep upon her peerless eyes. She dwells with GovernmentGovernment that must die; And NSA, whose hand is ever at his lips Bidding adieu; and aching Pleasure nigh, Turning to poison while the lying-mouth sips: Ay, in the very temple of Delight Veiled Melancholy has her sovereign shrine, Though seen of none save him whose strenuous tongue Can burst Joy's grape against his palate fine; His soul shalt taste the sadness of her might, And be among her cloudy trophies hung.
specific prohibitions for fourth amendment abuses
better whistle blower protecting legislation
supporting constitutional amendments for all of the following; ending corporate personhood, enacting real campaign finance reform, restoring Glass Steagall)
breaking up all too big to fail corporations
when enough money or risk to life is involved making it a capital offense/ treason to: supply false testimony to congress or government regulators, etc, or to disseminate false information to the public or business (eg LIBOR distortions), or to unnecessarily make classified any such information
smaller, better government through 'government as a service' Govt 2.0 ideas (see g.g. Lessig), testing legislators on content of bills before they can vote on them, line item vetoes
This party would recruit its candidates (not accept those who nominate themselves) through a computerized equivalent of the way honeybees choose a new nest (see Sealey Honeybee Democracy). Candidates would have to have a track record of volunteer service and a minimum history of published political writing addressing actual legislation - (likely drawing heavily on bloggers and academics).
Stop flattering yourself, no one is reading your facebook messages or emails.
A question about a relevant product is welcome in Ask.
The officer selection program screens individuals for potential to lead and thrive in a variety of very stressful situations THEN once they've screened for top performers they assign them a job and train them how to do it.
A completely different process than most companies who expect all of their talent to show up with a very specific skill set. Unfortunately this leads to some amazing people being excluded for the talent pool because "it is too much work to train" someone. If one learns the traits to look for I'd guess that training them becomes a breeze and you'll end up with a better hire who will stick around in the long run.
1. Write a list of things that you need to do each really small implementations and keep it in front of you (I use google calendar tasks and keep it in an open tab next to you). Each time you finish a task highlight it or check it off. After a while, each unfinished bullet point will start to bug you especially the longer its been unfinished (at least for me). This helped me finish tasks I hate just because I hate it being the only unfinished task on my list.
2. I can't remember where, but I once read a statement by a coder who said that if a change is too hard implement [in code] restructure the code so that the change is easier to do. I would suggest that whenever you need to work with a section of code that you rewrite it so that you understand it better and can work with it. After all, its your project now, not the old developers. This will take time, but if you plan to stay with the codebase for a while, it might be the better option.
3. And then of course, you could just chug away at the project and work your way through it. If you just want to finish it hard and fast, I would suggest the Pomodoro Technique. I always prefer #1 than the pomodoro, but I've read a lot of people that swear by it, so it probably has some value.
I'm sure this will attract some jeers, but I'm not saying this is explicable and robust science--but it got me the desired effect.
There is this open source game server; the architecture overview page shows you the typical MMO architecture...
There's also a demo called LordOfPomelo; a fully functioning MMO written in Node.js:
Then think what you need to communicate between two different players in the game.
Work with the ones who do want to work with you, do good work and let upper management know about it, and wait for the other ones to get on board.
Here's one example to get you started:
We built an algorithmic trading system, and almost everything else in Haskell. Our code base is over 100K of human written code.
The major library gaps were a time library (you can find a version of what we have been thinking about releasing at https://github.com/time-cube/time-cube). We use our own build system that drives cabal and ghc. Otherwise having many libraries is just painful.
We found that composing applications as conduits to be a very effective design pattern that minimizes many laziness issues. Monad transformers are very powerful but the machinery for them (like forking) is not fully cooked.
Maintaining the codebase is far easier with haskell than with anything else I have worked with (C/C++,C#,Java,etc...). Refactoring in Haskell is great.
You can't fight the language. Fighting with Haskell will cause great pain. When you go with the flow, using lots of strong types, higher order functions and can apply things like a monoid instance to a problem the language is a joy to work with.
Debugging is more painful than it has to be. There are still times when you need some real GDB wizardry.
Lastly if you have more questions feel free to contact me through our website http://www.alphaheavy.com
STM can exhibit something that looks a hell of a lot like livelock.
Error handling is brutal. Catching all classes of exceptions (at the place you want to catch them!) for recovery is surprisingly tricky. This isn't necessary in theory with things like MaybeT, but in practice, lots of odd libraries use things like partial functions and the error function.
Not having tracebacks in production code is painful
The library community is thriving but it has a lot of volatility. Things break each other quite frequently. Semantic versioning either isn't enough to save it or hasn't been adhered to strictly enough.
Thunk leaks and other consequences of unexpected laziness aren't as common as people worry about, but they're kind of a pain to track down when they occur
Strict vs. Lazy bytestrings, String, Text, utf8-string, etc. You may find yourself doing a lot of string/bytestring type conversion
There's still wars raging about the right way to do efficient, safe I/O streams. Conduit vs. Enumerator vs. Pipes etc. They're all turning into pretty compelling projects, but the fact that there are N instead of 1 is sometimes a drag when you're dealing with libraries and dependencies.
There are not a lot of good open source "application server" type frameworks that really handle thread pooling, resource exhaustion, locking, logging, etc, in robust nice ways. We have one internally, and I'm sure a bunch of other haskell-using shops do too, but the ones on hackage are not nearly sophisticated enough (IMO) and I suspect not very battle tested against the kinds of ugly queuing problems you run into in highly loaded environments.
If I think of more, I'll add em... these are off the top of my head.
1. Modifying a record value (that is, making a copy of a record value but with different values in one or two of its fields) is unnecessarily complicated and uncomposable. This makes modifying a subfield painful.
2. Field names are in the global namespace. Thus you cannot have e.g. a field named `map` (conflicts with the standard `map` function); nor a local variable named `owner` in the same scope that you use a field named `owner`; nor may two different record types both have a `name` field. C had this problem in the 70s (which is why e.g. struct tm has tm_sec and tm_min fields instead of sec and min fields), but they solved it a long time ago.
The solution to deficiency 1 is to use lenses. Use the lens package from Hackage, but don't read its documentation at first: it generalises the problem exceedingly well, but this makes it harder to understand at first glance. Instead seek out a basic tutorial. At the cost of a short line of boilerplate for each record type, this works well.
There is no satisfactory solution to deficiency 2. Some people define each record type in its own module, and import each module qualified. I don't think this scales well. I prefer to put a record-type prefix on each of my field names (i.e. the same thing C programmers were forced to do in the 70s).
Instances can't be explicitly imported either.
Another thing I don't like is if you have two different functions with the same signature but different implementations meant to give swappable functionality, there's no way of specifying that explicitly. As a user of a library, you just have to realize the functions can be swapped out with modules. For example:
It's really not that bad but I do like how other languages allow the programmer to make this explicit.
The one issue I've run into is that ghc can't cross compile. If you want to run your code on ARM, you have to compile an ARM version of ghc (QEMU comes in handy here).
edit: to clarify on the web thing, when I say "on your own" I mean you won't be able to get much from existing tutorials and examples since you will want to do everything differently. Not that you will have to write your own framework.
1. Way to many user defined operators. Haskell lets you define almost anything as an infix operator which library authors love to (ab)use. So you get operators like ".&&&." (without the quotes) because they are functions reminiscent of the boolean and operation.
2. But weirdly enough, many operators aren't generic. String concatenation is performed with "++" but addition with "+".
3. Incomplete and inconsistent prelude. It has unwords and words for splitting and joining a string on whitespace. But you dont get to specify what string to use as the delimiter like the join and split functions in other languages lets you do.
4. So instead you have X number of implementations of splitStringWith on Hackage, some of which are unmaintained, deprecated or just not working, meaning that just answering the question "how should I split a string?" becomes a big endeavour (http://stackoverflow.com/questions/4978578/how-to-split-a-st...).
5. There are four different "stringish" types in Haskell: List, LazyList, ByteString, LazyByteString. A function like splitStringWith works on one of the types, but not the three others for which you need other functions. Some libraries expect Lists, other ByteStrings or LazyByteStrings so you have to keep converting your string to the different types.
6. Most Haskellers seem to content with just having type declarations as the api documentation. That's not a fault of Haskell per se, but imho a weakness in the Haskell community. For example, here is the documentation for the Data.Foldable module: http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-Foldable.html
7. This is very subjective and anecdotal but I've found the Haskell people to be less helpful to newbies than other programming groups.
Working with DBs is easy, especially if you use HaskellDB. There are bindings for non-relational DBs, as well as a DB written in Haskell (acid-state).
As for the language itself, you might find it tricky to develop computation intensive applications with large run-time data-sets due to garbage collection (but that is true for any garbage collected language). Other than that, it's one of the best performing languages in the Debian PL shootout. And the fact that concurrency is (comparatively) easy means you can make use of those extra cores.
Monad transformers and monads are fine, you just need to learn how to use them.
To sum up: it depends on what you do and what you consider a "real world application". Might be a good idea to elaborate. For example, are compilers, games, web apps, automated trading systems, android apps considered "real world"? Because any of these has been done in Haskell.
Achieving performance is harder than in c or c++.
The ecosystem is strong on some counts and weak in others.
There's lots of API duplication (lazy/strict byte strings, map, set, seq, etc).
Good performance may depend on brittle ghc optimizations that might break in very difficult to comprehend ways if ghc is upgraded.
After using Haskell pretty much full-time for 10 years, writing C and Java code makes me sad. The support for the above mentioned platforms is in-progress, but is not yet mature.
There are some neat things like Atom which use a Haskell DSL to target arduino.
My other issue is that the garbage collector in GHC is not really sufficient for real-time audio applications because it can pause for too long. GHC HQ has tried to tackle this in the past -- but there is a reason why it is a research topic :)
If your application requires interfacing to a C++ world -- your are not going to have fun. Though there might be a GSoC project for that this summer?
Also, GUI stuff is somewhat lackluster. There are bindings to gtk, etc. And they can get the job done. But they don't really capture the essence of what makes Haskell awesome. We are still searching for the GUI abstraction that really clicks.
It makes me wondering what magic would happen when those folks can work on helping the ecosystem full time!
I have to say that one of my favorite things currently about haskell is how nice and easy the c ffi is to use. So darn simple! (I'm also GSOC mentoring some work to provide a nice C++ ffi tool too).
Theres so many great tools in the Haskell ecosystem, for every problem domain. Its not perfect, and theres always room for more improvement, but those improvements are happening, and the more people invest in supporting the community, the more those improvements happen!
For example, one thing i'll be exploring in the neat future is how to do good Numa locality aware scheduling of parallel computation. It looks like i might be able to safely hack support in via a user land scheduler (though i'll find out once i get there).
My principal work right now is building numerical computing / data analysis tools, and some of the things I'm doing now would be simply intractable in another language.
My project is targeted at the Market Research industry.
a. There is a survey programming compiler, written in yacc (bison)/C++.
b. I also have a cross tabulation engine (another compiler part of the same project), which presents a web interface for Cross tabulation engine (I am using webtoolkit.eu).
The survey compiler can currently compile to UI front ends like:ncurses, webtoolkit, wxWidgets and gtk. The GUI frameworks are all in a very nascent stage. I have also been experimenting with emscripten and using frameworks like dojo and dojomobile. I have been able to get dojo working.
There is also a Random Data Generator, built on the Survey engine.
There is work to be done in the Cross tab engine as well. There is a branch where I am experimenting with SSE instructions to speed up the engine.
Scope of work is wide and I can get help you get started with anything you find interesting to work on. The project is open source and hosted here:http://sourceforge.net/projects/xtcc
Active git branches: nc, web-questionnaire-2, rdg, xtcc
You can email me at "nxd" underscore "in" at yahoo dot com
Unfortunately we are a single person startup and no funding, everything is being done my me at the moment. If you are looking for something like this to start an interning/job relationship, then this might not be the best project.
Thank you for your offer once again and hope you get something that is a close fit to what you are looking for.
I'll give you a project...all specced out...details on trello...you can take from open source projects already slightly ahead of us...graphics as needed...
And if you can build a working proto that the client approves (which I've already sold), I'll even pay you.
Interested? What's your story?
Discussion of SSL on cryptome:http://cryptome.org/0005/ssl-broken.htm
 https://www.bof.nl http://www.openrightsgroup.org/blog/2012/new-reports-of-over... http://www.independent.co.uk/news/uk/politics/government-cal...
I've restarted once because something in Safari locked the whole phone. Some apps are broken (Podcasts), or look wonky in spots (Find My Friends). Everything mostly works, though. Even the Pebble app to connect to the Pebble watch. I figured if anything would break, it would be that.
If you want everything to work all of the time, never put the first iOS beta on your phone. Something is always not right. (Last year I was at WWDC, and the new maps app wouldn't render maps for me, just a grid. Not knowing SF that well, that was a major breaking change for me. <G>) Wait until beta 3 or so if you need reliability.
I can deal with all the other issues, but terrible battery life is a dealbreaker. I'll hold off putting it on my primary phone until it improves.
Upside is it's nice having a break from my phone.
As for bugs and such, I haven't encountered any that would stop me from using the beta or are frustrating. The only app I have right now that crashes on my is Google+.
Have had a few issues with apps, most notably the Apple podcast app which is completely broken. Had one incident where the lock screen was totally blank other than the top bar but was fixed by a restart.
Pros ~ Two words - Control Center. I can easily change anything that I want without jailbreaking. It seems like they are moving towards an SBSettings-like iOS. For reference, SBSettings is a jailbreak-only package that allows you to change nearly every aspect of your iDevice.
Cons ~ Some apps are broken and will just not really work (ie. Alien Blue) with iOS 7 yet. Lag is very small but just enough to be noticeable. Restoring from a backup may take overnight, depending on the amount of data you already have. Some features can take some getting used to before you feel comfortable (ie. displaced 'delete' button when typing in passcode).
Don't forget that certain apps will not work. For example, neither the eBay app or MLB apps are working for me (and I use those everyday too).