aguynamedrich's comments

aguynamedrich | 12 years ago | on: Do you know your bitwise operators?

The first time I used bit manipulation in web apps was for declaring user roles and permissions. A single integer field in your database can be used to declare any combination of up to 32 different capabilities/permissions for users by setting the individual bits in the value. Also, when dealing with colors as an integer value, you can isolate your ARGB values using bit shifting.

aguynamedrich | 12 years ago | on: Jay-Z Is Watching, and He Knows Your Friends

I was checking the app out earlier and was curious to see what they're doing and what kind of data they're collecting, and they're really doing nothing out of the ordinary or worthy of distrust. They're using Flurry and Crittercism like everyone else, reverse geocoding your location with Google Maps API, and just serving up standard JSON data to power the app...again, just like every other app on your phone. One of the things I found interesting is that they're not using any kind of security model to protect the location of the media files online. If you clear the app data or start from a fresh download and trace the calls with a proxy like Charles or Fiddler, the entire album data is served up including full url's to the audio files on AWS. I don't know the etiquette around here, so I'll leave out the actual url and data, etc., but it's easiest enough to find for the crowd here.

I think it's brilliant. They're sending back events to the api when you stop and start tracks, and they're sending all of the information that the phone will give them - location, device/os info, storage/free space. This is probably the most real usage data a major artist has ever received on how, when and where their music is played by home listeners, and I wouldn't be surprised if this sets a major trend. They can pick which singles to release based on this data, decide where to spend the most money promoting concerts, etc.

aguynamedrich | 13 years ago | on: Real-Time Yammer Competitor Hall Launches New Apps

The first comment is a self promoting alternative (daPulse) whose website looks very similar and whose product, much like the one being promoted, just looks like a slightly different Yammer. This seems to be an unnecessarily crowded space.

