Quick Peek at Visual Studio LightSwitch

I’ve been curious about Visual Studio LightSwitch for a while. It’s a rapid application development tool from Microsoft which lets you quickly develop HTML/Javascript CRUD apps and small business apps for web browsers and mobile devices (I think it can do desktop apps too, but it uses Silverlight to do it, and I’m only interested in web apps these days.)  LightSwitch is installed out-of the box in Visual Studio 2013 Professional and the new (free) Visual Studio Community 2013 edition.

Note: This is not a deep-dive into LightSwitch. It’s just a quick 5 minute review of what I accomplished in less than 30 minutes piddling around with this thing one evening to get a peek at what it’s like. Before I got started, I had watched this nice video on YouTube and it really helped me jump right in: http://youtu.be/tu5G8AsOlr0

I recall hearing at one point, when LightSwitch first came out, that some people proposed it as an alternative to Visual FoxPro, or at least a path forward for FoxPro devs who had never built web apps before or did not want to take the full plunge into the .Net world.  So, I’m curious if any of my FoxPro peeps have taken up with this? If so, let’s hear from you.

Here we go… Basically, I found it dirt simple to get up and running. I just created a new LighSwitch prject in Visual Studio and pointed it to a database in Sql Server Express running on my local developer machine (I already had Sql Server Express installed for other .Net work). Next I picked which tables I wanted to work with in the app. You then add views for any given table, selecting which fields to show.  The initial page layouts are auto-generated for the selected fields, and you’ll quickly have a live list view and edit page running in your browser.

I’ve built real web apps in Ruby on Rails and Asp.Net MVC with Entity Framework, and I’ll tell you hands down from real experience that getting a simple CRUD page alive in LightSwitch is much  easier than in either of these other two platforms. Now, I’m betting there are some real limitations that come with using a simple application framework like LightSwitch. So, I don’t dare suggest that an app built in LightSwicth can compete with all the features needed to build a complex business app. You’ll have to learn more about that for yourself. However, there are lots of examples and forums where you can learn how to include advanced UI or backend code when needed.

Here’s a simple edit page. Just make a change and click the little Save icon in the upper right corner of the screen:

image

To create or edit the views, you use a treeview designer-like UI in Visual Studio to create rows, columns, groups, fields, as well as a command bar for action buttons and other UI controls. It adds default label captions above each field, but you can override those as well as field widths and other styling options in the Properties window (see blow).

image

Here is a view of the simple Property Editor showing the various properties you can tweak for each control on the page layout.

image

 

Ok, it’s all up to you from here. Watch the video linked above, and try it out for yourself.

Next Step

The next three things I plan to explore:

  1. How it handles lookups, like when you need a dropdown list to choose a value from a lookup table and store the ID in a local field. http://blogs.msdn.com/b/bethmassi/archive/2012/01/12/creating-cascading-drop-down-lists-in-visual-studio-lightswitch.aspx
  2. Client side, or backend validation.
  3. Showing related child records in a grid on the same page as the parent detail fields.

If my interest is there, and my time allows, I’ll update this page if I accomplish anything with these items above.

Resources

LightSwitch on MSDN: http://msdn.microsoft.com/en-us/vstudio/lightswitch.aspx (lots of how-to-get-started content.)

MSDN Forum for LightSwitch: https://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=lightswitch

PluralSight courses on LightSwitch: http://www.pluralsight.com/courses/visual-studio-lightswitch2012

Free video: http://youtu.be/tu5G8AsOlr0

LightSwitch articles on CODE Magazine website: http://www.codemag.com/Magazine/ByCategory/Lightswitch

Does Microsoft Visual FoxPro 9 run on Windows 10?

I’m sure many die-hard FoxPro developers are curious if Visual FoxPro 9.0 SP 2 will install and run on Windows 10. Well, I wanted to be one of the first to find out, just like I did back when Windows 8 was first released in its early preview.

So, let’s find out…

