Sunday, May 17, 2015

Summary How to Be More Productive by Success Publisher Darren Hardy

What are you focused on?
What are you focused on?
Who wants more productivity AND more time? Everyone is busy right? Why are some people (like Steve Jobs or Ellon Musk) more successful than others? We all get 7 days in a week and 24 hours right?

Jesse Flores forwarded me a great video explaining (full video below) why these superachievers beat overachievers. The video is 90 minutes. If you don't have 90 minutes to watch the video, I summarized the key points below (5 minute read).

Lets do it!

Main message - How to multiply your results

overachievers put in a lot of hours (maximum effort, minimum results (per unit of time))

super achievers are more productive for less time than over achievers

no is the master skill - yes creates no conflict. no does.

what are you willing to give up to become world class at a few things?

Focus on the fundamentals (everything has 1/2 dozen)

Formula for success
  1. fewer things
  2. more often
  3. get better at them

Learn less and study more

learn your hourly rate (annual income goal divided by 2,000)

work yourself out of a job - do everything at first then delegate non-core activities

too many choices (priorities) create paralysis

move from reacting to creating

don't multitask

do something everyday that scares you

6 success principles
  1. stop doing what fools do (don't do what you are bad at)
  2. master the few things that move the needle
  3. out focus your competitors
  4. out last your competitors through consistency
  5. measure, monitor, and keep an awareness on your progress
  6. outfail (if you aren't failing you aren't learning)





Tuesday, February 24, 2015

What is a Startup Weekend Like? A view from inside my head.


This article will talk about my thoughts, feelings and decisions while building a product and pitch in 54 hours. Startup Weekend Lansing was absolutely worth the $75 entry fee.  I highly recommend participating in a Startup Weekend in your city.

TLDR: I built the technical foundation of an awesome content management system (those things that let you edit websites) If you want to learn more about the platform click here:

Learn more about the website creation / editing platform I built here.


How Startup Weekend Helped Me
I have been planning on launching a new company. However life is busy and I was worried about when I'd make the time to build out my product. Attending Startup Weekend was like rocket fuel for my company. It helped me:

  • Enabling me to focus my weekend 90% on building a minimum viable product.
  • Having a tight deadline, which drove me to make architecture choices focused on getting a working product in 54 hours.
  • Talking about the product and getting feedback from potential customers / partners / etc.
  • Understanding the competition better and how my product should be positioned against them.
I Hoped to win (PR + Marketing Asset)
I was hoping to win Startup Weekend and use that as a talking point with customers / press. There were a lot of other great presenters and Reflex won (both popular and judges vote!).

Photo Credit: Travis Stoliker


They built an electric long board over the weekend! I figure it would have taken me a year to build something like that so I was very impressed. Congratulations to them!

Full Story Warning:

Below is a verbose accounting of my weekend (thanks to Google History for the timings). I try to include key decisions, alternatives considered, and timeframes to help readers understand how I spent my 54 hours. It may help people who wonder what a startup weekend is like and how the short time frame impacts decision making. I was building a tech product which took up my Saturday. If you aren't a software developer you may want to read Friday directly below then skip to Sunday. Saturday is when I was building product and the majority of it discusses technology decisions.


My Plan - Friday Pitch

  • I hoped to get people excited about the idea of a better Content Management System and have a team of 4-6 people working on it with me over the weekend. I wanted sales and marketing assistance to start building out a sales pipeline the day after the weekend ended.
  • I did two presale calls Thursday with friends to gauge interest. Interest was very high and both committed to buying the product once it works.
  • I wanted to leverage the pre-sales success and the fact that I had a working development platform in my 60 second speech to build a team.
  • I selected a provocative name: "Death to WordPress" to quickly communicate the idea (WordPress has around 50-60% of the CMS market) and be unforgettable.
The Pitch
It was a blur. 60 seconds goes fast. I don't remember what I said, but I repeated a few times what I was asking for. I thought the audience was clear on what I was building (a Content Management System) and what I wanted help with (sales and marketing).

Pitch Aftermath
I had two people offer to join my team with marketing backgrounds. Unfortunately as I explained the idea to them they decided not to continue working on it with me. Adding to the difficulties I was having communicating with my teammates and getting started on work I had a coat issue.

Before pitching I set my coat down. Now I couldn't find it. I was trying to track it down (super cold night + t-shirt != good) but also realized I was losing momentum with my team.

During my coat search I met Brian Davis. I instantly liked him when he said "of course I've heard of bitcoin." He is a very nice guy because he helped me look for my coat.

After looking for 20-30 minutes (plus chatting) I couldn't find my coat and gave up. Unfortunately by this time I had lost my teammates.

Paul Jaques (my hero!) found it for me. This was about the time I realized I was going to be the solo member of Death to Wordpress.

I met Mike and James who were working on an awesome extreme sports video website along with Yoseph (LykeMe).

Initially I thought my teammates didn't want to work on my project because they thought I was farther along. Thinking about it more I thought I didn't do a good job of explaining it to them. I had focused on what was interesting to me (the tech) instead of the core idea - a CMS focused on results.

11:15 PM An Implementation Idea

Going into the weekend I figured I'd write my CMS in one of two programming languages: Ruby or Node. I've been wanting to try node for my next project for a long time, but the open source software underlying my idea (Jekyll) is written in Ruby. I thought using Ruby for the server components may make it easy to embed Jekyll into the server because they are in the same language (Ruby).

On the drive home though I figured out an idea (calling out to the console on saves) that would let me make the server in Node like I wanted.

One small issue with this plan: I've never written a Node app and this weekend is time constrained.

Saturday
When I got home Friday it was late. I caught up on a few emails and at 12:45 AM installed Node and started working through the Node Beginner Book. I immediately fell in love with the simplicity, control, and speed Node provided me.

I cashed out about an hour later having learned that Node would let me build my product.

6:00 AM back to work
One feature that I want to have at launch is the ability to take payments via credit card and bitcoin (I am a bitcoin bull after all). Friday before pitching I had started a partial implementation of Stripe checkout. I ran into an issue with some open source software and had tweeted at the author.

Overnight a Tweet came in that quickly led me to a solution.

With payments working I went back to learning more Node.

I arrived onsite around 9:30 AM. There were a few people there and we chatted for a bit.

11:45 I got an email to fill out a team profile. I wanted to focus on shipping and didn't want to spend time coming up with a real name. I decided to go with Death to WordPress and made a quick logo in Gimp (like Photoshop but free). I had second thoughts about using the name Death to WordPress thinking the Sunday presentation could get derailed with copyright issues or naming issues. Feeling it would be nice to change, but already concerned about time / scope I decided to ship it and move on. 



That led me to lunch.

12:00 PM Lunch
Nevin Brittain (Founder Health Numerics, East Lansing innovator of the year) spoke about the importance of business plans to founders. Then he went into an interactive session where he learned about each company and talked through their ideas with them giving feedback and suggestions for consideration.

It was hard for me to focus because I had spent the whole morning learning Node and hadn't started on my CMS yet as the precious minutes ticked by I was wondering if I'd have an MVP at the end of the night so I could work on the presentation Sunday.

Nevin finished at 1:15 and I hustled back to finish my Node tutorial.

Finally at 2:30 I was done with the Node tutorial. I'd built a basic web server! I briefly considered using my server for building my CMS, but I was sure this would lead to issues down the road and decided to go with a professional framework. So I scrapped that idea and began looking for a framework.

Being new to Node I Googled and found Express, a "Fast, unopinionated, minimalist web framework for Node.js." This sounded perfect, since I loved that node gave me simplicity, speed, and control. It sounded like this framework would provide a similar experience. I felt a bit concerned about picking the wrong framework, but decided to move forward anyways.

First Feature
I knew I'd need to show CMS users a preview of the website they are working on. I decided to build that feature first. It should be the easiest and it will make testing edit and save easier. After getting through some routing issues (I hate routing code/config, it always seems too heavy to me) I was quickly able to partially serve the bitcoinbulls.net website through Node. For techies, this meant I could serve the HTML file but all the links were broken. Non-tech explanation: all the links, images, css, and JavaScrip were broken because bitcoinbulls.net was built assuming it would be the only website running.

I evaluated a few options:
  1. Serving bitcoinbulls.net content from the root of this admin site
  2. Parsing the links and adding a prefixed path
  3. Using Express sub app feature to host each site as a sub app.
  4. Adding wildcard DNS and hosting each site at a subdomain of the admin site.
  5. Changing my Jekyll config.
I immediately threw out options 1 and 2 as horrible hacks. The only benefit option #1 had was that it was a 2 minute code change and I was pressed for time (it was now 4:00PM).

Option 5 also seemed hacky, although not as bad as #1 and #2. It would put some extra work on Jekyll sites for them to work in Death to WordPress.

Option #3 seemed like the best. I spent about 45 minutes trying to get that working before giving up. It might have worked, but with my amateurish knowledge of Node, Express, and Routing I decided to go with Option #4 because I knew that would work.

I found out OSX doesn't support wildcard DNS, but no biggie I just needed to install Bind. Unfortunately the easy 'brew install bind' didn't do the trick and neither did 'sudo brew install bind' They had security issues.

After 30 minutes of this I decided to just go with modifying /etc/hosts and BOOM! At 5:48 I had my admin site serving bitcoinbulls.net from source.

At this point I'm also exhausted. I see dinner is at 6:30 and decide to take a quick nap. Unfortunately I couldn't find a good napping spot. The pressure is on too. I really need to have my CMS working before Sunday to work on the presentation Saturday. Unfortunately I couldn't fight the sandman and I took a 15 minute catnap in my chair.

Earlier in the day Don Waskiewicz (president Deep Blue Insights, Startup Weekend Coach) had stopped by to discuss my project. He dropped back in to let us know if we wanted market research he was going to his office and could help. I emailed him asking for US companies with less than 5 employees. He quickly responded back with a super helpful spreadsheet listing them all and breaking them out by State and category.

Second Feature
For my next feature I decided to implement client side real time markdown editing.

6:30 PM Dinner.

This time I take my laptop to give me the option of working while the speaker is talking. I'm concerned about time because I hadn't even started on the client side editor or saves back to the server and I was already feeling tired. Unfortunately when I get tired my brain doesn't work well and I become unproductive.

John Allison (founder Luminate Studios) shared his experience starting a company directly after graduating. He highlighted the importance of networking, contracts, and avoiding scope creep.

He also said LEAP is a networking powerhouse. I made a note to connect with LEAP once I had a product ready to show customers.

I have played a bit (tiny bit) with 3D modeling and afterwords I spoke with John about his tool chain, Blender, and 3D printing.

7:15 Back to work

I get back to my desk and continue searching for open source realtime markdown editors. To my surprise their aren't a slew of options and my favorite (StackEdit.io) isn't embeddable.

I spend a bit of time googling for work arounds.

At 8:00 PM I decide to go with PageDown. There is no demo site, but it claims to be used on StackOverflow (best programmer Q&A site on the web).

After 10 minutes I realize I don't like the Express rendering engine, Jade and I have no clue how to do anything in it.

Instead of learning Jade I decide to swap it out.

After Googling about swapping it out I decide it is going to be faster to just use it. I read a bit of the docs and it actually seems cool.

I run into some routing problems (I told you I suck at routing!) and find out PageDown isn't well documented, or I'm not seeing it.

Trawling through their sourcecode I pull out their demo code and put it into my app.

Somewhere along the line I realize Express has static directories that it serves files from and I put the demo HTML + CSS + JavaScript there.

At 9:00 I get a text about a potential health issue at home. Crap I should finish this up and get home.

At 9:15 I have the markdown editor doing realtime editing of the demo text.

Now I need to provide the editor a markdown file from my website.

I decide to expose the markdown files via http. which I had working at 10:15 (although I spent 1/3 of that time on Reddit + Twitter - oops!)

I'm exhausted at this point and really want to go home. However I know I'll be in trouble if I don't complete the CMS tonight and decide to press on.

10:30 the editor loads my markdown file!

10:45 the editor splits the markdown file into content and data (technically Jekyll's frontmatter)

Final Feature: Save
For Sunday I need save to work. I want to also show editing data, but I know I'm out of time. I decide if I get the presentation done I can work on the data editing.

11:23 PM - text from home - no more health issue (crap, I'm a jerk for not getting there.) I also got save working. Phew! This thing actually works! And it is fast! Great. Time to head home.


When I got home it was just after midnight. I decided to do some email + Facebook.

At 12:45 AM I decided to dig out the presentation format we'd been given and draft responses to it, in case anything came to me in my sleep :) I jot my notes in Sublime Text 2 (not sure why I don't use Evernote... but whatevs I'm tired)

I also decide to snag my $100 free Amazon Web Service credit (needed a bit of url hacking because of the way the link was sent in email) and spent two minutes trying to think of a different name for the company.

6:15 Awaken. I'm excited to have a working CMS so I decide to...

Email until 7:12. Oh hey an email from Startup Weekend oh yeah I should start on my presentation.

Prezi or Keynote?

One of the cool things nowadays is to use a content tool to present itself. I think about doing this. My MVP works, but it will be a lot of work for me to make a presentation experience I'd be happy with in my CMS. Presentation tools it is.

I'm a huge Prezi fan and lately I've been using PowerPoint for flyers. For some odd reason I have a feeling I should do this presentation in Keynote even though I've never used it.

Based on the feedback (teammates quitting, other negatives) I'd gotten I realized I was focusing on the aspects of the platform I liked, not what would sell.

I also debate on what to present. Should I go with the provided format or go to a VC company and use their format? I decide the judges may have a rubric which scores based on what they provided so I go with their format (although I got off it for the third component. Looking back at the email now I see it says Judging Criteria, so I probably should have followed it exactly to maximize my chance of winning.

Wow, Keynote is pretty awesome. I'm able to quickly do what I want and easily template then apply styling. Hot!

9:45 back onsite

I get back onsite and have leftover Jimmy John sandwiches for breakfast.

For showing my product I decide to include a screenshot. A picture is worth a thousand words right? I'll have 5 minutes, so quickly communicating ideas is key. Unfortunately the editing experience I built yesterday doesn't look great. Most of the work was on technical architecture. I think anyone who isn't technical will have a hard time understanding what was accomplished because the end result looks unimpressive. Actually if I include an ugly-looking screenshot, everyone will probably think the product sucks. I think maybe I should have just focused on making an amazing looking editing experience instead of eliminating the tech risk?

Hmmm..... I don't have time to pretty up the editor (design isn't my strong suite). I decide to use a screenshot of the editing experience as it will be once I get the StackEdit.io code integrated. Is that dishonest? Well I only have 5 minutes to present. I don't have time to put my editing experience up there and then spend time explaining 'yeah it is ugly now, but prettying it is the easy part.' I decide I have to show the StackEdit.io experience to quickly communicate what this will look like. The key objective for the weekend was eliminating the tech risk, which is what the MVP I built does. The look of the editor is not a huge risk factor going forward.

OK screenshot of my website being edited in StackEdit.io done.

12:12 presentation is done and tested. For testing I hooked up my computer to the projector and walked all around the room seeing how all the audience members would see my slides and testing the range of the remote clicker.

I didn't like how the last slide of my presentation. I wanted end with an ask directed at the judges. Like I will use x prize to do y. However I hadn't seen any prizes published. I checked with the organizers and found out the prizes were secret. I still didn't like how my prezo ended, but oh well maybe I'll think of something later.

I notice on the projected image one of my slides has a strange translucency issue making the text harder to read on the main projected image (there are two other monitors where it looks fine) than it should be. Often times projectors have lower contrast than monitors so it is always good to especially check light on light or dark on dark colors (or avoid them) also, sometimes mounted projectors cut off the top or bottom of slides.

I also notice there is no clock. I decide to setup Keynote to show the time so I can make sure I don't go over.

12:30 I run through my presentation with Isil Berkun, one of the mentors. On a five minute presentation I go 3 minutes over (doh!)

Isil has great feedback and another attendee Darrell overhears some of my presentation and also provides feedback.

Unfortunately the feedback involves adding slides. I become increasingly concerned about going over time (I was already 40% over before adding slides!)

I decide oh well, I'll be able to go faster the second time around.

12:52 I try to fix my contrast issue, tighten up some of the visuals, and add fade through black for slide transitions.

1:00 Couldn't finish up. Gametime! I wonder how did I spend my whole morning on a short presentation?!

I end up being selected as the fourth team to present. I show my friend Phil Threadgould my contrast issue and show him the object is set at 100% opacity. He realizes there is a translucent object in front causing the issue.

I decide to add one more slide about the executive team, me and an anonymous sales exec (he is helping out, not sure what his commitment level is, but definitely not his full time gig)

I also find the fade through color menu option and get it on the slides I want. I see I now have 27 slides! When I was over by 3 minutes I had 15. Wow, the fade effect is at 1.5 seconds. That alone is going to take almost 10% of my presentation time. I cut the transitions down to .6 seconds.

1:48 My turn to present (5 minute slot). I was feeling good about the presentation and getting nods from the audience. I feel good about time until the 3 minute 30 second mark when I realize I'm in trouble. I spend another 30 seconds or so on a key slide (customer acquisition) and then try to book through the rest of the presentation. With about 20 seconds left I start flying through slides. (fortunately many just have one word on them)

I run out of time at slide 21 (of 27) and turn it over to Q &A.

The judges have a strange look on their face. I wonder if I went too fast and they aren't sure what just happened. I also wonder what was on the slides I didn't show.

After a second of silence they start asking questions and I think things are going pretty well. There are some questions about what I'm offering when, which I thought I had spent a lot (relatively) of time covering in my presentation (key customer acquisition slide). Looks like I wasn't clear even with the extra time spent.

Other than that I thought the questions went well and no one asked about copyright or logo issues. Great!

2:00 time to relax. I'm done, time to be tired and eat some lunch while I listen to the last pitch (Reflex, soon to be announced winners)

I also can't help myself, I flip open my laptop and look at what slides I skipped. The information doesn't seem critical to me (weekend accomplishments, customer feedback, learnings, executive team, recruiting call I put in at the end for marketers, designers, and JavaScript developers)

2:10 the meeting breaks so the judges can judge.

Jeff Smith talks about community resources available to help entrepreneurs like Accelerate Michigan, Geenlight, and the Hatching.

I spend some time networking.

I notice one of the Judges call Lori Fischer, one of the organizers back for a question. I figured there was a tie and they needed a tie breaker.

2:30? The judges come back and give individual feedback to all the teams. When one of the judges is giving a team feedback I learn Lori was called back to understand if the team was a startup or an established company (they had $28K in revenue).

Feedback for me:
  • Good presentation skills
  • Death to WordPress is a provocative title. It turns some people off. (this makes me wonder if I clearly communicated this was a working title not a go to market name.)
  • Show the MVP instead of screenshots
  • Provide more customer feedback
  • The CMS space is crowded but the pain is not being solved.
Winners
After everyone got feedback it was time to announce the winners.

First there was a crowd vote (popular). Reflex won. I was surprised. I should have paid more attention to their presentation instead of stuffing my face :)

Second the judges vote was announced and Reflex won that too. I really should have paid more attention to their presentation :)

Networking
I ask for feedback from a few friends on my presentation, especially on speeding up at the end. Not much actionable feedback.

I talk with a bunch of friends and meet Erik Gillespie. It turns out Erik and I had already connected about Startup Grind. Cool to meet him in person!

One of the winning team members offers an interesting new logo design.

I introduce myself to the winners and advise them to leverage the win for public relations.

Driving Home
I'm bummed I didn't win. I think it would have been a nice PR boost to win and hopefully get some interested customers on an email list. Also I think a win is a valuable marketing asset going forward.

Thoughts: Is there something I did to lose?
  • Not cover something? Customer feedback was mentioned.
  • Was the name a death blow to my chances?
  • Did the judges think my MVP was non-existent? Maybe they knew I used a screenshot because of the lower quality product I'd built?
  • Would I have won if I'd shown more product? What would I have cut to fit that in? Do VCs expect pitches to have live demos of product?
Thoughts: What did Reflex do to win?
I wish I had paid more attention instead of eating :) I do remember they spent a good amount of time (30 seconds? a minute?) riding around  on their long board. Should I have spent a lot of time going through the product? How would that have worked in five minutes? Could I have spoken while someone created a working website in my tool?

