# Tuesday, February 17, 2009
Tuesday, February 17, 2009 8:55:06 AM (Eastern Standard Time, UTC-05:00) ( events | programming )

The Central Ohio Day of .Net is approaching. The organizers are busy choosing speakers and making plans. Submit a talk by March 2 if you have something to share. Be on the look out for registration to open next month and sign up quickly as I’m sure it will fill up fast.

This is an event you will not want to miss. The day is all about community, learning and new ideas. 2008’s event changed my life.  I  had been to numerous code camps in the area and had been a regular attendee of the Cincinnati .Net Users Group.  But I pretty much kept to my self and talked to the few people I knew at the time. 

Here is a summary of the sessions I attended last year along with links to the slide decks for more information. 

I first sat in Joe O’Brien’s talk on Why Ruby and initially felt left out because everyone in the room seemed to know each other, they were twittering and many made big deals (jokingly) about having Macs at a .Net event.  [aside:  I do not understand all of the mac / pc sparring, browser wars and fights over who’s text editor is the best thing since sliced bread.  Lighten up, they are all just tools, it’s the brains that matter ;)]  That faded away as Joe sparked my interest in Ruby.  I had been introduced to Ruby by Jim Weirich several years prior at the Cincinnati Programmers Guild.  At that time it looked like a fun scripting language to easily make tools.  Now Joe was showing how much Ruby had grown and you could build all sorts of things including web applications. He even started his own company to develop Ruby applications and more.

F# It! was presented by Amanda Laucher and James Bender.  Amanda explained twitter so that “I got it” [I signed up later that day and Amanda was the first one I followed]  Then she and James introduced me to functional languages and F#.  I was fascinated and quickly shared their enthusiasm for this ‘new’ way of thinking.

Intro to Boo and DSL by Jay Wren introduced me to domain specific languages.  Intro to WCF by Dan Rigsby and Reliable Messaging in WCF by James Bender provided good insight into what WCF is and how I might use it.  The day ended up with Well, Isn't that Spatial by Jason Follas which introduced location data enhancements to  SQL Server 2008.

Last year at the CODODN is when I was first exposed to Twitter and I became part of the Twitter Tribe.  Since then I have attended similar events in OH, TN, TN, KY, IN and OH.  Each time I expand my learning about software development and my network of fellow developers.  As a result I have greatly expanded the blogs I read, the podcasts I listen to and the books that I read.  I even started my own blog. I have also come out of my shell and go out of my way to talk to and meet other consultants at work and have become more connected to the developers at the local .Net Users Group.

I am anticipating a diverse set of sessions to choose from on April 18th and am looking forward to seeing old friends and making new ones.

maggie++

# Tuesday, December 30, 2008
Tuesday, December 30, 2008 9:09:01 AM (Eastern Standard Time, UTC-05:00) ( events | social )

Take a minute and add the CodeMash logo to your twitter picture to let everyone know you will be at CodeMash.  It will give you something to do while you are waiting and if everyone adds it - you will know all of the awesome devs you will meet there next week.

The simplest way I found is to use Paint.NET and add the logo as a layer to your picture.

What are you waiting for?

maggie++

# Tuesday, December 16, 2008
Tuesday, December 16, 2008 2:55:13 PM (Eastern Standard Time, UTC-05:00) ( events | languages | programming )

CodeMash  will be in three short weeks. Tomorrow (12/17/2008) is the last day to reserve rooms with the discount rate  at the Kalahari resort.  If you have not registered, what is holding you back?

The session details have been posted and I have tried to plan out which talks I may attend.  This is proving to be very difficult.  If I were Hermione I would be able to wear a Time-Turner to get the most from CodeMash. Hermione Granger is a classmate of Harry Potter.  During the third school year at Hogwarts, Hermione uses a Time-Turner to set time back an hour so she can attend simultaneous classes and maximize her learning.  A Time-Turner is a magical device invented by J. K. Rowling for the book Harry Potter and the Prisoner of Azkaban.

If I were Hermione then I would use this time travel device to attend simultaneous sessions at CodeMash.  Here is the list of CodeMash sessions as they stand today.  I have highlighted the sessions I am most likely to attend.  I would also like to be able to attend all of the Open Space sessions as I know much valuable discussion will take place. Time travel would certainly make it easier to choose sessions, but would probably be exhausting as well.