First, I installed Windows 10 Preview (64 bit) in a BootCamp partition on my 15” MacBook Pro. (Don’t worry about this Mac stuff, it’s still just Windows running on live hardware, just like if it were a Dell or HP computer).  That went very smoothly, and I did a full install, blowing away the Windows 8 playground I had been using  that partition, instead of updating it from Windows 8 to Windows 10.

Next, I gently inserted the Visual FoxPro 9 CD that I still have from circa 2004. First, it prompted me to install some “Prerequisites”, which it did with no problems. Next I moved on to the main VFP install, and I took all the defaults, then the CD spun around for a bit, and finally, it gave me a nice message screen stating “Setup is complete” and “There were no errors during setup.”  Looking good so far!!

image

Next, I downloaded and installed Service Pack 2 for VFP 9, and once again, got this nice little affirming message box:

image

Finally, I “installed” the VFP 9 Hotfix 3 for SP2 (i.e. copied the replacement files to the correct places per the instructions in the readme file in the zip download).

We now have a promising Microsoft Visual FoxPro 9.0 entry in the fancy new Windows 10 Start menu:

image

Yes, but does it actually run??

Now, I finally get to find out if we can run the fully patched Microsoft Visual FoxPro 9.0 SP2 Version 09.00.0000.7423 on Windows 10. So, I launch it from the Start menu, and quickly go the Help –> About screen:

image

One small issue with Task Pane…

If you launch VFP 9 it will initially show the the Task Pane, but you will get a small error in the view area of the Task Pane window. (Don’t worry, I’ll show you how to fix this below.)

Class definition MSXML2.DOMDOCUMENT.4.0 is not found.

2015-09-11_19-33-29

The issue is that Task Pane requires MSXML 4.0 Core Services. If it’s not already installed on your Windows 10 machine, you will get this error reported in the Task Pane app from the VFP IDE.

However, this problem is easily fixed… You need to download the MSXML 4.0 Core package from:  https://www.microsoft.com/en-us/download/details.aspx?id=15697

Once, installed, now Task Pane will work properly:

2015-09-11_19-33-03

Now, let’s run some code…

Okay, it says the right version number all, but we need  run some FoxPro code to make sure this thing actually works…  So, I just downloaded the Thor Tool Manager for FoxPro from vfpx.codeplex.com, and ran Thor.app to put VFP 9 on Windows 10 to its first test. Thor uses tons of well-architected FoxPro code to do it’s magic, along with some UI forms, and it makes use of our beloved FoxPro cursors, so I figured this would be a good test.  I selected about 10 of my favorite VFPx tools from the Check For Updates form in Thor, and it nicely proceeded to download and install all the tools, and gave this confirming output for each one on the VFP desktop as it did its work:

image

I think we’re good folks!

Next, I ran a few of these tools, just to make sure they’d fire off, and they did. I’m pretty certain at this point, that my business apps would work just fine here, if I took the time to finish out this developer setup.

So, I haven’t done any real coding work in the IDE, and I probably won’t any time soon, but from my basic tests in this experiment, it sure appears to me that our old friend Visual FoxPro is ready to continue its legacy of being an awesome development tool, even on Windows 10, and hopefully on Windows 20 and Windows 30 as well.

Finally, here’s a  peak at the whole IDE running in Windows 10. You can see I docked some windows, and you can see the shading effect that Windows 10 adds around the individual windows.

image

Introducing xBase++ 3.0 aka “Polar Fox“

When I was at SWFox 2013 (as a FoxPro developer) I was curious enough about this Xbase++ thing to attended one of their xBase++ sessions. If you didn’t know, the Xbase++ and SWFox conference merged in 2010.  Conference attendance of the combined groups was about 145 for the 2013 conference.  Overall the xBase++ platform and community seems like a very interesting and thriving one to me. The folks I talked to were just as passionate about their platform as us FoxPro folks are.  It sure looks promising for them to continue on for many more years.