Participating was awesome!
  • I'm thrilled to have come away with a working product that I can touch up the UI on and start demoing in customers offices about 1.5 months earlier than expected. Startup Weekend really forced me to focus on the key components needed to get there.
  • I met lots of cool people and companies.
  • Feedback improved my product positioning.
  • I learned Keynote, Node, and about some great community resources.
Want to see what I built?

Time for Sledding then sleep.


I even made it home so I could lay on the couch for 15 minutes before heading out to sled at dad & kids night

http://www.meetup.com/Lansing-Area-Dad-and-Kids-Night-Out/photos/25935501/

Monday, January 26, 2015

How to Start Investing



This weekend I spoke with someone interested in investing and realized my experience might help others. I'll give some back story on what I've done and then make specific suggestions at the end. Feel free to skip the backstory.

Backstory

I'm allergic to milk, but I'll always have a soft spot for pizza. When I was in the 7th grade (1995) my uncle and cousin took me to a pizza place in Chicago. They were discussing some sports star who had just gotten a $6 million dollar contract. My uncle asked "What would you do with a million dollars?"

I don't recall my answer, but my cousin's fascinated me: I'd invest it and live off of the interest. 6% on a million dollars is $60,000 per year. I was blown away. At that time I was probably spending about $200 a year (thanks mom and dad!) and couldn't fathom having let alone spending $60,000 dollars!