What strategies are you going to use to get the most out of CodeMash? 

Wednesday:

Full-Day
CodeJam: Gary Bernhardt, Sarah Dutkiewicz, Joe Fiorini, Corey Haines, John Stockton
.NET 101 With Jeff Blankenburg and Josh Holmes
Java, Groovy, and Grails 101

AM
iPhone Development 101
Test-driven Development 101 With Leon Gersing
Turning the Ship With Dave Donaldson

PM
Kanban 101
iPhone Development 101
Test-driven Development 101 With Phil Japikse
Value Stream Mapping Workshop With Mary Poppendieck

Thursday

8:15am to 9:30am
KEYNOTE #1: Eric Meyer: JavaScript Will Save Us All

9:45am to 10:45am
Dynamic Hyper-Video in Silverlight (Jesse Liberty)
Introducing Agile for Real World Programmers (Greg Huber)
Programming in Scala (Venkat Subramanian)
Introducing the iPhone SDK (Chris Adamson)
Introducing the Live Mesh SDK (Jeff Blankenburg)
Adobe Flex Fundamentals (TBA)

11am to 12pm
Re-thinking UI: WPF Data Templates (Carey Payette)
Three Tips to Improve Your Dev Process (Jim Holmes)
Introducing Prototype and Scriptaculous (Leon Gersing)
Developing JoeMetric for the iPhone (Joe O'Brien)
Pumping Iron into Python: Intro to FePy (Sarah Dutkiewicz)
Developing for the Microsoft Surface (Jennifer Marsman)
Dynamic Languages and the JVM (Nathaniel Schutta)

12:15pm to 1:30pm
LUNCH + KEYNOTE #2: Venkat Subramanian: Pointy-Haired Bosses and Pragmatic Programmers—Facts and Fallacies of Everyday Software Development

1:45pm to 2:45pm
Scaling Habits of ASP.NET Applications (Richard Campbell)
Thrashing (Mary Poppendieck)
Erlang: The Basics (Kevin Smith)
Groovy/Grails for non-Java Developers (Mike Kimsal)
Python Data Visualization and Imaging (Zach Steindler)
Well, Isn't that Spatial (SQL Server Spatial Data) (Jason Follas)
Adobe Flex with MVC Frameworks (Robert O'Malley)

3:35pm to 4:35pm
Demystifying Windows Communications Foundation (Keith Elder)
Soft Skillz (Brian Prince)
Managed Extensibility Framework (Drew Robbins)
IPhone Web Development with Grails (Chris Judd)
Practical Scala (Dianne Marsh)
What? Threads Are Hard? (Jim Weirich)
Functional Concepts for OOP Developers (Bryan Weber)

4:50pm to 5:50pm
Modeling Types with Extension Methods (Bill Wagner)
CI: More than just a toolset (Jay Harris)
Griffon in Front, Grails in Back (Jim Shingler)
Ruby Desktop Application Framework (Lance Carlson)
Microsoft Virtual Earth, Now in 3D! (Aydin Akcasu)
Drupal at Zattoo: A Case Study (Chris Cassell)

Friday
8:15am to 9:30am
KEYNOTE #3: Mads Torgersen: One Big Happy Family – Where are the Managed .NET Programming Languages Heading?

9:45am to 10:45am
Dev Guide: Skinning Silverlight Controls (Jesse Liberty)
Practices of an Agile Developer (Venkat Subramanian)
Grease, a Parallel Systems Architecture (Vielmetti)
Testing Rails (Joe O'Brien)
JVM Scripting with Jython (Mark Ramm)
Test Infecting the Legacy Organization (Nathaniel Schutta)
IronRuby in the Real World (Michael Letterle)

11am to 12pm
Guerilla SOA for WCF (Joshua Graham)
Language-Oriented DDD (David Laribee)
Networking and Communications in Silverlight (John Stockton)
Cool Stuff with Computer Vision (Scott Preston)
Rich Apps with Groovy Swingbuilder (Andres Almiray)

1:45pm to 2:45pm
Deep LINQ: C# Query Expression Pattern (Bill Wagner)
Improving Web Application Performance and Stability (Steve Smith)
Spring 2.5 MVC (Ken Sipe)
Actor Concurrency (Alex Miller)
Introducing BazaarNG (Mike Woelmer and Jay Wren)
A Look Inside Microsoft Labs: Photosynth, Deep Zoom, Live Mesh, and More (Jeff Blankenburg)
A Programmer's Guide to User Experience (Josh Walsh)

3:30pm to 4:30pm
Multi-threading Mojo with F# (Dustin Campbell)
Executable Documentation with easyb (Andrew Glover)
Cloud Computing with .NET (Wesley Faler)
Modern Web Applications with .NET (Drew Robbins)
Ruby Isn't Just About Rails (Adam Wiggins)
Reverse Engineering Applications (Joe Kuemerle)

maggie++

# Tuesday, November 11, 2008
Tuesday, November 11, 2008 9:54:02 AM (Eastern Standard Time, UTC-05:00) ( career | languages | programming )

There are several posts (e.g. Joel’s here and Jeremy’s here) about the new SharePoint Master Certification and the debate over it reinforces my decision to stop pursuing SharePoint at the present time. 

So, this blog post is about my brief dive into all that is SharePoint.  A little history:  I became a consultant early last year and one focus was going to be learning SharePoint.  I ended up being assigned to a C++ unmanaged project (a whole different story) and dove into learning C++, MFC, ATL and COM instead.

When I became ATO (at-the office or on-the-bench) this summer, I took the time to pick up SharePoint.  I began attending all of the sessions (at code camps such as CodeStock, devLink, and IndyTechFest) that I could to learn from SharePoint MVPs.  I read many books, listened to podcasts, did hands-on-labs and watched many training webcasts.

Since I have a background in Document Management and Imaging and a huge interest in search, libraries (book kind) and improving user interactions, I really liked what I saw.  I saw SharePoint as a good platform to further my development skills as well as bring the information architecture into the fold.

I studied and passed the Moss application development exam and wrote a few connectible web parts to help out colleagues.   I did not pursue configuration exams since I did not want to be pegged an IT/Infrastructure person (since I’m not).  The more I talked to consultants doing SharePoint locally, the more it became apparent that there is little custom development at the current time (at my employer and location) and that much infrastructure knowledge is needed.  In order to excel at this type of job, I would need to work with an experienced team for some time to develop those skills.  Something a client would not be willing to pay for.

As I love software much more than hardware,  I decided that SharePoint was not where I wanted to be at this time since I would rather be learning advanced development (patterns, AOOP, TDD) and upcoming technologies (WCF, Linq, WF, WPF) with my time.

I am now working for a client on YACPPP (yet another C++ project).  I am just getting started but have been told the code base is well designed in a OOP type of way – so I am anxious to learn how it is architected, see the code  and dive back into C++ (there is much new (for me) to learn in this older technology) .  On the side I am going to learn how to be a better developer in the other areas mentioned.

So SharePoint is out of my thoughts for now, possibly in the future I’ll attack it again when I can from a development angle.  The best part about SharePoint is the community.  I am astonished at the hundreds of SharePoint bloggers working to share what they have learned and the passion I see many have around SharePoint.   All of the SP experts I have met, such as Rob Bogue, Doug Ware, and Rob Foster have been great and  I will keep my eye out on twitter to follow the SharePoint (r) evolution.

maggie++

# Friday, October 17, 2008
Friday, October 17, 2008 9:05:29 AM (Eastern Standard Time, UTC-05:00) ( )
I have gone pink for October here and on twitter to bring attention to Breast Cancer Awareness Month.

Web sites will Go Pink during the month of October to bring attention to Breast Cancer Awareness Month, get people talking about breast cancer, and raise money for research. But to be clear, raising money isn’t the primary purpose of this web event. The hope is that you turn your site pink (in whatever way works for your site), educate yourself about the multiple issues related to Breast Cancer, then take that knowledge and tell someone else what you’ve learned.

Please educate yourself about this important disease.  BreastCancer.org is an excellent place to start.  If you or someone you know are facing breast cancer, check out these forums for support.

maggie++

# Tuesday, October 14, 2008
Tuesday, October 14, 2008 1:38:39 PM (Eastern Standard Time, UTC-05:00) ( career | history | programming )

There are many styles of interviewing software developers.  The best processes are those that allow you to see if the candidate is a good fit for your organization and for the candidate to see if your company is a good fit for them.  Shortcomings on either side can lead to costly mistakes and wasted time on both sides.

When I worked on the GSM switch project at Motorola in the late 80s we spent considerable time recruiting software engineers.  Our process was typically:

  • one engineer would escort candidate from HR to the office area giving a short tour on the way.
  • manager would briefly talk with them and explain the project at a high level and the day’s schedule.
  • depending on candidate’s level and on our availability 2-4 engineers would individually give technical interviews.
  • one interview would include lunch out in a local restaurant.
  • the manager would meet with them again for any follow-up questions and to inquire which part of the system they were interested in before they were escorted back to HR.
This was in addition to the countless hours looking through resumes, phone screen beforehand and HR’s interviews with them before and after ours.

My interview technique was to first have them explain their previous projects and I asked questions where I needed clarification.  Then I would draw a high level architecture diagram of my subsystem and explain how it fit into the product and its purpose.  I would let them lead at this point; I was looking for them to show an interest and curiosity about the system by asking questions and an aptitude for talking about a system from both a high level and a detailed level.  I was looking for inquisitive thinkers who seemed eager to learn and work on a team.

 The candidates did not usually have nor did we expect them to have any telephony experience or knowledge of cellular (analog or digital) phone networks.   Most did not know C or assembler nor had heard about the object oriented concepts we were designing with.  These were important, but at the time software engineering was all about design and process and not at all about the underlying technology.  In fact we did not know ourselves at the beginning if we would be using C++ or C.  Our previous phone switches were coded with assembler.  We ended up using C as the C++ cross-compilers were not proven for our processors at the time and would have been an unnecessary risk.

This process consumed much time but we ended up with an outstanding group of software engineers.

Two podcasts I’ve listened to this past week have had content on more recent interview practices.  First was Episode 16: Interviewing Software Developers from Herding Code.   From the show notes:

This week Kevin leads a discussion on interviewing software developers:

  • What interview styles we find effective
  • What sort of questions actually help us evaluate a candidate
  • Why API trivia and puzzle questions don’t work
  • Hiring mistakes we’ve made based on errors in our interview style
  • Why we don’t do very well when the tables are turned and it’s our turn to be interviewed"
Second one was a podcast featuring Scott Kriens, of Juniper Networks, from Stanford’s Entrepreneurial Thought Leader Speaker Series brought to my attention by Dianne Marsh on twitter.   While the entire talk is not about interviewing there were a few points he made about attracting talent and employee growth that are of interest to the topic.  The first (watch here) encourages developers to embrace challenging interviews and not to let them intimidate you and the second one (watch here) talks about the value of training the employees you have rather than hunting for the one star player.  He states:  “It’s better to give somebody that’s never done something before the chance to do it, then to ask somebody who’s already done it to do it again with energy and enthusiasm. ... There is a real power and passion to prove yourself.  ... They will surprise everyone with their ability to succeed.”

The first one is hard for the candidate and the second is difficult for the employer.   I know times have changed much about the way software is built and funded and a full-day interview would indeed be a luxury and quite costly for all involved.  However getting good thinkers and problem solvers on your team instead of good test-takers is key.  Paying for training and the costs from missed work time can be great but by embracing education as a means to train and retain their developers , companies will see positive results with enhanced productivity and retention.   When growth brings the need for more developers I think an approach that enables both sides to really get a good understanding of each other is prudent.

What techniques do you find useful for finding good developers and what as a developer do you do to find a good employer?  Please leave comments with your ideas or blog about it and comment here so we can learn from each other.

maggie++

# Sunday, September 21, 2008
Sunday, September 21, 2008 3:03:07 PM (Eastern Standard Time, UTC-05:00) ( career | languages | programming )
My first entrance to my programming career is described in How I got started in Programming and leaving to be a full-time SAHM (stay-at-home-mom) in Taking an off-ramp and an on-ramp in IT.  This post will attempt to describe what steps I took to re-enter the workforce.

We were living in Kingsport, TN  in 2001 when I started to think about returning to work.  I felt the first thing I should learn was where the programming profession was;  I knew it had to be radically different from when I left in 1990. At the time I did not know anyone there who worked in software or anything remotely similar.

[2001 -2002] I started a subscription to Dr Dobb's Journal and searched on the internet to find anything I could to learn about software; I did not really know what I was looking for. I joined the internet forum Systers and scoured the library for technical books.  I purchased Microsoft Visual C++ .NET Deluxe Learning Edition and 4 flavors of Java in a NutShell.  I completed the tutorials in both languages.  Additional books I bought and read during this time included:
[2003] We moved to Cincinnati, OH both to live near some family and to obtain better educations for our children.  We wanted our son to attend my husband's alma mater, St Xavier High School, and we wanted choices for my daughter for middle school.  Moving and building a house took most of my energies that first year. I continued to read and search the net and visited the library and read books such as Code Complete, The Mythical Man-Month and a variety of books on Extreme Programming.  I Joined the Cincinnati Programmer's Guild and The Women's Circuit.  I attended meetings for both groups and started to meet "real-live" people that worked in the industry and was exposed to a very wide variety of topics and ideas. 

[ 2004] By 2004 I was starting to gain confidence in my software abilities.  I started looking at job advertisements all over the internet. I determined that there seemed to be more .NET jobs than Java in Cincinnati so I started to narrow in my focus on .NET.  I discovered C# and spent a fortune on books including:
I wanted to take some college or graduate classes but was disappointed to find out that you had to apply for a degree in order to take a class.  I did not want to pursue a degree at that time as I already had a math degree and had completed all of the coursework for a MSCS.  I knew my job search would be difficult considering it had been a very long time since I had been employed and I wanted to prepare myself as best I could. Taking classes was the only way I knew to "prove" on my resume that I had skills. So during the summer I took C# and Relational Databases with SQL classes at the community college.  I really learned nothing new about either C# or relational databases.  The biggest value in the classes was exposure to using Visual Studio and SQL Server software as well as being able to ask questions of the instructors.

I then paid for a week-long training class "Developing Microsoft ASP.NET Web Applications using Visual Studio .NET".  This course was great as it introduced me to ASP.NET, ADO.NET, IIS, Web Forms, Web Applications and XML Web Services and also taught me how to use more features of Visual Studio.  I also learned much from the questions the other students asked as they were all employed and transitioning from asp to ASP.NET programming.

Once the Cincinnati .NET User's Group started in the end of 2004 I began attending and was happy to see many familiar faces from the programmer's guild.

Once I updated my resume with these recent skills I began to see a sharp increase of interest and started going to interviews. The interview
 process is time of growth. I started out extremely nervous but each one got better.  Once I was able to see for myself how many different companies opperated and managed software I knew more about what to ask and what to look for.  I was able to refine my resume, read the job postings with more knowledge and was able to write detailed direct cover letters that got me in the door.  In March of 2005 I started work for a small micro-film/imaging company on a C# Tablet PC application. 

I absolutely loved being back at work. It was a long journey but very much worth the effort.

maggie++

# Wednesday, August 20, 2008
Wednesday, August 20, 2008 8:29:58 PM (Eastern Standard Time, UTC-05:00) ( usability | UX | design )
I learn much from listening to podcasts.  I thought I would share some of my favorite episodes with you from a user experience one that I listen too. SpoolCast is an audio podcast where Jerod Spool from User Interface Engineering interviews experts from all aspects of UX from usability, user testing to research and more.

SpoolCast: Product Evolution with Adaptive Path’s Peter Merholz
July 2nd, 2008

Peter Merholz president of Adaptive Path.  Peter and Jerod discuss a method to map out the evolution of a product into three stages and the importance of planning this at the beginning to continually give the user a good experience while you add features and grow your product.  I learned not to deploy a feature just because it's ready, but to plan the releases so you add features together that make sense without confusing your users while always keeping the business value in the plan. Peter explains a corollary of the release of the ipod in stages.

SpoolCast: Ajax Then and Now with Jeremy Keith  June 16th, 2008

Jeremy Keith is the technical lead at Clearleft, a leading design consultancy in the UK. Jerod and Jeremy discuss Ajax and how it's use in web pages can be useful and where it can hurt.

SpoolCast: What Makes a Great IA with Donna (Maurer) Spencer June 9th, 2008

Donna (Maurer) Spencer, an information architect and owner of the freelance agency MaadMob.  Donna and Jerod discuss what an Information Architect is and what makes a great Information Architect.  They talk of the challenge of architecting the content and the web site navigation so that it makes sense to the end-user and not necessarily model the way the business is organized.  Many clients expect this and each department wants to "tell the world what we do" instead of "make information available in the way people want to read it"

The following two are some basics principles of UI design that are still broken all of the time even though they are difficult for users to use.

Usability Tools Podcast: Applying Fitts’ Law  February 28th, 2008

"A button is a button right? Move the mouse over it. Click. Not much to it, eh?"

Usability Tools Podcast: Mouseovers in Navigation December 17th, 2007

"It’s tempting to spend a ton of time creating slick flyout, dropdown, or pop-up navigation on our site, but is it worth the effort? "

Usability is so important and there is so much research out there about what works and what does not that there is no excuse for developers and designers to continue creating interfaces that are difficult for users to learn and navigate.  I hope more people will take advantage of these podcasts and apply the findings to their design.

maggie++


# Saturday, July 26, 2008
Saturday, July 26, 2008 9:36:35 AM (Eastern Standard Time, UTC-05:00) ( )

A recent addition to my feed list is Managing Product Development  written by Johanna Rothman  founder of a software management consulting and author of Manage It!: Your Guide to Modern, Pragmatic Project Management which is published by the The Pragmatic Programmers .

If you are not subscribed to her blog you are missing out she has great insight into managing software projects.  In her blog I came across an interview she did with Jurgen Appelo posted on his blog here: 5 Easy Questions for Johanna Rothman

The first question was on the toughest challenge in her past.  Se says "Making myself slow down to think through a problem fully." She describes beginning to write a book recently - she started with an outline and began writing then found that her flow was awkward and needed re-work.

When I realized I'd written enough to redesign it, I could see the emergent design. If I'd tried to define the full design for the book at the beginning, it would have been wrong (it was wrong!). Now, I have enough to see how it could work, and my new design is working for now. Who knows, I might have to redesign again. But I know the pieces I have to fit in now

To me this describes a process like code refactoring and helps illustrate why refactoring is so important for software projects. It is difficult to get the design right the first time.  It takes iterations and rework to get it right.  I had never thought that the process of writing a book was was so similar to software development.

 

maggie++

# Sunday, June 29, 2008
Sunday, June 29, 2008 1:16:56 PM (Eastern Standard Time, UTC-05:00) ( browser | flock | social )

Flock, The Social Web Browser!  is a browser I recently discovered that aggregates social networking features into the browser interface.  So far I like what I see.  It is built on top of FireFox 2 and is super simple to set up and use. The description from the user's guide is:
Flock is built on the Mozilla Firefox open-source browser, so it has all the features you've come to expect in a high-quality web browser, like intuitive buttons and menus, personal customizability, reliable security, enhanced privacy protections, and automated updating. However, Flock is much more than that! The Flock Social Web Browser has been fully integrated with a wide range of social networking websites and popular blogging tools. So with Flock, you can now keep in touch and share text, links, pictures, video and more with friends, family and co-workers across the entire internet with unparalleled speed and seamless ease.

Getting Started Video

Side Bars available in addition to firefox's are:
  • Feeds Sidebar is a built-in feed reader.
  • Web Clipboard allows you to drag and drop text, links, and images to save for later use.
  • Accounts and Services gives you access to all of the accounts you have configured with Flock and also lists all supported accounts with links so you can explore them.

My World, is a provided page opened through a tool bar button. It contains columns they call Widgets that currently has 4 functions:

  • Favorite Sites, lists your most recently viewed favorites.
  • Favorite Feeds, displays your feeds with the most recent activity and indicates how many unread items are in the feed.
  • Friend Activity, lists friends updates from you social networks.
  • Favorite Media shows streams from You Tube and Flickr that you subscribe to.

Flock has a Media mini-bar which is like a sidebar except it runs horizontal under the toolbar. This allows easy access to media streams such as Flickr and You Tube. I have hooked up my gmail into flock and am writing this blog entry with tools from Flock to check it out.

There is a Flock 2 Beta available built on top of Firefox 3 that I am going to try soon. 

If you want to see more start out by visiting the Getting Started page and be sure to watch their introduction video here from You Tube.  The videos on the Flock You Tube stream make it very easy to learn about the features; the short movies show the features so that you "get it" quickly instead of reading the manual.

I think as this browsers evolves it will be very useful and replace the use of many different clients that are now needed to access your information.  If you try it leave a comment and let me know what you think.

maggie++



Blogged with the Flock Browser

Tags: , ,