Way back in 2010, Alaska Software announced their next version,  Xbase++ 3.0, code-named “PolarFox”, is coming out in a year or so.  “Polar” coming from the company name, Alaska Software, and “Fox” from the targeted audience for 3.0 as FoxPro developers. Yes, that’s a long time down the road, but in my opinion, they are definitely capable to pull this off. I guess they are not in a big hurry, as I suspect they know they have one chance to get this right in order to draw in some FoxPro people.  The lead developer and a partner of Alaska Software, Steffen F. Pirsig, did one of the sessions. I can tell you that he is one *very* smart, low-level knowledge guy. He knows what he is doing developing languages/platforms from what I can tell.

So, what is PolarFox?

According to their PDF, it’s the “next generation Visual FoxPro development platform.”  Xbase++ has a modern IDE, it’s a compiled platform, and the files are all ASCII, so no more FoxPro binary files like SCX/VCX/FRX, which means it will work better with version control platforms like Git and Mercurial. They are claiming that PolarFox will have many FoxPro features and a high degree of compatibility with Visual FoxPro 9. They are hoping it will be an attractive platform for FoxPro developers to consider.

Here is the description of his Introducing Xbase++ 3.0 session from the 2013 SWFox.Net web site:

PolarFox is the codename of a project at Alaska Software that is not just the next-generation Visual FoxPro. In fact, PolarFox is Xbase++ 3.0 with a clear focus on user interface and visual design capabilities coupled with features such as int64, decimals and Unicode-support. Also covered is the ability of Polarfox to migrate and extend existing Visual FoxPro 9 applications while still being 100% compatible to any existing Xbase++ 1.x/2.x based application.

They have a PDF that explains a lot more about what a FoxPro-to-PolarFox conversion looks like: http://www.visualfoxpro.com.br/i/u/2108877/f/polarfox-firstlook.pdf

From the PDF link above, you will see that they listed the Pros and Cons of shooting for 100% compatibility with FoxPro, noting that in doing so “The Xbase++ language (would) become ambiguous and more complex than required”.  So they are NOT shooting for 100% compatibility, rather,  they claim that “(some) VFP specific commands are added to the Xbase++ language” and that “Proprietary VFP functions conflicting with existing Xbase++ runtime functions are isolated in a VFP namespace”. So, even though there is a very high degree of compatibility between Xbase++ 3.0 and Visual FoxPro 9, you cannot just run your VFP code directly in PolarFox. Rather, they will be providing a migration tool to import your VFP project into the PolarFox world which will automatically handle any syntax changes required for the Xbase++ 3.0/PolarFox world. 

I don’t know exactly what that experience is going to be like, but I will likely give it a test run if they make a trial version available when it’s released.

I was curious enough after the first session to attend *two* more Xbase++ sessions.  In the end, I see their 16-year corporate history and existing community as two real pluses compared to *any* of the other Fox replacements that I have casually studied so far. And the IDE has many of the newer features that are present in modern IDEs that we do not have in VisualFoxPro.

Honestly, I doubt I will ever work in Xbase++ 3.0, but I would say it looks like a very interesting and promising platform to me.

There is not much news on their website about PolarFox yet, but here is their web site: http://www.alaska-software.com/ in case you want to keep your eyes on them, or even reach out to them to express interest in PolarFox.

SSMS – Generate Scripts – Data only – Cyclic dependencies found error

When trying to generate data only scripts from a Sql Server 2012 database, I was getting this error from Sql Server Management Studio 2012:

Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException: An error occurred while scripting the objects. —> Microsoft.SqlServer.Management.Smo.SmoException: Cyclic dependencies found. at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Dictionary2 dictionary, List1 sortedList, HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Dictionary2 dictionary, List1 sortedList, HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Dictionary2 dictionary, List1 sortedList, HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Dictionary2 dictionary, List1 sortedList, HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Dictionary2 dictionary, List1 sortedList, HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDictionary(Dictionary2 dictionary) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(List1 objectList, Dictionary2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List1 objectList, List1 list, String query) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveTableOnlyDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.Order(IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List1 urns, ISmoScriptWriter writer) at Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn[] urns, ISmoScriptWriter writer) at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions outputOptions) — End of inner exception stack trace — 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)

 