Since then I've been interested in investing.

Learning by Doing, Retirement Investing
My freshman year of college (2000) I opened my first retirement account when I started my internship with the State of Michigan. They had a 401K plan. That tax year but in Jan of 2001. My dad recommended opening a Roth IRA which I did with MSUFCU. It earned a fixed % (I believe 1.4)

During this time I began reading Forbes magazine and another investor magazine.

In 2002 I decided to move my Roth IRA from MSUFCU to Fidelity and put it into 'the market' I had no idea what I was doing and didn't get specific recommendations from anyone. I think people were afraid if they recommended xyz and I lost money I would be mad. I maxed out my IRA contribution (3K or 3.5K something like that), cashed out my MSUFCU money and opened a Fidelity account. Why Fidelity? Because my dad had a Fidelity account :) Without recommendations from anyone I decided to invest in some type of healthcare mutual fund.

For the next few years I maxed out my Roth contributions putting them in various mutual funds. Some while later (2006?) I realized this was not the best strategy. I learned about index funds and that they were better than mutual funds. Around this time I invested new IRA money in a NASDAQ Index fund (FNCMX) and what I thought was a S&P 500 Index fund, SPY (I later found out this is an ETF. Thanks Jason!)

Around 2012 or so I realized my mutual fund returns had been crap and decided to move everything into the S&P, which many investment vehicles benchmark again. As I was consolidating I realized my NASDAQ index fund had outperformed S&P so I left that alone (probably a mistake)

