Matthew Lindfield Seager

Development

Family

K 12 Education

User Experience

2019-09-17: Catalina, Ruby and Zsh I recently upgraded to macOS Catalina (10.15 public beta). There are several “under the …

2019-09-16: I used Sign In With Apple for the first time today in the beta version of Micro.blog As a customer …

2019-09-15: I’ve been enjoying listening to www.founderquestpodcast.com lately… 3 devs who launched a …

2019-09-14: I recently finished listening to The President is Missing by Bill Clinton and James Patterson (while …

2019-09-13: Web developers: if your password field doesn’t let my browser auto-generate a unique password …

2019-09-12: I wish I’d known about .rubocop_todo.yml last time I experimented with adding RuboCop to an existing …

2019-09-11: I used draw.io again today for a flowchart. It’s no OmniGraffle but it’s pretty amazing how good a …

2019-09-10: Heading to bed early before the big Apple keynote tomorrow morning!

2019-09-09: When writing change logs, commit messages, code comments, method names, project plans or just about …

2019-09-08: It has taken me 5 days to knock down our old back fence and put in 7 new fence posts. Tomorrow I …

2019-09-06: Embrace the conceptual compression of Rails… Don’t think you need to understand everything …

2019-09-06: All Micro.blog hosted blogs now come with free sandpit blog so you can try out theme and design …

2019-09-05: I just added my vote for a Micro dot blog icon to be added to FontAwesome: …

2019-09-04: The circle of life continues: www.abc.net.au/news/scie…

2019-09-03: Scary iOS Exploit Project Zero released details of a sustained (multi-year) and regularly updated iOS exploit suite. I …

2019-09-02: Calculating taxable portions Xero doesn’t support line items that have a mix of GST and non-GST items. To add a mixed …

2019-09-01: Fantastic interview with Sandi Metz. There were two things she said that I wanted to write down but …

2019-08-31: This hardening guide for Rails apps is big but clearly written and has lots of links if you need …

2019-08-30: www.bbc.com/news/tech… Swedish school district in privacy hot water after tracking student …

2019-08-29: “There is no quick fix, but there is a fix” Something to remember with relationships, work and …

2019-08-28: So apparently Stripe has 45 developers… …whose entire job is inwards focused, trying …

2019-08-27: How not to write error messages: >[Error] Script lines: 1-9 -------------------------- An …

2019-08-26: Today I learned that bundle open is a way to easily look inside Ruby gems! …

2019-08-25: Enjoying the winter sunshine at the park

2019-08-24: Today I learned a bit about “Mutant Testing”… slight variations (mutations) in tests or test …

2019-08-23: Signal is an excellent cross platform messaging app, a great alternative to WhatsApp for those …

2019-08-22: I often keep browser tabs open on my phone with the vague thought that I’ll read/watch/share …

2019-08-21: A mess is not a technical debt. A mess is just a mess. Technical debt decisions are made based on …

2019-08-20: Notes to future self: Watch out for integer division! 9 / 10 # => 0 🤔 Order of operations …

2019-08-19: VPN advice for schools (& probably most other businesses): when getting your firewall …

2019-08-18: Raspberry Pi 4 is an impressive bit of kit! Quad core CPU, Gigabit ethernet, dual 4k displays & …

2019-08-17: Scammed 😔 I think I’m pretty savvy when it comes to online scams and phishing but it turns out I’m …

2019-08-17: My laptop fan started screaming… checked Activity Monitor and Safari CPU usage was at 122% I …

2019-08-16: Pragma Precedence Preoccupation The latest Ruby Weekly newsletter linked to a helpful blog post about magic comments (or pragmas) in …

2019-08-15: Kiba is really nice for doing ETL work in Ruby! It strikes a great balance between providing all the …

2019-08-15: Netflix in the Classroom... kind of Netflix in the Classroom… kind of According to its terms of use, Netflix can’t be used …

2019-08-13: I used the kiba gem for an ETL process today. My initial impressions are very positive! It lets you …

2019-08-12: An anesthesiologist gives a great little (< 20 min) talk on how failure research applies to web …

2019-08-11: In my recent security travels, I found an article by the author of bcrypt-ruby on How To Safely …

2019-08-10: Rails Authentication - Clearance, BCrypt and Salting While I was thinking about security I decided to double check that I’m practicing what I …

2019-08-09: The Importance of Long Passwords I discovered today that the 20 character randomly generated password I thought I’d been using …

2019-08-05: Interesting thought experiment in youtu.be/1VsSXRPEB… He makes a reasonable argument that, in …

2019-08-04: Tonight I finished Ruby Under a Microscope by Pat Shaughnessy 📚 Some sections were pretty tough but …

2019-08-01: I’m upgrading from a 2010 MacBook Pro to a 2019 MacBook Air… and yet so far the thing I’ve …

2019-07-29: thoughtbot.com/blog/git-… is a very clever alternative to aliasing bundle exec

2019-07-24: Wifi safety comes up again and again in schools… it’s interesting to read about the origin of …

2019-07-23: I recently finished Bad Debts by Peter Temple 📚🎧 It was a bit gritty for my taste but the writing …

2019-07-22: Event Sourcing Made Simple was pretty persuasive about the benefits of decoupling the model from the …

2019-07-21: I love the idea of No Backlog. If an idea has merit but misses a cycle, someone can track it …

2019-07-20: Modules as Classes in Ruby Today I learned that Ruby modules are actually implemented as classes under the hood. When you …

2019-07-19: There’s always several things worth reading in the Ruby Weekly newsletter So far this week I’ve …

2019-07-18: 🎉 Free ebook with hard cover purchase 😐 Fine print says 45 days “free access” 😞 They …

2019-07-17: 📚 🎧 Finished listening to 9 Perfect Strangers - www.goodreads.com/book/show… First time I’ve …

2019-07-16: This evening my son and I switched to Codenvy.com for his school project (he is building a quiz …

2019-07-15: Today I finished going through the StimulusJS handbook and examples; …

2019-07-14: The good, the bad & the surprising of repl.it/languages/rails (after 2nd session with my 9 year …

2019-07-13: “A setting in Safari is blocking Teams. In your browser, go to Preferences > Privacy and …

2019-07-12: Two nice screenshot features in macOS 10.15/iOS 13: screenshot on Mac can show up on another device …

2019-07-11: 🤯 Modelling data (not behaviour) has been a huge part of my development work recently. John Schoeman …

2019-07-11: Just watched another good RailsConf 2019 talk: Scalabale Observability for Rails Applications by …

2019-07-10: I went looking for a simple cloud based development environment for a project my son is working on …

2019-07-09: Micro.blog continues to steadily improve! I really appreciate how quickly Manton turned around some …

2019-07-08: Graphiti and Leverage Episode 40 of Remote Ruby was so thought-provoking I added it back to my podcast queue. After …

2019-07-08: The more I learn about programming, the more I discover how “inefficient” it can be… While …

2019-07-06: I’m reading Ruby Under a Microscope (http://patshaughnessy.net/ruby-under-a-microscope) 📖 2.5 …

2019-07-05: Parsing vs Evaluating Order Following up from my Ruby pop quiz the other day, I asked about the surprising behaviour on Stack …

2019-07-04: Some nice little refinements in the Apple ecosystem… macOS Catalina prompts you to join your …

2019-07-03: Ruby Pop Quiz if false foo = 'bar' end foo What will the result be? a. foo b. ‘bar’ c. …

2019-07-02: Testing Security Controls I’m working my way through RailsConf 2019 and I keep finding gems (excuse the pun). No Such Thing as …

2019-06-30: Will Leinweber has a lot of experience with Postgres. His RailsConf talk on what to do When it all …

2019-06-29: Really thoughtful guidance on Service Objects in Ruby: katafrakt.me/2018/07/0… Keeping them …

2019-06-28: I love that, with CarPlay, my cheap car and its nasty head unit are actually a pleasure to …

2019-06-27: Great presentation from RailsConf 2019 on paying down technical debt in Rails apps: …

2019-06-26: Note to future self: assert_empty first asserts that the object under test responds to empty?, then …

2019-06-25: Rails, Foreign Keys and Troubleshooting Rails’ foreign_key confuses me sometimes! I spent way too long yesterday trying to …

2019-06-25: Great interview on the Bike Shed with Eileen M. Uchitelle overcast.fm/+Duausy44… I loved the …

2019-06-24: Easing in to RuboCop seems prudent, to keep making forward progress rather than just polishing …

2019-06-23: I don’t trust Facebook with my address book, my social interactions, my photos or even my inane …

2019-06-22: First fire of the season! Lovely evening with cousins and grandparents 🙂 🔥

2019-06-20: Computers are fascinating! TIL 'a'='a ' is true in standards compliant SQL. Turns out, if the …

2019-06-19: Better teardown in Minitest (than using an ensure section - www.matt17r.com/2019/06/1…) can …

2019-06-19: UPDATE #teardown is probably a better way of achieving the desired outcome MiniTest allows ensure …

2019-06-19: OpenStructs are SLOW, at least according to an article from a few years ago - …

2019-06-18: Postgres tip: ALTER DEFAULT PRIVILEGES only applies the specified privileges to objects created by …

2019-06-17: Automating Minitest in Rails 6 I’m building a new app in Rails 6 (6.0.0.rc1) and while I use RSpec at work I’ve been …

2019-06-17: I dislike the “vote for your desired feature” approach to product development. It seems …

2019-06-16: Enjoyed seeing Aladdin at the drive-in tonight! Weather held off, we had a lovely picnic dinner with …

2019-06-14: I deployed a new Rails app to Heroku tonight. It’s so ridiculously easy, especially now I’ve done it …

2019-06-13:

Today I learned SQL Server’s default encoding automatically equates similar characters to each …

2019-06-12: Priority Notifications is a new Teams feature. It allows a user to mark a chat message in Teams as …

2019-06-11: Yesterday I posted about the one benefit of GraphQL I actually want… …

2019-06-10: GraphQL vs(?) REST I’ve been coming across a lot of GraphQL listenings/readings lately. Below is a small sampling and …

2019-06-07: Fully Facebook Free (Finally) I just deleted my WhatsApp account despite it being the best (only) way to get information from some …

2019-06-06: Keen to watch the RubyConf 2019 talks! …

2019-06-05: I’ll be interested to see how “Sign In With Apple” develops. One of the key …

2019-06-05: PSA: Having a Single Source of Truth is not about consolidating every bit of data in one enormous …

2019-06-04: Great WWDC keynote today! Jam packed and well worth watching (especially compared to the “Services” …

2019-05-30: Migrating from String to Citext in Postgres and Rails I included a uniqueness constraint in my app to prevent what appears to be the same entry from …

2019-05-29: yarn upgrade: 47 lines of warnings (some only fit because I made my terminal 368 characters wide!) …

2019-05-29: Validating Data in Rails: Database Constraints, Model Validations or Client-side Checks? I stumbled across an old StackOverflow question today about when to use model validations as opposed …

2019-05-29: Tracking Rails Migrations After removing some Rails migrations today I couldn’t rollback my database and I realised I …

2019-05-28: I’ve been enjoying listening to the Heroku podcast lately. Dataclips seems like a very cool …

2019-05-27: Adding an 'in_ticks' method to Numeric in Ruby Certain fields in Active Directory are stored in “ticks” (1 tick == 100 nanoseconds). To …

2019-05-25: I still enjoy following along with what’s going on in the Apple development ecosystem, even though …

2019-05-25: Using Capybara with Minitest Note to future self: Capybara matchers: www.rubydoc.info/github/jn… Mintiest assertions: …

2019-05-23: www.ghostcassette.com/function-… Interesting read on Function Composition in Ruby 2.6… …

2019-05-22: I encountered Rails 6’s actionable error messages for the first time in the wild today… I saw …

2019-05-21: Webpacker wasn’t compiling or showing any errors/warnings in a new Rails 6 app after adding in …

2019-05-20: Glenn Vanderburg with a very compelling talk on why “engineering” is the appropriate …

2019-05-19: Enjoyed reading about Micro.blog in the New Yorker: www.newyorker.com/tech/anna… I …

2019-05-18: blog.skylight.io/the-lifec… I went in expecting it to be about Rails and that I’d know most …

2019-05-17: Logster is a nice nice little gem from the fine folks at Discourse that lets you view your Rails …

2019-05-17: I was curious how class​ Test < ActiveRecord::Migration[6.0] actually works under the covers. …

2019-05-16: Digging in to Ruby Method Definitions Today I learned that parentheses are optional in Ruby, even when defining methods, not just when …

2019-05-15: Mind Blown 🤯 ⌘E on a Mac copies the selected text to a special clipboard used by Find windows. …

2019-05-14: Relistening to a recent-ish episode that I had lots of thoughts on (as someone recently and still …

2019-05-14: Today I watched a really helpful talk on burnout (https://youtu.be/71suekjBV9Y). VERY slow start but …

2019-05-13: Delivering Value You don’t have to be better than everyone else. Every doctor in America, save one, is not the best …

2019-05-12: Sounds like RubyKaigi 2019 had some interesting talks and announcements! Bundler isn’t something I …

2019-05-10: Enjoying a belated beachside birthday bash by Botany Bay before bed… then a big run and a …

2019-05-09: Exceptionally Ordinary I have surrounded myself, virtually, with successful creators, developers and entrepreneurs. The …

2019-05-08: Looks like the (unedited?) videos for Railsconf 2019 are up for the 1st and 2nd of May… …

2019-05-07: Good article on delegating (technically forwarding) in Standard Ruby, in Rails or with a third party …

2019-05-07: Today I learned Transport NSW has been trialling on-demand public transport!!! Looks like a local …

2019-05-05: I’ve never developed for Android, I‘ve never tried “Reactive” programming and I’ve only used Java in …

2019-05-04: Lesson on Learning Just found some old notes I took about learning, although I’m not sure of the context. All of it …

2019-05-03: Good post (as usual) about Microsoft, Zoom and Slack by Ben Thompson: …

2019-05-01: Campaign Monitor API I was working with the Campaign Monitor API (https://www.campaignmonitor.com/api/) today. It works …

2019-04-30: 📚 I ended up enjoying the Fire Sermon so much I read the next two in quick succession! Dark at …

2019-04-30: I enjoyed the latest episode of Without Fail, gave some good insight into how Facebook became what …

2019-04-28: I’m really enjoying listening to Build Your SaaS. The latest episode on pricing and why “charge …

2019-04-27: Nice overlap between latest https://www.ted.com/series/worklife_with_adam_grant and …

2019-04-27: spreadprivacy.com/google-fi… Finding #4 surprised me the most, that Google serves up …

2019-04-26: 📚 My holiday reading this week had an accidental dystopian theme: The Handmaid’s Tail by Margaret …

2019-04-21: Hot tip: Use cling wrap for long term cable storage ✅ cheap ✅ available everywhere ✅ comes off …

2019-04-21: Enjoyed listening to Brittany Martin interview Sam Saffron on the latest Ruby on Rails Podcast: …

2019-04-20: Today I learned you can run rails notes to get a report of all comments in Rails that start with …

2019-04-19: Search is hard and people expect Google quality search on every website they visit. We’ve been …

2019-04-18: Good Episode of Work Life on Bouncing Back (or forward) From Rejection: …

2019-04-17: Haha! Had some fun watching this video of 3 Japanese Internationals take on 100 kids in football 😆 …

2019-04-17: Coincidentally, today I happened to read two very different (age and content) but complementary …

2019-04-17: I just listened to a great podcast episode on Managing Burnout at work. Some really good tips on …

2019-04-16: Australia Post to start inspecting all mail for violent images Under the Criminal Code Amendment (Sharing of Abhorrent Violent Material) Bill 2019 it’s now a …

2019-04-16: 🤔 YAML is too vulnerable to attacks to consider for new projects. – Thoughtbot Application …

2019-04-15: Kayaking on the Parramatta River with a friend this morning was an awesome way to start the …

2019-04-13: I really enjoyed listening to Spy Master by Brad Thor yesterday and today! Well written, well …

2019-04-12: Notes to future me about installing pre-release Ruby/Rails versions: rbenv install --list rbenv …

2019-04-09: Standing room only at Rorosyd this evening! Great talk by Donna Zhou on how to give a good talk! 🙂

2019-04-08: Today I needed to GET a list, pluck the IDs and then do a DELETE request per ID. I did the first …

2019-04-08: I love learning new Git tips and tricks, especially when they explain the why as well as the what!

2019-04-07: Changing the Rules of the Gamification From walking on the spot before bed to reach 10,000 steps in Pedometer++ or going for late night …

2019-04-06: I enjoyed watching my son doing some code.org challenges today. And I only offered him unsolicited …

2019-04-05: Pretty disappointed that even with a strong surplus the 2019 Australian budget leaves foreign aid at …

2019-04-03: I love this Rails PR (and the original code it removes). Some crazy optimisations/shenanigans were …

2019-04-02: 📚 I’ve spent a decent chunk of today reading (listening to) Heads You Win by Jeffrey Archer. I’m …

2019-04-01: The Amazing State of Technology in 2019 Book a private car 24x7 with no notice. Track it in real time. Shows up within a minute of scheduled …

2019-03-31: My wife and I have been trying to not let busyness be an idol. I like the premise behind “No points …

2019-03-30: I’m looking forward to the inaugural RunWest 12km fun run tomorrow. My goal is 54 minutes or less. …

2019-03-29: Passion is a consequence of effort, not just a cause — Adam Grant on the WorkLife podcast (overcast …

2019-03-28: In Advanced ActiveRecord Querying I learned you can nest joins. I knew about joins(:suburb) but …

2019-03-28: In Praise of Apple, Iteration and Ecosystems I know it’s trendy to pick on Apple but I’m really impressed by how smooth the Apple ecosystem is …

2019-03-27: Mind. Blown. Double-click a curly, square or round brace in the Mac terminal and it automatically …

2019-03-26: Most problems don’t require more data. – Seth Godin - Data Into Information I’m sure big data …

2019-03-25: ActiveRecord - solving for value is NULL or is not in list Today I encountered an issue where 2 + 2 was only equalling 3 when fetching data using ActiveRecord …

2019-03-24: In Praise of RailsCasts When I was looking for information on Rails Metal/ActionController::Metal the other day I was struck …

2019-03-23: Using Git to Edit Prose Git is great at comparing lines of code that have changed but not so good at individual words within …

2019-03-22: After an interesting article on memory usage and bloating in Ruby I came across another article by …

2019-03-21: Today I Learned that to include a Ruby symbol in a YAML file it needs to be prefixed with …

2019-03-21: Windows usage Venn Diagram

2019-03-20: Sometimes I’m happy to be a late adopter of Ruby and Rails, other times I feel like I missed …

2019-03-19: Today I started learning about ActiveJob. Thanks to a deprecation warning I’m also learning …

2019-03-18: Various (but widespread) adoption problems with Teams, SharePoint and OneDrive are a good reminder …

2019-03-16: Nate Berkopec’s email series on practical Sidekiq has been really good. The most recent one delved …

2019-03-15: Ruby 2.6.2 is out (and 2.5.4) with some security fixes. My upgrade steps (fish, homebrew and rbenv) …

2019-03-15: Matching Bundler Version with Heroku Bundler is a very helpful tool for managing third party dependencies in Ruby. Bundler takes a …

2019-03-14: Deploying a Rails app to Heroku Prompted by Ruby Rogues episode 403 (Overcast link) I finally deployed my very unfinished Parkrun …

2019-03-13: Yesterday I read (listened to) The Fox by Frederick Forsyth (read by David Rintoul) 📚 It was an easy …

2019-03-10: Model View Controller and Rails Apps Model View Controller (MVC) is a design pattern in which an application’s code is divided by …

2019-03-09: I feel confident with Git but I keep learning new things. Today: using git add --patch to choose …

2019-03-08: I was surprised to learn recently that web browsers also cache DNS lookups (in addition to the OS …

2019-03-07: Shortening the Feedback Loop - Automatic PDF Refresh on Source Change I’ve been exploring ways to generate nicely formatted PDFs from a Ruby on Rails app (without …

2019-03-06: First their video lessons, now their books… Thoughtbot are giving away all their knowledge …

2019-03-05: Every time I hear Tim Riley speak it all makes so much sense… But then when I think about …

2019-03-04: The more I hear about Facebook’s product, spying & corporate culture the gladder I am to have …

2019-03-02: I ran my monthly 10K Sydney Striders race this morning at North Head… beautiful spot and I …

2019-02-28: Online Payment Redirects - Proof of Concept As I mentioned yesterday, I recently needed to make an API call as part of the request-response …

2019-02-27: Online Payment Redirects - Initial Experiment Recently I came across the need, on our server, to fetch a secure token from another server run by a …

2019-02-26: I think Deep Learning (starting with Keras) might be my next holiday learning project…

2019-02-26: How I Moved from GitHub Pages to Micro.blog Yesterday I described why I moved from Github Pages to Micro.blog so today I wanted to cover how I …

2019-02-25: Why I Moved from GitHub Pages to Micro.blog My first attempt at blogging regularly was on my Squarespace site while I was trying to “go …

2019-02-24: Trying to Build a Blogging Habit A classic is something everybody wants to have read, but no one wants to read. – Mark Twain I …

2019-02-23: Listening to old episode of All Things Git (hosted by two Microsoft employees). Fascinating moment …

2019-02-22: Enjoyed this article on the bigger picture considerations around Implementing Impersonation. I …

2019-02-20: Today I learned that require: false in a Ruby Gemfile turns off auto-require for that gem. Bundler …

2019-01-31: Idle thought: Could the Chaos Monkey/Resilience Engineering approach be applied to people & …

2018-12-19: novice designers are best served by writing test-first code. Their lack of design skills may make …

2018-12-10: Reason # 1,562 that I love Ruby (and the frameworks it has fostered): ActiveSupport::Duration has …

2018-11-28: Enjoyed hearing the emphasis on simplicity and speed of deployment on the latest Ruby Rogues …

2018-11-20: New Rails App Checklist I run up a new Rails app often enough that I have a certain way I like to do things, but …

2018-11-12: Easily Paste Unstyled Text on the Mac Most people know the basic keyboard shortcuts ⌘X, ⌘C and ⌘V for cut, copy and paste but, if you like …

2018-11-12: Nearly finished the Upcase Intermediate Rails course. Last lesson is on search and in addition to …

2018-11-09: I’m going through the (now free 🎉) Upcase course by Thoughtbot. In lesson 3 I just learned about …

2018-11-08: Listening to episode 10 of the Ruby Testing Podcast and Zach mentioned Page Object Model, a way to …

2018-11-08: Notify via Bugsnag When an Exception Hasn’t Been Raised In a REST API I was writing, I wanted certain unlikely failures effecting customers to get logged to …

2018-10-23: 📚 I’m reading Seeing What Others Don’t by Gary Klein and came across this great quote: …

2018-10-06: The way the United States not only detains refugees and immigrants but outsources the dirty work is …

2018-09-06: Hard to avoid iPhone speculation at this time of year but frustrated to listen to 20 minutes of The …

2018-09-04: Ruby discoveries: When `items.first.method` ≠ `i = items.first; i.method`... I came across something confusing a learning opportunity in Ruby: items.first.foo # returns bar …

2018-08-21: I’ve been starting to get the hang of using service objects in Rails apps to reduce bloat …

2018-08-20: Multiple assignment from array in Ruby: a, b = 1, 2 # a == 1, b == 2 c, d = [3, 4] # c == 3, d == 4 …

2018-08-20: Good article by Anil Dash on the history of tech… how to view it historically and therefore …

2018-08-15: To get yarn to update on Mojave beta (with Xcode beta) I just had to follow step 4 of this …

2018-08-14: Note to future self: Processing by itemsController#update as JSON is a statement of intent by Rails, …

2018-08-08: Opt out of "My Health Record" I just read a compelling article arguing that the decision by the Australian government to make the …

2018-07-31: Came across “Network Link Conditioner”, handy tool in the Additional Tools for Xcode bundle. Simple …

2018-07-27: While I’m on the book theme, we listened to “Here Be Monsters” by Alan Snow (read by Bill Wallis) in …

2018-07-27: These holidays I also re-read “Only Time Will Tell” by Jeffrey Archer (2013). It was a great read …

2018-07-27: Aforementioned (old but pretty good) book was “Inside Steve’s Brain (Expanded Edition)” by Leander …

2018-07-27: Reading an old (pre iPad) book about Apple/Steve Jobs. It’s aged pretty well, except for this quote: …

2018-07-23: Made slime with the kids today, best recipe we tried: ¼ tsp of borax powder in ¼ cup …

2018-07-20: Auphonic looks good! Audio processing API that can remove noise and tweak levels. Hoping it can help …

2018-07-19: Heard Postico mentioned on Ruby Rogues. At first glance it looks quite good.

2018-07-19: Seeing double requests for API calls in my Rails console, first one failing (Filter chain halted... …

2017-05-27: Kellys Falls, Helensburgh

2017-05-02: Riffing on Minimum Viable/Lovable Product I came up with Minimum Enviable Product Not the first …

2016-04-08: Venturing Out For a long time I have liked the idea of being self-employed. I’m sure there are many romantic …