Leinninger.com

May 1st, 2015:
I miss blogs, dammit.

I had an old blog and was pretty good at updating it. It used my personal framework instead of a mainstream, feature-packed system like WordPress. It was modular and linked to friends’ blogs. They were all pretty good at updating their blogs too.

What happened?

One explanation is simple: we don’t have time any more. We’re old. We have families to spend time with. There are more complicated hobbies to maintain. We write (good) code all day long and don’t need that special fix that we used to crave.

Another explanation? WordPress is less fun. It’s not my personal code sandbox. I don’t take pride in the feature set… I just download another plug-in and enable it. I don’t have friends providing feedback on what’s working vs. what could be better… and when they do, I don’t take it personally.

Does this post mean I’ll try harder to make blog posts? Maybe… but with the summer (and race season) starting soon, I make no promises…

- Duane

December 16th, 2009:
American Auto Makers, Build A Car That I Want!

What the hell, Ford? (Same goes for you GM and Chrysler…) What do you have against people that know how to drive a car? Seriously! I don’t need auto assist lane change backup sensor stability control heated bum wiping! It’s quite simple: a touring car (sport sedan or coupe) with all-wheel drive, taut suspension, peppy performance and A MANUAL TRANSMISSION!!! I spied a car that I was truly interested in: a Ford Fusion Sport AWD. Ford doesn’t offer a manual transmission on any of the more powerful engine options for the Fusion. Step up to the new Taurus and you get a bloated car with soft suspension and poor fuel economy… still without a real transmission. GM, what do you have? Crossovers and luxury cars. Chrysler? The same. Sure, there are plenty of rear-wheel drive offerings that I would love to own. However, I live off of a county dirt road and even if I didn’t most of the options cost more than I could justify spending. I drive a Subaru daily. I love it. The recent economic climate has made me think twice about driving a foreign car. (Though the entire Legacy and Tribeca lines are built right here in the USA at a “green” facility that is officially a protected natural asset.) I can get any Impreza or Legacy with All-Wheel Drive (of course) and a manual transmission, including the potent GT, WRX, and STi variants. I could buy a Mitsubishi Evolution or Lancer. I could even step it up a notch (into the Taurus and LaCrosse price ranges) and get a well-equipped BMW 338xi or Infiniti G series. It’s not that the “Big 2 1/2” aren’t capable of building a sporty AWD car. They’ve done it in the past and offer several in Europe (Ford Focus RS, anyone?). America just doesn’t want to buy them. For most drivers on the expressway, it’s too much work to check one’s blindspot before changing lanes. Why would they want to have to row through gears as they enter and exit the highway? Come on America! Wake up! Pay attention! Put down that cellphone and cheeseburger and learn to drive! That’s the only way we’re going to get cars worth driving in the showrooms.

- Duane

February 3rd, 2009:
Your Company’s Blog Is Crap

Blogging is not a marketing strategy. Twitter is not a way to spread the word about your product or site. Facebook and MySpace pages about companies are as useful as a nipple on one’s backside. Sure it’s there, but nobody wants to go near it. If you’re trying to exploit the social media and networking features of the internet, you’re an idiot and it will only hurt you in the long run.

You should have to wear this shirt, all day, every day.

Marketing with blogs and twitter is contrary
to the nature of these systems.

You can’t game the system. Period. This is a world where people filter out crap and decide what’s actually useful. Are you wondering why you only have a few followers on Twitter? Perhaps it’s because you provide no useful information at all! In fact, I would guess that the only followers you have are your employees and their parents. The same goes for your blog. If you write about how great your company is and how useful your products are, people will figure out that you’re trying to sell them something. There are a lot of stupid people out there, but even the lowliest mouth-breather out there knows when they’re getting sold something. We’re not buying it and you’re only hurting your reputation.

People write blogs about real things: what their passions are, how they spent their vacation, how the economy is affecting them, and what their family is doing. They vent (like I am now), they explain, they share. It’s real. Blogging about your benefit package or how great your corporate cafeteria’s food tastes doesn’t really matter, especially if you’re not hiring anyone!

I follow people who twitter about things that interest me, that I benefit from by either sharing information or consuming information. I don’t want to hear about what you’re working on today (especially if it’s the same 2 or 3 things every day), I don’t want to see you invite one of your tweets to lunch (that’s what instant messenger is for, you twit… it’s different if you’re sending an open invitation that you want to broadcast!), and I don’t want to know what new and exciting product your company is launching tomorrow… usually…