Now my retirement account consists of about 40% FNCMX and 60% SPY.

Other Investment Experience
I don't recommend any of these ideas for beginners, but I want to show my rounded out investment experience.

  • Business Loan (2003-2009)
  • Real Estate Purchase (2005)
  • Landlord (2007-2012)
  • Individual Stocks (mostly tech) (2012-2014)
  • Selling options (mostly tech (2012 0 2014)
  • Private Business Investment (2013)
  • Arbitrage (2013)
  • Bitcoin speculation (2013 - current)


Specific Suggestions

  1. Pay off high debts first. Think about returns. SPY returns about 8% / year. It doesn't make sense to earn 8% on investments while paying more than 8% for loans (ie. a credit card at 20%) However on the flip side it can make sense to borrow at low interest rates if you can loan out at higher rates. However this can be a dangerous game. It's something to keep in mind but a more experienced play.
  2. Credit card loans may be paid off more quickly with bank consolidation loans at lower interest rates, Lending Club or Prosper loans at lower interest rates, or 0% credit card balance transfers.
  3. Be aware retirement funds (401K, traditional IRA, Roth IRA) generally can't be used without penalty until retirement age. There are exceptions for things like first time home buying and medical emergencies.
  4. Have a cushion (1-2 months) of expenses in the bank before investing. It can be dangerous to invest funds into a brokerage account with Fidelity or OptionsHouse and have no cash in the bank. Then a car repair, medical expense, home repair, etc. can put one in a cash crunch needing to pull out their investments or use loans to cover the gap.
  5. Many employers have 401K retirement plans and will match employee contributions. Sometimes employers even match dollar for dollar up to a cap. This is a 100% risk-free return, probably the best deal anyone can get in their life.
  6. After maxing any 401K match money employers offer consider investing in a Roth IRA or traditional IRA. Open an account with Vanguard and invest in their S&P500 index product: VFINX.
Additional Information:

Sunday, January 25, 2015

Free Photos, Images, and Music for your Projects


Do you write blog posts, create presentations (hopefully with Prezi), or create video clips (hopefully with Camtasia)?

Adding media like music and pictures increases the effectiveness of your communications. Our brains process imagery faster than we process text.

It's also nice when you don't have to add attribution (putting the photo source to comply with copyright) unfortunately that typically means paying $30 at sites like Shutterstock (awesome selection though!). However there are some public domain sites that don't require attribution.

Free Photos

  1. Sometimes I start with a Google Image search to get my creative juices flowing. If I already have an idea in mind I just skip to step 2 though. I return back to Google Images if I can't find what I'm looking for.
  2. Pixabay - I go here first. Images are public domain which means you don't need to post attribution and can modify them at will. They have an OK selection. The Free Media image above was a combination of:
    1. Pixabay blank sign post
    2. Pixabay mountain background
    3. Some Gimp magic (image manipulation)
  3. Flickr - If I can't find a photo on Pixabay I'll go to Flickr. I often go to Flickr if I need a photo of a particular person like Bill Gates, Steve Jobs, etc. I check the search option for Creative Commons and use some nice CSS to overlay the attribution on top of the image. (for example I need a pic of the Winklevoss twins on my bitcoin Bulls site. )
  4. If those fail then I recommend trying Google Image Search I click on search tools and then usage rights then 'reuse with modification' however the process doesn't work so well. I'll probably go back to step 1 and try to come up with a different concept.

Free Vector Art
Vector images can be resized without distortion, from being tiny to fitting on pins all the way up to huge banners on the side of skyscrapers. Logos are often vector.

  1. Vecteezy - I haven't used this resource a lot, but I plan on doing more infographics this year and will be leveraging Vecteezy. Unfortunately their search doesn't have by license type and they permit a variety of licenses.


Free Music

  1. Incompetech - lots of great royalty free music! I've used incompetech music for my video projects since 2013. The default license requires attribution. For $30 you can purchase a license to skip attribution.

    Some Projects I've used Incompetech music on:
    1. My son playing with marbles.
    2. My brother playing a dance game. 
    3. This Video showing how to buy bitcoins.
    4. The intro to this btcjam webinar.
  2. YouTube Audio Library - I don't like this selection much, but your mileage may vary.
Free Video Clips
Sorry I don't know of any useful free resources.
  1. I have used Shutterstock in the past to purchase video clips.

What tools do I use to edit media?
  1. Images - Gimp I have Adobe Photoshop but I'm horrible with it. I use Gimp (free) for all my image editing. Gimp works on Windows, Linux, and Mac.
  2. Vector Images (can be resized with no loss of quality) Inkscape - Again I have Adobe Illustrator but I am horrible at it haven't tried using it. Inkscape (free) works on Windows, Linux, and Mac.
  3. Screen recording and Video Editing - Camtasia ($299). Fantastic tool from a local company.
  4. Sound editing - Audacity - take out noise, bump up volume, etc. Free tool that works on Windows Mac and Linux. I've never had a problem with the tool and never tried anything else.
  5. Making movies & rendering images - Blender. I'm just learning this tool. I haven't released anything I've done on it yet. Big learning curve!
Let me know in the comments if there is a category, tool, or resource I missed!

Monday, December 8, 2014

Startup Grind Coming to Lansing!


I'm stoked to announce Startup Grind is coming to Lansing in January 2015!

Startup Grind is a global (55 countries, 125 cities) startup community designed to educate, inspire and connect entrepreneurs.

Powered by Google for Entrepreneurs, Startup Grind recently launched in Lansing. Our first event will be in the second half of January 2015 featuring a rocking local entrepreneur. I hope you join us!

We host monthly events for Lansing entrepreneurs.  Each event features a successful local founder, innovator, educator or investor who shares personal stories and lessons learned on the road to building great companies.  We offer yummy food + drinks and spend an hour filming an informal, intimate fireside-chat-style interview with our awesome person of the month followed by a Q&A and mixer.

Each event gets archived on www.startupgrind.com – some of the past interviews were with biz legends like the founders of Nest, Capital One, Pinterest, Stripe, SoundCloud, Words with Friends, Intuit, Indiegogo... the list goes on and on.  These interviews are a unique peek behind-the-scenes at the life, journey and insights of those who have gone before, and are incredibly engaging and inspiring events.  Startup Grind was recently featured in Forbes magazine and is quickly becoming known as the Ted talks of the entrepreneur world.



Lets Build This Together!

I'm excited to be involved in bringing Startup Grind to Lansing. To take full advantage of this opportunity it is important to involve the community.

Please email me to get involved!

  • If you want to attend our first event.
  • If you want to volunteer to help.
  • Ideas on how Startup Grind can help Lansing.
  • Local media contacts to help spread the word! (name & email or phone)
  • Speaker suggestions (include speaker name, company, contact email,  & contact phone number)
  • Sponsor suggestions (include company name contact name, contact email,  & contact phone number) Ideal sponsors are those who are avid supporters of the local entrepreneur community or those who have services founders can benefit from. 

I'm already working hard with a team of people to line up killer speakers and put on valuable events. This is going to be an exciting addition to the already vibrant Lansing business community!

David Smith
Director, Startup Grind Lansing
www.linkedin.com/in/davidssmith/

Thursday, December 4, 2014

Apple Migration Assistant - Days to Minutes

I had a frustrating time using Apple's Migration Assistant. After some Google searching and the help of local vendor, Capitol Macintosh the process was quick. After the migration I was amazed at how seamless it was. I've checked all the apps I thought would be difficult like Inkscape and Gimp, but they transferred seamlessly.

The process worked so well that on my first login after migration all my windows were open just like I'd left them. It was just like using my old system.

Quickly Migrating Data
Quickly Migrating Data


Context

I recently purchased a new Macbook Air since my previous one had a bad screen.

I was excited to upgrade from 4 GB RAM To 8 GB RAM, but not looking forward to installing my apps and getting the system configured like my old one.

Updating in Minutes instead of Days

I found out during the migration both computers are unusable. This is a problem when the process takes many hours or even days over WiFi.

Following these steps would have migrated me in under an hour instead of days:
  1. Get a Thunderbolt Cable
  2. Update both systems to the latest version of OS X.
  3. Turn off sleep mode (Energy Saver)
  4. Turn off WiFi on the new system (to ensure the process is using the Thunderbolt cable)
  5. Plug in the Thunderbolt Cable to both systems.
  6. Restart the old system and hold the T key on the keyboard.
  7. Launch the Migration Assistant from the new computer.
  8. Follow the prompts.
Other Tips
  1. If you need to stop the migration assistant press Command Q.
  2. If you need to restart the migration assistant and it keeps continuing where it left off restart the system.
  3. While migrating the computer goes into a special mode and can't be used for anything else.
Rant
Why oh why did Apple make this process so difficult? After I put in a couple hours of trial, error, and Googling it worked great. But why hide this information? Computers are great at sequencing tasks and knowing not to go to sleep in the middle of important operations. 

There are no prompts are hints to discover how to massively speed up this process. It is frustrating I had to learn everything by trial, error, and the help of local Apple Authorized Servicer Capitol Macintosh to understand the best way to transfer the data. How hard would it have been to put the 8 steps above into software to walk users through the process?

I won't go deep into the usability issues, but for starters putting total estimated time up front via various methods (WiFi, Thunderbolt, etc.) would have helped loads.

Saturday, June 14, 2014

Bitcoin Mining Needs to be Fixed

Bitcoin mining is a problem and needs to be fixed for bitcoin to be successful. Right now I don't hear anyone talking about fixing it, just putting on bandaids or worse, ​asking for irrational actions.
The problem stems from the way the block reward works. Essentially it is a lottery where a large prize (currently 25 BTC) is awarded every ten minutes. One buys tickets by providing hashing power to secure the network. The problem is that most participants don't want to 'win' once every few years. They'd prefer to get paid frequently overtime. To achieve this they pool their hashing power together and distribute the block award according to each participants participation level.
Whats the Problem?
The larger the pool, the less the variance in payouts and the more incentive to join the pool. This creates a problem because the pool operator is now in control of the security of the bitcoin network. If the pool operator wants to cheat or abuse the network they can do so.
The entire point of bitcoin is not to rely on trusted third parties, and having a single dominant pool operator makes that operator a trusted third party. Most assume the pool operator won't, but what if the pool operator is hacked, tricked, or otherwise coerced? Can a multibillion or even trillion dollar bitcoin economy thrive with this fundamental threat? No.
Whats the Solution?
The solution is to fix the block reward. Satoshi's white paper states "Proof-of-work is essentially one-CPU-one-vote" while that is technically true today, miners can vote by switching pools or buying hashing power at competing pools those aren't fixes. They are bandaids. The fix is to eliminate the need for pools at the root level.
What is Wrong with Bandaids?
The solutions I primarily see proposed today consist of asking (more like yelling) at miners to switch pools and asking all bitcoin owners to spend a percentage of their bitcoin wealth used to mine the network on a pool of their choice.
It is bizarre to me that selfish people in the community are yelling at miners for being selfish and stating they should switch pools. Miners could be asking the community why not donate BTC to pool xyz to increase the block reward and incentivize the switch. It is the same concept. Bitcoin shouldn't work through subsidies and perverse incentives. It should be fixed at the root so individual incentives align with network incentives.
Another bandaid is attacking the dominant pool operator either through block withholding or denial of service attacks. Does it make any sense for the bitcoin community to rely on periodic attacks when a pool gets too large? No clearly the problem should be fixed at the root so individual incentives align with the network incentives.

Saturday, May 31, 2014

How I lost 6 pounds in 5 days doing almost nothing.

This week I lost six pounds (170 => 164) with minimal diet changes and no working out.

My Effort:

  1. 3 hours on Sunday reading 20% of The 4-Hour Body
  2. Eating eggs for breakfast instead of fruit
  3. Eating beans and spinach instead of fruit, potatoes, bread, and rice.
  4. Being thoughtful about what I ate at 3 meals outside of my home this week.
  5. Turning the shower on cold for a minute or so (not sure if this contributed or not)

The diet primarily consists of eating meat, legumes, and vegetables

Surprise
I'm still somewhat skeptical, but I'm proving myself wrong by doing it. I didn't think I could lose that much weight in such a short time frame and especially without major effort. In fact I may have eaten more than usual this week. I'm not sure how this will go, but I'll be happy to update in the future with continued progress.

Backstory
A few weeks ago my pants were getting tight on me. In 2012 reading The 4-Hour Workweek changed my life more than any other book I'd read (thanks Brian!) and knew the author had a weight loss book that promised maximal change with minimal effort. I was interested in losing weight, if I didn't have to eat stuff I don't like, work out, count calories. Basically I wanted to lose weight without expending much effort or changing my diet much. This diet fit me perfectly because I like to eat a lot and I like to eat a lot of meat.

Going forward
The book advocates a cheat day where you ignore the diet and today is my cheat day so we'll see how it goes (fruit and beer) )

As my experiment progresses I'll post updates on this blog. If it is successful I'll have before and after pics :)