This database was originally on Sql Server 2008, and I could script it without any problems at that time, which I did many times. Then, about a month ago, we moved it to Sql Server 2012, and when I tried to script the database again, using Sql Server Management 2012, I got this error.

I googled around and found this helpful script to find the offending circular references:

https://azure.microsoft.com/en-us/blog/finding-circular-foreign-key-references/

… which I ran in a query window to see what was wrong. Sure enough, it showed me the circular references and the results were spot on, but I wanted to keep the references in place. Everything worked fine when accessed from Entity Framework, and I was afraid to mess with the relations.   (In fact, the database was created in Sql Server 2012 by the Entity Framework using the update-database command. So, all the relations, foreign keys, indexes, etc came originally from the class definitions in EF.)

Problem Solved!

Then, on a whim, knowing that I had successfully scripted this database before, I connected to the Sql Server 2012 instance using Sql Server Management 2008 R2, and I was able to generated the scripts without error!!

Note, that I did data-only, and I had to allow it to script all database objects. I tried to select only certain tables, but that gave some other errors that I wasn’t willing to track down, so I just did the whole thing.

 

So, good luck to you… I hope this will help the next person who faces this problem.

SWFox 2012 was a blast

Hi folks – I am just back at work from my 4-day trip to Arizona for the Southwest Fox 2012 conference, Oct 18-21, 2012 .  All I can saw is WOW!!!  Ok, I can say a few more things that just that…

I had an absolute blast at the conference, saw many great sessions (as in *every one of them*), and, most of all, I spent as much time as I could engaging anyone and everyone who was walking around with a SWFox name tag hanging around their neck. Heck, I even cornered a few of the hotel staff members in the hallway and asked them if *they* wanted to know anything about FoxPro. (No takers, but I did get a visit from hotel security later in the day.)

This was my third time to attended the conference. If God still has me breathing air this time next year, I will be back for number 4.

I know there are some circumstances which absolutely prevent some of you from attending developer conferences, but, I strongly encourage you if there is any way possible that you can be at SWFox 2013, PLEASE, PLEASE, work hard during this next year to allow yourself to be there. You will not regret it!! 

If I could send off my employees to a conference and they come back this excited about doing their job, I’d do it. So, show this message to your boss so he or she will see how excited *you* will be after attending attending SWFox 2013.

The 2013 conference dates are:  Oct 17-20, 2013.

FAQ

Did I meet Jun Tangunan, the 2012 Ceil Silverman Ambassador?

  • Yes I did. I had several opportunities to chat with him, and he is a very interesting and enthusiastic developer. We’ve already swapped a few emails, and I hope to explore his VFP tools a lot more in the coming months. Read more about him here: http://swfox.net/ambassador.aspx

How many people attended the ‘Show Us Your’ App session?

  • I did a quick table and body count… There were at least 60 people present, and 7 presenters (myself included) who did 10-minute presentations.

What did I do for dinner on Saturday night?

  • Walked 1.7 miles (each way) to a cool burger joint named Joe’s Farm Grill with about 12 other FoxPro devs… Bill, Bill’s (wife)?, Joel, Barbara, Eric, Todd, Randy, Michael, Phil, Stein, Art,  and maybe a few others I can’t recall right now. (If you were there, or can add to this list, please let me know so I can add everyone’s name.)

Did I wear a custom-printed GoFish T-shirt one day?

  • Yes. (Photo coming soon.)

Did I fart around on my laptop during any of the sessions?

  • Nope! I purposely left my laptop in the hotel room, so as not to be distracted.

How many session did I attend? 

  • I attended 16 total sessions, 23 total hours.