The only exception that comes to mind is when your company has a livestyle brand: something that I’m passionate about or invested in: Apple, Woot, Subaru, and Maker’s Mark might be a few examples. They are companies that make products that integrate with my life. I don’t want to hear from my insurance company, bank, mortgage company, or utilities. Period.

Just because Google has a blog that talks about what they’re working on… and it’s immensely popular… doesn’t mean that first global bank’s blog will be the same. Google is buzzworthy. They are an industry changer: the stuff they broadcast has wide-reaching implications and most of all, it’s freakin’ interesting!

Here’s a suggestion: do something better than everyone else. You’ve just created an instant audience. Then, write stuff that your audience cares about. They’ll read it, I promise.

- Duane

February 26th, 2008:
Hawaiian Vacation 2007

Photos Available Here

11-19

On the plane… all day.

Luggage didn’t make it to Hawaii, due to delays… had to wait for next island-hopper to arrive.

Got rental car

Checked into hotel/condo

Dinner at Huggo’s: great teriyaki steak… even better Mai Tais.

11-20

Breakfast Splasher’s Grill: Omlette for me Pancakes w/ berries and cream cheese for Gina.

Grocery shopping: supplies for our time on Big Island.

Skipped lunch, lots of time on the road (2 hours each way) to Volcano. Very cool, rained, but ok.

Learned about different kinds of Volcanic rock, ahah (rough) and poh’hoi’hoi (smooth).

Drive back to hotel, stop at local hippie organic fruit stand. Got fresh pineapple, chips, guacamole, macaroons.

Make dinner: steak: pan cooked in garlic butter. Shrimp cooked in steak drippings and garlic butter. Delicious. Homemade mai tais… Chris made them strong. Time to hit the hot tub… it was hot. The pool refreshingly cold. Jumped back and forth between them. Met Nick (who works at Intuit… shared some stories) as well as a surfer dude with a tattoo of his parents’ wedding bands on his arm. Tired. Time for bed.

11-21