Thursday, December 5, 2013

You Probably Shouldn't Buy Bitcoin

Edit I've reversed my position. Everyone should hold some bitcoin. The reward potential far outweighs the risks outlined below. Read more here.

TLDR - It is probably a bad idea for you to invest in bitcoin. Instead consider the S&P 500 which has never lost value in a 20 year period.

My Excitement
I'm very excited about bitcoin. It is going to do to payment companies what the telephone did to the telegraph. If that does happen an individual bitcoin is going to be worth tens of thousands of dollars.

My Mistake
Lately I've been wrongly advising friends to put some money into bitcoin, but by some I really mean hundreds or thousands of dollars. I claim 'an amount you can lose without issue', but if something is going to go up soooo much why would anyone get in for just a few bucks? If they believe what I'm saying why in the world would they just get $10 worth?

9 Reasons not to Invest in Bitcoin
Yesterday I blogged about bitcoin and unfortunately recommended readers buy some. Some friends brought up good counterpoints and I've reversed my position. Here is why you should not invest in bitcoin
  1. Bitcoin could drop in price 99% tomorrow. In fact on 8/17/2012 it dropped 30% in an hour.
  2. 100% of your bitcoins could be stolen from your online wallet, stolen from your computer, stolen by your online wallet, stolen by a virus on your computer, stolen by a virus on your smartphone, stolen by your online wallet host, and stolen by security flaws in your online wallet software.
  3. The online wallet you hold your bitcoins with could go out of business.
  4. You can lose 100% of your bitcoins by forgetting your password or throwing out a hard drive.
  5. You can easily violate US laws you are unaware of. I was unaware of the Foreign Account Tax Compliance Act or of the Banking Secrecy Act Report of Foreign Bank and Financial Accounts requirement which I could easily have violated.
  6. Tax compliance is difficult. You should plan ahead but probably won't.
  7. Bitcoin price swings will stress you out if your bitcoins go up a lot in price.
  8. Bitcoin price swings may cause you to sell at the wrong time, buy at the wrong time, sell at the wrong time, over and over and over. Read this man's unfortunate story.
  9. There are lots of bitcoin scams like this ponzi scheme.