What were my favorite sessions (in no particular order)?

  • Sql Server 2012
  • Sql Server Mgmt Studio Tips and Tricks
  • Amazon EC2
  • OutFoxThe Fox Report writer
  • .Net COM Interop with VFP
  • Calling .Net Components from VFP

Lifetime Achievement Awards

Congratulations to Cathy Knight and Craig Boyd for receiving FoxPro Lifetime Achievement awards. Thanks to both of for your many years of invaluable contributions to the FoxPro community.

VFPx Administrators Awards

Jim Nelson and I received a VFPx Administrators Award. It’s nice to be recognized for the work, but the people who use it and communicate with me about it are where the real joy comes from. Congratulations Jim!

Sessions I attended

In most sessions I sat on the front row, as I prefer to do any time I am watching anyone present material of any sort. It helps me focus, and not be distracted by others. (Okay, I did send a few FoxPro related tweets from my iPhone.)

Thurs

  • Intro to C# – Doug Hennig

Fri

  • jQuery 101 – Rod Paddock
  • Amazon Elastic Cloud computing (Host a Windows Server in the cloud)
  • ASP.Net COM Interop with VFP – Rick Strahl
  • Chit-chatted  with Andrew MacNeill and FoxFire Reports
  • Unit Testing with FoxMock – Cristof
  • Calling .Net Components from VFP – Rick Strahl
  • Show Us Your App (I presented my Dynamic Forms class)

Sat

  • Office Automation without Office (via Google Docs) – Cristof
  • Advanced Topics in Mercurial – Rick Borup
  • More Fox on the Run – Eric Selje
  • HTML5 – Steve Bodnar
  • Sql Server Mgmt Studio – Eric Selje
  • The Dangers of Accessing Sql Data – Kevin Cully

Sun

  • Give Me Some Skin – Tuvia Vinitsky
  • SQL Server 2012 – Manachem Bazin
  • OutFox the VFP Report Writer – Cathy Knight

 

I hope to see a lot of new faces there next year!

Connecting Ubuntu to Windows shares and DFS trees

I wanted to access a full DFS tree of shared folders from my Windows Server 2008R2 network from an Ubuntu Linux 12.04 machine running on the same network.

My first attempt at using “sudo mount –t cifs …blah-blah-blah… “ simply would not work. Sometimes it *seemed* to connect, but the folders were always empty. I wasted hours trying to figure out how to solve this.

Here is the original post I made on ServerFault.com asking for help, back in March 2012: http://serverfault.com/questions/370338/ubuntu-linux-cannot-see-files-in-folders-when-connected-to-a-dfs-tree-on-windo

I never solved the problem, that is, until I tried again in October 2012. I’m now running Ubuntu 12.04. So, I started all over… I tried a bunch of things from Google… And I finally got it working, even from “Connect to Server” in Nautilus!!!

These are the steps that finally made it work:

1. Enable/configure  proper WINS resolution

Follow this discussion to enable WINS resolution of Windows computer names on the network http://askubuntu.com/questions/93302/windows-hostnames-are-not-resolved

Basically, it boils down to making this change:

image

2. Install SMBFS and KeyUtils

Every time I tried to call the MOUNT command, I was getting some error like “cifs_mount failed w/ return code = -22” that I could see by running dmesg | tail

So, some posts lead me to install these things:

See: http://thats-not-working.blogspot.com/2008/02/cifssmb-mount-problem-on-debian.html

and http://technopragmatica.blogspot.com/2011/03/connecting-to-dfs-shares-with-ubuntu.html?m=1

Some posts state that the Samba stuff on Ubuntu is now deprecated or replaced by the newer CIFS stuff, and for some things, CIFS is the only thing needed,  but I assure you that the original Samba package is also required to connect to a DFS tree on a Windows server.

You will notice that “smbfs” will also install “cifs-utils” if it’s not already installed.

3. Configure smb.conf