EDIT: Not the first comment...just the top one at the time I read the article (didn't realize comments on TC are sorted as newest first by default)

aguynamedrich | 13 years ago | on: AndroidKickstartR: Start your next Android app in 10 seconds

Looks cool, but also looks just like it's aspiring to be Android Bootstrap which already exists. I don't use either, because application setup isn't really the big pain point of Android development. I'd love to see this effort being focused on something with more value, but I applaud the effort regardless.

Edit:

I judged too quickly, and this is really cool. I did a quick setup from both Android Bootstrap and Android KickstartR. Android KickstartR worked with very minimal effort, and while there were a few things I had to do manually in Eclipse because of some weirdness in the latest Android toolkit (set JDK compiler to 1.6 to fix attribute errors, rename the projects...the usual), it worked and it wasn't so think with someone else's coding and project setup style that I could easily get cranking on this. When I set up from Android Bootstrap, it flat out didn't work with a simple Import from Eclipse and when I browsed through the source files, it looks really thick with boiler plate code. Bootstrap looked more like an app in a box and less like an actual bootstrap or kick start for my own app.

This KickstartR thing can go a long way actually if it maintains the lightweight feel. I don't like that AB uses Roboguice for that reason (as an example of what I mean about lightweight vs heavy-handed in this case). The second you introduce that by default, as seems to be the case in AB, you're now tied to that whether you like it or not. I personally gave Roboguice a try and just didn't think it added value for me and wasn't my style. I have other ways of achieving the same benefits that fit my style better, so I'd rather not have it, or at least have the option to remove it.

Something cool for this KickstartR would be to support arbitrary libs and not just the really popular ones. For example, I published my own lib which currently only I'm using AFAIK. But regardless, I use this lib in all of my own work. It would be nice to add a reference from that here, especially since I publish a jar with my library so it would be as easy as copying my jar into the libs directory. A former coworker of mine did the same, and I'd love to grab his libs in the process as well (as well as things like http-request, etc).

Sorry about the quick judgment...nice work.

aguynamedrich | 13 years ago | on: Hopefully more controversial programming opinions

The bit about building a web app in C is totally off-topic from your claim that 100 lines of python would equal 100 hrs of Java. If you can only write good software in a short amount of time in one or two languages, that's just a reflection of you as a developer and not the language, and I'd seriously challenge you to show me something you've written in 100 lines of python that I couldn't hire a single senior Java developer to write in the same amount of time (lines of code doesn't equal cost, so I'm not interested in debating lines of code nor do I think it's a valid measure of anything).

I'll give you a short story that approaches this issue from both sides. A client walks into a consulting shop with a piece of really bad client/server software written by a different consulting shop. The server is written in Ruby/Rails and the client in Java (Android). Both client and server code is horrible even though the server is written in Ruby (a supposedly beautiful/compact/expressive language) and the client in Java (super ugly long winded grandpa language, or whatever). The client paid the original consultants about $60k in total. One Ruby engineer and one Java engineer rewrote the entire thing in a few days for 1/20 the cost without really reusing an ounce of the original code. Ruby didn't stop the original server engineer from delivering horseshit in too much time, and Java didn't stop the second client engineer from delivering a clean/functional/performant app in just a few days.

aguynamedrich | 13 years ago | on: Hopefully more controversial programming opinions

So, you're suggesting the following analogy: The crime level of a region relates to the region itself the same way that the quality of software relates to the language the software is built on? You're comparing a property of an object to the object itself and a property of an object to another property. Pretty awesome you'd make that mistake in a thread where you're agreeing with someone's criticism of OO principles.

aguynamedrich | 14 years ago | on: No-cost desktop software development is dead on Windows 8

That's not always the case. I have grown overwhelmingly comfortable writing all my utilities and demos in Visual Studio, but I no longer work for a Microsoft shop, which is where I've always gotten my VS licenses. On any new computer I purchase for myself or at a non MS-centric job, I rely on Visual Studio Express, and this news really sucks for me.

aguynamedrich | 14 years ago | on: Introducing Facebook Camera

http://techcrunch.com/2010/09/19/facebook-is-secretly-buildi...

This article is from nearly two years ago and claims that Facebook was very secretively working on its own mobile OS. If this is indeed the case, a lot of their somewhat recent acquisitions make a little more sense (GoWalla, Karma, Instagram obviously, and LightBox).

http://en.wikipedia.org/wiki/List_of_acquisitions_by_Faceboo...

The fact that their valuation gets beat down on the lack of ad revenue in the ever growing mobile space turns into a bullish signal if they release a high quality phone with a high profit margin. I wondered why they were splitting up their mobile app into many recently on Android as well, and this tells me that it's possible they want to create a suite of "necessity" apps as the basis for their platform.

aguynamedrich | 14 years ago | on: Android's Overblown Fragmentation Problem

Tricky, but not impossible. The same as you would have to learn the API's and general usage patterns of new features, you just have to learn how to use the compatibility package or third party libraries like ActionBarSherlock to take advantage of the most common new features.

That said, I don't fully agree with the OP's argument. Fragmentation is a very real pain in a lot of subtle unexpected areas (mostly UI related).

aguynamedrich | 14 years ago | on: Socialcam #1

I keep seeing these awkward auto-posts on Facebook from both Socialcam and Viddy, and as someone not seeking out a product like either of these, this is my only impression of these services. People in my social graph who clearly wouldn't want others seeing activity about the racy videos they've clicked on are getting wall posts like "Grandpa just watched 'Tiniest bikini' on Socialcam". Between the Facebook spam and the cliche "it's like [other service] for [slightly different usage]" make me much more skeptical than curious.

aguynamedrich | 14 years ago | on: Evernote CEO to entrepreneurs: "don't do it"

Reasons not to listen to this guy:

1. Not all CEO's work 20 hour days, and he probably doesn't either

2. Starting your own company can give you the ability to challenge the outdated 9-to-5 sit-at-your-desk status quo more than working for someone else can

3. His skewed view of upcoming entrepreneurs as only the subset that bother him for advice doesn't reflect on you or your ability to successfully launch your own business

4. Seriously, Evernote? It's cloud data with a bow around it.

5. Working long hours doesn't mean slaving away at the office for long hours, it means that you're always "on". If you start a business around something you're passionate about, you'll be thinking about it all day anyway.

6. Ryan Carson just told us last week that he works 32 hours a week, and his company impacts the world a whole lot more than Evernote IMO (subjective, yes, but Treehouse and Carsonified educate and connect people in a way they couldn't have done otherwise, whereas you can eliminate the need for Evernote by creating a folder or two on Dropbox).

7. If you fail, you can always try again and/or re-join the work force.

8. Most people would feel a lot better about trying and failing than not trying at all.

And the number one reason I'd say this video should be completely ignored is that you might actually succeed.

This video tells me very little about entrepreneurship. The real message is that Evernote is run by a pretty unlikeable guy who would advise you, without getting to know you, to be a working stiff your entire life instead of taking chances. Advice that he obviously would not have taken himself.

aguynamedrich | 14 years ago | on: We work a 4-day week and just raised $4.75m

I still disagree that your case is the average and that your situation can be used to model any young startup. Don't get me wrong, I admire what you're doing and the strong statement you're making about productivity and balancing priorities. I just agree with the above comment that it sounds a bit smug, especially by the title. There's an implied message of "I rode this methodology to ~$5M in funding, so you can too", and I think that makes a huge oversight that this is the same company that hosts some of the largest international developer/new technology conferences six times every year. Aren't you also the owner of the company that hosts FOWA, FOWD and FOM twice a year each? Doesn't that at least deserve a mention? "This works for us, but we also have the kind of industry connections and positioning that practically predisposes us to this kind of funding the second we're in the black anyway"

What I think happened here is that you did a number of things right which affords you this flexibility in hours. I would say the real story is that you made something of value vs the free-but-pointless model we read about much more often these days. You built a business around something valuable with a relatively high price point that makes it less of a victim of the kind of scalability issues that "general public" web based services are dealing with.

I think the bigger take away would be: If you make something awesome for the general public that millions of people will be using all day long, plan to work seven days a week 'round the clock and there's no guarantee you'll ever see a penny. If you come up with something valuable that people would be willing to pay $25-$50 a month for, your life will be much, much more enjoyable and you might actually get to watch your kids grow up and/or have some time left for your hobbies.

aguynamedrich | 14 years ago | on: Android Image Problems

There's a good video from a recent Google I/O on memory management where they explain the recycle method, their reason for requiring it, and that it won't be necessary in 2.3 and up. I still always recycle everything manually just to be defensive, but supposedly it's not required anymore in API 10+. Whenever you see a framework object with a recycle method it's because the memory is allocated outside of the dalvik heap, so it's not part of the GC cleanup process.

The real bitch of this, and what I think you were getting at, is the lack of accurate memory debugging tools. I read a really long post on SO about a guy who tested all of the various ways of testing memory consumption through DDMS, adb, etc, and all the numbers he got were conflicting.

aguynamedrich | 14 years ago | on: Android Image Problems

The OutOfMemory issue is a pretty big problem, but I'd say it's quite lazy to just dismiss it as something the framework needs to fix so that you can effectively do your job. I ran into this problem a lot early on in my Android development, and as I studied it further I found tons of resources and information to make it work in all cases and there are plenty of creative solutions documented in blogs and discussed on StackOverflow about it as well. Half the time you can get around this error by recycling your bitmaps when you're done with them and/or rethinking your approach to needing really large bitmaps in memory at the same time. There are two things I've done commonly in apps to get around this.

(1) If I'm just expanding included resource files (compressed images) into bitmaps for display, I write my own intelligent cache. Backed by a simple HashMap, I can even include in my cache keys the desired height and width and downsample intelligently and cache the downsampled version. Funny enough, when I presented this to my coworker, he had just done almost the exact same thing and we had never discussed it. In one case I needed to categorize my images to flush some and not others from the cache, so I just wrapped a bunch of instances of the same BitmapCache into a BitmapCacheManager class and it worked like a charm.

(2) To get around the fact that you can't just set the source path of an ImageView to a web url, you can use a custom class that wraps ImageView and just handles downloading the image on a background thread. I wrote a pretty complicated system that pumps the urls to a queue and broadcasts a notification when each download completes, but a single google search pointed me to an awesome apache licensed library that does exactly the same thing (and is admittedly cleaner than mine).

https://github.com/loopj/android-smart-image-view

It's totally doable. I never looked at it as a limitation of the framework - I actually saw it as an opportunity to do something more challenging than just drawing within the lines of the framework.

page 1