How to Surely Get Rich
The sure way to riches is with steady payments and compounding interest. I think the S&P 500 is a great investment and has never lost value in a 20 year period. I have a large percent of my retirement portfolio in the S&P through the SPY fund.

Wednesday, December 4, 2013

Bitcoin is Provably Valuable

TLDR (too long didn't read) - bitcoin is valuable. The easiest way to buy them is Coinbase.

Bitcoin is two things:
  1. A payment network (think PayPal, Visa, MasterCard, Western Union)
  2. Money - a medium of exchange, a unit of account, and a store of value.
Why are payment networks valuable?
It is more efficient to exchange money for goods and services instead of barter. For example if I wanted a pound of rice and had a cow it would be hard to fairly divide the cow for my rice, especially if I don't have a way to store the remainder of the cow. Using money it is easy to sell the cow and then purchase the pound of rice. Payment networks make it more convenient to pay for goods and services than physical money. Visa, MasterCard, Discover, and Western Union have shown that payment networks are valued by society. Today their combined market cap is over $250 billion dollars.

Why is money valuable?
Money is valuable because other people will give goods and services for it. If a government states money is valuable but people will not accept it for goods and services. Think that can't happen? It has happened many times before.  Gold is not money, but it is a store of value and gives an idea of how much something can be worth that is not backed by a government. Today the gold in the world is estimated at a value of $8 trillion. For comparison the market capitalization is 14 billion. That means bitcoin would have to go up another 571 times to be equivalent to gold. I don't think there is a question of if that can happen, but a question of if it will happen.

How does this make bitcoin provably valuable?
Bitcoin is a great payment network. Unlike PayPal, Visa, MasterCard, etc. bitcoin cannot go out of business, cannot steal from you, cannot cheat you, etc. It has no marketing budget, no CEO to compensate, no board of directors, etc. 

Bitcoin is great money. Bitcoin is the best way for people to accept money because it is the most efficient, it is nearly impossible to counterfeit, and there is no way for a third party to cancel or modify the payment. It does not use any countries currency making it immune to mistakes made by politicians and rulers of fiat currencies. Like gold there are a fixed number of bitcoins meaning after the volatility settles down it will be a great store of value.

Should I invest hundreds or thousands in bitcoin?
No and here are 9 reasons why.
If you have some money you can lose without issue I recommend considering buying some bitcoins. I believe this is a special time in history, like the 1889 land run it is possible to get very wealthy very quickly with bitcoin, like the gentleman whose $27 investment turned into just under a million dollars in 4 years.

How do I get bitcoins?
The easiest way if you live in the US is through Coinbase.

Tuesday, November 19, 2013

Your business can accept Bitcoin in 5 minutes

Bitcoin is a great way to get paid because transactions are irreversible and bitcoins can't be forged. So there are no worries about credit card chargebacks and almost no worries about fraud.

The easiest way to accept payment is through Coinbase. After signing  up on their site you can use the Coinbase merchant tools to invoice a customer via email.

Coinbase will let you avoid the price conversion fluctuations of Bitcoin by immediately converting your customers Bitcoin payment into cash and depositing it into your bank the next day. They charge a 1% fee for this service, but have a special right now where the first million USD in sales has no charge.

Coinbase also has services to setup shopping carts allowing customers to buy merchandise from your website with Bitcoins, but that takes a little bit more work to setup. If the volume would support it you may even be able to automate it where they order a product from your website, your website orders from the supplier and then when the order is delivered the customer is emailed for pickup.

Wednesday, September 18, 2013

Explaining Bitcoin to Grandma

Want to know more about Bitcoin but don't care about the geeky underpinnings?

Here are some differences between Bitcoin and the traditional US financial system:

TraditionalBitcoin
Accounts
  • Most users hold a small amount of spending money in a wallet and most of their money in an account. 
  • To create an account one needs to find a financial institution to supply the account, apply for the account, give them all kinds of personal details, fund a minimum deposit. 
  • Banks accounts pay interest for using account holder's money and charge fees for services. 

  • It is a best practice to hold a small amount of spending money in a "spending account" and large amounts of money in accounts created on machines not connected to the internet.
  • Accounts are created through software or using a service provider.
  • There are no minimum balances and no interest paid on account balances.
  • It is recommended when sending funds to include an optional fee. Today the recommended fee is around 6 cents.
Transaction History
  • A receipt is needed to provide documentation of payment between parties.
  • In financial institutions transactions are kept private, but may be provided to government entities (courts, regulators, law enforcement)

  • All transactions and account balances are publicly visible. However account holders are only known if they disclose their identity - such as submitting identifying information to an exchange or as part of a transaction.
Reversibility
  • Cash transactions are irreversible.
  • Most other types of transactions are reversible.

  • Transactions are irreversible but the other party may issue refunds.
Issued By

  • Computers solving mathematical puzzles.
  • The process is called mining. 
  • Today specialized hardware is needed to profitably mine Bitcoins.
Currency Limits
  • Governments can create as much currency as they want.
  • This devalues that government's existing currency.

  • 21 million Bitcoins. 
  • Bitcoin is created at a predictable rate and will stop being created around 2140.
Risk of Loss
  • When I've had fraudulent transactions on debit cards and credit cards they have been reversed no problem by my banks.
  • When I've had cash stolen I've never recovered any of it.
  • US depository funds are covered by the FDIC. Banks have bonds to cover losses.



  • Improper use of software can result in loss of funds.
  • Having a computer hacked can result in loss of funds.
  • Software bugs can result in loss of funds.
  • Institutions being hacked have resulted in loss of funds.
  • Computer destruction or theft can result in loss of funds.


Sending
  • To send money a great length of distance I need to use a third party or deliver it in person.
  • Taking amounts over $10,000 across the US border needs to be declared to FinCEN.

  • The difficulty of sending funds does not change with distance. Bitcoin can be delivered across the globe the same way Bitcoin is delivered to your neighbor.




Tuesday, May 22, 2012

Don't use Video Clips when Presenting

I recommend do not play video clips in your presentation. Find a different way to deliver the message.

Over the past year I've attended a few presentations where the presenter played a video clip. Often these clips range from two to five minutes.

Here are the problems with the video clips:

  1. I am here to watch the presenter. If I wanted to watch that clip I would watch it on the computer.
  2. Sometimes the clips are excerpts of shows or movies and don't make sense without the context.
  3. Audio can be hard to hear and video can be hard to see because of the lighting.  Often there is scrambling at the beginning of the clip to adjust the audio volume. It works fine on the presenters computer at home, but is then presented on a different projector and probably even a different computer.
  4. During the video clip the presenter often stands awkwardly to the side of the presentation area or look at their computer screen. This loses the audience.
Find a way for you to deliver the message instead of the video clip.

Tuesday, December 13, 2011

Free conference calling

Have you ever needed to setup a conference call without access to a corporate conference calling number?

This summer I had just such a need. For four months I used freeconference.com for weekly morning conference calls. Instead of scheduling a meeting every week I used their reservationless conference feature to have a conference call always ready to go! This enabled the meeting notices to have the same dial in number and access code and alleviated me from having to manage the meetings through their software. No  need to hand out codes to attendees each week.

This software has worked so well I hadn't logged in since I set it up. Fortunately my password manager saved my password so when I accessed the site today I didn't have to dig around for my credentials.

Tuesday, October 25, 2011

Never forget another password

In 1994 when I got on the internet in the sixth grade I had one username and password. I can remember one username and password. Life was good. Fast forward to 2011 I have no idea how many usernames and passwords I have: 50 , 200? Who knows. I've had to use forgot password buttons, forgot login buttons, had my accounts frozen for months, written passwords down in documents, had to call help desk support for assistance. I don't have to do any of that anymore.

What changed? I installed a piece of software called LastPass. This handy software remembers my usernames and passwords for me. I have it set to automatically login to sites I visit requiring passwords. It works by using a master password. I have my master password set to a passphrase, something easy to remember but impossible for computers to guess, like "myfavoriteteacherwasMrs.SavageIn7thGrade"

There have never been any security breaches of LastPass, but I don't use it to store my financial passwords just in case. This means I only have to remember 5 passwords, one for everything non-financial, and then one password per financial institution.

Try LastPass it is free and makes your life better.

Tuesday, September 27, 2011

Page_LoadComplete not being called in a user control

I needed some logic to execute in a page load event after a control event had occurred.

Initially I wrote:

        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            if (newQuestionControl.ShouldShow)
            {
                mpeNewQuestion.Show();
            }
        }