I also made a few tweaks in /etc/samba/smb.conf. Uncomment these lines, and enter the correct values for your network:

image

 

4. Finally – a very important discovery…

This is the magic that finally made this work for me!!! Changing one little parameter…

I happened to notice this teensy little difference in one of my files compared to a blog post referenced in the only reply to my original question on SeverFault.

In the /etc/request-key.conf, I changed this line:

to this:

Note: This file is created by the  “keyutils” install. It was not present before, as I looked for it. I noticed that it appeared after installing keyutils via apt-get.

Two things to note here…

1. According to http://www.samba.org/samba/docs/man/manpages-3/cifs.upcall.8.html, the –c option is deprecated and is currently ignored. So, I don’t know why that option is included in the file in first place.

2. Warning: The suggested –t option has something to do with “trusting” the DNS server to resolve and retrieve kerberos session keys. I really don’t understand what it all means, but it is explained in the link listed right above here. All I know is, from my trial-and-error testing, this allows Windows DFS tree mounting to work, and it DOES NOT work without –t on this one line.

So, read the above link to learn more about this and make sure it’s safe for your environment. I tried several times to make it work without the –t option, but whenever it connected It gave me folder names from the DFS tree, but they were empty when viewed in Nautilus.

You need to restart your terminal window after making these changes and before going to the final step below:

Finally, let’s connect to a DFS tree or any other shared folder on the server.

Open a new Terminal window, and type the following:

The –verbose option adds logging info about the mount, which you can read from this command:

Or, from Nautilus file browser, you can use “Connect to Server” from the File menu, and make these entries in the dialog window:

image

Kaboom!!! It worked. At least for me.

Good luck to others who need this.

Zooming the font size in FoxPro IDE code windows

In this post, I’ll show you how to use the AutoHotKey system utility to make a simple script file to quickly automate zooming the font size up and down in the FoxPro IDE using keyboard shortcuts or the mouse wheel.  This is a common feature in most modern code editors, but it is not a native feature of our much older FoxPro IDE.  (Jim Nelson gave me this idea when he explained you can Enlarge and Reduce the code window font size through the Format menu when you are working in a code window). So, I used AutoHotKey, which is a tool that can be used to create macros and scripts keyboard shortcuts and mouse gesture for any app running on your Windows machine. It allows for very complex hotkey and mouse combinations that FoxPro macros do not support. This quick-zoom feature is something that most modern IDE’s have and I’ve badly wanted this feature in FoxPro for a long time.

Video demo:

FoxPro IDE does font-zooming : http://www.youtube.com/watch?v=oRjMC-IDmKQ

With these hotkeys (Ctrl+NumPadPlus , Ctrl+NumPadMinus)  or mouse (Ctrl+MouseWheelUp, Crtl+MouseWheelDown) you can quickly increase or decrease the font size in the code window, multiple times, if desired, to create a zoom-in or zoom-out effect.

Keyboard:

  • ControlKey + the [PLUS] key on the number pad of your keyboard to zoom the font larger.
  • ControlKey + the [MINUS] key on the number pad of your keyboard to zoom the font smaller.

Mouse:

  • ControlKey + [Mouse Wheel] to zoom the font larger or smaller.  Try it in both directions to see which way it goes. If you want to reverse the direction of wheel behavior,  just edit the script to reverse the  WheelUp/WheelDown assignments, or use the X-Mouse Button Control utility to reverse the mouse wheel direction for your whole system.

Here are the scripts:

(Save to your .ahk file, then double-click the file in Windows File Explorer to activate the macros.)

Note that AutoKey allows you to restrict these assignments based on the Window handle, so they will only affect the FoxPro App, as these macros would likely not work in the menu system of any other app.

Go from this:

SNAGHTML3ac1bd98

To this:

SNAGHTML3ac1e1bb

 

by pressing the hotkeys or Ctrl+MouseWheel to zoom in or out as much as you want.

Doctor of Code