We actually got up to watch the sun rise! (Benefits of a five-hour time difference.

Breakfast: Portugese sausage and eggs with bacon. Mmmm… breakfast of champions. Had plenty of POG with that meal. Packed up and headed out for our dolphin journey.

Arrived at harbor, got fitted for snorkeling gear and headed out on boat. Saw dolphins immediately, but could not dive so close to shore. Fisherman dump carcasses in that area… things that eat carcasses would be around (they didn’t specifically say sharks, but that’s what they meant). The skipper was Kitt, our dive master was Brett, the boat pilot was Brian. Boat skipped across waves pretty well. Moved to first dolphin area and jumped in. When the boat slowed and started to list in the water ,I needed to get off asap. We saw dophins under water immediately. You could hear them before you saw them. Amazing. These spinner dolphins were very acrobatic and travelled in groups of 3-10, although the pod was about 80 animals. During the second stop, I got within a foot of a group of 3 dolphins. Looking into their eyes you kind of get the feeling that they’re trying to figure you out. There’s no doubt about how intelligent they are. About 10 minutes into the 3rd stop, a mouthful of salt water convinced me that I had to get back on the boat and stare at the shoreline. Seasick. It sucks. I skipped the 4th stop, but everyone else had really up-close encounters with the dolphins. Apparently, I was pretty pale… everyone liked pointing that out. The whole excursion was so great that I don’t care that I was seasick. I would gladly be sick again to have the same experience. As soon as I got on the shore I felt better. Within minutes, it was as if I had never been sick. We all went back and took naps. It was draining! Later that night we made salads and Chris seared tuna and ono.

11-22

Thanksgiving! More Portugese sausage and eggs for breakfast. Good grief that stuff is delicious! Then we geared up for an island hike based on some tips from our dolphin journey dive master: Brett. On the way out, we found a dive shop (open on Thanksgiving!) and bought some masks and snorkels (great deal on good gear), added to our packs, and continued on our way. We started out on a small beach and headed into a lava flow. The terrain was treacherous, but we were making pretty good time. Half-way into the lava flow, we discovered the actual trail, which was much easier to traverse. We were soon on the next beach, covered in a mixture of black lava rock and white fossilized coral. After a short break, we turned back (following the trail this time…) and returned to the beach. Chris torqued his back something awful, so he took a break in the shade while Gina, Emily, and I checked out the water. The girls hung back, fearing that the rough seas would remove their suits, while I tried out body surfing for the first time. Awesome. We regrouped and headed back to prepare for our “Captain Bean’s Dinner Cruise” (Formerly known as the “booze cruise“). The live music on the boat was nice, the food was pretty bad, as was the show, but the performers looked like they were having fun. We each got a single drink ticket (Chris and Emily remembered that there was an open bar in previous years), but Emily bought us a lava flow to meet our girl-drink quota. We headed back and packed for our departure from the Big Island the next day.

11-23

Last day on the Big Island. We made scrambled eggs and Portuguese sausage (can’t get enough) and packed up for a time-share spiel. (We sold our souls for a gift certificate to pay for most of the dinner cruise on Thursday.) We went there, told them we did it for the “gift”, sat through a basic presentation, then were off for a day of walking around the main road. After about an hour of that, we decided to check out the Kona Joe coffee plantation and mill. We got a tour, some samples and bought plenty of 10% Kona coffee. We were directed to a local restaurant for lunch called Aloha Angel Cafe. The food was incredible: a sampling of every style of food we could imagine. Gina had a chicken sandwich, Chris had a quesadilla, Emily had pasta, and I had an Indian curry. Back in the truck and off the the airport to return the rental and check-in for our flight.

The airport on the big island is completely open. There are no signs at the gates or screens to tell you what flights are arriving or departing. They just kinda call you up when it’s close to boarding time, you sit down for 5 minutes, then you board the island hopper. Each inter-island flight included a small cup of Pineapple-Orange juice… well, 10% juice. It’s similar to the delicious POG (Pineapple, Orange, Guava) Juice found all over the island. Anyway, a quick stop on Honolulu and we were back on another hopper to Kawai’i. We got off of the plane, decided to rent one Jeep (instead of a Jeep and a convertible), and headed out to Chris and Emily’s time-share. The 4-door Jeep is relatively large inside (it fit all of our luggage better than the Liberty on the Big Island), but rides more like a… well… Jeep. We tried to stop for Bubba Burgers, but everything closed around 8 except for a small strip of restaurants and coffee bars… for the night owls, they stayed open until 10 ;-). We ate giant servings of great food at the Olympic Cafe. (Burger for me, Tofu wrap for Gina, Burrito for Chris, and a giant salad for Emily… plus a few Hawaii 5-0s… think of it as a Long Island Iced Tea… Hawaiian-style.

11-24

We stopped at the Polynesian Cafe in Hona Lei and had breakfast sandwiches, burritos, etc. We shopped for a bit, buying towels and a sweet Hemi Aloha shirt, then went for a drive across several one-lane bridges to Ke-a Beach. We stopped at a semi-underground lake in the side of a mountain, but it was too… murky… to venture across. We headed to the very wavy beach and kinda Zen-ed out, looking at the Napali coast.

After a few walks along the shore, some crab-digging, and water testing, we left to get supplies for the week at the grocery store. Groceries are VERY expensive in Hawaii. Even though Hawaii has the biggest and oldest cattle ranch in the US, all of the beef has to be sent back to the mainland for USDA approval… expensive. We headed back to the time-share and carried a bag of sandwiches down the the beach for a picnic. Another chill out followed by walking along the shore and a little swimming, then back to the rooms for some Mai-Tais and music. We drank until the world became a little out of focus, then headed off to the hot tub and pool. We cooked in the hot tub, then chilled in the pool… then repeated… and repeated… and repeated. Sufficiently relaxed, we went back to the rooms and hit the hay.

11-25

Breakfast: Corned beef hash and eggs, POG and coffee. We loaded up, grabbed our snorkeling gear, and hiked a few miles to Queen’s Bath… a tide pool on the edge of the ocean surrounded by tall volcanic rock. There was a spot to dive from (we didn’t) and lots of great snorkeling. After some turtle-watching on the cliffs, we headed out for another decent hike to hide-away beach. For much of the time, we were the only people on the beach or in the water. The snorkeling there was even better! Huge tropical fish (trigger fish, box fish, clown fish), sea cucumbers, and anemone were everywhere we looked. We snorkled without fins and the current was challenging at times, but we made sure to not venture to far into the ocean.

A quick nap on the beach, and we hiked back to the time-share. Chris grilled up marinated Ahi tuna and chicken while Emily and Gina prepared salads. The night ended with beers and way too much time spent watching TLC shows about morbidly obese people at a treatment center in New York. When they started showing something about a 1000 lb Mexican guy, we decided we had enough and headed off to bed.

11-26

Gina and I made spam (yes, really), egg, and cheese breakfast sandwiches with has browns for breakfast. We packed up and loaded into the Jeep to see Apaeka Falls. There’s been less rain than normal, so they were there… but not as full as normal. Then we headed out to Waimea Canyon then to Barking Sands beach. The canyon was impressive… like a tropical grand canyon (but smaller). By this time it was pretty far into the day… about 2 in the afternoon. We headed to a small diner/ice cream shop and discovered that they had Katsu on the menu. (It was sooo great.) They also featured Lappert’s Hawaiian Ice Cream… mmmm.

Barking Sands was a huge beach that required an exciting 4 wheel drive excursion to reach. I would say that we all had more fun pounding through the dirt trail than at the beach itself. The video of the dirt road trip should be fun to watch. We headed back and stopped at Spouting Horn (aka “The Blow Hole” aaka “The Ocean Fart”). Any tourist trip to Hawaii requires a stop at Hilo Hatie (what Bronners is to Christmas, Hilo Hattie is to Hawaii), where we got some swag. We had dinner at a place called Sushi Bushido. It was average, but about the same price as the mainland… the service was horrible. We headed back to the resort and immediately hit the hay. It was an activity-packed day and we were exhausted.

11-27

Chris cooked crepes/swiss pancakes with portuguese sausage for breakfast (I missed portuguese sausage already… mmm). After a cup of tasty coffee, we headed to Tunnels beach for some snorkeling. The ocean was pretty rough. We were pulled in every direction, the undertow was crazy, having to grab onto VERY sharp rocks to keep from getting pulled out to sea (even with dive fins on). We regrouped, bandaged our cuts, and tried a slightly less active part of the beach. It was a little better, but we were still getting pulled horizontal to the shore making it hard to see the fish. We saw tons of huge creatures: urchins, fish, sea cucumbers, and crabs. Most of the fish were 9-12 inches long, the bigger ones were not afraid to go snout to mask with us. We tried one more snorkeling spot based on the recommendation of another snorkeler. It was much calmer, but quickly became murky and dark as the sun started to hide behind clouds. We all took a power nap on the beach, then walked back to the Jeep.

We drove into Hona Lei and finally got our Bubba Burgers. (Their slogan is “we cheat tourists, drunks, and attorneys.”) Think fresh, old fashioned, hamburgers with just meat, cheese, onions and relish. Dress to taste (I went with mayo, a little ketchup, and a dash of mustard), and enjoy. They were every bit as good as promised. Adding a basked of “frings” (fries mixed with a few onion rings) and you’re in hog heaven. Gina opted for chili fries w/ cheese that were just as good as the frings. A little more shopping in the nearby shops for gifts and a hoodie for Gina and then a drink to observe island happy hour (3:30 – 5:30), then a stop for groceries (tonight is taco night) and Margarita fixins and we were back at the resort to chill a little bit before making dinner.

We skipped the margaritas since the bubba burgers were playing havoc on the girls’ stomachs. Chris and I downed a few beers, and then it started to pour. That didn’t phase us a bit, we put the beer into plastic cups and headed off to the hot tub. We met a local who told us how to get to secret beach and all about his new (to him) 2002 Tacoma with a 5″ lift and rims. Sounds pretty sweet. We enjoyed the cold rain in the hot tub and then headed back to observe taco Tuesday. The smell of fresh taco fixin’s got the girls attention, we ate, the girls went to bed, and Chris and I talked for a few hours (and drank a few more beers) before throwing in the towel for the night.

11-28

Hawaiian bread french toast w/ coconut syrup and portuguese sausage started the day off right, albeit a little later than usual (8:00)… I blame the beers. We chilled then headed off to secret beach. Apparently, it’s not that much of a secret: there were a few folks walking around, but the seas were WAAAAAY to rough for swimming or snorkeling. We hiked around, took lots of pictures of the surf, and hunted for crabs.

After an hour-or-so, we found a cluster of rocks, perched on them and ate sandwiches that we packed in our bags. We watched the crabs dig holes and react to the incoming surf. Very relaxing. We then headed into Kapa’a for a coffee at Java Kai. The barista was very friendly… except when Chris ordered a Late after he had already steamed the milk. We walked around town, shopped a bit, then headed back to the resort.

The sky was relatively overcast all day with occasional light showers, but we made the most of it by relaxing in the hot tub and swimming in one of the resort’s pools. We returned to the condo and made patty melts with mushrooms and red peppers and some meaty nachos. We’re officially in “use up all of the food” mode. We chilled, finished our margaritas, and talked about racing. Then we plunked down in front of the TV and watched a show on TLC about a forensic medical examiner. Bah. I had a little trouble falling asleep… maybe I’m realizing that we’re getting close to the end of our trip. I’m pretty much ready to sell everything, quit my job, and work at a car wash (Hawaii needs more of them) on Kawai’i. An hour or two of Super Mario 64 DS tired me out and I finally fell asleep.

11-29

Our last full day in Hawaii. Sigh. We improvised ham, egg, and cheese (except Chris) breakfast burritos with hash browns. We finished off the last of our POG and chilled on the Lenai while waiting for Chris to shower (and for me to update this travel journal).

We headed out to a bird sanctuary and the Western-most lighthouse in the US. Though overcast, we saw plenty of Nay-nay (I’m sure my spelling is pretty horrible…) as well as several other soaring seabirds. We ventured out that evening to try to catch the sunset, but it was overcast and the only bridge back to town was to be closed at 7. The police arrived and asked everyone to head back… so we did. We had one more round of Bubba Burgers, then headed back to pack and sleep

11-30

We woke up and had the last of our sausage and eggs for breakfast. We collected our things and headed out to do a little souvenir/gift shopping in town. We finally sampled shave ice and walked along the beach one last time. We returned our rental and changed into Michigan-ready clothing, then went to the Kauai airport to wait for our jumper to Honolulu.

Our flight arrived in Honolulu on time and we looked for some sort of meal option before boarding the plane. No such luck. The airport is older and has some nice details that I remember airports having when I was younger (real wood, interesting light fixtures, etc.). We boarded the plane and taxied onto the runway, only to head back for navigation system maintenance. An hour and fifteen minutes later and we were off. The flight to Minnesota lasted almost 8 hours, but Northwest kindly arranged for a new flight to replace the one that we (quite obviously) missed due to the delay in Honolulu. We waited for a few minutes, eating some sort of yuppy-friendly breakfast food, then boarded our plane. We barely got out before a huge snowstorm hit Minneapolis.

12-1

We arrived in the snow-covered splendor of Michigan an hour-or-so later. (That splendor part was sarcasm, by the way.) Our luggage was already waiting for us when we arrived. We grabbed it and waited for our shuttle to the long-term parking facility. Back in the orange wonder van, we drove Chris and Emily home, then headed to Gina’s parents’ to claim our cats.

We picked up the cats without a hitch and went home. The house was still there and in the same condition we left it. Since our luck had been so good thus far, I decided to stretch it a bit further by driving across town to my parents’ house to get Kacey, our dog who was waiting for us on an outdoor dog bed in the front yard. The plan was to beat the looming ice storm and come back… with summer tires on my car. It should be noted that regardless of all, four, or ten wheel drive you will go nowhere if your tires have no grip. After a grueling hour and a half drive on treacherous, ice-covered roads, we arrived at my parents… and stayed there, all night, until the roads were “better” in the morning.

12-2

We got home just fine and enjoyed a quiet evening along with just enough time to miss Hawaii and mentally prepare for our return to work the next day.

- Duane

November 5th, 2007:
The Right Tool for the Job

I’ve said many times before that I’m big on “bang for the buck.” A significant part of that equation is making sure that you’re using the right tool for the job. Allow me to provide an example. My wife, Gina, and I made a lot of improvements on our last house. While remodeling our front porch, we needed to replace the front steps. 2 simple concrete steps needed to be transported from the concrete supplier about 2 miles to our front porch. These concrete steps would “fit” into the back of my station wagon. After a little fussing about to get them in the back of my car, I surveyed the rear ride height of my car. It was pretty well compressed to the bump stops… but should make it to our house. After a very slow 2 mile ride, we needed to get the steps from the back of the car to the front porch. Gina retrieved a plastic garden cart from the back yard and rolled it to the back of the car. The 2 of us struggled to remove the first step from the rear of the car… and gently drop it into the garden cart. It went right through the bottom. Another concerning detail: the rear of my faithful little Subaru didn’t start to rebound as I expected. We lugged the first step to the front porch and returned to the car to remove the second. Again, we struggled to extract the step. And, once again, the car failed to fully return to it’s pre-traumatic ride height.

We eventually installed the new steps, mortar and all, but I learned a few things. First: compact cars do not haul heavy loads well. I ended up replacing the rear suspension in my Subaru. What the heck was I thinking? Just because the load fit didn’t mean that I should carry it in that car! I should have rented a truck or bugged a buddy to help me out. Putting the concrete step through the bottom of the garden cart reinforced this. Perhaps a wheel barrel would have worked better.

I build websites for a living. More accurately, I lead a team of folks that build websites for a living. I still code quite a bit, but it’s not my primary responsibility. Our websites are used by the public. We are Web Standards code snobs: our markup describes the content it contains. The tools we use allow us to do this quickly and easily. We have built several frameworks with PHP. Admittedly, the newest framework (which benefits greatly from PHP5’s object oriented approach) is significantly better than our previous (early-PHP4-based) framework. However, both of these solutions allow us to meet the demands of our very creative marketing team as well as the unpredictable financial market. PHP is hands-off when it comes to the front-end. Do what you want (good or bad) and PHP will let you. Each of our frameworks has defined boundaries to ensure the separation of layout (display) from logic. In the end, however, we can be sure that our output (the web page content) is exactly we want it.

This has paid off in a big way. Search engines consume our content greedily thanks to concise, content-related URLs (which we control completely). Paragraphs, headlines, and lists (menus) are tagged as such instead of vague blocks (divs). Search engines like this and so do developers. There’s no guessing about what something is on a page. Data grids are represented as tables, and table are not used for layout. (Just like you wouldn’t use Microsoft Excel to design and publish a newsletter… at least you shouldn’t… unless your clinically insane.)

I’m not claiming that other solutions don’t allow you to do this. But some of them try to do too much for you. In the process of doing so, they make you do it their way. For example, the origins of one popular technology are founded in desktop application development. The development metaphors of desktop application are very different than those of web development. (Screens instead of pages and so forth.) Additionally, the mentality of platform agnostics escapes most desktop developers. They build for a specific platform, the end. Web developers must support many versions of many browsers, on many platforms and devices. This mentality is reflected in the approach that these technologies take in addressing user interface, layout, display, and session management. If you’re going to build web sites, choose a tool made for building web sites… not everything else.

However, if you’re building desktop apps you’re in a great spot if you’ve chosen technology intended for such a task. When you find yourself straddling this workspace, it may make sense to compromise. Use a technology with strong ties to both worlds. I’m not talking about Java here, folks. .NET offers some powerful tools for application developers that are required to build web-compatible apps. Read that last sentence again… “web-compatible apps…” I’m pretty proud of that part. It encapsulates the spirit of those developers that use .NET technology for web apps. Whether you start out writing desktop apps or your goal is to someday write a desktop app, you’ll probably be pretty happy using .NET to build web apps.

Face it! You’re not thinking web. You’re not buying into the philosophy and culture of a shared, universal experience. The web breaks down barriers, it should not invent new ones (Active X, I’m looking at you…). Some of the new things that Microsoft is working on, like Silverlight, have the right spirit. Now it’s up to the real web development/design community to adopt them. Microsoft is going to need some feedback… and I’ve recently found out that they’re really open to it. Tell them what you want, they’re listening. Their tools reflect the needs of their core user base. If web standards focused developers use these tools and work with Microsoft to get it right, there’s a good chance they’ll get there (eventually).

Everybody has tools that they use to get work done. I admit that I’ve used wrench for a hammer in a pinch. Usually, the results aren’t pretty. A carpenter wouldn’t do the same thing. If you’re a professional, make sure you use the tools that fit the job. If you’re using tools that work, but aren’t made for the job, tell the people that make those tools to get it right. Demand it. Now get back to work. Web 3.0 isn’t going to happen by itself.

- Duane

Devtroit