I put a breakpoint and noticed my logic was not being called.

Since I'm in a user control there is no LoadComplete event. I fixed it like this:


        protected void Page_Init(object sender, EventArgs e)
        {
            this.Page.LoadComplete += new EventHandler(Page_LoadComplete);
        }

Tuesday, August 30, 2011

I was on a SQL Server 2008 R2 database I wanted to backup and put on my machine.

First I tried backing it up and got this error:


Backup failed for Server. 'MyDatabaseServerName' (Microsoft.SqlServer.SmoExtended)

System.Data.SqlClient.SqlError: Cannot open backup device 'C:\MyBackupFileName.bak'. Operating system error 5(Access is denied.). (Microsoft.SqlServer.Smo)



For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1539+)&LinkId=20476

Then I tried generating scripts and got this error:

Microsoft.SqlServer.Management.Smo.SmoException: Could not read metadata, possibly due to insufficient access rights. at Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

I figured I must not have rights to some metadata or something. In the wizard I try selecting Tables, Views, and Schemas. My script generates fine. I notice there is no create database in the resulting script. I go back to the Choose Objects screen, unselect "Script entire database and all database objects" and "Select All" objects. My script generates fine.

Monday, February 28, 2011

Storing your SQL Server Database as Text

Have you ever had trouble moving a database from one server to another?  Ever wanted to store the database in source control?  Storing the database as text (a SQL Server Script) enables plain text tools to operate on your database.

Jeff McWherter from Gravity Works showed me how to easily store a SQL Server Database as Text:
  1. In SQL Server Management Studio right click on a database
  2. However over Tasks
  3. Select Generate Scripts
  4. Click 'Set Scripting Options' to skip the first two steps.
  5. Click the 'Advanced' button
  6. For the last option in general change 'Types of data to script' from schema only to 'Schema and data'
  7. Click OK to close the Advanced dialog
  8. Select a location to save the script to
  9. Click Next to go to summary.
  10. Click Next for SQL Server Management Studio to generate the script.
  11. Click Finish and you've got your text!
  12. When executing this script
    1. Ensure the Filename in the CREATE DATABASE Statement is correct when executing this script. (Or you can comment out everything after CREATE DATABASE $YOURDBNAME$ until the first GO to have SQL Server use defaults)
    2. Since this works at the SQL Server level, you will get errors when the script attempts to create users that don't exist on the target server and then errors when it authorizes that user.

P.S. See my post SQL Server Management Studio Generating Change Scripts if you want to use SQL Server Management Studio to graphically modify the database but then script the change.

Monday, February 14, 2011

Windows and Mac are Dodo Birds

18 days ago I received a CR-48 and have used it as my exclusive computer outside of work.

This machine is perfect because :
  1. It is built for the internet.
  2. It is resilient.
  3. It is powerful.
  4. It is convenient.
Chrome OS is built for the internet.  When I'm online I am consuming information and communicating.  Neither of these tasks require the power and complexity of Windows or a Mac operating systems.  Chrome OS gets me online almost instantly and gets out of my way so I can use the web.

Chome OS is resilient.  Suffering data losses in 2001 and 2005 I moved all my important files to Google docs and Windows Skydrive.  Since moving to the cloud I have not lost a bit, and have not cared which operating system I'm on for my personal computing needs.  Chrome OS takes this a step further putting my files and applications in the cloud.  Now if my machine dies I won't waste time reconfiguring my machine the way I want it.

Chrome OS is powerful.  I was surprised I am able to take and edit photos on my CR-48, make phone calls, do online video conferencing with my son, and edit code.  Prior to receiving the CR-48 I assumed some applications didn't make sense as web apps, but now my thinking is flipped.  All apps make sense as web apps and they will all be web apps.  It is just a matter of time.

Chrome OS is convenient.  It is light, it is fast, it is portable, it is quiet, the battery lasts for 8 hours, it is secure, it is hardy.

When Windows Longhorn was announced waaaaaaaay back in the day I was excited about features it was going to deliver like WinFS.  When Windows 7 launched I didn't care about any of the features.  The world has changed.  I don't care about desktop features anymore.  None of them make my life easier and more convenient.  With Windows 8 on the horizon, I can't think of a single desktop feature I want.  Today's compelling use cases are cloud based.  I started using Mac this year.  Which features was I excited about?  Syncing with Google Calendar, syncing with Google Contacts, and storing my data in the cloud.  Chrome OS leapfrogged these operating systems and they will need to catch up or go the way of the dodo bird.

Monday, February 7, 2011

Adding Cascading Deletes

I needed to add delete functionality for an entity in one of our projects.  Unfortunately this table had 30 other tables referencing it.

This SQL generated the correct code for me faster than I could blink:


SELECT 'alter table [' + FK.TABLE_NAME + '] drop constraint [' + C.CONSTRAINT_NAME +']; ' +
'ALTER TABLE [' + FK.TABLE_NAME + 
      '] WITH CHECK ADD CONSTRAINT [' +  C.CONSTRAINT_NAME + 
      '] FOREIGN KEY([' + CU.COLUMN_NAME + 
      ']) REFERENCES [' + PK.TABLE_NAME + ']([' +
  PT.COLUMN_NAME + ']) ON DELETE CASCADE; '
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
SELECT i1.TABLE_NAME, i2.COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT ON PT.TABLE_NAME = PK.TABLE_NAME
where CU.COLUMN_NAME = 'yourColumnName'